---
reliability: 3.7 # 5 − .8 Week-0 LoRA training (×2, one-time) − .3 LoRA-routed scene gen − .2 6th-stage overflow; beats/brand-kit LLM or deterministic, beat-lock + 3-aspect export deterministic ffmpeg; cap ceiling: director_beat_lock is explicit-BPM v1 (no audio BPM detection); no proven E2E showcase yet
---

# Episodic series — agent playbook ⭐ flagship

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code. **This is the LoRA-trained flagship for episodic narrative creators.** A 12-episode quarterly series with a recurring two-character cast, music-locked finales, and one-command 3-aspect export to YouTube, TikTok, and Instagram. The wedge in production form — the show ships every Saturday for a quarter.

## What you'll get

A quarterly-series-grade deliverable, structured the way a serial production house works:

- **Two trained character LoRAs** — protagonist + antagonist, each trained from 15-25 reference images, owned by you, reusable across every future episode + spin-off + merchandise render.
- **A series brand kit** — title-card typography, end-card URL, music-bed, watermark, finishing chain (letterbox + LUFS + episode card + 3-aspect fanout). One kit, every episode.
- **12 episodes** — 8-12 scenes each, 60-120 sec runtime, recurring cast on-model across all 12 episodes by training (not by reference). Drift gate catches identity breaks at render time, not in dailies a day later.
- **Music-locked finale** — Episode 12's climax beat-locked to your licensed track at the BPM you specify. Cuts land on the downbeat.
- **3-aspect export from one master** — 16:9 YouTube hero, 9:16 TikTok / Reels, 1:1 Instagram square. One command per episode. No per-platform recut.
- **Series HTML** — single shareable page listing every episode card + cover + brand reference. The platform pitch + the production-status board.

**Time**: ~1 day for Week 0 (cast training + brand kit), 4-6 hours per episode thereafter. **Cost**: ~$8 one-time for both LoRA trains, $15-25 per episode. *This is the production-line flagship* — it amortizes across a season.

## Tell the agent about the series

```yaml
series_title:        # e.g. "Hollow Reign" — used in title cards, end cards, brand kit name.
series_logline:      # 1-sentence pitch. Sets the tone the brand kit + finishing chain enforce.
season_arc:          # 1-paragraph season-long synopsis. Drives per-episode beat planning.
episode_count:       # default 12. Run the playbook once per episode with episode_n filled in.
episode_n:           # which episode this run produces (1..episode_count). Used in cards + filenames.
episode_brief:       # 1-paragraph synopsis of THIS episode's narrative arc.
protagonist_name:    # The lead. Becomes the LoRA entity_name + appears in the brand kit's cast roster.
protagonist_refs:    # OPTIONAL on episodes 2+. On episode 1, a folder of 15-25 reference images of the lead.
antagonist_name:     # The opposing force. Becomes the second LoRA + appears in the cast roster.
antagonist_refs:     # OPTIONAL on episodes 2+. On episode 1, 12-20 reference images.
supporting_cast:     # 0-3 named supporting characters (name + 1-line each). NOT trained as LoRAs (cost-efficient).
visual_style:        # e.g. "anamorphic noir", "studio Ghibli pastoral", "cyberpunk neon". Locked at the brand kit.
music_track_url:     # OPTIONAL — temp / licensed track for beat-locked finales. Only required on the season's last 2 episodes.
finale_bpm:          # OPTIONAL — required if music_track_url is set. e.g. 120.
series_slug:         # kebab-case (filenames + brand kit id). e.g. hollow-reign.
```

---

## Quality controls (auto-applied)

This playbook leverages the full quality loop + series memory + entity routing:

- **Cost upfront.** The agent shows the per-episode plan + total cost before any render. The Week-0 LoRA-training cost surfaces separately (one-off).
- **Auto-routed multi-LoRA per scene.** The entity router parses each scene's prompt and binds the right LoRA per character mentioned. No per-call binding chore.
- **Drift gate at 0.85.** Every scene runs the critic; identity drift below 0.85 pauses. Editor reviews; approves a re-render or accepts the variation.
- **End-of-episode cross-asset critique.** After all scenes render, the cross-asset critic surfaces on-modelness across the episode + flags any scene whose protagonist drifted relative to earlier scenes in the SAME episode.
- **Cross-episode drift watch** — when running episode N where N>1, the agent also compares the protagonist's strongest 3 shots in this episode against the strongest 3 in episode 1. Flags structural drift across the series, not just within the episode.
- **One brand-kit fanout.** The 3-aspect export is one command — 16:9 + 9:16 + 1:1 from a single master, brand chain identical on all three.

## How this works

