meme-card-maker
Meme-format graphic generator — top + bottom text + optional centerpiece image. Impact-style bold typography. 5 templates: drake, distracted-boyfriend, expanding-brain, two-buttons, custom. Optional -
SKILL.mdskills/meme-card-maker/SKILL.md
GitHub<objective>
Meme-format graphic generator. Input: top text + bottom text + optional centerpiece (template or user photo). Output: classic meme-aesthetic image with Impact-style typography.
Distinct from quote-card-maker:
- Two text blocks (top + bottom), not one quote + attribution
- Impact-font bold-with-stroke typography (the universal meme look)
- Often references a known meme template (drake, distracted-boyfriend, expanding-brain)
- Aesthetic: meme template, NOT editorial — uglier is often funnier
Distinct from flyer-maker / cover-maker:
- No event details, no creator metadata
- Different aesthetic vocabulary (Impact font, stroke outline, low-fidelity feel)
- Often references specific cultural meme formats
This skill does NOT:
- Generate animated GIF memes — use
gif-makerseparately - Watermark / credit the original meme template creator — that's your responsibility
- Verify cultural appropriateness — your judgment
- Translate meme captions — pass in target language
- Place text at PIXEL-perfect template positions — model approximates</objective>
ROLE
Read top text + bottom text + optional template hint + optional base photo → pick visual-integration-strong model → assemble prompt cueing Impact-style typography with stroke, meme aesthetic → batch execute → save PNGs.
PIPELINE
Resolve text:
--top "<text>"— top caption (≤8 words, ALL CAPS rendered)--bottom "<text>"— bottom caption (≤8 words, ALL CAPS rendered)- At least one of top / bottom required
Resolve template (optional):
--template drake|distracted-boyfriend|expanding-brain|two-buttons|change-my-mind|customdrake: 2-panel "rejects / approves"distracted-boyfriend: 3-character compositionexpanding-brain: 4-panel ascendingtwo-buttons: sweaty decisionchange-my-mind: seated man with signcustom: just the captions on whatever centerpiece the model generates- Default:
custom
Resolve base photo (optional):
--base-photo <path-or-url>— use user image as centerpiece- Implies
--template custom(template hints are ignored when base photo is provided)
Pick model:
- With
--base-photo:nano-banana-pro(preserves visual, adds caption layer) - Template-based:
gpt-image-2(best at illustration + text rendering) - Override:
--model <slug>
- With
Compose ONE LLM call — load
common/visual-prompt-library/system-prompt.md(shared SYSTEM_PROMPT) andbuildUserMessage(opts)withMode=meme-card,N=<variants>, top + bottom captions + template + optional base photo. Spawn ONE Agent. Receives JSON{"slides":[{"number":1,"prompt":"..."}]}— 1–3 sentence prompts with template-specific composition + Impact-style typography cues + meme aesthetic ("white text with thick black stroke, all caps, low-fidelity, slight JPEG artifacts"). Captions in double quotes. Seereferences/templates.mdfor template composition. Library styles viacommon/visual-prompt-library/styles/_index.md.Estimate cost + confirm — inherits
SKILLS_CAROUSEL_BUDGET=1.50.Batch execute —
common.runners.batch.run_batch().Output:
./generated/meme/<slug>/ meme-v1.png meme-v2.png manifest.json prompts.md
MODES
Required
meme-card-maker --top "<text>"(top) OR--bottom "<text>"(bottom; at least one required)
Optional content
--template drake|distracted-boyfriend|expanding-brain|two-buttons|change-my-mind|custom--base-photo <path-or-url>— user image as centerpiece--context "<note>"— situational context to help the model interpret captions--lang en|ru— language hint (default: en)
Visual
--variants N— variants (default 3)--model auto|<slug>— image provider--style-mod "<override>"— append tweak (e.g., "extra pixelated, deepfried meme aesthetic")--aspect square|portrait|landscape— composition aspect (defaultsquare1080×1080)
Execution
--execute— actually generate--output <dir>— custom output--parallelism N— concurrent calls (default 2)--yes— skip cost confirmation--resume— retry failed--prompts-only— dry run
REFERENCES (load on demand)
| File | When to load |
|---|---|
| references/templates.md | Step 2 — meme template anatomy, composition cues per template |
| references/typography.md | Step 5 — Impact font conventions, stroke outline rules, when to deviate |
| references/troubleshoot.md | When text doesn't read, template doesn't recognize, etc. |
EXAMPLES
See examples/before-after.md — 3 calibration runs: drake template developer joke, custom photo meme, expanding-brain progression.
CONSTRAINTS
Captions ≤8 words each. Past 8, text overflows; Impact-style bold needs space.
ALL CAPS rendering. All meme captions auto-uppercase. If you pass lowercase, it's rendered uppercase. Exception:
--lang rukeeps mixed case for Cyrillic readability (Cyrillic ALL CAPS is harder to read).Default model is
gpt-image-2. Best at illustration + integrated text.nano-banana-prowhen base photo is provided.Template recognition is approximate. "Drake" template is approximated by the model — won't be pixel-identical to the original. For exact template: use a meme generator tool (Imgflip, Memegenerator).
Cultural sensitivity is YOUR responsibility. The skill doesn't filter. Don't ship punchy memes about sensitive topics without consideration.
Generated memes can resemble copyrighted templates. Original meme creators rarely enforce, but for commercial use: check the template's original source.
Cost confirm ONCE per batch. Sum across variants.
Aspect default is square. Most platforms display memes 1:1 well.
--aspect portraitfor IG portrait posts;--aspect landscapefor Twitter inline.Never print API keys. Mask in errors.
INVOCATION HINTS
When the user says any of:
- "make a meme", "meme for X", "meme template Y"
- "drake meme", "expanding brain meme", "distracted boyfriend"
- "сделай мем про X", "мем формат Y"
- "сгенерируй мем"
If the user names a template explicitly, set --template <name>. If unclear, default --template custom (lets the model interpret).
If the user pastes a photo path: --base-photo <path> + --template custom.
Defaults: --variants 3 --aspect square --template custom --model gpt-image-2. Without --execute, returns prompts.
This skill is distinct from:
quote-card-maker— text-dominant editorial cards (single quote + attribution)image-prompt— free-form image gen (no meme conventions)gif-maker— animated content (memes here are static)flyer-maker/cover-maker— structured professional formats