Multiples, never raw views
Prompt 1 ranks videos as multiples of the channel’s own median. Prompt 2 stitches Trends batches onto one scale with a shared anchor. Raw numbers from different sources are not comparable.
Four prompts, one working folder. Reverse-engineer why a proven channel’s videos outperform, pull live Google Trends demand and verify what is actually releasing, turn both into titles that cite the pattern they execute and the demand signal behind them, then brief your team to beat a named competitor video.
Google Trends compares a maximum of five terms and normalizes them to 100 within that comparison only. Twenty subjects pulled in separate batches with no shared term produce numbers that cannot be ranked against each other. Pick one large, stable subject and keep it in every single batch, including on re-runs, so this week’s index is comparable to last week’s.
Each prompt writes files the next one reads. Run them in the same directory, in order. Skipping a step doesn’t just lose information — it removes the constraints that keep the last step from drifting into generic output.
Prompt 1 ranks videos as multiples of the channel’s own median. Prompt 2 stitches Trends batches onto one scale with a shared anchor. Raw numbers from different sources are not comparable.
Failed pulls get reported, not patched. Unverified dates get marked UNCONFIRMED. This is what stops a confident-looking run from being quietly fabricated.
Prompt 1 will not generate ideas until you say “Phase 2”. Without the lock, the model collapses analysis and creative into one shallower pass.
Prompts 3 and 4 reopen the earlier files and restate their constraints before writing. Skip it and the output defaults to generic voice.
Give it the channel you’re modelling and, when you get to Prompt 4, the title you’re making. Every other input — the video lists, the positioning, the candidate pool, the anchor term, the benchmark video — the prompts tell Claude Code to pull itself, and the method numbers stay baked in.
Prompt 1 is analysis only until you say “Phase 2”. Prompt 2 pulls the data itself. Prompt 3 is bound by both. Prompt 4 runs once per video, at greenlight. Customize above, copy below, and mark each step complete as you run it.
Every input that used to be a blank to fill is now an instruction inside the prompt. It pulls real data, cites where it came from, and tells you when it couldn’t.
Pulled with yt-dlp: the top 30 by views and the 30 most recent, Shorts excluded, with ages.
The About-page description quoted verbatim, channel keywords if exposed.
2–3 close rivals identified by search and pulled the same way — or skipped if it can’t be confident.
Current streaming top-10s and the next 8 weeks of premieres, cited by source and date, written to candidate-pool.md.
One large, stable subject, chosen once, saved to anchor-term.txt and reused on every re-run.
Pool items that collide with ordinary words are disambiguated before any pull, with the query string reported.
The reference channel’s best performer on the nearest subject by median multiple — transcript pulled and mapped.
Runtime from the structural read, voice from the niche analysis, delivery two days before the calendar slot.
Each step’s inputs, outputs, and the decision that is yours, before you start.
| Step | Fill in | Produces | Your job |
|---|---|---|---|
| PROMPT 1Reverse-engineer the niche | The channel URL — that’s it | niche-analysis.md — Phase 1 diagnostic, then the Phase 2 scaling system on your command | Read the Phase 1 pause, then say “Phase 2”. Save the output to a file. |
| PROMPT 2Target live demand | Nothing — reads niche-analysis.md, builds its own pool, picks and saves the anchor | PLAN.md, rankings.csv, demand_index.csv, trends_raw/ | Expect 429s. Check the anchor it chose and the query strings it reports. |
| PROMPT 3Generate the titles | Nothing — reads both prior outputs | TITLES.md, titles.csv — every row cites a pattern and a demand signal | Check the constraint sheet. Kill anything generic. Re-run after each Prompt 2 refresh. |
| PROMPT 4Brief the production | The title you’re making | 00-PREPRODUCTION.md, 01-SCRIPT-BRIEF.md, 02-EDITOR-BRIEF.md, 03-ACCEPTANCE.md | Sanity-check the benchmark URL and runtime it chose. Run once per video, at greenlight. |
Prompt 1 never ranks on raw views. Every video is expressed as a multiple of the channel’s own median, and the title anatomy compares the top quartile against the bottom quartile — so a 34,000-view video on a 10,000-median channel is a 3.4× and comparable to a 340,000-view video on a 100,000-median channel.
This video earned 3.40 times the channel’s median.
To point this system at a different channel, niche, or platform, change only the placeholders. The rules, phase structure and scoring exist to prevent specific failure modes — leave them intact.
For gaming it’s new releases and patch cycles; for tech it’s product launches; for sports it’s the season calendar. The “live release window” still works — it’s really measuring whether a recurring event keeps demand refreshing.
Evergreen niches with no release cycle should drop the window weight and move it to supply gap and trajectory.
Pick something large and stable in the new niche — not the current hot subject, which will decay and distort every future comparison.
A confident-looking run can still be quietly fabricated. These are the tells, and what each one means.
Step 1 of Prompt 3 got skipped. Make it restate the constraint sheet before it writes a single title.
Supply-gap weighting is too low, or the competition check in Step 3 was done shallowly.
The Trends pull failed and got papered over. Check that trends_raw/ exists and has real rows.
Step 3 of Prompt 4 produced descriptions instead of deltas. Every one has to name the weakness it attacks and be checkable on delivery.
We’ll pick the model channel, read the niche analysis together, turn the first demand index into a dated upload calendar, and brief your first video against a real benchmark — so you leave with titles that cite a pattern and a demand signal, and a brief pack your team can execute this week.