The playbook runs in two modes. **Episode 1** does the Week-0 setup (LoRA training + brand kit + series HTML scaffold) plus the episode. **Episode 2+** skips the setup and runs only the episode flow. The agent auto-detects which mode by checking whether the series already exists in your account.

## How the agent should run this (interaction contract)

1. **CONFIRM (one message, ≤1 question):** restate in 1 line ("Episode <N> of '<series>': <M> scenes, 2-LoRA cast, 3-aspect export — Week-0 adds ~$8 LoRA training; per-episode ~$15–25, 4–6 hrs"). On Episode 1, the ONE question worth asking: are the 15–25 protagonist refs + 12–20 antagonist refs ready? Training on thin refs is the most expensive mistake in the playbook.
2. **PREVIEW CHECKPOINT:** Week 0 — the **LoRA sample renders** before the brand kit locks to them; every episode — the **beat plan ($0.02) + Step-4 cost preview** BEFORE the ~$15 scene batch.
3. **NARRATE:** 1-liner per stage with ETA ("both LoRA trains submitted, ~25 min — training-job URLs: …", "scenes 1–10 rendering with entity routing, ~15 min"); poll `get_lora_train` / `get_create_media` every 10–15s, surface each drift-gate verdict, never silent >2 min.
4. **FAIL GRACEFULLY:** LoRA train fails → retry once → fall back to the single-reference anchor recipe (`episodic-pilot.md` no-LoRA mode) for this episode and re-train overnight; scene drift <0.85 → `director_re_render` with LoRA weight raised (≤2) → accept-as-variation; two-LoRA scenes muddy both faces → lock the primary character, let the secondary carry on prompt only; export chain abort → ship the `partial_url` master + redo the failed aspect. An episode minus one aspect still makes the Saturday drop.
5. **DELIVER:** 3 masters + series HTML + scorecard + one honest line ("cast consistency 0.XX this episode / 0.YY vs Episode 1; beat-lock used your explicit BPM — no audio BPM detection exists yet") + ONE next step ("queue Episode <N+1> — Week-0 is already paid for").

## The steps

### Step 0 — Confirm the brief + detect mode

The agent checks for an existing series with `series_slug`. If found, runs in episode-2+ mode. Otherwise runs Week-0 setup.

**STOP**: "Series '{series_title}' [is new / exists with N prior episodes]. Episode {episode_n} starting. Continue? (continue / edit brief)"

### Step 1 — Week 0 only: Train the cast (~25 min, ~$8)

Skipped on episode 2+. Otherwise the agent fires two parallel `submit_lora_train({ entity_name, refs })` runs from `protagonist_refs` and `antagonist_refs`, polls with `get_lora_train`, and reports when both are ready. It then calls `attach_lora_to_project` for each so future episodes inherit the cast automatically.

> **For the agent**: surface the upstream training-job URL so the user can watch the loss curve if they want. Trigger phrases per character get pre-set: the protagonist becomes `<protagonist_name>` and the antagonist becomes `<antagonist_name>` in any scene prompt.

**STOP**: "Both LoRAs ready. Sample renders? (sample [protagonist] / sample [antagonist] / continue)"

### Step 2 — Week 0 only: Brand kit + finishing chain (~2 min, ~$0.10)

Skipped on episode 2+. The agent builds the series brand kit: palette extracted from the protagonist LoRA's sample renders, title-card font, end-card with the series_title + URL, music-bed pointer if `music_track_url` is set, and the finishing chain (watermark top-right, letterbox to 16:9, LUFS -16, episode card, end card, 3-aspect fanout). The brand kit is set active so every render this episode + all future episodes inherit.

**STOP**: "Brand kit + finishing chain shown. Approve, or tune one element? (approve / tune [palette/font/end-card/music] [direction])"

### Step 3 — Per-episode: Beat planning (~3 min, ~$0.02)

The agent reads `episode_brief` against `season_arc` to plan 8-12 scenes. Each scene gets a 1-sentence shot description with the cast characters tagged inline ("Aiko corners Kuro in the warehouse" → entity router sees both names, will bind both LoRAs).

> **For the agent**: bias beat structure toward serialized storytelling — cold-open hook, midpoint reversal, cliffhanger close. If this is episode N>1, the agent recalls Episode 1's pacing pattern from series memory and biases consistently.

**STOP**: "Beat plan shown ({N} scenes). Approve, refine, or rewrite? (approve / refine [#] [direction] / rewrite [#] [new beat])"

### Step 4 — Cost preview (~5 sec)

The agent surfaces the per-episode cost: N scenes × $1.50 (LoRA render is pricier) + cover × $0.50 + finishing chain × $0.30 + 3-aspect fanout × $0.10 = ~$18 typical. Plus any cross-episode critique pass for episode N>1.

