meme-factory

$npx skills add softaworks/agent-toolkit --skill meme-factory
SKILL.md

Meme Factory

Create memes using the free memegen.link API and textual meme formats. * * * Trigger

Meme Factory

Create memes using the free memegen.link API and textual meme formats.

Triggers

Trigger
Description
/meme-factory
Manual invocation
/meme-factory {template} {top} {bottom}
Direct meme generation
meme-factory: create a meme about X
Natural language request

Quick Reference

Action
Format
Basic meme
https://api.memegen.link/images/{template}/{top}/{bottom}.png
With sizing
?width=1200&height=630
Custom background
?style=https://example.com/image.jpg
All templates
Interactive docs
Additional Resources:

Quick Start

Basic Meme Structure

https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.{extension}
Example:
https://api.memegen.link/images/buzz/memes/memes_everywhere.png
Result: Buzz Lightyear meme with "memes" at top and "memes everywhere" at bottom.

Text Formatting

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

Popular Templates

Template
Use Case
Example
buzz
X, X everywhere
bugs/bugs_everywhere
drake
Comparisons
manual_testing/automated_testing
success
Victories
deployed/no_errors
fine
Things going wrong
server_on_fire/this_is_fine
fry
Uncertainty
not_sure_if_bug/or_feature
changemind
Hot takes
tabs_are_better_than_spaces
distracted
Priorities
my_code/new_framework/current_project
mordor
One does not simply
one_does_not_simply/deploy_on_friday

Template Selection Guide

Context
Template
Why
Comparing options
drake
Two-panel reject/approve format
Celebrating wins
success
Positive outcome emphasis
Problems ignored
fine
Ironic "everything is fine"
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..."

Validation

After generating a meme:
  • URL returns valid image (test in browser)
  • Text is readable (not too long)
  • Template matches the message context
  • Special characters properly encoded
  • Dimensions appropriate for platform

Platform Dimensions

Platform
Dimensions
Social media (Open Graph)
1200x630
Slack/Discord
800x600
GitHub
Default

Anti-Patterns

Avoid
Why
Instead
Spaces without encoding
URL breaks
Use _ or -
Too much text
Unreadable
2-6 words per line
Wrong template
Message mismatch
Match template to context
Missing extension
Invalid URL
Always include .png, .jpg, etc.
Unencoded special chars
URL breaks
Use ~q, ~s, ~p, etc.
Assuming template exists
404 error
Check templates list first

Verification

Meme generation is successful when:
  1. URL is valid - Returns HTTP 200
  2. Image renders - Displays correctly in markdown
  3. Text is visible - Properly formatted on image
  4. Context matches - Template fits the message
Test command:
curl -I "https://api.memegen.link/images/buzz/test/test.png"
# Should return: HTTP/2 200

Image Formats

Extension
Use Case
.png
Best quality, default
.jpg
Smaller file size
.webp
Modern, good compression
.gif
Animated templates

Dimensions

?width=800
?height=600
?width=800&height=600  (padded to exact)
`### Layout Options`
?layout=top     # Text at top only
?layout=bottom  # Text at bottom only
?layout=default # Standard top/bottom

Custom Fonts

?font=impact (default)

Custom Images

Use any image as background:
https://api.memegen.link/images/custom/hello/world.png?style=https://example.com/image.jpg

Code Reviews

Template: fry
https://api.memegen.link/images/fry/not_sure_if_feature/or_bug.png
`### Deployments`
Template: interesting
https://api.memegen.link/images/interesting/i_dont_always_test/but_when_i_do_i_do_it_in_production.png
`### Documentation`
Template: yodawg
https://api.memegen.link/images/yodawg/yo_dawg_i_heard_you_like_docs/so_i_documented_the_documentation.png
`### Performance Issues`
Template: fine
https://api.memegen.link/images/fine/memory_usage_at_99~/this_is_fine.png
`### Successful Deploy`
Template: success
https://api.memegen.link/images/success/deployed_to_production/zero_downtime.png
`### Generating Memes in Response`
Here's a relevant meme:

![Meme](https://api.memegen.link/images/buzz/bugs/bugs_everywhere.png)
`### Dynamic Generation (Python)`
def generate_status_meme(status: str, message: str):
    template_map = {
        "success": "success",
        "failure": "fine",
        "review": "fry",
        "deploy": "interesting"
    }

    template = template_map.get(status, "buzz")
    words = message.split()
    top = "_".join(words[0:3])
    bottom = "_".join(words[3:6])

    return f"https://api.memegen.link/images/{template}/{top}/{bottom}.png"
`### Using the Helper Script`
from meme_generator import MemeGenerator

meme = MemeGenerator()
url = meme.generate("buzz", "features", "features everywhere")
print(url)

Endpoints

Endpoint
Purpose
/templates/
List all templates
/templates/{id}
Template details
/fonts/
Available fonts
/images/{template}/{top}/{bottom}.{ext}
Generate meme

API Characteristics

  • Free and open-source
  • No API key required
  • No rate limiting (normal use)
  • Stateless (all info in URL)
  • Images generated on-demand

Error Handling

  1. Check template at https://api.memegen.link/templates/
  2. Verify text formatting (underscores for spaces)
  3. Check special character encoding
  4. Ensure valid extension
  5. Test URL in browser

References

Document
Content
15+ textual meme formats (greentext, copypasta, ASCII, etc.)
Practical usage examples

Scripts

Script
Purpose
Python helper for meme generation

Summary

Generate contextual memes to:
  • Add humor to conversations
  • Create social media visuals
  • Make code reviews engaging
  • Celebrate successes
Golden rule: Keep text concise, match template to context.