Generates click-optimized YouTube packaging — 3 thumbnail bets under one fixed title, engineered for YouTube's built-in A/B/C thumbnail test, plus a value-forward description, then renders the thumbnails as real images. Use this whenever you want to package a long-form video or turn a video idea into titles and thumbnails. Triggers include how would you package this, title ideas for, thumbnail concept, package this video, A/B variations, and make this clickable. Calibrates to your channel's own CTR data if you have it. Long-form only, never Shorts. Not for non-YouTube copywriting.
npx skills add https://github.com/hassancs91/claude-youtube-editor --skill youtube-packaging
Turns a video idea into one locked title + 3 distinct thumbnail bets built for YouTube's native
A/B/C thumbnail test, plus one value-forward description — then **renders the three thumbnails as
real images** with Nano Banana Pro.
The whole skill optimizes for one number: CTR (click-through rate). It's the metric YouTube
Studio reports per thumbnail, and the only one that isolates *packaging* from topic and algorithm.
The rules below are not generic YouTube advice — they were derived from Studio CTR data across 20
long-form videos on a real ~1M-subscriber beginner/AI channel, read in CTR order. That dataset isn't
shipped (it's another channel's numbers, and its absolutes wouldn't transfer). The patterns do
transfer, and they're a much better prior than guessing.
But an inherited rule is a bet, not a fact — about YOUR audience. So:
are uncalibrated defaults — your own CTR data will beat them." Then tell the creator to start
logging CTR from video 1.
references/channel-calibration.md first,then follow *that* file's numbers wherever it disagrees with this one. **Their data wins over
anything written here.**
Ask which mode you're in if it isn't obvious. Never quote a target CTR the creator hasn't measured.
Views = Reach × CTR. Two different levers, driven by two different things.
discovery waves** — a tool everyone's searching, a real news moment, a broad money/free promise.
Packaging cannot fix a low-ceiling topic.
thumbnail hook. This is the only lever this skill controls.
Good packaging on a narrow topic produces good CTR and low views. **That is correct behavior, not a
packaging failure.** Never blame a title when CTR is healthy and views are small — and never expect a
title to rescue a topic nobody wants.
The one guardrail that stops this becoming hollow clickbait: the promise must be one the video
actually keeps. Overpromise → the viewer bounces in 30 seconds → retention craters → YouTube chokes
the exact reach you were chasing. The widest promise that also holds is what makes YouTube widen
distribution. Reality beats expectations.
Run it in order. Stages 1–2 are fast; the value is getting the *promise* right before generating,
because a wrong promise wastes all three bets.
Ask in one message:
promise. If you can't say it in a sentence, the packaging will be vague — push to name it.
much jargon a title can carry. (A wide/beginner channel should package for the widest clickable
promise and do its segmentation *inside* the video, never by narrowing the title.)
Needed for the description. "Nothing" is a valid answer.
start. If calibrated and references/channel-calibration.md is still empty, offer to run it first.
Gate 1 — Topic ceiling. Classify honestly:
major tool everyone knows).
If narrow, say so plainly and reset the view expectation *before* generating: packaging will
still maximize CTR, but views are capped by demand. Then decide whether the topic is worth making
*for conversion* even if reach is low. That's a real strategy, but it should be a choice.
Gate 2 — The promise. Draft the core promise as the **clearest concrete takeaway, stated
plainly** — NOT a withheld-drama curiosity gap.
is the headline; the mechanism is only how the lesson surfaces.** Never lead with the mechanism.
CHECKPOINT: State the ceiling classification and the one-line promise. Confirm or fix the promise
before generating. Do not skip — three bets off a wrong promise is wasted work.
Structure this correctly, it's the thing people get wrong: YouTube's Test & Compare is
thumbnail-only. The title is FIXED across all three variants. So the deliverable is **ONE primary
title × 3 thumbnail bets**, not 3 independent title+thumbnail pairs.
First, lock ONE title. It must pass most of the Title Checklist below. Output with it:
Carry it into the script.
Then 3 thumbnail bets under that fixed title. Each pulls a different lever, so YouTube
compares real alternatives rather than three flavors of one idea. For each:
dominant hook (word or number), color pop, any object.
thumbnail promising a beat the video doesn't have must be pulled or the beat must be built.
Lever menu — pick 3 different ones:
thing the viewer wants ("the one skill")
good as *one* of three, rarely all three.
Then close Stage 3 with:
videos/<project>/packaging/description.txt:learn (the real number, the free tool, the exact capability). The title sells the takeaway;
these two lines make it specific and undeniable.
free resources, newsletter). If something is free, say so plainly.
0:00, keyword-rich labels. Derive from the editplan / final cut; re-confirm if the cut length changed.
why it's worth it.
say plainly that there's no baseline yet and this is the first data point. You may predict which
bet lands highest and why — but the test decides. Never crown a winner; the deliverable is 3
worth shipping.
Iterate — tighten the title, swap a lever, adjust a hook. All 3 run live in the A/B/C test, so the
goal is 3 you're willing to ship, not one.
Turn the 3 locked concepts into actual images. **The dedicated /thumbnail skill is the
interactive render engine for this stage** — it interviews for style elements (environment,
text budget, extras) with the creator's calibrated defaults (minimal text) and owns the
verify/iterate loop; use it whenever the creator is in the loop. Mechanics, prompt template,
and model details live in references/thumbnail-generation.md — load it before
generating. The flow:
Nano Banana Pro renders the hook word itself (deliberate), so state the exact word, spell it
letter-by-letter, and forbid all other text.
videos/<project>/packaging/thumbs/A|B|C.png with tools/gen_thumbnail.py,passing the media/library/faces/ kit as reference so the face stays consistent. (You supply that
kit — see its README. No face kit, no face renders.)
spelled right + legible, face reads as the creator, one dominant hook, bright/saturated/positive,
sane hands, 16:9 <2MB). Regenerate any that fail; only surface passes. This catches the one real
risk of model-rendered text: a garbled word.
--seed to keepcomposition steady. Keep each prompt in thumbs/A.txt so refinements are diffs.
--jpg, ≤2MB) plus prompts/seeds, so any winner isre-renderable later.
Remember the loud-vs-calm rule: the thumbnail is intentionally louder than the calm in-video
brand (brand.md) — never tone it down to match. See the reference doc.
A strong title passes most of these. Use as a generator *and* a filter.
tool's capability instead of the viewer's outcome is a reliable floor.
coding," "without [skill]," "(No BS)."
against your own data; it's one of the most channel-dependent rules here.)
Ranked by signal strength. Re-rank against your own data once calibrated.
element. This is the top-tier device. The multi-logo "kill the competitors" graveyard splits
attention and reliably lands only mid-tier — even when the enemy-kill works in the *title*, render
the *thumbnail* as one clean hook.
number in a busy frame on a narrow topic still sinks.
looking at camera, large in frame. Facepalms and flat smiles are the floor.
frames underperform.
something that looks expensive, or vice versa).
Title and thumbnail are two halves of one message.
are a different packaging game.
pairs" — the test can't measure that.
named, valuable thing ("the one skill you need"), never pure mystery.
they kill *reach*, because an unknown name rides no discovery wave, so YouTube serves it less.
Known brands help and are fine. Own products belong in the thumbnail and the video, never the title.
references/channel-calibration.md has real numbersthat contradict a rule here, the rule is wrong for that channel. Update it.
references/channel-calibration.md — how to pull your own CTR from Studio (it is not in theAPI), build the dataset, derive your baseline and your real levers, and reconcile them back into
this file. Run it once you have ~10+ long-form videos.
references/thumbnail-generation.md — Stage 5 render engine: the Nano Banana Pro model/tool(tools/gen_thumbnail.py), the media/library/faces/ reference kit, the prompt template, the
per-render verify loop, the loud-vs-calm brand rule, and failure-mode fixes. Load before rendering.
Take hassancs91/youtube-packaging from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.