---
tier: hero
reliability: 4.2 # locked-asset .9 + place/edit consistency .85 + i2v .8 + Ray hero .3 (premium) + overlay/score/mix .9; -.1 jewelry/intricate products need a consistency GATE before fan-out
---

# Luxury Product Ads — one locked product → a full ad set, any brand ⭐

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code with the Storyboard MCP attached. Give it a product photo + a brand. It locks the product as a reusable asset, **proves it stays identical shot-to-shot**, and ships the three ads that matter — a cinematic hero film, a multi-world product ad, and a localized social cut — with brand text that is legible by construction. Repeatable for any brand, any SKU.

## What you'll get

- **Ad 1 — Hero film** (16:9, cinematic, Ray 3.2 HDR): the product as an icon, with a real grade + licensed score and a clean brand-card ending.
- **Ad 2 — Money-Shot product ad** (16:9, ~30s): the *same* product across 5–6 worlds (studio, on-model, macro, iconic location, the box, a 3D turn) with a pixel-perfect typographic overlay — wordmark, material line, price, CTA.
- **Ad 3 — Social + localized** (9:16): a gifting/desire cut with a warm voiceover, shipped in **N languages** (each sized so the voice finishes — never cut off).
- A **consistency proof sheet** (the locked product vs every placement) you can put in front of a brand.

**The wow / why it beats raw AI-video tools:** two things every AI ad gets wrong, solved — (1) **product drift** (the product is a *locked reference asset* placed via edit-not-regenerate, not re-rolled per shot), and (2) **legible brand text** (wordmark / price / CTA live in a deterministic graphics overlay, never AI-generated pixels). For luxury, both are non-negotiable.

## The caps

