sticker-creator

Create die-cut sticker style cards via Nano Banana Pro. Use for social media cards, earnings cards, brand stickers, announcement cards, and any content formatted as a bold, clean sticker with a thick white border.

9 stars

Best use case

sticker-creator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create die-cut sticker style cards via Nano Banana Pro. Use for social media cards, earnings cards, brand stickers, announcement cards, and any content formatted as a bold, clean sticker with a thick white border.

Teams using sticker-creator should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/sticker-creator/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/design/sticker-creator/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/sticker-creator/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How sticker-creator Compares

Feature / Agentsticker-creatorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create die-cut sticker style cards via Nano Banana Pro. Use for social media cards, earnings cards, brand stickers, announcement cards, and any content formatted as a bold, clean sticker with a thick white border.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Sticker Creator

Generates die-cut sticker style cards using Nano Banana Pro. Output is a 1080×1080 PNG.

---

## Tools

| Tool | Purpose |
|------|---------|
| `nano-banana-pro` skill | Image generation via Gemini |

---

## Core Design Language

These rules apply to every sticker unless explicitly overridden:

| Element | Spec |
|---------|------|
| Canvas | 1080×1080 px, aspect ratio 1:1 |
| Orientation | **Perfectly upright. 0° rotation. No tilt. No skew. Ever.** |
| Border | Thick white die-cut border (~16px), soft drop shadow |
| Corner radius | Large rounded corners (~32px) |
| Background | Dark navy `#0f172a` (default) — overridable |
| Primary text | Bold white, large, top-left |
| Accent color | Teal/cyan `#22d3ee` for key values (default) — overridable |
| Callout box | Dark rounded pill/box for "Watch:", "Key:", or annotation text |
| Wordmark | "Bloom" in muted gray, bottom-right |
| Feel | Financial data card — confident, clean, minimal decoration |

**Always include this verbatim in every Nano Banana prompt:**
> `perfectly upright, zero rotation, no tilt, no skew, card sits flat and square`

---

## Step 1 — Resolve GEMINI_API_KEY

```bash
GEMINI_API_KEY=$(python3 -c "
import json, os
d = json.load(open(os.path.expanduser('~/.openclaw/openclaw.json')))
print(
  d.get('skills',{}).get('entries',{}).get('nano-banana-pro',{}).get('apiKey','')
  or d['env']['vars'].get('GEMINI_API_KEY','')
)" 2>/dev/null)
export GEMINI_API_KEY
```

---

## Step 2 — Build the Prompt

Start from the appropriate template below, then customize for the content.

### Financial / Earnings Card

```
Dark navy #0f172a background, die-cut sticker with thick white border and soft drop shadow,
large rounded corners, perfectly upright, zero rotation, no tilt, no skew, card sits flat and square.

Top-left: bold white ticker "$[TICKER]" in very large type.
Below ticker: "[Subtitle line]" in small muted gray text.

Center section:
- "Est. EPS: [value]" — label in white, value in teal/cyan bold
- "Est. Rev: [value]" — label in white, value in teal/cyan bold

Bottom: dark rounded box containing "Watch:" in teal bold followed by "[watch text]" in white.
Bottom-right: "Bloom" wordmark in muted gray.

Style: clean financial data card, no gradients, no decorative elements.
```

### Announcement / General Card

```
Dark navy #0f172a background, die-cut sticker with thick white border and soft drop shadow,
large rounded corners, perfectly upright, zero rotation, no tilt, no skew, card sits flat and square.

Top: "[Headline]" in bold white, large type.
Center: "[Body text or key stat]" in [accent color] bold.
Bottom: dark rounded pill containing "[Callout text]" in white.
Bottom-right: "Bloom" wordmark in muted gray.

Style: clean, confident, minimal decoration.
```

### Brand / Logo Sticker

```
[Background color] background, die-cut sticker with thick white border and soft drop shadow,
large rounded corners, perfectly upright, zero rotation, no tilt, no skew, card sits flat and square.

Center: "[Brand name or logo text]" in bold [color], very large.
[Optional tagline in small muted text below]

Style: clean brand mark, no gradients, no decorative elements.
```

