Ai Meme Factory

install
source · Clone the upstream repo
git clone https://github.com/wpank/ai
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/wpank/ai "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/meme-factory" ~/.claude/skills/wpank-ai-meme-factory && rm -rf "$T"
manifest: skills/tools/meme-factory/SKILL.md
source content

Meme Factory

Generate memes using the free memegen.link API and textual Markdown meme formats. No API key required.

Installation

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install meme-factory

NEVER Do

  • Use spaces in meme URLs without encoding them as
    _
    or
    -
  • Assume a template exists without checking the templates list
  • Write more than 2-6 words per line (text becomes unreadable)
  • Use the wrong template for the context (e.g., "success" template for failures)
  • Omit the file extension in URLs (
    .png
    ,
    .jpg
    , etc.)
  • Forget to encode special characters (
    ?
    ~q
    ,
    /
    ~s
    ,
    %
    ~p
    ,
    #
    ~h
    )

Quick Start

URL Structure

https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.{ext}

Example:

https://api.memegen.link/images/buzz/bugs/bugs_everywhere.png

Text Encoding

CharacterEncoding
Space
_
or
-
Newline
~n
Question mark
~q
Percent
~p
Slash
~s
Hash
~h
Single quote
''
Double quote
""

Popular Templates

TemplateUse CaseWhen To Use
drake
Comparing optionsRejecting one thing, approving another
buzz
Ubiquitous things"X, X everywhere"
success
Celebrating winsPositive outcomes
fine
Problems ignoredIronic "everything is fine"
fry
Uncertainty"Not sure if X or Y"
changemind
Hot takesStating an opinion confidently
distracted
PrioritiesBeing distracted by something new
mordor
Bad ideas"One does not simply..."
interesting
Rare occurrences"I don't always X, but when I do..."
yodawg
Meta/recursive"Yo dawg, I heard you like X"

Full list: https://api.memegen.link/templates/

Contextual Template Selection

ContextTemplateWhy
Comparing options
drake
Two-panel reject/approve format
Celebrating wins
success
Positive outcome emphasis
Problems ignored
fine
Ironic calm amid chaos
Uncertainty
fry
"Not sure if X or Y" format
Controversial opinion
changemind
Statement + challenge
Ubiquitous things
buzz
"X, X everywhere"
Bad ideas
mordor
"One does not simply..."

Image Options

Formats

ExtensionUse Case
.png
Best quality (default)
.jpg
Smaller file size
.webp
Modern, good compression
.gif
Animated templates

Dimensions by Platform

PlatformDimensionsUsage
Social media / Open Graph
?width=1200&height=630
Twitter, LinkedIn, Facebook
Slack / Discord
?width=800&height=600
Chat platforms
GitHubDefaultPRs, issues, README

Layout Options

?layout=top       # Text at top only
?layout=bottom    # Text at bottom only
?layout=default   # Standard top/bottom

Textual Meme Formats (Markdown)

Beyond image memes, create text-based memes directly in Markdown:

  • Greentext — Code fence with
    >
    prefixed lines for anon-culture narratives
  • Copypasta — Dramatic walls of text in code fences
  • Shitpost poetry — Hard line breaks for comedic timing
  • ASCII art — Monospaced art in code fences
  • Tumblr chains — Nested blockquotes for multi-speaker escalation
  • Twitter/X style — Short blockquote micro-memes
  • Reddit AITA/TIFU — Heading + paragraphs narrative memes
  • Wojak dialogues — Bold names + minimal dialogue
  • Discord chat logs — Code fence with timestamps
  • Corporate satire — Lists + bold labels for fake official notices
  • Fake wiki/manual pages — Technical jargon for mundane objects

Full guide with examples: references/markdown-memes-guide.md

Validation Checklist

After generating a meme:

  • URL returns valid image (test with
    curl -I
    )
  • Text is readable (not too long)
  • Template matches the message context
  • Special characters properly encoded
  • Dimensions appropriate for target platform

Embedding in Markdown

![Description](https://api.memegen.link/images/drake/manual_testing/automated_testing.png)

Always provide descriptive alt text for accessibility:

  • Good:
    ![Drake rejecting manual testing, approving automated testing]
  • Bad:
    ![funny meme]

Custom Backgrounds

Use any image as a meme background with the

custom
template:

https://api.memegen.link/images/custom/top_text/bottom_text.png?style=https://example.com/image.jpg

Pair screenshots of apps, dashboards, or charts as backgrounds for contextual humor.

Mixing Text + Image Memes

For blog posts and documentation, alternate between formats for pacing:

  1. Start with text (greentext/chat log) to set up context
  2. Follow with image to amplify the punchline
  3. Close with text (corporate satire/poetry) for resolution

Good patterns: Greentext → Image → Corporate satire, Chat log → Image → Shitpost poetry

Avoid: 5 images in a row (visual fatigue), 3 long copypastas back-to-back (reader exhaustion)

API Reference

EndpointPurpose
/templates/
List all available templates
/templates/{id}
Template details and example
/fonts/
Available fonts
/images/{template}/{top}/{bottom}.{ext}
Generate meme image

API characteristics: Free, open-source, no API key, no rate limiting, stateless, images generated on-demand.

Python Helper Script

from meme_generator import MemeGenerator

meme = MemeGenerator()

# Generate a basic meme URL
url = meme.generate("buzz", "features", "features everywhere")

# With custom dimensions for social media
url = meme.generate("drake", "old way", "new way", width=1200, height=630)

# Get markdown for embedding
md = meme.get_markdown_image(url, alt_text="Comparison Meme")

# Suggest template based on context
template = meme.suggest_template_for_context("deployment success")

References

FileContent
references/markdown-memes-guide.md15+ textual meme formats with examples and production tips
references/examples.mdPractical usage examples, integrations (Slack, GitHub, Discord)

Scripts

ScriptPurpose
scripts/meme_generator.pyPython helper for programmatic meme generation with 20+ templates