Claude-skill-registry-data memegen-templates

Generate classic meme images using 207+ templates from memegen.link. Use when creating memes with popular formats like Drake, Distracted Boyfriend, This is Fine, or any classic internet meme template.

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

Memegen Templates

Generate classic internet memes using 207+ popular meme templates from memegen.link.

Overview

This Skill provides access to all classic meme formats:

  • 207+ meme templates (Drake, Distracted Boyfriend, Expanding Brain, etc.)
  • FREE API - No API key required
  • URL-based generation - Simple and fast
  • Custom text - Top/bottom or multi-line text
  • Image overlays - Optional background images

Quick Start

Basic Usage

from src.memegen_api import MemegenAPI

api = MemegenAPI()

# Generate Drake meme
meme_url = api.generate_meme(
    template="drake",
    top_text="Manually creating memes",
    bottom_text="Using memegen templates"
)

print(f"Meme URL: {meme_url}")
# https://api.memegen.link/images/drake/Manually_creating_memes/Using_memegen_templates.png

Download Meme

# Generate and download
image = api.generate_and_download(
    template="drake",
    top_text="Old way",
    bottom_text="New way"
)

# Save to file
image.save("my_meme.png")

Popular Templates

Top 20 Most Used

TemplateNameFormat
drake
Drake Hotline BlingTop = No, Bottom = Yes
distracted
Distracted BoyfriendLeft/Center/Right text
iw
Inhaling SeagullTop/Bottom
ants
Do You Want Ants?Top/Bottom
afraid
Afraid to Ask AndyTop/Bottom
fine
This is FineTop/Bottom
expanding
Expanding BrainMulti-level
buzz
Buzz and WoodyLeft/Right
both
Why Not Both?Top/Bottom
captain
Captain PhillipsTop/Bottom
wonka
Condescending WonkaTop/Bottom
xy
X, X EverywhereTop/Bottom
awesome
Socially Awesome PenguinTop/Bottom
awkward
Socially Awkward PenguinTop/Bottom
ive
I Should Buy a BoatTop/Bottom
disastergirl
Disaster GirlTop/Bottom
odi
One Does Not SimplyTop/Bottom
blb
Bad Luck BrianTop/Bottom
yuno
Y U NoTop/Bottom
success
Success KidTop/Bottom

Full list: See TEMPLATE_LIST.md for all 207 templates

Usage Examples

Example 1: Drake Meme

api = MemegenAPI()

# Classic Drake format
meme = api.generate_meme(
    template="drake",
    top_text="Complicated setup",
    bottom_text="One-line API call"
)

Output:

Drake rejecting: "Complicated setup"
Drake approving: "One-line API call"

Example 2: Distracted Boyfriend

# Three-part meme
meme = api.generate_meme(
    template="distracted",
    texts=["Boyfriend", "Girlfriend", "Other Girl"]
)
# Texts: [Left (boyfriend), Center (girlfriend), Right (other girl)]

Example 3: Expanding Brain

# Multi-level intelligence meme
meme = api.generate_meme(
    template="expanding",
    texts=[
        "Small brain idea",
        "Medium brain idea",
        "Big brain idea",
        "Galaxy brain idea"
    ]
)

Example 4: This is Fine

# Classic "This is Fine" dog
meme = api.generate_meme(
    template="fine",
    top_text="Everything is fine",
    bottom_text="*server is on fire*"
)

Example 5: Custom Styling

# With custom styling
meme = api.generate_meme(
    template="drake",
    top_text="Normal memes",
    bottom_text="Customized memes",
    style={
        "font": "impact",
        "color": "white",
        "stroke": "black"
    }
)

Advanced Features

1. Background Images

# Use custom background image
meme = api.generate_with_background(
    template="drake",
    top_text="Stock templates",
    bottom_text="Custom backgrounds",
    background_url="https://example.com/custom-bg.jpg"
)

2. Multi-Line Text

# Text with line breaks
meme = api.generate_meme(
    template="drake",
    top_text="Single_line_text",
    bottom_text="Multi~nline~ntext"  # ~n = newline
)

3. Special Characters

# Handle special characters
meme = api.generate_meme(
    template="drake",
    top_text="Text with spaces",
    bottom_text="Text_with_underscores"
)
# Spaces → underscores in URL
# Use ~s for literal spaces

4. Batch Generation

# Generate multiple memes
templates = ["drake", "distracted", "fine"]
texts = [
    ("Option A", "Option B"),
    ("Thing 1", "Thing 2", "Thing 3"),
    ("Before", "After")
]

memes = []
for template, text in zip(templates, texts):
    meme = api.generate_meme(template=template, texts=text)
    memes.append(meme)

Template Categories

Advice Animals

  • insanity
    - Insanity Wolf
  • success
    - Success Kid
  • awkward
    - Socially Awkward Penguin
  • awesome
    - Socially Awesome Penguin
  • blb
    - Bad Luck Brian
  • fry
    - Futurama Fry
  • scumbag
    - Scumbag Steve