| Step | Cap |
|---|---|
| Lock the product (hero from a photo, or upscale the client's) | `nano-banana` / `mai-image-2.5` / `gpt-image` |
| Place the *same* product into N worlds | `kontext-edit` (edit-not-regenerate) / `place_subject` |
| Animate each world | `kling-v3-turbo-i2v` / `seedance-i2v` |
| Premium HERO motion (HDR) | `ray-32-i2v` (Luma Ray 3.2) |
| 3D turn / orbit | `ray-32-i2v` orbit, or `rodin-i3d` → `seedance-i2v` |
| Legible overlay (wordmark / price / CTA) | deterministic graphics layer (`hyperframes-render` HTML, or PIL+ffmpeg) |
| Licensed score / voiceover | `sonilo-t2m` · `gemini-tts` |
| Localized voice (per market) | `gemini-tts` (multilingual) / `talking-head` for a lip-synced spokesperson |
| Finish / stitch / fades | `ffmpeg-*` |

## Tell the agent about the campaign

```yaml
brand:          # e.g. "Tiffany & Co."
product:        # e.g. "Tiffany Keys round kaleidoscope key pendant"
product_photo:  # OPTIONAL URL of the real product; omit to generate a hero
materials:      # the spec line, e.g. "Platinum · 18k gold · fancy yellow diamond"
price:          # optional, for the overlay
brand_palette:  # hex accents, e.g. Tiffany Blue #81D8D0
worlds:         # 5-6 scenes, e.g. [studio, on-model, macro, iconic-city, the-box, 3D-turn]
markets:        # localized languages, e.g. [English, Spanish, Japanese]
tier:           # premium (Ray 3.2 hero) | standard (kling-turbo only)
launch_slug:    # e.g. tiffany-keys
```

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

1. **LOCK THE PRODUCT (step 0 — the whole game).** Generate/accept a tack-sharp hero of the product. **Save its URL as the locked reference.** Every later shot pulls *this exact asset*, never a fresh generation. Register a brand_kit (palette + wordmark) so colour/type stay on-brand.
2. **PLACE INTO WORLDS.** `kontext-edit` the locked product into each world with the instruction *"keep this exact product perfectly identical — do not alter the jewelry/product; restage only the scene."* (`place_subject` for a one-call fan-out.)
3. **EVALUATE CONSISTENCY — GATE (mandatory).** Build a grid: locked product + every placement. **Look.** The product (silhouette, stones, label) must be identical. If any shot drifts, redo that shot before spending on video. *Do not claim done until consistency is verified.* Also scan for AI-mangled background text (e.g. signage) and remove it.
4. **ANIMATE.** i2v each world keyframe (subtle, restrained luxury motion); use `ray-32-i2v` for the hero film's HDR shots. Re-check the *end frame* of each clip — i2v can drift mid-motion.
5. **COMPOSE + OVERLAY.** Lay the footage into an editorial frame (product + negative space) and add the **legible** wordmark / material line / price / CTA as a graphics overlay. This is the differentiator — never trust a model to render the price or logo.
6. **SCORE + RESOLVE THE ENDING.** `sonilo-t2m` licensed bed; for social, `gemini-tts` VO per market. **Size each cut so the voice/music FINISH** — `afade` the audio out and end on a held brand/CTA card with a gentle fade. Never hard-cut on motion (no "raw cut" feeling).
7. **DELIVER + PROVE.** The 3 ads + the consistency proof sheet + one honest line + the cost report.

## What can disappoint (cap ceilings) — and the guardrails

- **Product drift** is the #1 failure for intricate goods (jewelry, watches, engraved logos). The locked-asset + edit-not-regenerate + the consistency GATE is the answer — never skip the gate.
- **AI text** (price, wordmark, store signage) — never generated; always the overlay layer. Scan backgrounds for accidental mangled text.
- **i2v mid-motion drift** — keep motion subtle; verify the last frame; prefer `kling-v3-turbo` / `ray-32` for stability.
- **Voice longer than the cut** — TTS often runs longer than planned; size each language's video to its VO + a 1.5s tail so the voice always completes.
- **Ray 3.2 cost** — premium ($0.42/s); prototype one 5s hero shot before fanning.

## Realistic cost (the pitch number)

A full **3-ad set, per brand/SKU**, on live caps:

| Ad | Standard (Kling) | Premium (Ray 3.2 hero) |
|---|---|---|
| Hero film | ~$3–4 | ~$8–12 |
| Money-Shot product (6 worlds + overlay) | ~$4–5 | ~$5–7 |
| Social + 3 localized | ~$5–7 | ~$6–8 |
| **3-ad set** | **~$13–16** | **~$20–27** |

~30–60 min wall time, agent-driven, with `max_cost_usd` + `spend_cap` + a per-run cost report. Repeatable across the whole catalogue — swap the product photo + brand kit and run again.

## When you're done

```
✅ Campaign: public/launches/{launch_slug}.html
✅ Hero · Money-Shot · Social (×N languages) + consistency proof sheet
✅ Product verified identical across all shots; every brand word legible; all audio resolves
Total spent: $X.XX
```

## What to do next
1. **Next SKU** — same pipeline, new product photo + brand kit.
2. **More markets** — one more `gemini-tts` pass per language (or `talking-head` for a lip-synced spokesperson).
3. **Platform cuts** — `ffmpeg-export` the 16:9 / 1:1 / 9:16 spec for each channel.

---

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

**Consistency engine.** Lock ONE hero image; pass its URL to `kontext-edit` for every world ("keep the product identical; restage only the scene"). `place_subject` does the same as a fan-out. Always build + look at a consistency grid before animating.

**Overlay.** `hyperframes-render` composites an HTML overlay over a `background_video_url` (legible text). On a loaded tool-host it can time out on long clips — the reliable fallback is PIL-rendered transparent PNGs composited with ffmpeg `overlay` + alpha `fade` (identical crisp result). Either way the text is deterministic, not generated.

**Resolved endings.** Music: `afade=t=out` ending ~1.5s before the end. Voice: size the cut to `VO_duration + ~1.6s`. End on a held brand/CTA card with a 0.4–0.9s video fade. Verify the final 0.4s is near-silent before claiming done.

**Heavy caps.** `ray-32-i2v` (`duration` is a STRING `'5s'`/`'10s'`) and `talking-head` run minutes — direct-SDK `/inference` with `timeout:700`.
