---
title: "Seven-Reference Cast Reel — Grok ref2v + stitched export"
tier: hero
format: video
theme: cast-lock | reference-driven | short-form
persona: director, casting, brand studio, creator
duration: "~15–30 min"
budget_usd: "~$3–$8 depending on duration (priced per second)"
caps: ["grok-imagine-video-ref2v", "grok-imagine-video-t2v", "grok-imagine-video", "ffmpeg-concat", "ffmpeg-export"]
skills: ["grok-imagine-video", "cinematography", "finishing-quality"]
showcases: ["/chapters/seven-reference-cast-reel-example.html"]
status: "live"
reliability: 3.2 # multi-reference premium video; finishing deterministic
---

# Seven-Reference Cast Reel — agent playbook

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code. Livepeer Agent builds a short “cast reel” where **7 references define the cast**, then stitches into a single export.

## What you'll get

- **A 20–45s cast reel** — quick cuts introducing a consistent cast
- **A reference-locked hero shot** — all 7 refs influence the same take
- **An export-ready MP4** — stitched + formatted for the platform you pick
- **A redo map** — which ref/prompt to change when one character drifts

## Tell the agent about the cast reel

```yaml
reel_title:            # e.g. "The Seven"
reference_image_urls:  # EXACTLY 7 https URLs (one per cast member)
prompt_style:          # 1–2 sentences (genre, lighting, camera)
duration_sec: 8        # per-shot duration (6–12 recommended)
shot_count: 4          # 3–6
aspect_ratio: 16:9     # "16:9" or "9:16"
max_spend_usd: 10.00   # hard ceiling
output_slug:           # kebab-case filename prefix
```

## Conventions (how the agent must run)

1. **Spend gate**: estimate cost = `0.14 × duration_sec × shot_count` and STOP.
2. **Identity gate**: render one pilot shot first, STOP for approval, then batch the rest.
3. **Final review gate**: STOP before export.

## The stages

### Stage 0 — Confirm + shot list (no render)

Write a shot list of `shot_count` beats (one line each), e.g.:
1) group reveal, 2) pairs, 3) action, 4) calm close.

**STOP**: “Shot list ok? (approve / edit [shot #])”

### Stage 1 — Cost preview (no render)

Show the estimated spend and time. If it risks exceeding `max_spend_usd`, propose a cheaper plan (lower `duration_sec` or fewer shots).

**STOP**: “Approve spend for Shot 1? (approve / reduce / abort)”

### Stage 2 — Pilot shot (Grok ref2v)

Run `grok-imagine-video-ref2v` with:
- `reference_image_urls` (7 refs)
- `resolution:"720p"` (upgrade later only if needed)
- `aspect_ratio`, `duration`

**STOP**: “Pilot shot holds the cast? (approve / tweak prompt_style / swap one ref)”

### Stage 3 — Batch the remaining shots

Render the remaining shots with the approved prompt pattern (only change the beat-specific line).

**STOP**: “All shots ready to stitch? (approve / redo [shot #])”

### Stage 4 — Stitch + export

1) `ffmpeg-concat` in order (hard cuts)  
2) If `aspect_ratio: 9:16`, run `ffmpeg-export` with `preset:"tiktok-portrait"`. If `aspect_ratio: 16:9`, skip export (the stitched output is already correct).

**STOP**: “Export the final reel? (approve / change aspect_ratio)”

### Stage 5 — Deliver

Return final reel URL + per-shot URLs + the exact prompts used.

## FINAL OUTPUT

Print exactly:

```
✅ Cast reel (stitched): <URL>
✅ Shots (N):            <URL × N>
✅ References (7):       <URL × 7>

Total spent: $X.XX (ceiling $max_spend_usd)
```

## AFTERCARE

- If one character drifts: replace that single reference image and redo only the pilot shot first.
- If you want stronger continuity: increase `duration_sec` slightly, but keep `shot_count` low (cost is per second).

## Notes for the agent (exact call)

- `mcp__livepeer-agent__run_capability({ capability:"grok-imagine-video-ref2v", prompt, inputs:{ reference_image_urls, duration, resolution, aspect_ratio } })`
- `mcp__livepeer-agent__run_capability({ capability:"ffmpeg-concat", inputs:{ clips:[...], transition:"cut" } })`
- `mcp__livepeer-agent__run_capability({ capability:"ffmpeg-export", inputs:{ source_url:"<stitched_url>", preset:"tiktok-portrait", crop:"center-crop" } })`
