Previous attempt (kept for reference).
RENDERS
Fireship — Episode 2 — Rebuild
A step-by-step, critique-driven rebuild: script → audio → timestamped shotlist → assets → animatic → QA.
STEP
Script
Publish the script first. No visuals until the words are undeniable.
# Fireship “The Code Report” — Episode 2 (Rebuild) Status: **rebuild v1** (script + storyboard table, tuned for receipts + goss + snappy pacing) Goal: fix the “EDM buildup with no drop” failure by making the **cause → impact → receipts → mic-drop** crystal clear. Renders page: - `/studio/renders/fireship/episode2-rebuild` --- ## 0) What this rebuild is trying to do (and what we won’t do) ### The promise (Code Report vibe) “Here’s the spicy tooling drama, why it happened, who it impacts, and what it means — with receipts.” ### What we got wrong last time (must not repeat) - Hooked you, then didn’t explain **why the error matters** in a satisfying “drop”. - Too many generic AI b‑roll frames; not enough **real receipts** + UI artifacts. - Underused the meme + logo + UI ecosystem; we acted like we “couldn’t find it”. ### Visual constraints (non‑negotiable) - **No placeholder frames**: every segment gets a deterministic still at minimum. - AI stills/clips are **rare**; default is receipts + deterministic cards + UI mocks. - “Social freakout” should be shown via **screenshots** (GitHub issues, threads, posts) where feasible. --- ## 1) Research receipts (must capture) Primary receipts (we should show on screen): - VentureBeat report (harness spoofing / crackdowns): `URL: https://venturebeat.com/technology/anthropic-cracks-down-on-unauthorized-claude-usage-by-third-party-harnesses/` - Roo Code issue showing the exact error string: `URL: https://github.com/RooCodeInc/Roo-Code/issues/10566` - “Ralph” repo (self‑healing loops / overnight runs): `URL: https://github.com/frankbria/ralph-claude-code` - Anthropic Commercial Terms (use restrictions / competing products): `URL: https://www.anthropic.com/legal/commercial-terms` Secondary receipts (optional, but good for “people freaking out”): - OpenCode issue threads about the same error / auth restriction: `URL: https://github.com/anomalyco/opencode/issues/417` - “Claude Code only” workaround chatter (choose 1–2, screenshot if accessible): - `URL: https://www.paddo.dev/blog/claude-code-only-error` - `URL: https://opencodeguide.com/en/opencode/errors/claude-credential-only-authorized` UI/brand artifacts (prefer screenshots from product pages; fallback to our deterministic UI cards): - Claude Code product page: `URL: https://claude.com/product/claude-code` - Cursor product page: `URL: https://cursor.com/` --- ## 2) Script strategy (the “drop” we need) ### Core chain (must be explicit) 1) Claude Code goes viral → devs plug it into everything → “harness” ecosystem. 2) Harnesses create **support** and **abuse** problems: - support: “it broke in my third-party client” becomes Anthropic’s problem. - abuse: subscription/quota “buffet” gets turned into 24/7 agent loops. 3) Anthropic tightens the gate → the ecosystem sees it as **tea** (xAI/Cursor angle) → trust wobble. 4) Takeaway: subscription auth isn’t an API contract; reliability requires BYOK + routing + fallbacks. ### Density rules - Every segment must do one of: land a joke, prove a claim with a receipt, or move the logic forward. - No vague moralizing. No “AI influencer” tone. --- ## 3) Timestamped storyboard (v1) Notes: - Keep segments short to enforce pace (aim ~3–7s; sprinkle micro‑silence segments). - Rows with `VO (tight)` set to `—` generate silence (for punchline landings). | t_start | t_end | seconds | VO (tight) | Visual intent | Asset type | Prompt / sourcing notes | On-screen label | Music cue | SFX | Transition | |---:|---:|---:|---|---|---|---|---|---|---|---| | 0:00 | 0:05 | 5 | Breaking news: a new error message just dropped. And it’s the hottest gossip in developer tooling. | Cold-open headline | typography | True-black, huge type, subtle glitch grid. | NEW ERROR JUST DROPPED | bed in | sting_tiny | hard cut | | 0:05 | 0:10 | 5 | “This credential is only authorized for use with Claude Code…” | Show the receipt immediately | screenshot | URL: https://github.com/RooCodeInc/Roo-Code/issues/10566<br>CROP_NORM: 0.08, 0.14, 0.84, 0.62 | CLAUDE CODE ONLY | bed dip | silence_250ms | cut | | 0:10 | 0:15 | 5 | And if your brain went, “wait… why is that a story?” same. | Validate confusion (set up drop) | typography | Minimal card: “WHY IS THIS A STORY?” | WHY IS THIS A STORY? | bed | whoosh_short | cut | | 0:15 | 0:20 | 5 | Because it’s not a bug. It’s a policy decision… leaking into your IDE. | Make the stakes explicit | typography | Rubber stamp graphic: “POLICY”. | POLICY DECISION | bed | click | cut | | 0:20 | 0:26 | 6 | Claude Code went mega-viral, and devs finally onboarded. | Viral spike | chart | Simple “usage spike” chart. | IT WENT VIRAL | bed | whoosh_short | cut | | 0:26 | 0:31 | 5 | Then we all did what developers do: we plugged it into everything. | Plug into everything montage | montage | Deterministic montage: terminal, IDE, browser, arrows. | PLUG IT INTO EVERYTHING | bed | whoosh_short | cut | | 0:31 | 0:36 | 5 | Cursor. Roo Code. Bridges. “Harnesses”. | Name the ecosystem | ui | UI card with logo-ish badges (deterministic). | HARNESS ECOSYSTEM | bed | click | cut | | 0:36 | 0:44 | 8 | A harness is a third-party client — like Roo Code — cosplaying as the official Claude Code app. | Define “harness” with a real anchor | screenshot | URL: https://github.com/RooCodeInc/Roo-Code<br>SCROLL_TO_TEXT: Roo Code<br>CROP_NORM: 0.06, 0.10, 0.88, 0.62 | ROO CODE | bed | whoosh_short | cut | | 0:44 | 0:50 | 6 | It works… until it doesn’t. And then the support tickets show up. | Support pain setup | diagram | Diagram: User → third-party client → Anthropic support inbox. | SUPPORT TICKETS | bed | click | cut | | 0:50 | 0:56 | 6 | “It broke in Cursor” becomes “Claude is broken.” | Punchy paraphrase | typography | Two-line headline; big contrast. | “CLAUDE IS BROKEN” | bed dip | silence_250ms | cut | | 0:56 | 1:02 | 6 | Here’s the actual error in the wild — again. | Reinforce receipts | screenshot | URL: https://github.com/RooCodeInc/Roo-Code/issues/10566<br>SCROLL_TO_TEXT: credential<br>CROP_NORM: 0.06, 0.16, 0.88, 0.56 | IN THE WILD | bed | click | cut | | 1:02 | 1:08 | 6 | Now the spicier one: the buffet loophole. | Pivot to abuse | typography | Buffet icon + token stream. | THE BUFFET LOOPHOLE | bed | sting_tiny | cut | | 1:08 | 1:16 | 8 | Flat-rate plans are fine… until someone runs an agent loop for 24 hours straight. | Make abuse concrete | ui | Deterministic “loop” card: retries, backoff, status. | RUNNING… FOREVER | bed | glitch_tick | cut | | 1:16 | 1:24 | 8 | Yes, somebody built that. It’s called “Ralph”. | Name drop | screenshot | URL: https://github.com/frankbria/ralph-claude-code<br>SCROLL_TO_TEXT: Ralph<br>CROP_NORM: 0.06, 0.18, 0.88, 0.62 | RALPH | bed | click | cut | | 1:24 | 1:32 | 8 | Ralph reads your backlog… and keeps going until it’s done. | Explain “Ralph” in one beat | screenshot | URL: https://github.com/frankbria/ralph-claude-code<br>SCROLL_TO_TEXT: backlog<br>CROP_NORM: 0.06, 0.24, 0.88, 0.62 | BACKLOG → LOOP | bed | whoosh_short | cut | | 1:32 | 1:34 | 2 | — | Micro-silence landing | typography | Hold on a clean frame. | | bed dip | silence_500ms | cut | | 1:34 | 1:42 | 8 | That turns “unlimited” into “Anthropic is now your Series A investor.” | The joke (sharper) | typography | Big type + dollar burn meter. | UNLIMITED* | bed | boom_soft | cut | | 1:42 | 1:48 | 6 | So Anthropic tightened the gate: Claude Code auth is for Claude Code. | Connect to error message | typography | Gate slams shut; error string ghosted behind. | THE GATE SLAMMED | bed | click | cut | | 1:54 | 2:01 | 7 | And according to VentureBeat, they started cracking down on third-party harness spoofing. | Receipt: VB | screenshot | URL: https://venturebeat.com/technology/anthropic-cracks-down-on-unauthorized-claude-usage-by-third-party-harnesses/<br>CROP_NORM: 0.06, 0.10, 0.88, 0.56 | HARNESS SPOOFING | bed | click | cut | | 2:01 | 2:06 | 5 | Now here’s where it turns into real tea. | Build anticipation | typography | “HERE’S THE TEA” big type. | HERE’S THE TEA | bed dip | sting_tiny | cut | | 2:06 | 2:13 | 7 | VentureBeat also reports xAI staff lost access to Claude models — reportedly via Cursor. | xAI + Cursor claim (hedged) | screenshot | URL: https://venturebeat.com/technology/anthropic-cracks-down-on-unauthorized-claude-usage-by-third-party-harnesses/<br>SCROLL_TO_TEXT: xAI<br>CROP_NORM: 0.06, 0.18, 0.88, 0.60 | xAI + CURSOR | bed | sting_tiny | cut | | 2:13 | 2:20 | 7 | And the underlying reason is extremely boring: competing product restrictions. | Set up terms receipt | typography | Minimal legal-ish card. | COMPETING PRODUCTS | bed | click | cut | | 2:20 | 2:28 | 8 | Anthropic’s terms literally say you can’t use the service to build a competing product. | Terms snippet | terms | QUOTE: Customer may not access the Services to build a competing product or service. HIGHLIGHT: build a competing product SOURCE: anthropic.com/legal/commercial-terms | NO COMPETITORS | bed | click | cut | | 2:28 | 2:36 | 8 | Translation: we’re not letting competitors train on our GPU bill. | Translate legal into English | typography | Big type + GPU icon + “NOT ON OUR DIME”. | NOT ON OUR DIME | bed dip | silence_250ms | cut | | 2:36 | 2:44 | 8 | That’s the drop: your IDE just got rate-limited by corporate strategy. | The actual mic-drop | typography | “CORPORATE STRATEGY” slams down like a bass drop. | CORPORATE STRATEGY | bed | boom_soft | cut | | 2:44 | 2:50 | 6 | And it breaks trust, because now your dev workflow is somebody else’s switch. | Trust wobble | diagram | Jenga / dependency chain (deterministic). | SOMEONE ELSE’S SWITCH | bed | rumble_soft | cut | | 2:50 | 2:56 | 6 | So the takeaway is simple: subscription auth is not an API contract. | One-liner takeaway | typography | Contract dissolves into warning icon. | NOT AN API CONTRACT | bed dip | silence_500ms | cut | | 2:56 | 3:04 | 8 | If you want reliability: BYOK keys, multi-provider routing, and fallbacks. | Practical solution | diagram | Key → router → providers. | BYOK + ROUTING | bed | whoosh_short | cut | | 3:04 | 3:12 | 8 | Otherwise, enjoy the future where error messages have terms and conditions. | Final joke (clearer callback) | ui | Fake compiler error: “LEGAL_EXCEPTION”. | LEGAL_EXCEPTION | bed | glitch_tick | cut | | 3:12 | 3:20 | 8 | This has been the Code Report. Thanks for watching — and I’ll see you in the next one. | Outro | typography | End card, simple. | SEE YOU NEXT | bed out | sting_tiny | fade |
STEP
Script Critique
Beat-by-beat notes: clarity, stakes, receipts density, joke cadence, and payoffs.
Score: 8.5 · close
This script is dense, punchy, and mostly receipt-backed, nailing the Fireship Code Report style. The jokes land, the editorial tone is sharp, and the story advances with each beat. However, a few segments could be more specific or land harder, and a couple of claims would benefit from explicit receipts. The script is very close to 'as good' but could use a few tweaks for maximal payoff and ironclad sourcing.
- - Strengthen the cold open with a more specific, time-anchored hook.
- - Add a direct receipt for the 'support tickets show up' claim (e.g., a real or synthetic support thread).
- - Make the 'buffet loophole' segment more concrete with a direct quote or stat from Ralph's repo or usage.
- - Explicitly show Anthropic's terms (s023) as a highlighted receipt.
- - Tighten the outro with a punchier callback or meme reference.
STEP
Audio Critique
Timing mismatches, missing punchline pauses, and where to re-record.
Score: 6.5 · needs_work
The overall pacing is energetic and mostly on-brand for Fireship, but there are several segments that are rushed to the point of losing punchline impact, and a handful of micro-segments that feel awkwardly clipped or draggy. The fastest segments blow past 300 WPM, making them hard to follow and robbing key moments of their comedic or dramatic landing. Meanwhile, some ultra-short or slow segments break the rhythm, feeling either like afterthoughts or unintentional pauses. To nail the Fireship vibe, tighten up the slowest bits, rewrite or pause after punchlines, and add micro-pauses for comedic effect.
- - Slow down the fastest segments (especially s040, s027, s013, s003) and add micro-pauses after punchlines for comedic timing.
- - Rewrite or combine ultra-short segments (s004, s008, s014, s028, s041) to avoid awkward staccato delivery.
- - Tighten up draggy segments (s009, s030) by trimming or splitting for more rhythmic cuts.
- - Add explicit silence (50-200ms) after key punchlines or before major transitions to let jokes land.
STEP
Timestamped Shotlist (JSON)
Real timings derived from the generated audio (no cheating with placeholders).
Shots: 42 · Duration: 109s · Cuts/min: 23.1
Receipts: 7
{
"meta": {
"generatedAt": "2026-01-18T07:38:32.819Z",
"planPath": "docs/manual-analysis/fireship-code-report-episode2-rebuild.md",
"outRoot": "output/fireship-episode2-rebuild",
"version": 1
},
"timing": {
"totalSec": 108.878367,
"gapSec": 0.130612,
"atempo": 1.35,
"words": 357,
"wpm": 196.73329597237623,
"shots": 42,
"cutsPerMinute": 23.145093643808966
},
"segmentsPreview": [
{
"segId": "s001",
"planned": {
"tStart": "0:00",
"tEnd": "0:05",
"startSec": 0,
"endSec": 5,
"seconds": 5
},
"actual": {
"startSec": 0,
"endSec": 4.237639259259259,
"seconds": 4.237639259259259,
"gapAfterSec": 0.09674962962962963
},
"vo": {
"text": "Breaking news: a new error message just dropped. And it’s the hottest gossip in developer tooling.",
"words": 17
},
"visual": {
"intent": "Cold-open headline",
"assetType": "typography",
"label": "NEW ERROR JUST DROPPED",
"notes": "True-black, huge type, subtle glitch grid.",
"receiptUrl": null
},
"audio": {
"musicCue": "bed in",
"sfxCue": "sting_tiny"
},
"transition": "hard cut",
"source": {
"planIndex": 0,
"audioRowFile": "vo-rows/r001_0-00-0-05.mp3",
"audioRowSec": 5.720813
}
},
{
"segId": "s002",
"planned": {
"tStart": "0:05",
"tEnd": "0:10",
"startSec": 5,
"endSec": 10,
"seconds": 5
},
"actual": {
"startSec": 4.334388888888888,
"endSec": 6.849851851851851,
"seconds": 2.515462962962963,
"gapAfterSec": 0.09674962962962963
},
"vo": {
"text": "“This credential is only authorized for use with Claude Code…”",
"words": 10
},
"visual": {
"intent": "Show the receipt immediately",
"assetType": "screenshot",
"label": "CLAUDE CODE ONLY",
"notes": "URL: https://github.com/RooCodeInc/Roo-Code/issues/10566\nCROP_NORM: 0.08, 0.14, 0.84, 0.62",
"receiptUrl": "https://github.com/RooCodeInc/Roo-Code/issues/10566"
},
"audio": {
"musicCue": "bed dip",
"sfxCue": "silence_250ms"
},
"transition": "cut",
"source": {
"planIndex": 1,
"audioRowFile": "vo-rows/r002_0-05-0-10.mp3",
"audioRowSec": 3.395875
}
},
{
"segId": "s003",
"planned": {
"tStart": "0:10",
"tEnd": "0:14",
"startSec": 10,
"endSec": 14,
"seconds": 4
},
"actual": {
"startSec": 6.946601481481481,
"endSec": 9.055722222222222,
"seconds": 2.1091207407407415,
"gapAfterSec": 0.1111111111111111
},
"vo": {
"text": "And if your brain went, “wait… why is that a story?”",
"words": 11
},
"visual": {
"intent": "Validate confusion (set up drop)",
"assetType": "typography",
"label": "WHY IS THIS A STORY?",
"notes": "Minimal card: “WHY IS THIS A STORY?”",
"receiptUrl": null
},
"audio": {
"musicCue": "bed",
"sfxCue": "whoosh_short GAP_MS:150"
},
"transition": "cut",
"source": {
"planIndex": 2,
"audioRowFile": "vo-rows/r003_0-10-0-14.mp3",
"audioRowSec": 2.847313
}
}
]
}STEP
Shotlist Critique
Pace, cut density, and where visuals need to do more work.
Score: 7.5 · close
This shotlist is structurally strong and mostly nails the Fireship 'Code Report' pacing: dense micro-cuts, clear editorial intent, and a healthy mix of receipts, memes, and punchline cards. However, a handful of shots risk dragging (4+ seconds), and some assets (especially screenshots) could be more visually intentional—zooming on the actual 'receipts' and cropping out irrelevant UI. A few shots could swap to punchier memes or diagrams for variety and clarity. Overall, it’s close to the target, but needs tightening and a few asset swaps to fully match the reference.
- - Trim or split any shot over 4 seconds—no shot should linger unless it's a punchline.
- - For all screenshot shots: zoom/crop to the relevant line, add browser frame + highlight, and ensure no clutter (cookie banners, irrelevant UI).
- - Replace at least one long screenshot with a punchy meme or diagram to break up visual rhythm.
- - Ensure all typography cards use big, bold, high-contrast text with minimal lines (no small subtext).
- - Double-check that every shot has a single, clear focal point—no busy backgrounds or AI 'wallpaper'.
STEP
Visual QA
Contact sheet + compare against reference.
Match score: 4.2/10 · needs_work
Our animatic is too generic and dark, with AI wallpaper backgrounds, weak contrast, and lacks Fireship's punchy editorial style and visual variety.
- - Replace all AI wallpaper backgrounds with true black or solid dark backgrounds.
- - Increase contrast: make whites pop, avoid muddy midtones.
- - Add bold, intentional focal elements (screenshots, memes, diagrams) per segment.
- - Use big, readable type with strong padding; avoid small or floating text.
- - Add frames, shadows, and highlights to screenshots; crop for legibility.
- - Introduce more visual variety: memes, charts, diagrams, and punchy cutaways.
- - Remove all generic bokeh/gradient overlays.
- - Ensure every frame has a clear editorial 'point' (not just filler text).
