# HANDOFF — Shorts revenue autopsy

Everything needed to reopen this research in your own Claude and keep going.
Written 17 Aug 2026. All revenue figures are **real**, from your own YouTube Studio lifetime exports.

---

## 0. Paste this into Claude to resume

    /master_everything

    I'm continuing a revenue study of three faceless YouTube channels: The Art Of War
    (@theartofwarrr), Wholesome Wendy (@Wholesomewendy) and Zeck Felms (@ZeckFelms).

    In this folder:
    - REPORT.md          the full findings, read this first
    - HANDOFF.md         this file: method, file map, open questions
    - transcripts.zip    958 transcripts sorted into folders by REAL earnings level
    - studio-exports.zip the three raw YouTube Studio lifetime exports
    - scripts.zip        every Python script used, all re-runnable
    - analysis-data.zip  derived JSON + the printed analysis tables

    Read REPORT.md and HANDOFF.md, then help me with: <your question>

---

## 1. What the data actually is

| Channel | Videos | Lifetime views | Lifetime revenue | RPM | Best video |
|---|---|---|---|---|---|
| The Art Of War | 499 | 4,096,832,896 | $288,792 | $0.0705 | $8,617 |
| Wholesome Wendy | 341 | 2,776,121,933 | $276,591 | $0.0996 | **$11,194** |
| Zeck Felms | 298 | 982,455,599 | $96,052 | $0.0978 | $8,858 |

Totals: **7,855,410,428 views to $661,435.** The 1,138 individually analysed videos
account for 7,813,196,679 views and $657,891; the gap is uploads under 1,000 views,
excluded as noise.

**Every number in REPORT.md is real Studio data.** Nothing is estimated. An earlier
pass used a $0.80 RPM from the brief - that was wrong by roughly 10x and every figure
was recomputed once the exports arrived.

---

## 2. The five findings that matter

1. **RPM is a function of length, not a constant.** Shorts $0.0848, long-form $1.6501.
   **19.5x.** $10,000 needs 117.9M views as a short or 6.06M as long-form.
   The cleanest case: Zeck's *How iShowSpeed Works* (75s, 1.9M views) earned $2,598 -
   more than 279 of his 283 shorts.

2. **Only one short ever cleared $10,000.** Wholesome Wendy, *Best Brother Ever*,
   119.2M views, $11,194.03. One video in 7.86 billion views.

3. **Inside shorts, only retention moves.** Duration, pace, word count, hook length,
   title length, CTR and RPM are flat across all six earnings levels. About **1.3 extra
   seconds** of average watch time is the whole distance between $105 and $3,437.
   Verified with duration held constant - it is not a length artifact.

4. **Niche beats everything.** Wendy was a military aviation channel until Oct 2025
   (82,931 views, $3.39 per video). Five weeks after the pivot: 119M views, $11,194.
   Roughly **1,400x** per upload, with no change in scriptwriting skill.

5. **Two hard negatives, both perfectly monotonic.** Never open the spoken script with a
   question (7% of the bottom tier, 0% of the top). Never say "you" (21% down to 7%).
   Zero of the fifteen highest-earning shorts do either.

---

## 3. Method - how it was built, and how to redo it

Everything is in `scripts.zip`. Run order:

| Script | What it does |
|---|---|
| `fetch_shorts.py` | Full shorts catalogue per channel via InnerTube `/browse` shorts tab, paginated. 0 quota, no API key. |
| `harvest.py` | Per-video InnerTube `/player` for exact views + duration, then transcripts. |
| `retry_missing.py` | Clears the done-flag on failures so a re-run of harvest retries only those. |
| `real_tiers.py` | First pass on the Art Of War Studio export alone. |
| `rpm_by_duration.py` | **The headline test.** RPM banded by video length across all three channels. |
| `final_all.py` | The main pass: merges all three exports with transcripts, prints cohort tables, rebuilds the transcript library. |
| `hook_formula.py` | Hook grammar + script-reskin detection. |
| `deep_checks.py` | Adversarial pass - kills the emoji, "intentionally", swerve and threat-only hypotheses. |
| `analyze_titles.py` / `analyze_scripts.py` | Earlier view-based passes, superseded but kept. |
| `fetch_frames.py` | Downloads opening-frame thumbnails for visual comparison. |

