Generate high-CTR YouTube thumbnails using Nano Banana 2 via the Arcads external API. Handles reference image upload, character likeness alignment, proven CTR-tested prompt formulas, and parallel batch generation. Use when the user asks to create a YouTube thumbnail, video thumbnail, A/B test thumbnail variations, or refers to thumbnail design with their face, brand assets, or product photos.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
A reusable workflow for creating YouTube thumbnails via Arcads' Nano Banana 2 image endpoint with proper character likeness and proven CTR formulas.
Trigger on phrases like:
.env with ARCADS_BASIC_AUTH and ARCADS_API_KEYproductId (defaults to MASTER_CONTEXT.md's "My workspace" product)face/ — 5+ photos of the subject (headshot + 3/4 angles + close-ups + expressions)logos/ — brand logos as files (orange Claude Code starburst, black Arcads A, etc.)products/ — clean product shotsexamples/ — real ad screenshots, comparison materialstyle/ — example thumbnails the user wants to match aestheticallyIf references are missing or the user pastes images in chat instead of saving them, stop and ask the user to drop the actual files into a project folder (e.g. references/youtube thumbnail/). Chat paste ≠ file on disk.
Ask the user for any missing context, but only what you actually need:
ls "references/youtube thumbnail/"If references are missing, ask the user to drop them. Do not proceed with text-only descriptions for brand-specific items (logos, branded products, branded apparel) — you'll get generic AI approximations that don't match the brand. Generic descriptions are OK for backgrounds, expressions, and clothing.
Always present cost as an estimate before firing:
"Estimated cost: N variations × 24 credits = X credits. Tell me if you want to confirm exact pricing in the Arcads platform first."
See shared/skills/generate-youtube-thumbnail/prompting/formulas.md for the 5 proven formulas. Match the user's intent:
| User says... | Use formula |
|---|---|
| "Just me with my brand" / "branding thumbnail" | Peace-sign / branding |
| "Real vs AI" / "compare" / "before/after" | Real vs AI comparison |
| "Show the process" / "with the terminal" | Terminal flow |
| "Surprised face" / "shocked reaction" | Reaction shock |
| "Replace" / "alternative" / "swap out" | Before/after split |
Follow the template in shared/skills/generate-youtube-thumbnail/prompting/guide.md:
YouTube thumbnail, 16:9 landscape.
[SUBJECT — likeness block + clothing + framing + "no hands" if applicable]
Expression: [specific expression from expressions cheat sheet]
[LEFT visual element + reference]
[RIGHT visual element + reference]
Across the top in massive bold yellow block letters with thick black outline reads [TITLE].
Background: [color + glow]
Style: [aesthetic notes]
Avoid: distorted face, extra fingers, hands visible, blurry logos, generic faceAlways include the CRITICAL CHARACTER LIKENESS block when the subject is a real person. See shared/skills/generate-youtube-thumbnail/prompting/guide.md.
Copy scripts/generate-batch.sh to a new versioned script (scripts/generate-thumbnails-vN.sh) and modify:
REF_BASE and COMMON_REFS array with your reference file pathsPROMPTS array entries with your composed promptsbash scripts/generate-thumbnails-vN.sh > output/run.log 2>&1 &tail -F output/run.log | grep -E "DONE|FAILED|Asset"The script handles:
After all generations complete, read each thumbnail with the Read tool and present:
Reusing the same uploaded filePath across multiple generation calls causes HTTP 500 UNKNOWN_ERROR. Always upload fresh references for each generation. The batch script handles this automatically with upload_all_fresh() per generate_one() call.
Images smaller than 1080px longest side return 422 — The provided image is too small. The skill's prepare_image() function:
referenceImages is array of plain stringsNot objects. Sending [{filePath: "..."}] returns 400 — each value in referenceImages must be a string. Send ["external-api-temp-uploads/abc.jpg", ...] instead.
If the user pastes an image directly in chat, you cannot pass it to the API. Ask them to save the actual file into a project folder.
With 1-2 face references the AI generalizes to "generic bearded man with glasses." With 5+ face references from different angles it locks in the specific person. Always use 5+ face references for character work.
Default macOS bash doesn't support declare -A (associative arrays). The batch script uses indexed arrays + temp files instead.
Presigned URLs expire after the expiresIn window (~10 min). Don't reuse URLs across long-running jobs — upload fresh.
Text descriptions of brand-specific items (logos, branded apparel, custom merchandise) will produce generic approximations. The Mr. Paid Social hat from text alone reads as "MR PAID SOCIAL" but won't match the real patch typography. For pixel-accurate brand reproduction, save the actual brand asset to disk and pass it as a reference.
| Operation | Credits | Notes |
|---|---|---|
| Nano Banana 2 image (1 generation) | 24 | post-800x multiplier |
| 6-variation batch | 144 | typical for first explorations |
| 10-variation batch | 240 | typical for refinements |
| 20-variation batch | 480 | typical for broad concept exploration |
Always present as estimates, confirm exact in the Arcads platform.
0bfafb2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.