{"id":"0e74fc92-423a-4b7d-ac8b-4c4ba9e41077","entityType":"agent","slug":"clawhub-voronindenis5-meme-generator-2","name":"Meme Generator","canonicalUrl":"https://www.xpersona.co/agent/clawhub-voronindenis5-meme-generator-2","canonicalPath":"/agent/clawhub-voronindenis5-meme-generator-2","generatedAt":"2026-10-10T10:43:56.164Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":null},"description":"Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution. Skill: Meme Generator Owner: voronindenis5 Summary: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-14T06:18:05.056Z | auto Initial public release of meme-generator: generate crisp SVG memes from text using classic template","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17b6amkd3wzqgg640v03a9r1n83gxs1:meme-generator-2","sourceUrl":"https://clawhub.ai/voronindenis5/meme-generator-2","homepage":"https://clawhub.ai/voronindenis5/skills/meme-generator-2","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/voronindenis5/meme-generator-2","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/voronindenis5/skills/meme-generator-2","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python s"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":null},"stars":null,"forks":null,"downloads":1607,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:56:45.372Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T06:56:45.373Z","lastCrawledAt":"2026-10-10T06:56:45.372Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T06:56:45.372Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-14T06:18:05.056Z","changelog":"Initial public release of meme-generator: generate crisp SVG memes from text using classic templates. - Supports popular meme templates (Drake, Stonks, Doge, This is Fine, etc.) - Generate single or batch memes from the command line - Includes quote packs for programming, startup, productivity, and student humor - Animated SVG text effects and HTML export options available - Pure Python standard library; no external dependencies required - Easily extendable with custom SVG templates","fileCount":11,"zipByteSize":22475}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17b6amkd3wzqgg640v03a9r1n83gxs1:meme-generator-2","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:43:56.164Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":null},"readme":"Skill: Meme Generator\n\nOwner: voronindenis5\n\nSummary: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution.\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-14T06:18:05.056Z | auto\n\nInitial public release of meme-generator: generate crisp SVG memes from text using classic templates.\n\n- Supports popular meme templates (Drake, Stonks, Doge, This is Fine, etc.)\n- Generate single or batch memes from the command line\n- Includes quote packs for programming, startup, productivity, and student humor\n- Animated SVG text effects and HTML export options available\n- Pure Python standard library; no external dependencies required\n- Easily extendable with custom SVG templates\n\nArchive index:\n\nArchive v0.1.0: 11 files, 22475 bytes\n\nFiles: .gitignore (84b), LICENSE (1070b), README.md (4695b), references (0b), references/svg-text.md (5368b), references/templates.md (5331b), scripts (0b), scripts/meme_gen.py (39407b), skill-card.md (1866b), SKILL.md (2474b), _meta.json (135b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: meme-generator\ndescription: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution.\nauthor: Denis Voronin\nlicense: MIT\nversion: 1.0.0\nlanguage: python\ntags: [meme, svg, viral, social, fun]\ncategories:\n  - creative\n---\n\n# Meme Generator\n\nCreate shareable SVG memes from text input. Pure Python stdlib — no external dependencies.\n\n## Quick Start\n\n```bash\n# Single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch across all templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get quote ideas\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine\n\n# List all templates\npython scripts/meme_gen.py list\n```\n\n## Templates\n\n| Template | Key | Format |\n|---|---|---|\n| Drake | `drake` | Two-panel reject/approve |\n| Distracted Boyfriend | `distracted_boyfriend` | Three-character scene |\n| Two Buttons | `two_buttons` | Dilemma choice |\n| Change My Mind | `change_my_mind` | Table + sign |\n| Galaxy Brain | `galaxy_brain` | Ascending brain levels |\n| Stonks | `stonks` | Suit guy + arrow |\n| This is Fine | `this_is_fine` | Dog in fire |\n| Doge | `doge` | Shiba + colorful text |\n| Expanding Brain | `expanding_brain` | Four-stage brain glow |\n| Panik Kalm | `panik_kalm` | Three-panel panic/calm |\n\nAliases: `cmm` → change_my_mind, `brain` → expanding_brain, `fine` → this_is_fine, `stocks` → stonks, etc.\n\n## Quote Categories\n\n- **programming** — dev life struggles (20 quotes)\n- **startup** — hustle culture satire (15 quotes)\n- **productivity** — procrastination humor (15 quotes)\n- **student** — academic chaos (15 quotes)\n\n## Options\n\n- `--html` — Also export HTML (easy browser viewing)\n- `--animate` — Add SVG text animations (fade-in)\n- `--all-templates` — Batch with every template\n- `--output / --output-dir` — Control output paths\n\n## Custom Templates\n\nCreate an SVG file with `{{TOP}}` and `{{BOTTOM}}` placeholders, then:\n\n```bash\npython scripts/meme_gen.py custom 'Hello' 'World' --template-file my_template.svg\n```\n\n## Output\n\n- **SVG**: Standalone, scalable, tiny file size (~3-5 KB each)\n- **HTML**: Wraps SVG in a centered page for browser viewing\n- Watermark-free\n\nFile v0.1.0:README.md\n\n# Meme Generator 🎨\n\n> Create shareable SVG memes from text. Pure Python stdlib. Crisp at any resolution.\n\n![Python](https://img.shields.io/badge/python-3.8+-blue.svg)\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![No Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)\n\n## Features\n\n- ✅ **10 classic meme templates** — Drake, Distracted Boyfriend, Two Buttons, Change My Mind, Galaxy Brain, Stonks, This is Fine, Doge, Expanding Brain, Panik Kalm\n- ✅ **Pure Python stdlib** — no pip install needed, no Pillow, no requests\n- ✅ **SVG output** — crisp at any resolution, 3-5 KB per meme\n- ✅ **Batch generation** — one quote → all templates instantly\n- ✅ **Quote packs** — programming, startup, productivity, student life\n- ✅ **Animated effects** — SVG-native animations\n- ✅ **Custom templates** — use your own SVG with `{{TOP}}`/`{{BOTTOM}}` placeholders\n- ✅ **Watermark-free**\n\n## Quick Start\n\n```bash\n# Make a single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch: same text across ALL templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get random quotes\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode (stdin as top text)\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine\n```\n\n## Templates\n\n| Template | Key | Description |\n|---|---|---|\n| 🎤 Drake | `drake` | Reject / approve two-panel |\n| 👀 Distracted Boyfriend | `distracted_boyfriend` | Three-character attention split |\n| 🔘 Two Buttons | `two_buttons` | Impossible dilemma |\n| 🪧 Change My Mind | `change_my_mind` | Guy at table with sign |\n| 🧠 Galaxy Brain | `galaxy_brain` | Five ascending brain stages |\n| 📈 Stonks | `stonks` | Suit guy + upward arrow |\n| 🔥 This is Fine | `this_is_fine` | Dog in burning room |\n| 🐕 Doge | `doge` | Shiba Inu + colorful text |\n| ✨ Expanding Brain | `expanding_brain` | Four glowing brain levels |\n| 😰 Panik Kalm | `panik_kalm` | Panic → calm → panic |\n\n### Aliases\n\n`cmm` → change_my_mind · `brain` → expanding_brain · `fine` → this_is_fine · `stocks` → stonks · `kalm`/`panik` → panik_kalm\n\n## Quote Packs\n\n```bash\npython scripts/meme_gen.py quote --category programming --count 5 --generate --template drake\n```\n\n| Category | Count | Vibe |\n|---|---|---|\n| `programming` | 20 | Dev life struggles |\n| `startup` | 15 | Hustle culture satire |\n| `productivity` | 15 | Procrastination humor |\n| `student` | 15 | Academic chaos |\n\n## Output Formats\n\n### SVG (default)\nStandalone SVG file. Opens in any browser, scales infinitely.\n\n```bash\npython scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --output meme.svg\n```\n\n### HTML (optional)\nSVG wrapped in a styled HTML page for easy sharing/viewing.\n\n```bash\npython scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --html\n```\n\n## Custom Templates\n\nCreate an SVG with `{{TOP}}` and `{{BOTTOM}}` placeholders:\n\n```svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 800\">\n  <rect width=\"800\" height=\"800\" fill=\"#1a1a2a\"/>\n  {{TOP}}\n  {{BOTTOM}}\n</svg>\n```\n\nThen:\n\n```bash\npython scripts/meme_gen.py custom 'My text' 'Other text' --template-file my_template.svg\n```\n\n## Animation\n\nAdd `--animate` for SVG-native text fade-in effects:\n\n```bash\npython scripts/meme_gen.py make 'Hello' 'World' --template drake --animate --html\n```\n\n## Examples\n\n```bash\n# Programming memes\npython scripts/meme_gen.py make 'WRITING TESTS' 'COPY-PASTING FROM SO' --template drake\n\n# Productivity satire\npython scripts/meme_gen.py make \"5AM CLUB\" \"SNOOZE TO 9\" --template stonks\n\n# Student life\npython scripts/meme_gen.py batch 'DUE TOMORROW' '3AM ENERGY' --all-templates --output-dir exam_memes/\n\n# Generate 10 memes from quote pack\npython scripts/meme_gen.py quote --category startup --count 10 --generate --output-dir startup_memes/\n```\n\n## Why SVG?\n\n| Feature | SVG | Raster (PNG/JPG) |\n|---|---|---|\n| Resolution | ∞ (infinite) | Fixed pixels |\n| File size | 3-5 KB | 100-500 KB |\n| Editing | Text-based, easy | Pixel-level |\n| Search | Text is selectable | Not searchable |\n| Print | Perfect quality | Pixelated |\n\n## File Structure\n\n```\nmeme-generator/\n├── SKILL.md              # Skill metadata\n├── README.md             # This file\n├── LICENSE               # MIT\n├── scripts/\n│   └── meme_gen.py       # Main generator script\n└── references/\n    ├── templates.md      # Template reference guide\n    └── svg-text.md       # SVG text rendering guide\n```\n\n## License\n\nMIT © Denis Voronin\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn75wwn4x6djaf28jbykeamazd81gtdp\",\n  \"slug\": \"meme-generator-2\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786688285056\n}\n\nFile v0.1.0:references/svg-text.md\n\n# SVG Text Rendering Guide\n\nHow text is rendered in meme SVGs — styling, wrapping, and animation tricks.\n\n## Impact Font Stack\n\nThe classic meme look uses **Impact** font. Since Impact may not be available on all systems, we use a font stack:\n\n```css\nfont-family: Impact, 'Arial Black', Haettenschweiler, sans-serif\n```\n\nThis cascades: if Impact isn't installed, the browser tries Arial Black, then Haettenschweiler, then a generic sans-serif. On most Windows systems Impact is pre-installed; on Linux/macOS, Arial Black is the common fallback.\n\n## Text Styling\n\n### White Fill + Black Stroke (Classic Meme Look)\n\n```xml\n<text x=\"400\" y=\"65\"\n      font-family=\"Impact, 'Arial Black', sans-serif\"\n      font-size=\"60\"\n      font-weight=\"bold\"\n      fill=\"white\"\n      stroke=\"black\"\n      stroke-width=\"4\"\n      stroke-linejoin=\"round\"\n      stroke-linecap=\"round\"\n      paint-order=\"stroke fill\"\n      text-anchor=\"middle\"\n      letter-spacing=\"1.5\">\n  TOP TEXT\n</text>\n```\n\n### Key Attributes\n\n| Attribute | Value | Purpose |\n|---|---|---|\n| `fill` | `white` | Interior text color |\n| `stroke` | `black` | Outline color |\n| `stroke-width` | `3–5` | Outline thickness (scales with font size) |\n| `paint-order` | `stroke fill` | Draw outline BEHIND fill (critical!) |\n| `stroke-linejoin` | `round` | Rounded corners on outline |\n| `font-weight` | `bold` | Extra thickness |\n| `letter-spacing` | `1.5` | Slight spacing for readability |\n| `text-anchor` | `middle` | Horizontal centering |\n\n### Why `paint-order=\"stroke fill\"`?\n\nWithout this, the stroke is drawn ON TOP of the fill, making text look thin/hollow. With `stroke fill` order, the stroke renders first (as a fat outline), then the white fill paints over its center, leaving a clean black border.\n\nThis is the single most important attribute for authentic meme text.\n\n## Text Wrapping\n\nSVG `<text>` doesn't auto-wrap. We manually split long text into multiple `<text>` elements with calculated Y positions.\n\n### Wrapping Algorithm\n\n```python\ndef wrap_text(text, max_chars=22):\n    \"\"\"Split text into lines of at most max_chars.\"\"\"\n    lines = []\n    for word in text.split():\n        if not lines or len(lines[-1]) + 1 + len(word) > max_chars:\n            lines.append(word)\n        else:\n            lines[-1] += \" \" + word\n    return lines\n```\n\n### Line Height\n\nEach line is offset by `font_size * 1.05` vertically:\n\n```python\nline_height = font_size * 1.05\nfor i, line in enumerate(lines):\n    y = base_y + i * line_height\n```\n\n### Auto-sizing\n\nThe generator shrinks font size until the longest line fits within the canvas width:\n\n```python\ndef optimal_font_size(lines, max_width_ratio=0.92, base_size=60, min_size=22):\n    longest = max(len(line) for line in lines)\n    while base_size > min_size:\n        char_width = base_size * 0.52  # Impact avg char width ratio\n        if longest * char_width <= WIDTH * max_width_ratio:\n            return base_size\n        base_size -= 2\n    return min_size\n```\n\nThe `0.52` ratio approximates the average character width relative to font size for Impact/Arial Black (wider than normal fonts).\n\n## Positioning\n\n### Top Text\n```python\ny_start = 65  # Fixed top padding\ny = y_start  # First line baseline\n```\n\n### Bottom Text\n```python\ntotal_height = num_lines * font_size * 1.05\ny_start = HEIGHT - total_height - 25  # 25px bottom padding\n```\n\n### Center Text\n```python\ntotal_height = num_lines * font_size * 1.05\ny_start = (HEIGHT - total_height) / 2 + font_size\n```\n\n## Animation\n\nSVG supports native CSS/SMIL animations without JavaScript.\n\n### Fade-In Effect\n\n```xml\n<text ...>\n  TEXT\n  <animate attributeName=\"opacity\"\n           values=\"0;1\"\n           dur=\"0.4s\"\n           begin=\"0.2s\"\n           fill=\"freeze\"/>\n</text>\n```\n\n- `values=\"0;1\"` — fade from 0% to 100% opacity\n- `dur=\"0.4s\"` — animation duration\n- `begin=\"0.2s\"` — delay before start (stagger lines)\n- `fill=\"freeze\"` — hold final state (don't reset)\n\n### Pulsing Effect (Panik)\n\n```xml\n<circle ...>\n  <animate attributeName=\"r\"\n           values=\"40;80;40\"\n           dur=\"1.5s\"\n           repeatCount=\"indefinite\"/>\n  <animate attributeName=\"opacity\"\n           values=\"0.5;0;0.5\"\n           dur=\"1.5s\"\n           repeatCount=\"indefinite\"/>\n</circle>\n```\n\n### Reduced Motion Accessibility\n\nAlways respect user preferences:\n\n```xml\n<style>\n  @media (prefers-reduced-motion: reduce) {\n    animate { display: none; }\n  }\n</style>\n```\n\n## Export to HTML\n\nFor easy browser viewing, wrap SVG in a minimal HTML page:\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n<style>\n  body { margin: 0; display: flex; justify-content: center;\n         align-items: center; min-height: 100vh; background: #1a1a2a; }\n  svg { max-width: 100%; height: auto; }\n</style>\n</head>\n<body>\n  <!-- SVG content here -->\n</body>\n</html>\n```\n\nThe `max-width: 100%` makes the SVG responsive — it scales to fit any screen.\n\n## Common Issues\n\n### Text appears behind shapes\nAdd text AFTER shapes in the SVG document (later elements render on top).\n\n### Font looks wrong on Linux\nInstall `fonts-liberation` or `ttf-mscorefonts-installer` for Impact. Alternatively, Arial Black is usually available.\n\n### Stroke makes text too thin\nEnsure `paint-order=\"stroke fill\"` is set. Without it, the stroke covers half the fill.\n\n### Text too wide\nReduce `max_chars` in the wrapping function, or let `optimal_font_size` auto-shrink.\n\nFile v0.1.0:references/templates.md\n\n# Template Reference Guide\n\nThis document describes how each meme template works, what the visual layout looks like, and when to use it.\n\n## Template Overview\n\nAll templates render at **800×800** SVG units and are drawn entirely with SVG shapes (rects, circles, paths, gradients). No raster images are embedded.\n\n---\n\n## 1. Drake (`drake`)\n\n**Layout**: Two horizontal panels stacked vertically. Left side has a stylized figure (rejecting on top, approving on bottom). Right side has text.\n\n**Text positions**: Top text on right of upper panel, bottom text on right of lower panel.\n\n**When to use**: Comparing two options where one is clearly better. The \"reject then approve\" pattern.\n\n**Example**: \n- Top: \"WRITING TESTS\" (rejected)\n- Bottom: \"COPY-PASTING FROM STACK OVERFLOW\" (approved)\n\n---\n\n## 2. Distracted Boyfriend (`distracted_boyfriend`)\n\n**Layout**: Three character silhouettes — boyfriend in center turning head, girlfriend on left, distraction on right. Labels float above each character.\n\n**Text positions**: Top text over the scene, labels on each character area.\n\n**When to use**: Showing divided attention, temptation, or choosing one thing over another.\n\n**Example**:\n- Top: \"DEADLINES\" (girlfriend)\n- Bottom: \"NEW SIDE PROJECT\" (distraction)\n- Center: \"ME\"\n\n---\n\n## 3. Two Buttons (`two_buttons`)\n\n**Layout**: A figure with hand extended toward two large buttons. Left button = top text, right button = bottom text. Sweat drop indicates anxiety.\n\n**Text positions**: Text inside each button.\n\n**When to use**: An impossible dilemma, two equally tempting/terrifying options.\n\n**Example**:\n- Left: \"SHIP IT NOW\"\n- Right: \"WRITE TESTS FIRST\"\n\n---\n\n## 4. Change My Mind (`change_my_mind`)\n\n**Layout**: A figure sitting at a folding table with a sign. The sign contains the main text.\n\n**Text positions**: Top text at top of image, text repeated on the sign.\n\n**When to use**: Stating a controversial opinion you're daring others to challenge.\n\n**Example**:\n- \"PYTHON IS THE BEST LANGUAGE\"\n\n---\n\n## 5. Galaxy Brain (`galaxy_brain`)\n\n**Layout**: Five brain shapes arranged vertically, each progressively brighter/glowing, set against a starry space background.\n\n**Text positions**: Labels beside the first (dumbest) and last (smartest) brain.\n\n**When to use**: Showing an escalation of ideas from basic to mind-blowing.\n\n**Example**:\n- Bottom (dumb): \"USE TABS\"\n- Top (genius): \"NEITHER — WRITE BINARY\"\n\n---\n\n## 6. Stonks (`stonks`)\n\n**Layout**: Suit-wearing figure on the left, with a green upward-pointing line graph and \"STONKS\" text on the right. Dark blue financial background.\n\n**Text positions**: Top text at top, bottom text at bottom.\n\n**When to use**: Ironic celebration of something going up that shouldn't, or financial humor.\n\n**Example**:\n- Top: \"BUY HIGH\"\n- Bottom: \"SELL LOW\"\n\n---\n\n## 7. This is Fine (`this_is_fine`)\n\n**Layout**: Cartoon dog sitting at a table with a coffee mug, surrounded by orange/yellow flames. Warm orange background.\n\n**Text positions**: Standard top/bottom Impact text.\n\n**When to use**: Accepting a terrible situation with false calm. Denial humor.\n\n**Example**:\n- Top: \"PRODUCTION DOWN\"\n- Bottom: \"THIS IS FINE\"\n\n---\n\n## 8. Doge (`doge`)\n\n**Layout**: Shiba Inu dog on a cream/beige background. Multiple colorful Comic Sans labels scattered around (\"WOW\", \"SUCH\", \"VERY\", etc.).\n\n**Text positions**: Top text combined with doge-speak labels, bottom text in Impact style.\n\n**When to use**: Playful, ironic praise. Anything that deserves a \"much wow.\"\n\n**Example**:\n- Top: \"CLEAN CODE\"\n- Bottom: \"VERY READABLE\"\n\n---\n\n## 9. Expanding Brain (`expanding_brain`)\n\n**Layout**: Four brain silhouettes arranged vertically, each with increasing brightness/glow. Divided by horizontal lines into stages.\n\n**Text positions**: Labels for the first (basic) and last (enlightened) stages.\n\n**When to use**: Escalating cleverness from obvious to brilliant/absurd.\n\n**Example**:\n- Top (basic): \"COMMENT YOUR CODE\"\n- Bottom (galaxy): \"THE CODE COMMENTS ITSELF\"\n\n---\n\n## 10. Panik Kalm Panik (`panik_kalm`)\n\n**Layout**: Three vertical panels — left (red, PANIK), center (blue, KALM), right (red, PANIK). Animated pulsing circles in panic panels, calm face in center.\n\n**Text positions**: Text at top of each panel, PANIK/KALM labels at bottom.\n\n**When to use**: A situation where you panic, briefly calm down, then realize something worse and panic again.\n\n**Example**:\n- Left: \"BUG IN PRODUCTION\"\n- Center: \"OH WAIT, IT'S FRIDAY\"\n- Right: \"FRIDAY DEPLOY\"\n\n---\n\n## Custom Templates\n\nCreate your own SVG template with `{{TOP}}` and `{{BOTTOM}}` placeholders:\n\n```svg\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 800\">\n  <rect width=\"800\" height=\"800\" fill=\"#gradient_or_color\"/>\n  <!-- Your custom shapes/paths here -->\n  {{TOP}}\n  {{BOTTOM}}\n</svg>\n```\n\nThe generator will replace placeholders with properly styled Impact text blocks (white fill, black stroke, uppercase, word-wrapped).\n\n### Custom Template Guidelines\n\n- **Canvas**: 800×800 viewBox recommended\n- **Background**: Always include a background rect\n- **Placeholders**: `{{TOP}}` and `{{BOTTOM}}` — these get replaced with full `<text>` elements\n- **Colors**: Use SVG-compatible color names or hex codes\n- **Gradients**: Define in `<defs>` and reference with `url(#id)`\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nGenerate SVG-based memes from text, including classic templates, batch generation, quote packs, and animated effects using pure Python.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[voronindenis5](https://clawhub.ai/user/voronindenis5)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, creators, and social media teams use this skill to generate single or batch SVG memes from text, built-in quote packs, or custom SVG templates.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The local CLI writes SVG and optional HTML files and may overwrite existing files when default or reused output names are used.\n\nMitigation: Run it in a dedicated working directory and pass explicit output paths or output directories for each generation task.\n\n## Reference(s):\n\n- [Source repository](https://github.com/voronindenis5/meme-generator)\n- [ClawHub skill page](https://clawhub.ai/voronindenis5/skills/meme-generator-2)\n- [SVG Text Rendering Guide](references/svg-text.md)\n- [Template Reference Guide](references/templates.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Code, Shell commands, Files, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands; generated assets are SVG files and optional HTML files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated files are local SVG by default; HTML export is optional; batch mode can write multiple files.]\n\n## Skill Version(s):\n\n0.1.0 (source: ClawHub release metadata; artifact frontmatter and script header report 1.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.1.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Denis Voronin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","readmeExcerpt":"Skill: Meme Generator Owner: voronindenis5 Summary: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-14T06:18:05.056Z | auto Initial public release of meme-generator: generate crisp SVG memes from text using classic template","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch across all templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get quote ideas\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine\n\n# List all templates\npython scripts/meme_gen.py list"},{"language":"bash","snippet":"python scripts/meme_gen.py custom 'Hello' 'World' --template-file my_template.svg"},{"language":"bash","snippet":"# Make a single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch: same text across ALL templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get random quotes\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode (stdin as top text)\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine"},{"language":"bash","snippet":"python scripts/meme_gen.py quote --category programming --count 5 --generate --template drake"},{"language":"bash","snippet":"python scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --output meme.svg"},{"language":"bash","snippet":"python scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --html"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: meme-generator\ndescription: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution.\nauthor: Denis Voronin\nlicense: MIT\nversion: 1.0.0\nlanguage: python\ntags: [meme, svg, viral, social, fun]\ncategories:\n  - creative\n---\n\n# Meme Generator\n\nCreate shareable SVG memes from text input. Pure Python stdlib — no external dependencies.\n\n## Quick Start\n\n```bash\n# Single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch across all templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get quote ideas\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine\n\n# List all templates\npython scripts/meme_gen.py list\n```\n\n## Templates\n\n| Template | Key | Format |\n|---|---|---|\n| Drake | `drake` | Two-panel reject/approve |\n| Distracted Boyfriend | `distracted_boyfriend` | Three-character scene |\n| Two Buttons | `two_buttons` | Dilemma choice |\n| Change My Mind | `change_my_mind` | Table + sign |\n| Galaxy Brain | `galaxy_brain` | Ascending brain levels |\n| Stonks | `stonks` | Suit guy + arrow |\n| This is Fine | `this_is_fine` | Dog in fire |\n| Doge | `doge` | Shiba + colorful text |\n| Expanding Brain | `expanding_brain` | Four-stage brain glow |\n| Panik Kalm | `panik_kalm` | Three-panel panic/calm |\n\nAliases: `cmm` → change_my_mind, `brain` → expanding_brain, `fine` → this_is_fine, `stocks` → stonks, etc.\n\n## Quote Categories\n\n- **programming** — dev life struggles (20 quotes)\n- **startup** — hustle culture satire (15 quotes)\n- **productivity** — procrastination humor (15 quotes)\n- **student** — academic chaos (15 quotes)\n\n## Options\n\n- `--html` — Also export HTML (easy browser viewing)\n- `--animate` — Add SVG text animations (fade-in)\n- `--all-templates` — Batch with every template\n- `--output / --output-dir` — Control output paths\n\n## Custom Templates\n\nCreate an SVG file with `{{TOP}}` and `{{BOTTOM}}` placeholders, then:\n\n```bash\npython scripts/meme_gen.py custom 'Hello' 'World' --template-file my_template.svg\n```\n\n## Output\n\n- **SVG**: Standalone, scalable, tiny file size (~3-5 KB each)\n- **HTML**: Wraps SVG in a centered page for browser viewing\n- Watermark-free"},{"path":"README.md","content":"# Meme Generator 🎨\n\n> Create shareable SVG memes from text. Pure Python stdlib. Crisp at any resolution.\n\n![Python](https://img.shields.io/badge/python-3.8+-blue.svg)\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![No Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)\n\n## Features\n\n- ✅ **10 classic meme templates** — Drake, Distracted Boyfriend, Two Buttons, Change My Mind, Galaxy Brain, Stonks, This is Fine, Doge, Expanding Brain, Panik Kalm\n- ✅ **Pure Python stdlib** — no pip install needed, no Pillow, no requests\n- ✅ **SVG output** — crisp at any resolution, 3-5 KB per meme\n- ✅ **Batch generation** — one quote → all templates instantly\n- ✅ **Quote packs** — programming, startup, productivity, student life\n- ✅ **Animated effects** — SVG-native animations\n- ✅ **Custom templates** — use your own SVG with `{{TOP}}`/`{{BOTTOM}}` placeholders\n- ✅ **Watermark-free**\n\n## Quick Start\n\n```bash\n# Make a single meme\npython scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg\n\n# Batch: same text across ALL templates\npython scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/\n\n# Get random quotes\npython scripts/meme_gen.py quote --category programming --count 5\n\n# Pipe mode (stdin as top text)\necho 'When it works on production' | python scripts/meme_gen.py --template this_is_fine\n```\n\n## Templates\n\n| Template | Key | Description |\n|---|---|---|\n| 🎤 Drake | `drake` | Reject / approve two-panel |\n| 👀 Distracted Boyfriend | `distracted_boyfriend` | Three-character attention split |\n| 🔘 Two Buttons | `two_buttons` | Impossible dilemma |\n| 🪧 Change My Mind | `change_my_mind` | Guy at table with sign |\n| 🧠 Galaxy Brain | `galaxy_brain` | Five ascending brain stages |\n| 📈 Stonks | `stonks` | Suit guy + upward arrow |\n| 🔥 This is Fine | `this_is_fine` | Dog in burning room |\n| 🐕 Doge | `doge` | Shiba Inu + colorful text |\n| ✨ Expanding Brain | `expanding_brain` | Four glowing brain levels |\n| 😰 Panik Kalm | `panik_kalm` | Panic → calm → panic |\n\n### Aliases\n\n`cmm` → change_my_mind · `brain` → expanding_brain · `fine` → this_is_fine · `stocks` → stonks · `kalm`/`panik` → panik_kalm\n\n## Quote Packs\n\n```bash\npython scripts/meme_gen.py quote --category programming --count 5 --generate --template drake\n```\n\n| Category | Count | Vibe |\n|---|---|---|\n| `programming` | 20 | Dev life struggles |\n| `startup` | 15 | Hustle culture satire |\n| `productivity` | 15 | Procrastination humor |\n| `student` | 15 | Academic chaos |\n\n## Output Formats\n\n### SVG (default)\nStandalone SVG file. Opens in any browser, scales infinitely.\n\n```bash\npython scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --output meme.svg\n```\n\n### HTML (optional)\nSVG wrapped in a styled HTML page for easy sharing/viewing.\n\n```bash\npython scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --html\n```\n\n## Custom Templates\n\nCreate an SVG with `{{TOP}}` and `{{BOTTOM}}` placeholders:\n\n"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75wwn4x6djaf28jbykeamazd81gtdp\",\n  \"slug\": \"meme-generator-2\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786688285056\n}"},{"path":"references/svg-text.md","content":"# SVG Text Rendering Guide\n\nHow text is rendered in meme SVGs — styling, wrapping, and animation tricks.\n\n## Impact Font Stack\n\nThe classic meme look uses **Impact** font. Since Impact may not be available on all systems, we use a font stack:\n\n```css\nfont-family: Impact, 'Arial Black', Haettenschweiler, sans-serif\n```\n\nThis cascades: if Impact isn't installed, the browser tries Arial Black, then Haettenschweiler, then a generic sans-serif. On most Windows systems Impact is pre-installed; on Linux/macOS, Arial Black is the common fallback.\n\n## Text Styling\n\n### White Fill + Black Stroke (Classic Meme Look)\n\n```xml\n<text x=\"400\" y=\"65\"\n      font-family=\"Impact, 'Arial Black', sans-serif\"\n      font-size=\"60\"\n      font-weight=\"bold\"\n      fill=\"white\"\n      stroke=\"black\"\n      stroke-width=\"4\"\n      stroke-linejoin=\"round\"\n      stroke-linecap=\"round\"\n      paint-order=\"stroke fill\"\n      text-anchor=\"middle\"\n      letter-spacing=\"1.5\">\n  TOP TEXT\n</text>\n```\n\n### Key Attributes\n\n| Attribute | Value | Purpose |\n|---|---|---|\n| `fill` | `white` | Interior text color |\n| `stroke` | `black` | Outline color |\n| `stroke-width` | `3–5` | Outline thickness (scales with font size) |\n| `paint-order` | `stroke fill` | Draw outline BEHIND fill (critical!) |\n| `stroke-linejoin` | `round` | Rounded corners on outline |\n| `font-weight` | `bold` | Extra thickness |\n| `letter-spacing` | `1.5` | Slight spacing for readability |\n| `text-anchor` | `middle` | Horizontal centering |\n\n### Why `paint-order=\"stroke fill\"`?\n\nWithout this, the stroke is drawn ON TOP of the fill, making text look thin/hollow. With `stroke fill` order, the stroke renders first (as a fat outline), then the white fill paints over its center, leaving a clean black border.\n\nThis is the single most important attribute for authentic meme text.\n\n## Text Wrapping\n\nSVG `<text>` doesn't auto-wrap. We manually split long text into multiple `<text>` elements with calculated Y positions.\n\n### Wrapping Algorithm\n\n```python\ndef wrap_text(text, max_chars=22):\n    \"\"\"Split text into lines of at most max_chars.\"\"\"\n    lines = []\n    for word in text.split():\n        if not lines or len(lines[-1]) + 1 + len(word) > max_chars:\n            lines.append(word)\n        else:\n            lines[-1] += \" \" + word\n    return lines\n```\n\n### Line Height\n\nEach line is offset by `font_size * 1.05` vertically:\n\n```python\nline_height = font_size * 1.05\nfor i, line in enumerate(lines):\n    y = base_y + i * line_height\n```\n\n### Auto-sizing\n\nThe generator shrinks font size until the longest line fits within the canvas width:\n\n```python\ndef optimal_font_size(lines, max_width_ratio=0.92, base_size=60, min_size=22):\n    longest = max(len(line) for line in lines)\n    while base_size > min_size:\n        char_width = base_size * 0.52  # Impact avg char width ratio\n        if longest * char_width <= WIDTH * max_width_ratio:\n            return base_size\n        base_size -= 2\n    return min_size\n```\n\nThe `0.52` ratio approximates the "},{"path":"references/templates.md","content":"# Template Reference Guide\n\nThis document describes how each meme template works, what the visual layout looks like, and when to use it.\n\n## Template Overview\n\nAll templates render at **800×800** SVG units and are drawn entirely with SVG shapes (rects, circles, paths, gradients). No raster images are embedded.\n\n---\n\n## 1. Drake (`drake`)\n\n**Layout**: Two horizontal panels stacked vertically. Left side has a stylized figure (rejecting on top, approving on bottom). Right side has text.\n\n**Text positions**: Top text on right of upper panel, bottom text on right of lower panel.\n\n**When to use**: Comparing two options where one is clearly better. The \"reject then approve\" pattern.\n\n**Example**: \n- Top: \"WRITING TESTS\" (rejected)\n- Bottom: \"COPY-PASTING FROM STACK OVERFLOW\" (approved)\n\n---\n\n## 2. Distracted Boyfriend (`distracted_boyfriend`)\n\n**Layout**: Three character silhouettes — boyfriend in center turning head, girlfriend on left, distraction on right. Labels float above each character.\n\n**Text positions**: Top text over the scene, labels on each character area.\n\n**When to use**: Showing divided attention, temptation, or choosing one thing over another.\n\n**Example**:\n- Top: \"DEADLINES\" (girlfriend)\n- Bottom: \"NEW SIDE PROJECT\" (distraction)\n- Center: \"ME\"\n\n---\n\n## 3. Two Buttons (`two_buttons`)\n\n**Layout**: A figure with hand extended toward two large buttons. Left button = top text, right button = bottom text. Sweat drop indicates anxiety.\n\n**Text positions**: Text inside each button.\n\n**When to use**: An impossible dilemma, two equally tempting/terrifying options.\n\n**Example**:\n- Left: \"SHIP IT NOW\"\n- Right: \"WRITE TESTS FIRST\"\n\n---\n\n## 4. Change My Mind (`change_my_mind`)\n\n**Layout**: A figure sitting at a folding table with a sign. The sign contains the main text.\n\n**Text positions**: Top text at top of image, text repeated on the sign.\n\n**When to use**: Stating a controversial opinion you're daring others to challenge.\n\n**Example**:\n- \"PYTHON IS THE BEST LANGUAGE\"\n\n---\n\n## 5. Galaxy Brain (`galaxy_brain`)\n\n**Layout**: Five brain shapes arranged vertically, each progressively brighter/glowing, set against a starry space background.\n\n**Text positions**: Labels beside the first (dumbest) and last (smartest) brain.\n\n**When to use**: Showing an escalation of ideas from basic to mind-blowing.\n\n**Example**:\n- Bottom (dumb): \"USE TABS\"\n- Top (genius): \"NEITHER — WRITE BINARY\"\n\n---\n\n## 6. Stonks (`stonks`)\n\n**Layout**: Suit-wearing figure on the left, with a green upward-pointing line graph and \"STONKS\" text on the right. Dark blue financial background.\n\n**Text positions**: Top text at top, bottom text at bottom.\n\n**When to use**: Ironic celebration of something going up that shouldn't, or financial humor.\n\n**Example**:\n- Top: \"BUY HIGH\"\n- Bottom: \"SELL LOW\"\n\n---\n\n## 7. This is Fine (`this_is_fine`)\n\n**Layout**: Cartoon dog sitting at a table with a coffee mug, surrounded by orange/yellow flames. Warm orange background.\n\n**Text positions**: Standard "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution. Skill: Meme Generator Owner: voronindenis5 Summary: Generate SVG-based memes from text — classic templates (Drake, Stonks, This is Fine, Doge, etc.), batch generation, quote packs, animated effects. Pure Python stdlib, crisp at any resolution. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-14T06:18:05.056Z | auto Initial public release of meme-generator: generate crisp SVG memes from text using classic template","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1609,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T06:56:45.373Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:43:56.164Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}