Agent skill
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 this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/memegen-templates
SKILL.md
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 Wolfsuccess- Success Kidawkward- Socially Awkward Penguinawesome- Socially Awesome Penguinblb- Bad Luck Brianfry- Futurama Fryscumbag- Scumbag Steve
Reaction Memes
drake- Drake Hotline Blingdistracted- Distracted Boyfriendbuzz- Buzz and Woodyboth- Why Not Both?ants- Do You Want Ants?fine- This is Fine
Text-Based
expanding- Expanding Brainjetpack- Jetpack Memetroll- Troll Faceyuno- Y U Nood- Overly Attached Girlfriend
Movie/TV
wonka- Condescending Wonkamorpheus- Matrix Morpheuscaptain- Captain Phillipstrek- Star Trekmini- 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
- Keep text short - Max 2-3 words per line works best
- Use appropriate templates - Match format to message
- Test special characters - Preview before sharing
- Cache downloads - Save bandwidth on repeated use
- 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
- milady-meme-generator - Milady NFT memes
- lark-bot-integration - Use in Lark bot
Cost: FREE (memegen.link is a free service)
API Docs: https://memegen.link/
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?