### Gotchas worth keeping

- **InnerTube pagination silently truncates at 48 videos.** The channel page carries several
  `continuationCommand` tokens; the description and attribution panels have their own. Grabbing
  the last one returns zero new videos and you quietly get 48 instead of 619. Only accept a token
  whose path runs through `richGridRenderer` or `appendContinuationItemsAction`. Fix is in
  `fetch_shorts.py`, function `find_continuation`.
- **The WEB `/player` endpoint returns `playabilityStatus: UNPLAYABLE` but still gives you
  `videoDetails.lengthSeconds` and an exact `viewCount`.** Do not bail on the status.
- **youtube-transcript-api throttles after roughly 330 requests** from one IP. `youtube-transcript.io`
  picks up the rest (token is in `harvest.py`). 958 of 1,138 recovered; the other 180 genuinely
  have no captions published.
- **Studio's "Duration" column is the honest short/long split.** Anything over 60s is long-form and
  carries completely different ad inventory. This is the whole finding - do not filter it out.

---

## 4. File map

```
REPORT.md                  the full write-up, read first
HANDOFF.md                 this file

transcripts.zip            958 transcripts, foldered by REAL earnings level:
  L0_under_250/  (440)     each file's header carries revenue, views, RPM,
  L1_250_1k/     (365)     retention, CTR, impressions, subs gained, publish
  L2_1k_2.5k/    (101)     date, word count and WPM, then the hook, the full
  L3_2.5k_5k/     (37)     script, and a timestamped version
  L4_5k_10k/      (14)
  L5_10k_plus/     (1)     <- Best Brother Ever, the only one

studio-exports.zip         Table data.csv (Art Of War), wendy.tsv, zeck.tsv
scripts.zip                every script above
analysis-data.zip          final_real_rows.json  <- the joined dataset, start here
                           FINAL_ANALYSIS.txt    <- all cohort tables printed
                           ARTOFWAR_REAL_ANALYSIS.txt, HOOK_FORMULA.txt,
                           DEEP_CHECKS.txt, COHORT_MASTER.txt, title_report.txt
                           all_shorts.json, meta.json (raw scrape + transcripts)
```

`final_real_rows.json` is the one file to load if you want to ask new questions -
one record per video with revenue, views, RPM, duration, retention, CTR, impressions,
subscribers, publish date, earnings level, and the full transcript segments.

---

## 5. Hypotheses already killed - do not re-derive these

- **Emoji in the title.** Looked like 2.74x. Split by period it vanishes (2025-H2: emoji-less
  actually won, $584 vs $324). It was old videos happening not to have emoji.
- **"Intentionally" / "deliberately" in the hook.** In nearly every top earner, and just as often
  in the flops. 0.84x.
- **Ending on a twist or swerve.** Negative on all three channels.
- **Thumbnail and CTR work.** Flat, and the $5-10k band has the worst CTR of all (3.91%).
- **Threat in sentence one alone.** No lift on Wendy. Only works combined with a vulnerable subject.
- **Numbers and statistics in the script.** 4+ digits: 0.71x.
- **Reusing a winning script.** One instance found in 958 transcripts. It kept 8% of the original's money.

---

## 6. Open questions worth chasing next

1. **Long-form RPM rests on 16 Zeck videos.** It is unanimous ($1.32 to $5.15 against $0.09 for his
   shorts) and Wendy's one compilation returns $7.23, but a proper test needs Art Of War or Wendy
   to publish 5-10 long-form videos and measure. This is the highest-value experiment available.
2. **The Art Of War is decaying.** Feb 2025 held 85.9% retention at 20s; Oct 2025 held 57.4% at 18s.
   Same template. Worth finding out whether that is format fatigue, audience saturation, or a
   feed-ranking change - the answer decides whether to fix the scripts or change the niche.
3. **Wendy's RPM is 41% above Art Of War's.** Probably audience geography. Confirm in Studio's
   geography report; if it is, geo is a bigger lever than any script mechanic.
4. **Retention is measured lifetime-average.** Getting the actual retention *curve* per video
   (Studio's audience-retention graph, not exportable via CSV) would show exactly which second
   the flops lose people. That is the missing piece.
