Skip to content
Back to skills

Thumbnail Maker

ASecurity

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 видео / поста / эпизода'.

  • 19 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added August 31, 2026
ai-agentsbashexpressapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned August 31, 2026

npx -y skills add Mikefluff/skills --skill thumbnail-maker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Thumbnail Maker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Thumbnail Maker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mikefluff-thumbnail-maker/badge)](https://www.skillsdirectory.com/skills/mikefluff-thumbnail-maker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: thumbnail-maker
description: "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 видео / поста / эпизода'."

license: MIT
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
  - Glob
---

<objective>
Thumbnail generator. Input: title + optional face photo + optional style. Output: N variants at 16:9 (YouTube / blog / podcast-episode thumbnail).

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)
</objective>

## 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

1. **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")

2. **Resolve photo** (optional):
   - `--photo <path-or-url>` — face reference
   - Identity preserve via Nano Banana Pro (default)

3. **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

4. **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"

5. **Pick model**:
   - Photo + face → `nano-banana-pro` (identity preserve)
   - No photo + heavy text → `ideogram-3-quality`
   - Mixed → `gpt-image-2`

6. **Build per-variant prompts** — composition zones per placement (face-left + text-right; face-right + text-left; face-center-bottom + text-top).

7. **Batch execute** — parallel.

8. **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](references/model-picker.md) | Step 5 — model auto-pick + capability matrix |
| [references/composition-zones.md](references/composition-zones.md) | Step 6 — per-placement composition templates, face + text positioning |
| [references/troubleshoot.md](references/troubleshoot.md) | When face placement collides with text, contrast issues, click-bait avoidance |

## EXAMPLES

See [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.

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

Files in this skill

  • SKILL.md6.9 KB
  • examples/before-after.md3.7 KB
  • references/composition-zones.md4.6 KB
  • references/model-picker.md2.1 KB
  • references/troubleshoot.md3.2 KB
  • scripts/run.py802 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.