---
tier: hero
reliability: 3.8 # base still .3 + base animate .2 + 6 bernini edits (~10-20% flake, 1 retry) .4 + label-drift-in-post .2 + finishing 0 → 3.9; -0.1 until create_media slow-cap fix is deployed (direct-SDK fallback works today)
---

# Director's Edit Pass — infinite on-brand variants from one shot ⭐

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code with the Storyboard MCP attached. You shoot ONE hero. The agent instruction-edits it into a whole matrix of on-brand worlds — rain, golden hour, a different season, a new surface, a new mood — **same scene, same product, scene-locked.** Twenty variants for the cost of twenty edits, not twenty shoots.

## What you'll get

- **One studio hero clip** of your product (a still → a controlled motion shot).
- **A 6-variant edit matrix** — the same shot, instruction-edited into 6 different worlds (weather / time-of-day / season / background / mood / style), each keeping the product, label, and composition intact.
- **A shareable matrix page** + per-platform exports.

**The wow:** this is the format pure-generative tools can't make — you're not re-rolling 6 new scenes, you're *editing one* so the product and framing stay identical while the world around it changes. That's what makes a variant set feel like one campaign instead of six random clips.

**Reference run (our showcase):** ≈$3.5 · ≈25 min end-to-end · 1 hero shot → 6 Bernini-R instruction-edits in parallel, 6/6 scene-locked. See the [example](/chapters/directors-edit-pass-example.html).

**Time:** ~20–30 min. **Cost:** ~$3–5. **Hardest part:** keeping brand text legible across edits (handled in post).

## The marquee capability

This playbook is built on **Bernini-R** (`bernini-r-edit`) — one model that both generates and edits video, guided by instructions (and up to 5 reference images). See the `instruction-video-editing` skill for the full recipe. **Bernini runs ~7–8 min per edit** — the agent runs the edits in parallel and uses the direct-SDK path with a long `timeout` (or `create_media` once the slow-cap fix is deployed).

## Tell the agent about the shot

```yaml
product_name:        # e.g. "AURELIA" (exact name + how the label reads)
product_desc:        # 1-2 sentences: object, material, color, packaging, the label text
brand_tone:          # premium | clean | playful | clinical | athletic | natural | editorial
base_setting:        # the hero's setting, e.g. "polished white marble, soft neutral backdrop, a sprig of eucalyptus"
hero_color:          # one hex anchoring the palette
variants:            # OPTIONAL — override the 6 default edits (see below). Leave blank for the defaults.
aspect:              # 9:16 | 1:1 | 16:9
launch_slug:         # kebab-case, e.g. aurelia-edit-pass
```

## The 6 default edits (the agent uses these unless `variants` overrides)

Each is ONE change, with the product + label + composition pinned:

1. **Rainy evening** — rain on a window behind, cool blue light, wet reflections
2. **Golden hour** — warm raking sunlight, long soft shadows, amber glow
3. **Season** — softly-blurred autumn leaves, cozy warm tones
4. **Surface swap** — polished black volcanic stone, dark moody single-source light
5. **Festive** — warm gold bokeh + holiday sparkle
6. **Editorial B&W** — high-contrast chiaroscuro monochrome

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

1. **CONFIRM (1 message, ≤1 question).** Restate the product + the 6 edits + the tier choice; ask only the palette/variant question, else start.
2. **HERO GATE.** Generate the hero still (`gpt-image` / `mai-image-2.5` for a legible label) → STOP for approval. The whole matrix inherits this; get it right.
3. **BASE MOTION.** Animate the approved still into a controlled push-in (`seedance-i2v`, <5 min). No gate needed if the hero was approved.
4. **EDIT MATRIX (gated spend).** Print the cost (~6 × $0.47), then fan all 6 `bernini-r-edit` calls **in parallel**. Per the skill: direct-SDK with `timeout: 550` (or `create_media` once deployed). ~8–10 min wall.
5. **RENDER-AND-LOOK (mandatory).** Inspect every variant: is the product/scene intact? did only the instructed thing change? **Check the label** — if Bernini drifted it, restore it in post (ffmpeg overlay / hyperframes) rather than re-rolling. Retry any flake (~10–20% expected).
6. **FINISH + DELIVER.** Stitch the matrix page (base + 6 variants), export per platform (`ffmpeg-export`), score with `sonilo-v2m` if a reel cut is wanted. One honest line on what held + what needed a retry/post-fix.

## What can disappoint (cap ceilings)

- **Brand text** drifts across edits — plan to restore it in post; don't trust the edit to preserve a wordmark.
- **Heavy edits** (full background swap, style conversion) drift the scene more than light ones (weather/light). If a swap warps the product, fall back to `bernini-r-ref-edit` with the hero frame as a reference image.
- **fal flake** ~10–20% — one retry per ~6 edits is normal.

## When you're done

```
✅ Edit-pass matrix: public/launches/{launch_slug}-matrix.html
✅ Hero + base clip + 6 variants (rain / golden / autumn / black-stone / festive / B&W)
✅ Per-platform exports
Total spent: $X.XX · wall: MM:SS
```

## What to do next
1. **A/B the variants** as paid-social creative — same product, six moods, one test.
2. **Seasonal refresh** — re-run only the season/festive edits next quarter; the hero stays.
3. **Add a market** — `bernini-r-ref-edit` to swap on-screen product/signage per region (see the Brand Localization playbook).

---

## Notes for the agent (only read if a step fails)

**Bernini timeout.** If `create_media` reaps a Bernini job at ~5–20 min ("fetch failed"/"aborted"), the slow-cap fix isn't deployed yet — use the direct-SDK path: `POST https://sdk.daydream.monster/inference`, body `{"capability":"bernini-r-edit","params":{"video_url":"<public mp4>","prompt":"<edit>. Keep the <product>, its <label>, and the composition identical."},"timeout":550}`, Bearer auth, ~640s client timeout. Host local clips first via `scripts/host-local-file.sh`.

**Parallelism.** Fan the 6 edits concurrently — each is independent and ~7–8 min; serial would be ~45 min, parallel ~8–10 min.

**Label restore.** If the label drifts, the cleanest fix is an `ffmpeg-overlay` / hyperframes pass with the correct wordmark on the relevant frames, not a re-edit.
