agentCLAWHUBUnverified

Meme Generator

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

OpenClaw

Rank

62

Safety

84

Downloads

1.6k

Updated

Oct 10, 2026

Version

0.1.0

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.6K downloadsadoption · observed Oct 10, 2026
Latest release
0.1.0release · observed Aug 14, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17b6amkd3wzqgg640v03a9r1n83gxs1:meme-generator-2
  1. Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
  2. 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: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/snapshot"

Documentation

CLAWHUB

22,077 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: meme-generator
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.
author: Denis Voronin
license: MIT
version: 1.0.0
language: python
tags: [meme, svg, viral, social, fun]
categories:
  - creative
---

# Meme Generator

Create shareable SVG memes from text input. Pure Python stdlib — no external dependencies.

## Quick Start

```bash
# Single meme
python scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg

# Batch across all templates
python scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/

# Get quote ideas
python scripts/meme_gen.py quote --category programming --count 5

# Pipe mode
echo 'When it works on production' | python scripts/meme_gen.py --template this_is_fine

# List all templates
python scripts/meme_gen.py list
```

## Templates

| Template | Key | Format |
|---|---|---|
| Drake | `drake` | Two-panel reject/approve |
| Distracted Boyfriend | `distracted_boyfriend` | Three-character scene |
| Two Buttons | `two_buttons` | Dilemma choice |
| Change My Mind | `change_my_mind` | Table + sign |
| Galaxy Brain | `galaxy_brain` | Ascending brain levels |
| Stonks | `stonks` | Suit guy + arrow |
| This is Fine | `this_is_fine` | Dog in fire |
| Doge | `doge` | Shiba + colorful text |
| Expanding Brain | `expanding_brain` | Four-stage brain glow |
| Panik Kalm | `panik_kalm` | Three-panel panic/calm |

Aliases: `cmm` → change_my_mind, `brain` → expanding_brain, `fine` → this_is_fine, `stocks` → stonks, etc.

## Quote Categories

- **programming** — dev life struggles (20 quotes)
- **startup** — hustle culture satire (15 quotes)
- **productivity** — procrastination humor (15 quotes)
- **student** — academic chaos (15 quotes)

## Options

- `--html` — Also export HTML (easy browser viewing)
- `--animate` — Add SVG text animations (fade-in)
- `--all-templates` — Batch with every template
- `--output / --output-dir` — Control output paths

## Custom Templates

Create an SVG file with `{{TOP}}` and `{{BOTTOM}}` placeholders, then:

```bash
python scripts/meme_gen.py custom 'Hello' 'World' --template-file my_template.svg
```

## Output

- **SVG**: Standalone, scalable, tiny file size (~3-5 KB each)
- **HTML**: Wraps SVG in a centered page for browser viewing
- Watermark-free

README.md

# Meme Generator 🎨

> Create shareable SVG memes from text. Pure Python stdlib. Crisp at any resolution.

