Meme Factory logo

Meme Factory

OrganizationPopular
softaworks
meme-factory

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.

Overview

Publishersoftaworks
Repositoryagent-toolkit
Skill namememe-factory
Stars
2.5K
Forks
226
Bundled files
3
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 3 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by softaworks on GitHub. Read the source before you install it.

Installation

Install the Meme Factory AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/softaworks/agent-toolkit.git /tmp/agent-toolkit
mkdir -p .claude/skills
cp -r /tmp/agent-toolkit/skills/meme-factory .claude/skills/meme-factory
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Meme Factory in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Meme Factory on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Meme Factory is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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:

bash
curl -I "https://api.memegen.link/images/buzz/test/test.png"
# Should return: HTTP/2 200

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

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

markdown
Here's a relevant meme:

![Meme](https://api.memegen.link/images/buzz/bugs/bugs_everywhere.png)

Dynamic Generation (Python)

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

python
from meme_generator import MemeGenerator

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

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

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.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Meme Factory AI skill do?

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.

Why use Meme Factory on TypingMind?

Because you install it once and use it with any model. Meme Factory is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Meme Factory in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/softaworks/agent-toolkit/tree/main/skills/meme-factory. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Meme Factory?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Meme Factory?

As many as you like. As long as a model supports skills, you can use Meme Factory with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Meme Factory AI skill free?

Yes. It is published on GitHub by softaworks under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