Reaction Memes

  • drake
    - Drake Hotline Bling
  • distracted
    - Distracted Boyfriend
  • buzz
    - Buzz and Woody
  • both
    - Why Not Both?
  • ants
    - Do You Want Ants?
  • fine
    - This is Fine

Text-Based

  • expanding
    - Expanding Brain
  • jetpack
    - Jetpack Meme
  • troll
    - Troll Face
  • yuno
    - Y U No
  • od
    - Overly Attached Girlfriend

Movie/TV

  • wonka
    - Condescending Wonka
  • morpheus
    - Matrix Morpheus
  • captain
    - Captain Phillips
  • trek
    - Star Trek
  • mini
    - Austin Powers Mini-Me

API Reference

MemegenAPI Class

class MemegenAPI:
    def generate_meme(
        self,
        template: str,
        top_text: str = "",
        bottom_text: str = "",
        texts: list = None,
        style: dict = None
    ) -> str:
        """
        Generate meme URL.

        Args:
            template: Template name (e.g., "drake")
            top_text: Top text (optional)
            bottom_text: Bottom text (optional)
            texts: List of texts for multi-part memes
            style: Custom styling options

        Returns:
            URL to generated meme image
        """

    def generate_and_download(self, ...) -> PIL.Image:
        """Generate meme and download as PIL Image"""

    def list_templates(self) -> list:
        """List all available templates"""

    def get_template_info(self, template: str) -> dict:
        """Get template metadata"""

Common Use Cases

1. Social Media Posts

# Generate for Twitter/Instagram
meme = api.generate_and_download(
    template="drake",
    top_text="Boring posts",
    bottom_text="Meme posts"
)
meme.save("social_media_post.png")

2. Presentation Slides

# Add humor to presentations
meme = api.generate_meme(
    template="expanding",
    texts=[
        "Basic approach",
        "Optimized approach",
        "Over-engineered approach",
        "Actually using memegen.link"
    ]
)

3. Team Communication

# Internal team memes
meme = api.generate_meme(
    template="fine",
    top_text="Production is down",
    bottom_text="This is fine"
)

4. Content Creation

# Blog posts, videos, etc.
meme = api.generate_meme(
    template="distracted",
    texts=["Old method", "Current workflow", "New shiny tool"]
)

Text Formatting

Special Characters

CharacterEncodingExample
Space
_
or
~s
Hello_World
Newline
~n
Line1~nLine2
Underscore
__
Snake__case
Dash
-
or
~-
Hyphen-ated
Question
~q
Why~q
Percent
~p
100~p
Hash
~h
~htag
Slash
~f
and~for

Examples

# Multi-line text
api.generate_meme(
    template="drake",
    top_text="Single line",
    bottom_text="Line 1~nLine 2~nLine 3"
)

# Special characters
api.generate_meme(
    template="drake",
    top_text="100~p normal",
    bottom_text="200~p meme power"
)

Error Handling

try:
    meme = api.generate_meme(
        template="invalid_template",
        top_text="Test"
    )
except ValueError as e:
    print(f"Invalid template: {e}")

try:
    meme = api.generate_meme(
        template="drake",
        top_text="",  # Empty text
        bottom_text=""
    )
except ValueError as e:
    print(f"Invalid text: {e}")

Integration Examples

With Lark Bot

# In Lark bot command
def handle_memegen_command(template, top, bottom):
    api = MemegenAPI()
    image = api.generate_and_download(
        template=template,
        top_text=top,
        bottom_text=bottom
    )
    upload_to_lark(image)

With Twitter Bot

# Generate and post to Twitter
api = MemegenAPI()
meme = api.generate_and_download("drake", "Old way", "New way")
twitter_client.post_with_image(
    text="Choose wisely!",
    image=meme
)

With Milady Generator

# Combine with Milady memes
from skills.milady_meme_generator.src.meme_generator_v2 import MemeGeneratorV2

# Generate Milady
milady_gen = MemeGeneratorV2()
milady_img = milady_gen.generate_meme(nft_id=5050)

# Generate classic meme
memegen_api = MemegenAPI()
classic_meme = memegen_api.generate_and_download("drake", "NFTs", "Milady NFTs")

# Combine or use separately

Tips & Best Practices

  1. Keep text short - Max 2-3 words per line works best
  2. Use appropriate templates - Match format to message
  3. Test special characters - Preview before sharing
  4. Cache downloads - Save bandwidth on repeated use
  5. Batch process - Generate multiple at once for efficiency

Troubleshooting

Template not found:

# Check available templates
templates = api.list_templates()
print(templates)

Image not loading:

# Use download instead of URL
image = api.generate_and_download(...)  # More reliable

Text formatting issues:

# Use encoding helper
text = api.encode_text("Hello, World!")  # Handles special chars

Related Skills


Cost: FREE (memegen.link is a free service)

API Docs: https://memegen.link/