---

## Step 3 — Generate

```bash
OUTFILE="/tmp/sticker-[name]-$(date +%Y%m%d-%H%M%S).png"

uv run ~/clawd/skills/nano-banana-pro/scripts/generate_image.py \
  --prompt "[assembled prompt]" \
  --filename "$OUTFILE" \
  --resolution 2K
```

- Always use `--resolution 2K` for finals (crisp at 1080×1080)
- Do NOT pass `--thinking` — `high` times out, `dynamic` throws a parameter conflict; default works fine
- Output path: `/tmp/sticker-[descriptive-name]-YYYYMMDD-HHMMSS.png`
- **exec timeout: 300s minimum** — image generation at 2K takes 60–120s; use `timeout=300, yieldMs=280000`

---

## Step 4 — Remove Background

After generation, strip the background so the sticker floats on transparency. Uses `rembg` via `uv`.

```bash
BGREMOVED="${OUTFILE%.png}-nobg.png"

uv run --with "rembg[cpu]" --with pillow python3 - "$OUTFILE" "$BGREMOVED" << 'EOF'
import sys
from rembg import remove
from PIL import Image

inp = Image.open(sys.argv[1]).convert("RGBA")
out = remove(inp)
out.save(sys.argv[2])
print(f"Background removed: {sys.argv[2]}")
EOF
```

- Output overwrites the variable: use `$BGREMOVED` (ends in `-nobg.png`) for all subsequent steps
- `rembg` downloads a ~170MB U2-Net model on first run — subsequent calls are fast (model cached)
- If the edge looks rough, regenerate with a cleaner Nano Banana prompt (more contrast between sticker and bg)

---

## Step 5 — Review & Iterate

After generation, show the image to the user. Common issues and fixes:

| Issue | Fix |
|-------|-----|
| Card is tilted | Add "perfectly upright, zero rotation, no tilt, card sits flat and square" — Gemini interprets "sticker" as rotated; override explicitly |
| Text too small | Add "large bold text, high contrast, easy to read at a glance" |
| Colors wrong | Specify exact hex codes in the prompt |
| Border too thin | Add "very thick white border, prominent die-cut effect" |
| Too decorative | Add "no gradients, no textures, flat clean design" |

If the first result is off, regenerate with a more explicit prompt — don't accept a tilted or messy card.

---

## Common Mistakes

1. **Tilted output** — must include "perfectly upright, zero rotation, no tilt, no skew, card sits flat and square" verbatim in every prompt. Non-negotiable.
2. **Using `--thinking` flag** — `high` times out, `dynamic` throws a parameter conflict. Omit the flag entirely; default quality is sufficient.
3. **Using `--resolution 1K` for finals** — always use `2K` for anything that gets posted.
4. **Vague prompts** — specify hex colors, exact text, font weight. Don't leave it to interpretation.
5. **PIL fallback** — never fall back to PIL. If Nano Banana fails, report the failure.
6. **Sending `$OUTFILE` instead of `$BGREMOVED`** — always send the `-nobg.png` version after background removal. The raw generated file still has a solid background.

Related Skills

youtube-title-creator

9
from exiao/skills

Generate high-CTR YouTube titles and thumbnail concepts using 119 proven frameworks ranked by performance score. Use when creating YouTube titles, optimizing video titles for CTR, generating thumbnail text, A/B testing title variations, or pairing titles with complementary thumbnails. Covers framework fitting method, universalization strategy, complementarity principle, and psychological trigger analysis.

skill-creator

9
from exiao/skills

Create new skills, modify and improve existing skills, and measure skill performance. Use when creating or editing ANY skill — including rewrites, description tweaks, or adding examples. TDD pre-flight required: write failing test first (3+ pressure scenarios run WITHOUT the skill) before touching SKILL.md. Also use for running evals, benchmarking skill performance with variance analysis, and optimizing skill descriptions for better triggering accuracy.

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

editor-in-chief

9
from exiao/skills

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.