![Python](https://img.shields.io/badge/python-3.8+-blue.svg)
![License](https://img.shields.io/badge/license-MIT-green.svg)
![No Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)

## Features

- ✅ **10 classic meme templates** — Drake, Distracted Boyfriend, Two Buttons, Change My Mind, Galaxy Brain, Stonks, This is Fine, Doge, Expanding Brain, Panik Kalm
- ✅ **Pure Python stdlib** — no pip install needed, no Pillow, no requests
- ✅ **SVG output** — crisp at any resolution, 3-5 KB per meme
- ✅ **Batch generation** — one quote → all templates instantly
- ✅ **Quote packs** — programming, startup, productivity, student life
- ✅ **Animated effects** — SVG-native animations
- ✅ **Custom templates** — use your own SVG with `{{TOP}}`/`{{BOTTOM}}` placeholders
- ✅ **Watermark-free**

## Quick Start

```bash
# Make a single meme
python scripts/meme_gen.py make 'Unit tests?' 'No tests.' --template drake --output meme.svg

# Batch: same text across ALL templates
python scripts/meme_gen.py batch 'Coffee is debug code' --all-templates --output-dir memes/

# Get random quotes
python scripts/meme_gen.py quote --category programming --count 5

# Pipe mode (stdin as top text)
echo 'When it works on production' | python scripts/meme_gen.py --template this_is_fine
```

## Templates

| Template | Key | Description |
|---|---|---|
| 🎤 Drake | `drake` | Reject / approve two-panel |
| 👀 Distracted Boyfriend | `distracted_boyfriend` | Three-character attention split |
| 🔘 Two Buttons | `two_buttons` | Impossible dilemma |
| 🪧 Change My Mind | `change_my_mind` | Guy at table with sign |
| 🧠 Galaxy Brain | `galaxy_brain` | Five ascending brain stages |
| 📈 Stonks | `stonks` | Suit guy + upward arrow |
| 🔥 This is Fine | `this_is_fine` | Dog in burning room |
| 🐕 Doge | `doge` | Shiba Inu + colorful text |
| ✨ Expanding Brain | `expanding_brain` | Four glowing brain levels |
| 😰 Panik Kalm | `panik_kalm` | Panic → calm → panic |

### Aliases

`cmm` → change_my_mind · `brain` → expanding_brain · `fine` → this_is_fine · `stocks` → stonks · `kalm`/`panik` → panik_kalm

## Quote Packs

```bash
python scripts/meme_gen.py quote --category programming --count 5 --generate --template drake
```

| Category | Count | Vibe |
|---|---|---|
| `programming` | 20 | Dev life struggles |
| `startup` | 15 | Hustle culture satire |
| `productivity` | 15 | Procrastination humor |
| `student` | 15 | Academic chaos |

## Output Formats

### SVG (default)
Standalone SVG file. Opens in any browser, scales infinitely.

```bash
python scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --output meme.svg
```

### HTML (optional)
SVG wrapped in a styled HTML page for easy sharing/viewing.

```bash
python scripts/meme_gen.py make 'Top' 'Bottom' --template stonks --html
```

## Custom Templates

Create an SVG with `{{TOP}}` and `{{BOTTOM}}` placeholders:

_meta.json

{
  "ownerId": "kn75wwn4x6djaf28jbykeamazd81gtdp",
  "slug": "meme-generator-2",
  "version": "0.1.0",
  "publishedAt": 1786688285056
}

references/svg-text.md

# SVG Text Rendering Guide

How text is rendered in meme SVGs — styling, wrapping, and animation tricks.

## Impact Font Stack

The classic meme look uses **Impact** font. Since Impact may not be available on all systems, we use a font stack:

```css
font-family: Impact, 'Arial Black', Haettenschweiler, sans-serif
```

This 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.

## Text Styling

### White Fill + Black Stroke (Classic Meme Look)

```xml
<text x="400" y="65"
      font-family="Impact, 'Arial Black', sans-serif"
      font-size="60"
      font-weight="bold"
      fill="white"
      stroke="black"
      stroke-width="4"
      stroke-linejoin="round"
      stroke-linecap="round"
      paint-order="stroke fill"
      text-anchor="middle"
      letter-spacing="1.5">
  TOP TEXT
</text>
```

### Key Attributes

| Attribute | Value | Purpose |
|---|---|---|
| `fill` | `white` | Interior text color |
| `stroke` | `black` | Outline color |
| `stroke-width` | `3–5` | Outline thickness (scales with font size) |
| `paint-order` | `stroke fill` | Draw outline BEHIND fill (critical!) |
| `stroke-linejoin` | `round` | Rounded corners on outline |
| `font-weight` | `bold` | Extra thickness |
| `letter-spacing` | `1.5` | Slight spacing for readability |
| `text-anchor` | `middle` | Horizontal centering |

### Why `paint-order="stroke fill"`?

Without 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.

This is the single most important attribute for authentic meme text.

## Text Wrapping

SVG `<text>` doesn't auto-wrap. We manually split long text into multiple `<text>` elements with calculated Y positions.

### Wrapping Algorithm

```python
def wrap_text(text, max_chars=22):
    """Split text into lines of at most max_chars."""
    lines = []
    for word in text.split():
        if not lines or len(lines[-1]) + 1 + len(word) > max_chars:
            lines.append(word)
        else:
            lines[-1] += " " + word
    return lines
```

### Line Height

Each line is offset by `font_size * 1.05` vertically:

```python
line_height = font_size * 1.05
for i, line in enumerate(lines):
    y = base_y + i * line_height
```

### Auto-sizing

The generator shrinks font size until the longest line fits within the canvas width:

```python
def optimal_font_size(lines, max_width_ratio=0.92, base_size=60, min_size=22):
    longest = max(len(line) for line in lines)
    while base_size > min_size:
        char_width = base_size * 0.52  # Impact avg char width ratio
        if longest * char_width <= WIDTH * max_width_ratio:
            return base_size
        base_size -= 2
    return min_size
```

The `0.52` ratio approximates the 

references/templates.md

# Template Reference Guide

This document describes how each meme template works, what the visual layout looks like, and when to use it.

## Template Overview

All templates render at **800×800** SVG units and are drawn entirely with SVG shapes (rects, circles, paths, gradients). No raster images are embedded.

---

## 1. Drake (`drake`)

**Layout**: Two horizontal panels stacked vertically. Left side has a stylized figure (rejecting on top, approving on bottom). Right side has text.

**Text positions**: Top text on right of upper panel, bottom text on right of lower panel.

**When to use**: Comparing two options where one is clearly better. The "reject then approve" pattern.

**Example**: 
- Top: "WRITING TESTS" (rejected)
- Bottom: "COPY-PASTING FROM STACK OVERFLOW" (approved)

---

## 2. Distracted Boyfriend (`distracted_boyfriend`)

**Layout**: Three character silhouettes — boyfriend in center turning head, girlfriend on left, distraction on right. Labels float above each character.

**Text positions**: Top text over the scene, labels on each character area.

**When to use**: Showing divided attention, temptation, or choosing one thing over another.

**Example**:
- Top: "DEADLINES" (girlfriend)
- Bottom: "NEW SIDE PROJECT" (distraction)
- Center: "ME"

---

## 3. Two Buttons (`two_buttons`)

**Layout**: A figure with hand extended toward two large buttons. Left button = top text, right button = bottom text. Sweat drop indicates anxiety.

**Text positions**: Text inside each button.

**When to use**: An impossible dilemma, two equally tempting/terrifying options.

**Example**:
- Left: "SHIP IT NOW"
- Right: "WRITE TESTS FIRST"

---

## 4. Change My Mind (`change_my_mind`)

**Layout**: A figure sitting at a folding table with a sign. The sign contains the main text.

**Text positions**: Top text at top of image, text repeated on the sign.

**When to use**: Stating a controversial opinion you're daring others to challenge.

**Example**:
- "PYTHON IS THE BEST LANGUAGE"

---

## 5. Galaxy Brain (`galaxy_brain`)

**Layout**: Five brain shapes arranged vertically, each progressively brighter/glowing, set against a starry space background.

**Text positions**: Labels beside the first (dumbest) and last (smartest) brain.

**When to use**: Showing an escalation of ideas from basic to mind-blowing.

**Example**:
- Bottom (dumb): "USE TABS"
- Top (genius): "NEITHER — WRITE BINARY"

---

## 6. Stonks (`stonks`)

**Layout**: Suit-wearing figure on the left, with a green upward-pointing line graph and "STONKS" text on the right. Dark blue financial background.

**Text positions**: Top text at top, bottom text at bottom.

**When to use**: Ironic celebration of something going up that shouldn't, or financial humor.

**Example**:
- Top: "BUY HIGH"
- Bottom: "SELL LOW"

---

## 7. This is Fine (`this_is_fine`)

**Layout**: Cartoon dog sitting at a table with a coffee mug, surrounded by orange/yellow flames. Warm orange background.

**Text positions**: Standard 
Github ReposUpdated 15h agoRank 70

AionUi

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!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

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

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/voronindenis5/skills/meme-generator-2",
      "sourceUrl": "https://clawhub.ai/voronindenis5/skills/meme-generator-2",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:56:45.373Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:56:45.373Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.6K downloads",
      "href": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceUrl": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T06:56:45.373Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "0.1.0",
      "href": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceUrl": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-14T06:18:05.056Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-meme-generator-2/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 0.1.0",
      "description": "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",
      "href": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceUrl": "https://clawhub.ai/voronindenis5/meme-generator-2",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-08-14T06:18:05.056Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to Meme Generator and adjacent AI workflows.