**STOP**: "Plan total $X.XX. Approve render? (approve / cap-at [$amount] / stop)"

### Step 5 — Scene generation with entity routing (~15 min, ~$15)

The agent runs all scenes through the project. The entity router auto-binds protagonist or antagonist (or both) LoRAs per scene based on prompt mentions. Drift gate at 0.85 on every scene. Any drift pauses for triage. Cross-asset critique fires after the batch.

> **For the agent**: when two cast characters co-occur in one scene, the multi-LoRA blend mode picks the relevant LoRAs and weights them per the character_count rule from the `multi-character-blocking` skill. Surface the failing scene + a 3-up compare (failing panel + 2 earlier on-model panels + LoRA reference) when drift gate trips.

**STOP**: "Scene batch + critic verdict shown. Approve all, redo specific, or accept drift on [#]? (approve / redo [#] [direction] / accept [#] / replan)"

### Step 6 — Mid-production edits (optional, ~5 min per edit, ~$1-2 each)

The agent surfaces the rough cut and waits. The user names re-renders or inserts in plain English. The agent only touches the named shots; everything else stays frozen.

> **For the agent**: surgical edits — `director_re_render` for shot replacements, `director_insert` for new beats between existing scenes. NEVER re-render the whole project.

**STOP**: "Edits applied. Any more? (one more / done)"

### Step 7 — Finale beat-lock (Episode 12 / climax episodes only) (~2 min, ~$0.20)

If `music_track_url` + `finale_bpm` are set in the brief, the agent calls `director_beat_lock({ project_id, bpm: finale_bpm, audio_ref: music_track_url })` — it creates a beat-locked variant where every scene's `target_duration_sec` = `beats_per_scene × 60/bpm`, so the final montage cuts land on the downbeat. The parent episode stays free-form; the variant is the music-tight cut.

> **For the agent**: by default 4 beats per scene at the specified BPM. The skill `beat-driven-edit` informs whether to half-time the climax (8 beats per scene) for emotional weight. Surface a beat-grid visualization so the user can see where cuts land.

**STOP**: "Beat-locked variant ready. Use as the canonical export, or keep alongside the free-form cut? (use beat-locked / keep both)"

### Step 8 — 3-aspect export (~5 min, ~$0.40)

The agent runs `director_export({ project_id: <chosen cut>, brand_kit_id })` once per aspect (16:9 YouTube, 9:16 TikTok / Reels, 1:1 Instagram) — each runs the brand kit's finishing chain (`ffmpeg-concat` → `ffmpeg-mux` with `audio_fill:"loop"` so the bed covers the full episode → watermark, LUFS -16, episode card, end card via `ffmpeg-export`). Same chain on all three masters.

### Step 9 — Series HTML update (~30 sec)

The agent updates `public/series/{series_slug}.html` to add this episode's card (cover, runtime, brand-locked thumbnail, link to the 3-aspect masters). On episode 1 the HTML is scaffolded fresh.

## Final output

```
✅ Series HTML:           public/series/{series_slug}.html
✅ Episode {episode_n}:
   ├── 16:9 master:        <URL>
   ├── 9:16 social:        <URL>
   ├── 1:1 IG square:      <URL>
   └── Cover keyframe:     <URL>
✅ N scene stills:         <URL × N>
✅ Brand kit (reusable):   ckit_{series_slug}
✅ Cast LoRAs (reusable):  lora_{protagonist}_v1 · lora_{antagonist}_v1
✅ Project viewer:         <project URL>

Total spent: $X.XX of $25 ceiling (per-episode)
LoRA training (Week 0 only): $8 one-time
Total wall-clock: MM:SS
Critic verdict: SHIP — cast face-consistency 0.XX across this episode + 0.YY across the series
```

## What to do next

- **Schedule the 3-aspect masters** — the YouTube hero this week, the TikTok / Reels for the Saturday drop, the IG square in the carousel.
- **Run this playbook again for Episode {episode_n + 1}** — Week-0 setup is skipped; you go straight to beat planning. Cost drops to ~$18 per episode.
- **Spin off a `live-cast-member.md` stream** — the protagonist LoRA is already trained; binding it to a live persona is 30 minutes of setup.
- **For sponsorship pitches**: the series HTML is a one-link production-status board with every episode rendered, cost per episode, cast on-modelness scores. Send the URL to brand partners.
- **Year-2 retain or refresh**: re-train the protagonist LoRA from the season's best 30 shots — the v2 LoRA has season-1's canonical look baked in.

---

> *"What separates a hit anime from a forgotten one isn't the first episode. It's whether episode 8 looks like episode 1."* — every showrunner's anxiety. This playbook is built to remove it.
