PluginBench
Skill
Pass
Audit score 90

meme-factory

softaworks/agent-toolkit

Generate memes using memegen.link API with 100+ templates and custom text styling.

What is meme-factory?

Meme Factory creates memes via the free memegen.link API, supporting 100+ popular templates with custom top/bottom text and styling options. Use it when users request memes, want to add humor to content, or need visual aids for social media.

  • Generate memes from 100+ templates (buzz, drake, success, fine, fry, changemind, distracted, mordor, etc.)
  • Customize text with proper encoding for spaces, newlines, special characters, and formatting
  • Adjust image dimensions and formats (PNG, JPG, WebP, GIF) for different platforms
  • Apply custom fonts, layouts (top/bottom/default), and background images
  • Validate meme URLs and ensure text readability before delivery

How to install meme-factory

npx skills add https://github.com/softaworks/agent-toolkit --skill meme-factory
Claude Code
Cursor
Windsurf
Cline

How to use meme-factory

  1. 1.Identify the appropriate meme template based on context (e.g., drake for comparisons, success for wins)
  2. 2.Prepare top and bottom text (2-6 words per line recommended)
  3. 3.Encode special characters: spaces as `_` or `-`, newlines as `~n`, `?` as `~q`, `%` as `~p`, `/` as `~s`, `#` as `~h`
  4. 4.Construct URL: `https://api.memegen.link/images/{template}/{top_text}/{bottom_text}.png`
  5. 5.Optionally add query parameters for sizing (`?width=1200&height=630`) or custom styling
  6. 6.Test the URL in a browser to verify the image renders correctly and text is readable

Use cases

Good for
  • Create comparison memes using drake template for code review discussions
  • Generate success celebration memes for deployment announcements
  • Make uncertainty/decision memes with fry template for feature discussions
  • Produce ironic 'this is fine' memes for handling production issues
  • Add humor to documentation or onboarding with contextual templates
Who it's for
  • Developers adding humor to code reviews and team communications
  • Social media managers creating shareable content
  • Teams celebrating wins or acknowledging failures with levity
  • Technical writers making documentation more engaging

meme-factory FAQ

How do I find available templates?

Visit https://api.memegen.link/templates/ to see all 100+ available templates with examples.

What characters need special encoding?

Spaces use `_` or `-`, newlines use `~n`, question marks use `~q`, percent signs use `~p`, slashes use `~s`, and hashes use `~h`. Single and double quotes don't need encoding.

What dimensions should I use for different platforms?

Use 1200x630 for social media (Open Graph), 800x600 for Slack/Discord, or default dimensions for GitHub. Add `?width=1200&height=630` to the URL.

Do I need an API key or authentication?

No, memegen.link is free and open-source with no API key required or rate limiting for normal use.

What should I do if a meme URL returns a 404 error?

Verify the template exists at the templates endpoint, ensure text is properly encoded with underscores for spaces, check that special characters use the correct encoding, and confirm the file extension (.png, .jpg, etc.) is included.

Full instructions (SKILL.md)

Source of truth, from softaworks/agent-toolkit.


name: meme-factory description: Generate memes using the memegen.link API. Use when users request memes, want to add humor to content, or need visual aids for social media. Supports 100+ popular templates with custom text and styling.

Meme Factory

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


Triggers

TriggerDescription
/meme-factoryManual invocation
/meme-factory {template} {top} {bottom}Direct meme generation
meme-factory: create a meme about XNatural language request

Quick Reference

ActionFormat
Basic memehttps://api.memegen.link/images/{template}/{top}/{bottom}.png
With sizing?width=1200&height=630
Custom background?style=https://example.com/image.jpg
All templateshttps://api.memegen.link/templates/
Interactive docshttps://api.memegen.link/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

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

Popular Templates

TemplateUse CaseExample
buzzX, X everywherebugs/bugs_everywhere
drakeComparisonsmanual_testing/automated_testing
successVictoriesdeployed/no_errors
fineThings going wrongserver_on_fire/this_is_fine
fryUncertaintynot_sure_if_bug/or_feature
changemindHot takestabs_are_better_than_spaces
distractedPrioritiesmy_code/new_framework/current_project
mordorOne does not simplyone_does_not_simply/deploy_on_friday

Template Selection Guide

ContextTemplateWhy
Comparing optionsdrakeTwo-panel reject/approve format
Celebrating winssuccessPositive outcome emphasis
Problems ignoredfineIronic "everything is fine"
Uncertaintyfry"Not sure if X or Y" format
Controversial opinionchangemindStatement + challenge
Ubiquitous thingsbuzz"X, X everywhere"
Bad ideasmordor"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

PlatformDimensions
Social media (Open Graph)1200x630
Slack/Discord800x600
GitHubDefault

Anti-Patterns

AvoidWhyInstead
Spaces without encodingURL breaksUse _ or -
Too much textUnreadable2-6 words per line
Wrong templateMessage mismatchMatch template to context
Missing extensionInvalid URLAlways include .png, .jpg, etc.
Unencoded special charsURL breaksUse ~q, ~s, ~p, etc.
Assuming template exists404 errorCheck 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

<details> <summary><strong>Deep Dive: Advanced Features</strong></summary>

Image Formats

ExtensionUse Case
.pngBest quality, default
.jpgSmaller file size
.webpModern, good compression
.gifAnimated 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

View available: https://api.memegen.link/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
</details> <details> <summary><strong>Deep Dive: Contextual Memes</strong></summary>

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
</details> <details> <summary><strong>Deep Dive: Workflow Integration</strong></summary>

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)
</details> <details> <summary><strong>Deep Dive: API Reference</strong></summary>

Endpoints

EndpointPurpose
/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
</details>

References

DocumentContent
markdown-memes-guide.md15+ textual meme formats (greentext, copypasta, ASCII, etc.)
examples.mdPractical usage examples

Scripts

ScriptPurpose
meme_generator.pyPython 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.