Claude Code Plugins

Community-maintained marketplace

Feedback

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 Skill

Shared

Installs to .agents/skills, used by Codex, Amp, Warp, Cursor, OpenCode, and more.

CodexAmp
Warp
CursorOpenCode
Cline
Gemini CLI
GitHub Copilot
Personal

Available across projects.

$npx skills-installer add @majiayu000/claude-skill-registry/memegen-templates --client shared
Project

Writes to .agents/skills.

$npx skills-installer add @majiayu000/claude-skill-registry/memegen-templates -p --client shared
Note: Review the skill instructions before using it.

SKILL.md

name memegen-templates
description 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.
allowed-tools Read, Bash(python:*)
model claude-sonnet-4-20250514

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

Template Name Format
drake Drake Hotline Bling Top = No, Bottom = Yes
distracted Distracted Boyfriend Left/Center/Right text
iw Inhaling Seagull Top/Bottom
ants Do You Want Ants? Top/Bottom
afraid Afraid to Ask Andy Top/Bottom
fine This is Fine Top/Bottom
expanding Expanding Brain Multi-level
buzz Buzz and Woody Left/Right
both Why Not Both? Top/Bottom
captain Captain Phillips Top/Bottom
wonka Condescending Wonka Top/Bottom
xy X, X Everywhere Top/Bottom
awesome Socially Awesome Penguin Top/Bottom
awkward Socially Awkward Penguin Top/Bottom
ive I Should Buy a Boat Top/Bottom
disastergirl Disaster Girl Top/Bottom
odi One Does Not Simply Top/Bottom
blb Bad Luck Brian Top/Bottom
yuno Y U No Top/Bottom
success Success Kid Top/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

Character Encoding Example
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/