Distinct from cover-maker:
- Aspect: ALWAYS 16:9 (no medium variation)
- Aesthetic: bright contrast, large text, exaggerated facial expressions — "thumbnail look"
- Variants vary in FACE PLACEMENT (left / right / center) more than in style
Distinct from flyer-maker:
- No event details (date / location)
- Stronger emphasis on the FACE if photo provided
- Different typography conventions (bigger, often colored, with stroke / shadow)
This skill does NOT:
- Generate YouTube banner art (different aspect — use
cover-maker --aspect 2560x1440 or image-prompt --execute)
- Generate animated thumbnails — static images only
- Source rights-cleared face references — provide your own
- Optimize for click-through (subjective — picks best of 3-5 manually)
ROLE
Read title + optional face → pick model (text-friendly + ref-capable) → assemble per-variant prompts with face-placement + bold title composition → batch execute → save PNGs.
PIPELINE
Resolve title:
- Required:
--title
- 3-7 words is the sweet spot for thumbnails
- High-energy phrasing works best ("How I Built X in 30 Days", "STOP DOING THIS")
Resolve photo (optional):
--photo <path-or-url> — face reference
- Identity preserve via Nano Banana Pro (default)
Resolve style — see references/composition-zones.md:
--style auto: picks vibrant + text-friendly styles
- Default for "YouTube look":
gradient-mesh-modern or swiss-grid-poster with vibrant accent
Face placement variants:
--placements left,right,center — default left,right,center (3 variants)
- The same face / title / style; placement varies
- Maximizes the chance of "the one that works for click"
Pick model:
- Photo + face →
nano-banana-pro (identity preserve)
- No photo + heavy text →
ideogram-3-quality
- Mixed →
gpt-image-2
Build per-variant prompts — composition zones per placement (face-left + text-right; face-right + text-left; face-center-bottom + text-top).
Batch execute — parallel.
Output:
./generated/thumbnail/<slug>/
thumbnail-left.png (face left, text right)
thumbnail-right.png (face right, text left)
thumbnail-center.png (face center, text top)
manifest.json
style-used.md
prompts.md
MODES
Required
thumbnail-maker --title "<text>"
Optional
--photo <path-or-url> — face / subject reference
--subtitle "<text>" — secondary line (rare for thumbnails)
--style auto|<library-id> — visual style
--style-mod "<override>" — tweak
--placements left,right,center,top,bottom — comma list (default left,right,center)
--variants N — variants per placement (default 1; >1 gives N takes per placement)
--lang en|ru — language hint
--model auto|<slug> — provider
--aspect WxH — override default 1920×1080 (e.g., 1280x720 for low-res)
Type presets
--type youtube — 1920×1080 (default), bright + bold aesthetic
--type blog — 1200×630 (OG image standard), more editorial
--type podcast-episode — 1920×1080 with podcast-cover-feel
Execution
--execute — actually generate
--output <dir> — custom output
--parallelism N — concurrent calls
--yes — skip cost confirmation
--resume — retry failed
--prompts-only — dry run
REFERENCES (load on demand)
| File |
When to load |
| references/model-picker.md |
Step 5 — model auto-pick + capability matrix |
| references/composition-zones.md |
Step 6 — per-placement composition templates, face + text positioning |
| references/troubleshoot.md |
When face placement collides with text, contrast issues, click-bait avoidance |
EXAMPLES
See examples/before-after.md — 3 calibration runs: YouTube tutorial thumbnail with creator face, blog header without photo, podcast episode cover with guest portrait.
CONSTRAINTS
Title 3-7 words. Past 7, text crowds + becomes unreadable at thumbnail scale.
Title is THE focal point. Even with a face, the title must be readable at 320×180px (small thumb on mobile).
One face per thumbnail. Multiple faces compete; pick one main subject.
Face placement variants are stochastic. "Left" / "right" / "center" guide the model but don't lock pixel-perfect.
Bright contrast is the YouTube look. The default --style auto biases toward vibrant + high-contrast styles. Override with --style photo-editorial-bw for editorial blog feel.
Don't add too many text elements. Title + optional subtitle = max 2. Past that, thumbnail looks crowded.
Reasonable click-bait avoidance. The skill doesn't enforce "non-clickbait" — that's editorial judgment. But it also doesn't artificially exaggerate facial expressions unless you ask via --style-mod "exaggerated shock expression".
One model across the variant set. Lock per-thumbnail.
Cost confirm ONCE. Sum across placements × variants.
Per-platform image sizing:
- YouTube: 1280×720 minimum, 1920×1080 high-res
- Blog OG image: 1200×630
- Podcast episode art: 1920×1080
- LinkedIn article cover: 1200×627
Never print API keys. Mask in errors.
INVOCATION HINTS
When the user says any of:
- "YouTube thumbnail", "blog header image", "podcast episode cover"
- "thumbnail for my video", "create thumbnail variants"
- "обложка для YouTube видео / поста / эпизода"
- "превью для видео"
If unclear, default to --type youtube. If user mentions "blog post" → --type blog. If "podcast episode" → --type podcast-episode.
Defaults: --type youtube --placements left,right,center --style auto --model auto. Without --execute, returns prompts.
This skill is distinct from:
cover-maker — that's albums/books/podcasts (general "cover" with title + creator). This is specifically thumbnail-aspect content marketing.
flyer-maker — events. This is content marketing.
avatar-maker — single-subject portrait. This adds text + 16:9 framing.
image-prompt — free-form. This is structured thumbnail conventions.
1---2name: thumbnail-maker3description: Produce YouTube / blog / podcast-episode thumbnails. 16:9 default (1280×720, 1920×1080). Face + bold title aesthetic; face-placement variants (left / right / center). Model picked for face preserve + text rendering. Use when: 'YouTube thumbnail', 'blog header image', 'podcast episode cover', 'обложка для youtube видео / поста / эпизода'.4license: MIT5---67<objective>8Thumbnail generator. Input: title + optional face photo + optional style. Output: N variants at 16:9 (YouTube / blog / podcast-episode thumbnail).910Distinct from `cover-maker`:11- Aspect: ALWAYS 16:9 (no medium variation)12- Aesthetic: bright contrast, large text, exaggerated facial expressions — "thumbnail look"13- Variants vary in FACE PLACEMENT (left / right / center) more than in style1415Distinct from `flyer-maker`:16- No event details (date / location)17- Stronger emphasis on the FACE if photo provided18- Different typography conventions (bigger, often colored, with stroke / shadow)1920This skill does NOT:21- Generate YouTube banner art (different aspect — use `cover-maker --aspect 2560x1440` or `image-prompt --execute`)22- Generate animated thumbnails — static images only23- Source rights-cleared face references — provide your own24- Optimize for click-through (subjective — picks best of 3-5 manually)25</objective>2627## ROLE2829Read title + optional face → pick model (text-friendly + ref-capable) → assemble per-variant prompts with face-placement + bold title composition → batch execute → save PNGs.3031## PIPELINE32331. **Resolve title**:34 - Required: `--title`35 - 3-7 words is the sweet spot for thumbnails36 - High-energy phrasing works best ("How I Built X in 30 Days", "STOP DOING THIS")37382. **Resolve photo** (optional):39 - `--photo <path-or-url>` — face reference40 - Identity preserve via Nano Banana Pro (default)41423. **Resolve style** — see `references/composition-zones.md`:43 - `--style auto`: picks vibrant + text-friendly styles44 - Default for "YouTube look": `gradient-mesh-modern` or `swiss-grid-poster` with vibrant accent45464. **Face placement variants**:47 - `--placements left,right,center` — default `left,right,center` (3 variants)48 - The same face / title / style; placement varies49 - Maximizes the chance of "the one that works for click"50515. **Pick model**:52 - Photo + face → `nano-banana-pro` (identity preserve)53 - No photo + heavy text → `ideogram-3-quality`54 - Mixed → `gpt-image-2`55566. **Build per-variant prompts** — composition zones per placement (face-left + text-right; face-right + text-left; face-center-bottom + text-top).57587. **Batch execute** — parallel.59608. **Output**:61 ```62 ./generated/thumbnail/<slug>/63 thumbnail-left.png (face left, text right)64 thumbnail-right.png (face right, text left)65 thumbnail-center.png (face center, text top)66 manifest.json67 style-used.md68 prompts.md69 ```7071## MODES7273### Required7475- `thumbnail-maker --title "<text>"`7677### Optional7879- `--photo <path-or-url>` — face / subject reference80- `--subtitle "<text>"` — secondary line (rare for thumbnails)81- `--style auto|<library-id>` — visual style82- `--style-mod "<override>"` — tweak83- `--placements left,right,center,top,bottom` — comma list (default `left,right,center`)84- `--variants N` — variants per placement (default 1; >1 gives N takes per placement)85- `--lang en|ru` — language hint86- `--model auto|<slug>` — provider87- `--aspect WxH` — override default 1920×1080 (e.g., `1280x720` for low-res)8889### Type presets9091- `--type youtube` — 1920×1080 (default), bright + bold aesthetic92- `--type blog` — 1200×630 (OG image standard), more editorial93- `--type podcast-episode` — 1920×1080 with podcast-cover-feel9495### Execution9697- `--execute` — actually generate98- `--output <dir>` — custom output99- `--parallelism N` — concurrent calls100- `--yes` — skip cost confirmation101- `--resume` — retry failed102- `--prompts-only` — dry run103104## REFERENCES (load on demand)105106| File | When to load |107|---|---|108| [references/model-picker.md](references/model-picker.md) | Step 5 — model auto-pick + capability matrix |109| [references/composition-zones.md](references/composition-zones.md) | Step 6 — per-placement composition templates, face + text positioning |110| [references/troubleshoot.md](references/troubleshoot.md) | When face placement collides with text, contrast issues, click-bait avoidance |111112## EXAMPLES113114See [examples/before-after.md](examples/before-after.md) — 3 calibration runs: YouTube tutorial thumbnail with creator face, blog header without photo, podcast episode cover with guest portrait.115116## CONSTRAINTS117118- **Title 3-7 words.** Past 7, text crowds + becomes unreadable at thumbnail scale.119120- **Title is THE focal point.** Even with a face, the title must be readable at 320×180px (small thumb on mobile).121122- **One face per thumbnail.** Multiple faces compete; pick one main subject.123124- **Face placement variants are stochastic.** "Left" / "right" / "center" guide the model but don't lock pixel-perfect.125126- **Bright contrast is the YouTube look.** The default `--style auto` biases toward vibrant + high-contrast styles. Override with `--style photo-editorial-bw` for editorial blog feel.127128- **Don't add too many text elements.** Title + optional subtitle = max 2. Past that, thumbnail looks crowded.129130- **Reasonable click-bait avoidance.** The skill doesn't enforce "non-clickbait" — that's editorial judgment. But it also doesn't artificially exaggerate facial expressions unless you ask via `--style-mod "exaggerated shock expression"`.131132- **One model across the variant set.** Lock per-thumbnail.133134- **Cost confirm ONCE.** Sum across placements × variants.135136- **Per-platform image sizing**:137 - YouTube: 1280×720 minimum, 1920×1080 high-res138 - Blog OG image: 1200×630139 - Podcast episode art: 1920×1080140 - LinkedIn article cover: 1200×627141142- **Never print API keys.** Mask in errors.143144## INVOCATION HINTS145146When the user says any of:147148- "YouTube thumbnail", "blog header image", "podcast episode cover"149- "thumbnail for my video", "create thumbnail variants"150- "обложка для YouTube видео / поста / эпизода"151- "превью для видео"152153If unclear, default to `--type youtube`. If user mentions "blog post" → `--type blog`. If "podcast episode" → `--type podcast-episode`.154155Defaults: `--type youtube --placements left,right,center --style auto --model auto`. Without `--execute`, returns prompts.156157This skill is distinct from:158- `cover-maker` — that's albums/books/podcasts (general "cover" with title + creator). This is specifically thumbnail-aspect content marketing.159- `flyer-maker` — events. This is content marketing.160- `avatar-maker` — single-subject portrait. This adds text + 16:9 framing.161- `image-prompt` — free-form. This is structured thumbnail conventions.