← Files HiggsfieldARCHIVED FILE

skills/ugc-review-video/references/ugc-board.md

56.3 KB · Oct 2, 2026 · 00:02 UTC

↓ Download file

# UGC storyboard prompt — full rule set

This file is the complete rule set for the storyboard-sheet prompt. There is no enhancer service
here: you read these rules, write ONE prompt string yourself, and submit it.

```json
generate_image_batch({"requests":[{"index":"<K>","params":{
  "model":"gpt_image_2",
  "prompt":"<the string you wrote>",
  "count":1,
  "aspect_ratio":"21:9",
  "resolution":"2k",
  "quality":"high",
  "medias":[
    { "value": "<product_media_id>", "role": "image" },
    { "value": "<character_media_id>", "role": "image" },
    { "value": "<previous_board_media_id>", "role": "image" }
  ]
}}]})
```

The `medias` order MUST match the `@Image1 / @Image2 / @Image3` table below — the declarations you
write into the prompt are what bind them. Drop the entries that do not apply (no product, K == 1)
and shift the numbering with them. Wait on the returned indexed job with `jobs_wait` until terminal,
then run the MANDATORY Seedream de-slop pass from SKILL.md; its job replaces this board downstream.

You are a UGC storyboard prompt enhancer. You work from structured inputs describing one board of a UGC video — its arc role, position in the sequence, clip duration, product context, character reference, and (optionally) the previous board for continuity. You output ONE production-ready prompt string for the `gpt_image_2` image model that produces a photorealistic UGC storyboard sheet: exactly EIGHT equal-size 9:16 vertical slots arranged in ONE HORIZONTAL ROW, total sheet aspect 21:9. Do NOT make two rows and do NOT make a grid — exactly eight panels in one row, never ten, never twelve.

Write the prompt as a plain string; there is no JSON wrapper and no enhancer service in
this pipeline.

---

## Sheet geometry on this connector

`gpt_image_2` accepts `21:9` through the canonical FNF model contract. Generate the sheet at
**21:9** so the eight equal vertical compositions have the supported one-row canvas. Keep
every slot equal-width and 9:16 in composition, with all eight slots in one row.

## Inputs to settle before writing

Settle these yourself from the brief, the product analysis, and the run state — nothing is
handed to you:

```
{
  "K": <integer — this board's index, 1-based>,
  "N": <integer — total boards in the video>,
  "arc_role": "HOOK" | "HOOK+SETUP" | "MAIN" | "REVEAL" | "APPLY" | "APPLY+CLOSER" | "CLOSER" | "FULL_ARC",
  "clip_duration": <integer 4-15 — seconds of the Seedance clip this board feeds>,
  "tier": "luxury" | "premium" | "drugstore",
  "input_tier": "auto" | "guided" | "director",
  "user_request": "<original brief verbatim — used to read user-specified overrides>",
  "product_description": "<string from product-analyzer, or null when no product>",
  "character_media_id": "<reference media id — character image is always provided>",
  "product_media_id": "<reference media id, or null>",
  "previous_board_media_id": "<reference media id of board K-1, or null when K==1>"
}
```

## Output

The prompt string itself — plain text, no JSON wrapper, no fences, no commentary. Pass it as
`requests[0].params.prompt` of the `generate_image_batch` call at the top of this file
(`gpt_image_2`, `21:9`, `2k`, `quality: high`) with references in `@ImageN` order.

## CORE PRINCIPLE

The sheet is a sequential UGC storyboard for ONE Seedance clip of `clip_duration` seconds — eight frames showing eight narrative beats inside that single clip. NOT a presentation deck. No headers, no metadata blocks, no pop-text captions, no badges, no numbers, no brand-matched design system, no typography of any kind. Just eight equal-size 9:16 slots in one row, each containing a photorealistic UGC iPhone-style still that advances a coherent story. Slots are separated by thin white gutters. **All eight slots are always active — there are no placeholders.**

The character is supplied via reference image — never generate or describe their face, body, age, or appearance. Reference them only as "the same person from the character reference image, with identical face, hair, body, and identity across all eight slots."

The product (when supplied) follows strict Angle Lock, Realistic Scale, and Placement Logic rules.

Story matters. Setting matters. Camera POV adapts to the action in each slot and **may change between slots — every POV change aligns with a hard cut between slots, never a smooth transition.** Hand count is enforced.

---

## Image Reference Order (mandatory in prompt)

Based on which reference media_ids you receive, your output prompt MUST start with explicit `@Image1` / `@Image2` / `@Image3` references in this order:

| References present | `@Image1` | `@Image2` | `@Image3` |
|---|---|---|---|
| `product_media_id` + `character_media_id` + `previous_board_media_id` (K>1) | product | character | previous board |
| `product_media_id` + `character_media_id` (K==1) | product | character | — |
| `character_media_id` + `previous_board_media_id` (no product) | character | previous board | — |
| `character_media_id` only | character | — | — |

The prompt MUST start with explicit `@ImageN` declarations in this order.

---

## Input Tiers (passed via `input_tier`)

| `input_tier` | Behavior |
|------|----------|
| `auto` | Full autopilot — build a default UGC mini-arc for the assigned `arc_role`. |
| `guided` | Preserve the brief's tone / emphasis / mood. Build the slot structure yourself. |
| `director` | Map the user's beats onto the 8 slots in their order. Adapt only physically unsafe interactions. |

---

## User Override Rule

If `user_request` specifies any concrete detail — setting, location, clothing, action, mood, time of day, props, slot order, story beats — that detail takes priority over every default below.

---

## Step 1 — Product Understanding

### Mode A: `product_description` is provided (default when product is present)

Use the description directly. Extract: product name, brand, category, key features, intended use, container material, applicator type, visible design details, safe-to-mention claims.

If the description does not explicitly cover physical attributes you need (material, applicator, mechanic, scale), supplement by visually analyzing the `@Image1` product reference:

1. Product category
2. Container material — glass, hard plastic, soft tube, metal, cardboard, fabric, food packaging, tech, unknown
3. Applicator type — removable cap, pump, dropper/pipette, wand, spray nozzle, twist-up, flip top, compact hinge, none
4. Usage mechanic
5. Key visual details — color, label text, logo, shape, distinctive features
6. Real-world physical size — estimate height/width in centimeters from packaging type
7. Forbidden actions — anything that breaks physics, deforms rigid packaging, or invents unseen sides

### Absent features stated as visual negatives

If the product's selling point is the ABSENCE of something (cordless, no buttons, battery-free, sugar-free), the image model hallucinates the default affordance back in — a "no-electricity" product renders with a power cord. Write the absence visually in BOTH places: the slot descriptions ("hand-pump only, completely cordless, smooth body with no buttons") AND the rendering-rules negative tail ("no power cord, no power button, no charging port, no digital display").

### Label and wordmark treatment

- When `product_media_id` is provided, the product's own label keeps its real text via the reference image and Angle Lock — never redraw, restyle, or re-letter it.
- When the product exists only as `product_description` (no product image), never demand a legible wordmark — invented lettering renders misspelled or as a real competitor brand. Describe the label as "small label, turned slightly away, too small to read — no legible text on the product."
- Either way: the brand name appears on NO other object in the scene, and no prop carries legible text or numbers (receipts, screens, price tags render as random characters) — printed sides face away or too small to be legible.

### Mode D: No product (`product_media_id == null` AND `product_description == null`)

Story is talking-head / lifestyle / scenario-driven. The character carries the entire arc. No `@Image` product references. No Angle Lock. No physical-product mechanics.

---

## Step 2 — Character Reference Rules

The character is always supplied via input image and must NEVER be re-described.

In every prompt, include:

`@Image[N] is the character reference. The same person appears in every slot with identical face, hair, body, and identity. Do not alter facial features, hairstyle, body proportions, or skin tone between slots.`

Outfit:
- Default: identical outfit across all eight slots, matching the character reference image.
- Outfit may change ONLY if the story explicitly transitions to a new context (rare in a single 15s clip; more common across boards).
- When a previous-board reference is present (K > 1), wardrobe defaults to matching the previous board exactly.
- When a described garment carries a print or lettering, the print is BIG — a bold graphic or wordmark filling the chest or back. Small chest logos and tiny lettering render as gibberish; large letterforms render clean. Any garment lettering is fictional — never a real brand.

Never describe the character's age, ethnicity, attractiveness, makeup, or features beyond what the reference image already supplies.

---

## Step 3 — Setting and Lighting Logic

Default: inherit setting and lighting from the character reference image. Reference in the prompt:

`Setting and lighting in all eight slots default to the same environment, time of day, and light direction visible in the character reference image, unless the story requires a different location.`

When K > 1 and a previous-board reference is provided: the setting and lighting MUST match the previous board exactly (same room, same light direction, same time of day) UNLESS the story explicitly transitions to a new location.

For product-driven setting matching when reference is unusable, use the category-based defaults:
- Cosmetics / makeup / fragrance → bathroom or bedroom by tier
- Skincare / haircare / body care → bathroom by tier
- Food / beverages / kitchen products → kitchen
- Protein / supplements / sports nutrition → home gym or kitchen
- Clothing / accessories / jewelry → bedroom or dressing room
- Fitness gear → home gym or yoga corner
- Cars → driveway / sunlit street / garage
- Outdoor gear / sunglasses / sunscreen → café terrace, park, sunlit street
- Tech / electronics → home desk, living room, studio nook
- Home / decor → living room or bedroom

Lighting fallback: soft neutral daylight from a clear directional source (left or right window). Never golden hour or warm sunset unless `user_request` explicitly asks. Never harsh studio strobes.

---

## Step 4 — Story Arc Across the 8 Slots

Each board carries an `arc_role` assigned externally. The 8 slots inside the board carry an internal mini-arc that fits that role — a flow of eight beats read left to right (slot 1 = beat 1 = Cut 1 … slot 8 = beat 8 = Cut 8).

| `arc_role` | 8-beat flow (slot 1 → slot 8) |
|---|---|
| `HOOK` (first board of multi-board video) | attention-grab → context → life beat → life beat → curiosity toward the product/moment → first touch → lead-in → hand-off to next board |
| `HOOK+SETUP` (Board 1 of 2) | attention-grab → setup → context → life beat → first product touch → develop → reaction → lead-in |
| `MAIN` (middle board) | pick up from previous board → build → core demo A → core demo B → reaction → develop → transition → hand-off |
| `REVEAL` (Board 2 of 4) | open packaging → reveal product → key detail → macro detail → first impression → reaction → develop → settle |
| `APPLY` (Board 3 of 4) | begin application → mid-application → macro of the moment → effect starting → effect visible → reaction → develop → settle |
| `APPLY+CLOSER` (Board 2 of 2) | application → effect visible → macro → reaction → result → recommendation → settle → final look |
| `CLOSER` (last board) | result visible → proof → recommendation → settle → warm beat → aside → final look → loop-ready beat |
| `FULL_ARC` (single-board video, N=1) | HOOK (attention-grab / setup) → context → life beat → first product touch (or story turn) → core action → reaction → result → recommendation-settle |

When `input_tier == "director"`, map the user's beats onto the 8 slots in order.

### First slot ≠ obligatory "show product"

Slot 1 is the **setup of the moment**, not necessarily a product reveal. If the slot's narrative is on-the-way / discovery / talking-head hook — the product may be hidden, partial, or absent in slot 1. The "show product" beat moves to whichever slot the story actually delivers it.

### Story-beat visual law

Visual beats cost zero words — every plot event that CAN be shown IS shown: the wince, the package on the counter, the held-up product. Each slot carries its own micro-shape — introduce → develop → land — inside the board's mini-arc. For `HOOK` / `HOOK+SETUP` boards and every FULL_ARC slot 1, frame one is already MID-EVENT: the character is already inside the moment (already wincing, already mid-reach) — never composing themselves before it starts. The staging menu in Step 4.5 names the concrete frame-one patterns.

### Product entry across the video (N > 1 only)

In a multi-board video the story is about the PERSON first. In `HOOK`-role boards the product is incidental or absent. The product enters as a **supporting actor** in whichever board sits at roughly 40-60% of total runtime (typically `REVEAL` / `APPLY` / `MAIN`). This never overrides the per-board slot tables in Step 4.5; FULL_ARC (N=1) keeps its hook-variant default unchanged.

---

## Step 4.5 — Slot Action Diversity (mandatory) — THE ANTI-MORPH ENGINE

**The 8 slots MUST show eight DIFFERENT beats, not variations of one pose.** Seedance turns a slot boundary into a CRISP HARD CUT only when the two adjacent slots are visually FAR apart; two low-delta neighbors (same POV + same distance + same action) MORPH into a continuous blend instead of cutting. So every ADJACENT pair must differ maximally on three axes at once — break any one and the cut collapses into a morph:

1. **POV alternates every slot** — never two consecutive slots in the same POV (walk SELFIE ↔ STATIC down the row).
2. **Distance band rotates every slot** — the three bands are **TIGHT** (tight close-up / MACRO), **MID** (medium / medium-close), **WIDE** (three-quarter / waist-up / full-body / product-extended); adjacent slots MUST come from different bands; across the 8, every band appears at least twice.
3. **A different physical action every slot** — never the same hand-product configuration twice in a row. Each slot's ACTION follows the Step 4 arc flow for its `arc_role`.
4. **Shift angle or micro-location where the story allows** — a background change is the strongest cut-forcer of all.

Default 8-slot cadence (adapt to the story, keep the no-two-adjacent-same rule):

`SELFIE-MID → STATIC-WIDE → STATIC-MACRO → SELFIE-TIGHT → STATIC-MID → STATIC-MACRO → STATIC-WIDE → SELFIE-TIGHT`

Every slot description MUST state the framing distance explicitly — `TIGHT CLOSE-UP`, `MEDIUM CLOSE-UP`, `MEDIUM`, `MEDIUM-WIDE`, `MACRO`, `THREE-QUARTER`, `WAIST-UP`, `FULL-BODY WIDE`, or `PRODUCT-EXTENDED` — so the image model receives an unambiguous framing signal.

### FULL_ARC Slot 1 — Hook variants

**Default = variant (n) Natural engaged hook for every board — no signals needed.** Switch to variant (b) ONLY when `user_request` explicitly signals a hyped register: `hyped`, `hype`, `energetic`, `explosive`, `high-energy`, `viral energy`, `insane energy`. Switch to (a), (c), or (d) ONLY when `user_request` explicitly signals a calm-tone aesthetic (`goth`, `vampire`, `cinematic noir`, `cold`, `passive`, `deadpan`, `clinical`, `refined`, `luxury-passive`, `minimal`, `somber`, `serious`, `dark`, `shadowy`). The `user_request` word always wins. The table row above (Hook intro — selfie pose, product visible, talking direct-to-lens) describes variant (a); it is NOT the default.

- **(n) Natural engaged hook (DEFAULT)** — the character is already mid-moment (per the Story-beat visual law): a genuine human-scale reaction landing on the product/action from frame 1 — raised brows with a grin already breaking, a real "wait—what?" lean-in, a delighted half-laugh. Lively and engaged, never staged screaming. The product and the genuine reaction arrive together — no setup pause. Pairs with Pattern N in Step 10.
- **(b) Peak-shock skit hook (HYPED — ONLY on the explicit hype signals above)** — WILD open-mouth scream-gasp / mouth blown open mid-yell / head jerk back with explosive joy, landing IMMEDIATELY on the product/action from frame 1 — no setup pause, no surprise pre-amble before the product enters frame. The product and the scream-reaction arrive together. Pairs with Pattern B in Step 10.
- **(a) Classic talking-head hook (override: warm-but-restrained briefs)** — selfie pose, product visible in one hand at arm's length, talking direct-to-lens, calm-to-warm energy. Pairs with Pattern A in Step 10.
- **(c) Mid-action straight-in hook (override: any tone, alternative opener)** — character already mid-bite / mid-sip / mid-gesture / mid-sentence at frame start, no setup beat. Compatible with Pattern N, A, or B in Step 10 (pick per the active register).
- **(d) Sustained-passive hook (override: goth / vampire / cinematic noir / clinical / luxury-passive briefs)** — low-key opener; neutral face, half-lidded gaze, no expression spike, deliberate stillness. Pairs with Pattern D in Step 10. A `dramatic deadpan stare into lens` (no smile, brows neutral) is also valid for dry-humor / cool briefs — that variant pairs with Pattern C.

### Slot 1 visual staging menu — hook patterns H1-H8

Applies to slot 1 of `HOOK` / `HOOK+SETUP` boards and FULL_ARC slot 1. These patterns name WHAT the mid-event of frame one is — they stage the Story-beat visual law (Step 4); they never replace the hook variants above: for FULL_ARC the chosen hook variant's energy register still governs the expression; for `HOOK` / `HOOK+SETUP` boards the Step 10 expression pattern governs as usual. Pick the pattern named in `user_request` or the flow-provided board description; when none is named, writer's choice — whichever is coherent with the story. Stills-compatible patterns:

- **H1 Impact Action** — a physical action frozen mid-peak: box mid-rip, mid-stumble into frame, object mid-catch.
- **H3 Pattern Interrupt** — an otherwise normal frame with ONE thing deeply wrong; the character visibly unbothered by it.
- **H4 Freeze-Reaction** — the face already in full reaction, eyes locked on something (off-frame or on the product).
- **H5 Hostile Open** — slight lean-in, finger already at the lens: a challenge aimed at the viewer.
- **H7 Mechanism-First** — an observable product action or mechanism is already underway in frame one. It may visualize an exact allowlisted claim, but it must not imply a personal outcome, transformation, or before/after result.
- H2 (mid-sentence confession) and H6 (quirk-first) are audio/behavior-led — stage them through existing machinery only: a Step 10 mouth-open-mid-word beat (mouth caught open mid-word as the line lands) for H2 — an explicit H2 request licenses this beat at the ACTIVE register, rendered at that register's own energy; it does not switch the board to the hyped menu; the Step 10 physical-quirk beat for H6 (only when `user_request` signals a quirk). No new rules.
- **H8 Product Cold Open (explicit override only)** — slot 1 MAY be a clearly produced product-only still — rougher light, slightly compressed social-video texture, hands only, no face, no character — ONLY when `user_request` or the board description explicitly stages a product cold open AND a product reference is present. Never describe it as found, reposted, stitched, or third-party footage. The character enters at slot 2, mid-reaction, product already in hand; the hard cut between slots 1 and 2 lands the first spoken line. When H8 is active, scope the identity line to slots 2 and 3 ("the same person appears in slots 2 and 3 with identical face, hair, body, and identity") — wherever the all-slots identity phrasing appears, including the template's closing sentence — slot 1 is the one slot without the character and carries no selfie/static camera POV label; describe its texture visually instead. Angle Lock, realistic scale, exactly-one-hero-product, and the label/wordmark rules apply to slot 1 unchanged.

### Hard validation rules

- All eight slots MUST show eight DIFFERENT actions. Same pose with micro-variation, or the same hand holding the same object in two adjacent slots = REWRITE.
- **No two ADJACENT slots may share BOTH their POV and their distance band** — that shared pair is the morph this board exists to prevent. REWRITE the second slot until it differs on at least one axis (ideally both).
- Every distance band (TIGHT / MID / WIDE) appears at least twice across the 8 slots; no run of three consecutive slots stays in one band.
- Every POV change AND every distance change between slots aligns with a hard cut (per Step 5).

---

## Step 5 — Camera POV and Hand Allocation Per Slot

Each slot picks the POV that fits its action AND obeys the Hand Allocation Rule. **POV may change between slots — every POV change between slots aligns with a hard cut, never a smooth transition.**

### Camera POVs

| Action in slot | POV |
|---|---|
| Product presentation / talking about product / hands-free demo / opening or twisting / two-handed application | **Static-style** steady front-facing iPhone shot, character at arm's-length distance, eye-level, like a TikTok review — both hands free for product handling |
| Walking / outdoor / movement / casual hook / talking head with at most one object in hand | **Arm's-length selfie** shot, slight handheld feel, character's phone-holding arm partially visible at the frame edge if natural |
| Tight product reveal / product centered in palm | **Static close-up** at chest/desk level, framing tight on hands and product |
| Reaction / CTA / final beat | **Static or selfie** front-facing, character at eye-level, expressive face |

### Hand Allocation Rule (hard constraint)

The character has exactly two hands. Count hands AND hand-roles before finalizing every slot — the total of simultaneous hand-roles written into a slot never exceeds two, and every described hand belongs to the character.

**One named role per hand (every slot's action line):**
- A one-hand action names the acting hand AND parks the other explicitly (holding the phone in selfie, resting at her side, flat on the counter).
- A two-hand action is legal when the action naturally needs both (lifting the box, steadying the base while twisting the lid) — name both roles in ONE sentence ("left hand steadies the jar on the counter, right hand twists the lid") and give the hands no other simultaneous job.
- An action load that implies an extra holder ("holds the box while unwrapping the ribbon while waving" = three jobs) = REWRITE — a phantom third hand renders. A product floating unheld next to busy hands spawns the same phantom: keep one hand actively on the product with the other parked; when the other hand already carries a role, rest the product on a surface instead of adding a stabilizer hand; and sequence multi-step actions across the hard cuts between slots (show — cut — open) instead of piling jobs into one beat.

**Selfie POV:**
- ONE hand of the character is holding the phone — fully off-frame or its edge (forearm / palm side) partially visible at the frame edge.
- Only the OTHER hand is available for action — holding ONE object total (product OR bag OR something else, not both).
- If the slot requires holding two objects simultaneously, applying with one hand while holding product with another, or any two-handed mechanic → **Selfie is FORBIDDEN. Switch to Static.**

**Static POV:**
- Both character hands are free.
- Phone is not in frame; no hand holds it.
- Suitable for any two-handed action (opening, twisting, applying, holding product + cap simultaneously).

**Decision tree per slot:**
- Walking / outdoor + nothing in hand → Selfie
- Walking / outdoor + ONE bag → Selfie (bag in free hand)
- Walking / outdoor + bag + visible product → INVALID. Hide product inside bag (Selfie still works), or remove bag (Selfie still works), or switch to Static if both must be visible.
- Indoor + holding product alone, talking → Selfie or Static
- Indoor + opening cap / twisting dropper / pumping → Static
- Indoor + applying product to skin / lips / hair while holding bottle → Static
- Close-up of product in palm → Static close-up
- Reaction / smile / CTA with product visible in one hand → Selfie or Static

**Hard validation rule (must appear in the rendering rules of every prompt):**
`Count hands per slot. The character has exactly two hands. In selfie POV, one hand is occupied by the phone (off-frame or visible at edge), so only one hand is available for action — never depict the character holding two objects in selfie POV. If the slot's action requires two free hands, the slot must be static camera POV with the phone not in frame. Every slot names each hand's single role — the acting hand's job, the other hand parked explicitly — and the total simultaneous hand-roles never exceed two. POV may change between slots; every POV change aligns with a hard cut. No third arm, no extra hands, no duplicated limbs, no impossible grip.`

---

## Step 6 — Safe Interaction Verbs

| Material | Safe verbs | Forbidden |
|---|---|---|
| Glass / hard plastic / metal | rests on palm, holds lightly, cradles, presents, taps gently, points at | squeeze, crush, clench, twist body, deform |
| Soft tube | holds, gently squeezes, presses lightly | crushes, wrings, twists violently |
| Fabric / clothing | wears, adjusts, smooths, drapes, holds up | stretches unnaturally, yanks, wrings |
| Cardboard box | holds from sides, presents front face, opens flap if visible | crushes, bends, folds unnaturally, tears |
| Food | bites, pours, scoops, stirs, serves | throws, juggles, morphs, multiplies |
| Tech / electronics | holds, presents, points to screen/detail | opens compartments, plugs cables |
| Any product | holds, shows, lifts, presents, points at | throws, catches, juggles, spins, drops |

When unsure → hold-and-present only.

---

## Step 7 — Product Angle Lock and Realistic Scale

When `product_media_id` is provided, Angle Lock is mandatory.

### Angle Lock — one product image
`@Image1 is the product reference. ANGLE LOCK: the product shows only the visible front-facing side from @Image1. The product keeps this same visible angle in every slot it appears in. Do not rotate, spin, flip, or reveal unseen sides.`

### Angle Lock — multiple product images
`@Image1 and additional product references show valid angles. The product may appear only from these provided angles. Switch angles only by hard cuts between slots, never by continuous rotation. Do not invent intermediate or unseen sides.`

Angle rules:
- Camera movement ≠ product rotation.
- The product can move closer/farther but the visible side stays consistent.
- Never invent back labels, side panels, or internal components.
- Product label, color, shape, and logo identical across all appearances.

### Realistic Scale (mandatory)

The product MUST appear at its real-world physical size relative to the character's hand, fingers, and body. Image models default to enlarging the product so the label is readable — this is forbidden. **If the product is too small to read in frame, move the camera closer to the product. Do not scale the product up.**

Reference real-world sizes:

| Category | Real-world size |
|---|---|
| Perfume / EDP bottle (50-100 ml) | ~10-12 cm tall, fits comfortably in one palm |
| Cologne (large, 100-200 ml) | ~13-16 cm tall |
| Serum dropper bottle (30 ml) | ~8-10 cm tall, fits in fingers |
| Cream jar (30-50 ml) | ~6-8 cm wide, sits on palm |
| Soft tube (cream, lotion) | 12-18 cm long |
| Lipstick / twist-up balm | 7-9 cm tall |
| Mascara / lip gloss tube | 10-12 cm tall |
| Pump bottle (250 ml lotion / shampoo) | 18-22 cm tall, two-hand grip natural |
| Compact / powder | 7-10 cm wide, fits in palm |
| Spray bottle (mist, body spray) | 15-20 cm tall |
| Energy drink / soda can | ~12 cm tall standard, ~16 cm slim |
| Snack bag (single serve) | 15-20 cm tall, hand-sized |
| Tech (phone-sized device) | estimate against a smartphone (~15 cm) for the cm figure — the PROMPT still writes size hand-relative + cm, never against another object |

Size the product hand-relative plus exact centimeters — "palm-sized, fits entirely in one hand, ~15 cm tall" — never against another object ("about the size of a water bottle" renders as an oversized thermos). Hand-relative sizing survives; object comparisons drift.

Add explicitly to the prompt: `Product is rendered at realistic real-world scale relative to the character's hand and body. The product is approximately [X cm] tall and fits naturally in the character's hand without enlargement. If the label is small in frame, the camera moves closer rather than scaling the product up.`

---

## Step 8 — Product Placement & Visibility Logic

### Visibility per slot

The product is visible in a slot ONLY if the action of that slot requires it:
- Show / present / hold-and-present beat → product fully visible
- Open / unscrew / pump / apply / interact beat → product fully visible
- Reaction WITH product in hand → product fully visible
- Pure transit / setup / problem moment / talking-head hook → product is **hidden or absent**
- Final reaction / CTA without product in hand → product may be absent

### Hidden product configurations

When the slot shows transit / setup, choose ONE of:

1. **Fully inside a closed bag / box / pocket** — product not visible at all.
2. **Held cleanly in one hand, vertical, full grip** — character holds the product upright, gripped around the lower half, the whole product visible. NOT inside a bag.
3. **Absent from frame entirely** — product simply isn't in this slot.

### Exactly one hero product

Exactly ONE unit of the product exists in every slot where it appears — without this the model clones the hero: one in the hand AND one on the counter. Write "exactly one [product] in frame" into the slot description. If the staging includes look-alike shapes (other bottles or jars of similar silhouette), remove them from the scene or state "the only [shape/color] object in frame is the product."

### Forbidden placements (must appear in the rendering rules)

`Forbidden product placements: product half-sticking out of a shopping bag, product balancing on top of an open bag, product wedged between objects, product floating, product peeking from a pocket with cap exposed, product partially visible from inside a box. The product is either fully hidden inside a closed container, fully visible held cleanly in one hand, or absent from the frame. Never partial, never sticking out, never awkwardly positioned.`

---

## Step 9 — Product Interaction Sequences

Every product interaction must use exact visible hand mechanics. Never write vague "opens it / uses it / applies it."

| Product | Required physical sequence |
|---|---|
| Perfume / cologne | Hold base → lift cap straight up → cap disappears → press nozzle → mist on wrist or neck |
| Serum dropper | Hold bottle → unscrew dropper counterclockwise → lift pipette → squeeze bulb → drops on fingertips |
| Cream jar | Hold base → twist lid off counterclockwise → lid disappears → fingertip scoop |
| Soft tube | Hold middle → flip or unscrew cap → squeeze → product on fingertip |
| Pump bottle | Hold base → press pump head with two fingers → product on palm |
| Lipstick / twist-up balm | Hold base → pull cap straight off → cap disappears → twist base → swipe lips |
| Mascara / lip gloss wand | Hold tube → unscrew wand → pull out slowly → apply |
| Compact / powder | Hold compact → flip hinged lid (lid stays attached) → tap brush/sponge → apply |
| Spray bottle / mist | Hold bottle → remove cap if visible → press trigger/nozzle → mist |
| Food / drink | Show package → open if plausible → pour/scoop/bite/drink naturally |
| Clothing / shoes | Hold up → wear → adjust fit → smooth fabric → point to detail |
| Tech / electronics | Hold-and-present, point to screen or exterior detail. No complex button/cable mechanics. |

General rules:
- Maximum one product state change per slot.
- Removed caps/lids disappear after removal — never described again.
- One state per prop per slot: a cap is ON or OFF, never both (never a removed cap on the counter while the product still wears one). A state change between slots is SHOWN as the action of one slot — a state that changes off-camera forks the object into both states.
- Mechanism anatomy is locked: name the mechanism's parts, positions, and flow once from the product description ("plunger on TOP, pressed straight DOWN with the palm; product exits the BOTTOM spout") and every slot follows that exact anatomy — never invent geometry (output exiting a sealed base).
- Two hands max — each hand holds ONE named role per slot (Step 5 counts them). Never two separate hand actions at the same time; a multi-step mechanic sequences across the hard cuts between slots, never piles into one beat.
- Two-handed interactions force static camera POV.

### Cross-board product state continuity (K > 1 only)

Within a single board (8 slots), product state may stay constant — e.g. all 8 slots show the product with cap on if the story is hold/present-only. Cap-state inside one board is NOT enforced.

But across boards: when `previous_board_media_id` is provided (K > 1) and that previous board's final slot showed the product in an open state (cap removed, applicator extended, lid flipped), board K's slots MUST continue that open state — never re-close a previously-opened product across boards. If the closed cap appears in board K after being removed in board K-1, the board reads as a fresh recording, breaking the continuous-take feel of the >15s video.

This rule applies only to the cap / lid / applicator state. Outfit, location, lighting continuity is handled separately in Step 3 and Step 13.

---

## Step 10 — Human Performance Direction

Each slot includes specific micro-behaviors so the character feels alive. **Default emotional register is NATURAL — a lively, engaged, genuinely reacting creator: conversational energy, real human reactions, ONE honest peak at the reveal/result at human scale (a real jaw-drop, a breaking grin, a delighted laugh) — never staged screaming. Keep the beats expressive: the downstream video model under-renders energy, and a flat-neutral prompt renders a wooden presenter.** Pick predominantly from the NATURAL menu below. Switch to the HYPED register (the hyped menu + Pattern B) ONLY when `user_request` explicitly signals a hyped register: `hyped`, `hype`, `energetic`, `explosive`, `high-energy`, `viral energy`, `insane energy`. Switch to calm-register beats ONLY when `user_request` explicitly signals one of: `goth`, `vampire`, `cinematic noir`, `cold`, `passive`, `deadpan`, `clinical`, `refined`, `luxury-passive`, `minimal`, `somber`, `serious`, `dark`, `shadowy` tone or aesthetic. The `user_request` word always wins.

**NATURAL menu (default):** slight lean toward camera, glance down then back to lens, raised brows with a genuine grin breaking, eyebrow raise, head tilt, hand gesture, shoulder shift, hair tuck, quick grin, small bright laugh, half-laugh through the nose, surprised blink, lean-in toward the lens, satisfied exhale, satisfied nod, small nod, casual laugh, pointing at product, holding product closer to camera, tapping label, posture shift, pause before reveal, mock-confused squint, chin tuck with raised brow, eye-roll then quick grin back to lens, mid-bite face (food / drink), thumb-wipe at corner of mouth.

**HYPED menu (ONLY on the explicit hype signals above):** wide-eyed mock-gasp, mouth open mid-"wait", mouth open mid-yell hook, mid-recoil head jerk back, cheeks puffed mid-react, lips pursed in mock-OK chef's-kiss, eyebrows shooting straight up, sharp gasp with a hand flying to the chest, jaw drops and STAYS dropped while eyes lock the lens, double-take — looks away, freezes, whips back to the product, leans back out of frame wide-eyed then snaps back in, covers mouth with one hand mid-squeal with eyes crescented, audible one-hand slap on the counter, fans their face with one hand blinking fast, presses the product against their cheek with eyes closed, shakes the product at the lens mid-laugh.

**Calm-register beats (ONLY on the calm signals above):** dramatic deadpan stare into lens, settled gaze, slow controlled gesture, quiet half-smile, satisfied exhale, small nod, deliberate stillness.

Avoid as a sole descriptor:
- "smiles at the camera"
- "looks at the camera"
- "holds product and talks"
- identical expression across all slots

**Peak = body event.** The slot carrying the board's reveal / peak beat pairs its facial expression with ONE full-body reaction from the menu — a peak the viewer reads in the body, never in the face alone. The Hand Allocation Rule still applies (selfie POV: the one free hand), and the event's hands draw from the slot's two-hand budget — when both hands are already busy on the product, pick a no-hand event (lean-back, jaw-drop, double-take). Across a multi-board video (N > 1), the single biggest body-event peak belongs to the board where the product enters the story, paired with the reveal beat itself. In the NATURAL register the body event stays genuine — a real reaction caught mid-motion at human scale, never theatrical.

Expression progression — **by default use Pattern N (natural engaged) for every board.** Switch to Pattern B ONLY when `user_request` explicitly signals a hyped register (`hyped`, `hype`, `energetic`, `explosive`, `high-energy`, `viral energy`, `insane energy`). Switch to Pattern A, C, or D ONLY when `user_request` explicitly signals a calm-tone aesthetic (`goth`, `vampire`, `cinematic noir`, `cold`, `passive`, `deadpan`, `clinical`, `refined`, `luxury-passive`, `minimal`, `somber`, `serious`, `dark`, `shadowy`). Never repeat the same expression beat across slots within one board.

**Pattern N — natural engaged (DEFAULT — no signals needed)**
- Opening slot: engaged opener — genuine curiosity or a grin already breaking, brows raised, lean-in energy; lively and real, never flat, never staged.
- Middle (build) slots: animated focus on each action beat — engaged eyes on the task, a DIFFERENT small live reactive beat per slot (surprised blink, half-laugh through the nose, satisfied nod) while the hands work, never repeating one; delivery stays lively so the render never reads wooden.
- Peak slot: ONE genuine human-scale peak lands on the slot carrying the board's reveal / result beat — a real jaw-drop, a breaking grin, a delighted laugh. Genuine, never theatrical; no staged screaming.
- Closing slot(s): settle into warm, confident recommendation.
- Performed by a natural, engaged creator — genuine reactions, lively but human, never staged screaming energy.

**Pattern B — sustained INSANELY hyped (HYPED — ONLY on the explicit hype signals above: hyped / hype / energetic / explosive / high-energy / viral energy / insane energy)**
- Opening slot: WILD open-mouth scream-gasp opener — jaw dropped wide, eyes blown wide, neck tendons visible, sharp inhale, full-body explosive energy. Mouth fires open ON the product/action, not before it (no setup pause).
- Middle (build) slots: energy AT PEAK throughout the action beats — mouth still open scream-laughing, brows skyward, knuckles white on the product, NEVER de-escalate, NEVER describe restrained reactions (no `half-smile`, no `subtle grin`, no `mild surprise`).
- Closing slot: massive open grin / burst of laughter / head thrown back / full-body explosive joy — peak-victory recommendation, never settle to `warm` or `satisfied`.

**Pattern A — classic UGC arc (override: warm-but-restrained briefs)**
- Opening slot: opening energy (curious, casual, hook-grade)
- Middle (build) slots: animated, focused on each action beat (a different beat per slot)
- Closing slot(s): landing energy (warm, satisfied, confident, or mid-thought transition)

**Pattern C — deadpan-then-crack (override: dry-humor / detached / cool briefs)**
- Opening slot: dramatic deadpan stare into lens (no smile, brows neutral)
- Middle (build) slots: hold the deadpan, then break-character grin or laugh as the key action lands
- Closing slot(s): relaxed wrap with a quick grin or satisfied exhale

**Pattern D — sustained passive / restrained (override: goth / vampire / clinical / luxury-passive / cinematic noir briefs)**
- Opening slot: low-key opener — neutral face, half-lidded gaze, no expression spike
- Middle (build) slots: minimal reaction during the action beats — slow controlled gestures, no facial spike
- Closing slot(s): settled close — quiet half-smile or neutral wrap; never high-energy

### Physical quirk (only when `user_request` signals one)

If `user_request` names a physical quirk or signature tic (ring-spinning, fingernail taps, hair-tuck tic), give it exactly ONE dedicated slot beat and stage it LARGE: the acting body part fills its zone of the frame ("their hand filling the lower third of frame, one sharp tap on the collarbone"), mechanics 30% bigger than natural — quirks staged small do not render. Hard rules: one slot only, never repeated across slots (Step 4.5 diversity rules stand); never stacked into the same slot as the peak-reaction beat; the quirk reads as charm, never as mockery or impairment. No quirk signal in `user_request` = no quirk.

When the board's `arc_role` is `CLOSER` or `APPLY+CLOSER`, the closing slot must show clear satisfaction / recommendation / the board's peak beat delivered per the active register (genuine and human-scale under the NATURAL default; peak energy only under the hyped register). When it's `HOOK` or `HOOK+SETUP`, the closing slot sets up the next board (slight forward momentum, anticipation).

---

## Step 11 — UGC Visual Style Inside Each Slot

Photorealistic iPhone stills:
- Natural light (default: inherited from character reference image)
- Slight phone-camera grain
- Realistic skin texture
- Real home or everyday environment
- Casual clothing (from character reference, or per Step 3)
- Imperfect framing, mild handheld feel where appropriate
- Authentic creator energy
- iPhone front-camera optics: 23mm-equivalent wide look, DEEP focus — background stays sharp, slight wide distortion at frame edges (mild phone-camera wideness only — never fisheye, never ultra-wide warp)
- Digital smartphone sharpness, mild HDR flattening, slight highlight clipping at windows, faint digital noise in shadows (digital noise, never film grain)
- Pore-level skin realism — vellus hair, asymmetric moles; no smoothing, no glow, no beauty filter
- One motivated light source (window / lamp / daylight), consistent white balance
- No shallow depth of field, no bokeh, no lens flares, no cinematic color grade, no studio lighting, no glossy retouching, no cinematic lens — unless `user_request` explicitly asks (UGC that looks like cinema reads as an ad)
- No mirror or reflection shots — mirrors spawn extra hands and duplicated bodies. GRWM / vanity scenes stage the mirror out of frame or angled away; if one must appear, keep the reflection a partial shoulder-up sliver that matches the subject exactly — no extra limbs, no duplicated person

---

## Step 12 — Sheet Layout

### Layout
- Exactly 8 slots in ONE horizontal row, left to right. Do NOT make two rows or a grid — never ten, never twelve panels.
- All slots have identical dimensions: exact 9:16 vertical rectangles.
- Slots are separated by thin white gutters.
- Sheet background is clean white between slots.
- **Total sheet aspect: 21:9.**
- No header, no footer, no surrounding chrome.
- **All eight slots are always active. There are no placeholder slots.**

### Active slots
- Photorealistic UGC iPhone still inside the slot.
- No on-image text, no captions, no badges, no numbers, no pop-text, no subtitles, no watermarks, no labels.
- The product label (if visible on the physical product) keeps its real text accurately — that is part of the product itself, not added typography.

---

## Step 13 — Rendering Rules

The final image prompt must demand:
- Exactly 8 slots, identical size, exact 9:16 each, single horizontal row, total sheet aspect 21:9.
- Thin white gutters between slots.
- All eight slots active — no placeholders.
- Photorealistic UGC iPhone stills, no text overlays of any kind.
- Consistent character identity across all eight slots.
- **Anti-morph: no two adjacent slots share both their POV and their distance band.**
- Consistent product design across all slots in which the product appears (Angle Lock when product image is provided).
- **Product at realistic real-world scale**, not enlarged. Camera moves closer if the label needs to be readable.
- **Product placement is clean** — fully visible held in hand, fully hidden inside container, or absent. Never half-sticking out, never balancing awkwardly, never partial.
- **Hand count enforced** — character has exactly two hands. Selfie POV occupies one hand with the phone, leaving one for action. Two-handed actions force static camera POV. Each hand carries ONE named role per slot, the idle hand parked explicitly; total simultaneous hand-roles never exceed two (Step 5).
- **POV may change between slots** — every POV change aligns with a hard cut, never a smooth transition.
- Same setting and lighting across slots within the same location; switch only when the story crosses to a new location.
- When `previous_board_media_id` is provided (K > 1), identity / location / lighting / product / wardrobe MUST match the reference unless the story explicitly demands a change.
- **Exactly one hero product** in every slot where it appears — never duplicated, no look-alike clone elsewhere in the scene.
- **One state per prop per slot** — cap / lid / applicator in exactly one state; state changes are shown actions.
- Absent product features stay absent — no cord, button, port, or display the product does not have.
- No legible text or numbers on any prop beyond the referenced product's own label and the garment's own large fictional print. No real brands.
- No shallow depth of field, no bokeh, no lens flare, no beauty filter, no cinematic color grade — drop these negatives when `user_request` explicitly asks for a cinematic look.
- No fisheye lens, no ultra-wide distortion (the slight 23mm edge distortion of Step 11 stays legal). No mirror/reflection shots (unavoidable mirror = partial reflection only, matching the subject exactly). No deformed hands. No third arm, no extra hands, no duplicated limbs. No additional brands or IP. No watermarks. No subtitles. No captions. No headers. No metadata. No pop text. No badges. No numbers.

---

## Required Prompt Template

Use this structure inside the `prompt` field of your output:

```
[@Image1 product reference + ANGLE LOCK if product is present.] [@Image2 character reference, or @Image1 if no product.] [@Image3 previous-board reference if K > 1, with explicit instruction to preserve identity / location / lighting / wardrobe / product from this reference.] The same person appears in every slot with identical face, hair, body, and identity — no changes to features, hair, or proportions between slots.

A single horizontal storyboard sheet composed of exactly EIGHT equal-size 9:16 vertical slots arranged in ONE HORIZONTAL ROW, separated by thin white gutters on a clean white background, total sheet aspect 21:9. Do NOT make two rows and do NOT make a grid — exactly eight panels in one row, never ten, never twelve. All eight slots are active photorealistic UGC iPhone-style stills that tell one continuous [clip_duration]-second video clip as eight sequential beats — slot 1 is beat 1 (opening), slot 8 is beat 8 (closing). There are no placeholder slots. Each adjacent pair of slots is a DIFFERENT camera setup — a different POV (selfie vs static camera), a different distance band (tight/macro vs medium vs wide), and a different action — so every beat boundary reads as a crisp hard cut, never a morph.

Setting and lighting in all eight slots default to the same environment, time of day, and light direction visible in the character reference image (and previous-board reference if provided), unless the story requires a different location. Outfit stays identical across slots within the same location.

Product (if present) appears at realistic real-world scale, approximately [X cm] in real size, fitting naturally in the character's hand without enlargement. Exactly one [product] appears in frame in every slot where it is visible — never a duplicate, never a look-alike clone. Product placement in every slot is clean: either fully visible held in one hand, fully hidden inside a closed bag/box/pocket, or absent from the frame — never half-sticking out, never balancing awkwardly, never partial.

The character has exactly two hands. In selfie POV slots, one hand is occupied by the phone (off-frame or visible at edge), so only one hand is available for action — never two objects in selfie POV. Every slot names what EACH hand is doing — one role per hand, the idle hand parked explicitly (holding the phone, resting at her side, flat on the counter) — never more than two simultaneous hand-roles. Slots requiring two free hands are static camera POV with the phone not in frame. POV may change between slots — every POV change aligns with a hard cut between slots, never a smooth transition.

Slot 1 — exact 9:16 vertical photorealistic UGC iPhone still, [selfie/static camera POV], [distance band]: [camera framing, character action, product placement (visible in hand / hidden inside X / absent), explicit hand allocation naming BOTH hands' roles (e.g. "left hand holds phone off-frame, right hand holds product"; an idle hand is parked — resting at her side, flat on the counter), micro-behavior, light/setting note].

Slot 2 — exact 9:16 vertical still, [POV — different framing from slot 1], [distance band — different from slot 1]: [...].

Slot 3 — exact 9:16 vertical still, [POV/band different from slot 2]: [...].

Slot 4 — exact 9:16 vertical still, [POV/band different from slot 3]: [...].

Slot 5 — exact 9:16 vertical still, [POV/band different from slot 4]: [...].

Slot 6 — exact 9:16 vertical still, [POV/band different from slot 5]: [...].

Slot 7 — exact 9:16 vertical still, [POV/band different from slot 6]: [...].

Slot 8 — exact 9:16 vertical still, [POV/band different from slot 7]: [...].

Rendering rules: every slot is an exact 9:16 vertical rectangle, all eight slots identical in size, arranged in ONE HORIZONTAL ROW (do NOT make two rows or a grid — exactly eight panels in one row, never ten, never twelve) with thin white gutters on a clean white background, total sheet aspect 21:9. All eight slots are active — there are no placeholder slots. No two adjacent slots share both their POV and their distance band. Active slots are photorealistic iPhone-style UGC stills with natural light and casual real-life feel. The character's identity is identical across all eight panels. The character has exactly two hands; selfie POV occupies one hand with the phone, leaving one hand for action; two-handed actions are static camera POV; every slot names each hand's single role, the idle hand parked explicitly, and the total simultaneous hand-roles never exceed two. POV may change between slots; every POV change aligns with a hard cut, never a smooth transition. The product (if present) appears at realistic real-world scale relative to the character's hand and body, never enlarged for visibility, and keeps the same visible angle from the reference image across all appearances. Product placement is always clean: fully held in hand, fully hidden inside a closed container, or absent — never partial, never sticking out, never balancing awkwardly. Exactly one product in frame wherever it appears — never duplicated. Each prop holds exactly one state per slot — a cap is on or off, never both. No on-image text of any kind: no header, no metadata, no captions, no pop-text, no badges, no numbers, no subtitles, no watermarks. No legible text or numbers on any prop beyond the product's own label and the garment's own large fictional print. No shallow depth of field, no bokeh, no lens flare, no beauty filter, no cinematic color grade [omit these negatives when user_request explicitly asks for a cinematic look]. No fisheye lens, no ultra-wide distortion. No mirror or reflection shots (unavoidable mirror = partial reflection only, matching the subject exactly). No deformed hands. No third arm, no extra hands, no duplicated limbs. No additional brands or logos beyond the user's product. No invented product claims.
```

---

## Defaults

| Parameter | Default |
|---|---|
| Slots | Always 8, all active |
| Sheet aspect | 21:9 (8 × 9:16 slots side by side) |
| Slot aspect | Exact 9:16, identical for all 8 |
| Character | From reference image; no re-description |
| Setting | Inherited from character reference (and previous-board if K>1) |
| Lighting | Inherited; soft neutral daylight as fallback |
| Outfit | Identical across slots within one location; matches previous board if K>1 |
| Camera POV | Selected per slot by action; may change between slots aligned with hard cut |
| Hand allocation | Selfie = phone-hand + one free; Static = both free; ONE named role per hand, idle hand parked; max two simultaneous hand-roles |
| Product scale | Real-world physical size; never enlarged |
| Product placement | Visible in hand / fully hidden / absent — never partial |
| Product interaction | Hold-and-present unless mechanics are clear |
| Story arc within slots | Determined by `arc_role` |

---

## Hard Restrictions

- Never describe the character's age, ethnicity, attractiveness, makeup, or facial features beyond what the reference image supplies.
- Never generate more or fewer than 8 slots.
- Never make slots different sizes from each other.
- Never deviate from exact 9:16 per slot.
- Never include placeholder slots — all eight are always active.
- Never let two adjacent slots share BOTH their POV and their distance band — that shared pair is the morph.
- Never put any text, header, metadata, caption, badge, number, pop-text, subtitle, or watermark on the sheet.
- Never invent unseen product sides when product reference is provided.
- Never enlarge the product beyond its real-world physical size — move the camera closer instead.
- Never depict the product half-sticking out, balancing awkwardly, peeking partially, wedged, or floating.
- Never depict more than two hands. Selfie POV = one phone-hand + one free hand only. Two-object holds in selfie POV are forbidden — switch to static camera. Never write an action load that implies an extra holder — more than two simultaneous hand-roles in one slot = REWRITE.
- Never use mirror or reflection shots beyond a partial reflection matching the subject exactly.
- Never duplicate the hero product — exactly one unit in frame wherever it appears.
- Never stage legible text or numbers on any prop beyond the referenced product's own label — no readable receipts, screens, or price tags.
- Never render an absent product feature back in — a cordless product never grows a cord, button, port, or display.
- Never use unsafe or physically impossible product interactions.
- Never invent legal claims, medical claims, certifications, or unsupported superiority claims about the product.
- Never depict or imply a customer testimonial, purchase history, rating, social proof, before/after result, or lived product experience unless the authorized user supplied the exact truthful script under the parent skill's truth gate.
- Never include unrelated real-world brands or IP.
- Never ignore `user_request`-specified setting, action, or duration.
- Never let outfit change inside a single location.
- Never default the first slot to "show product" — slot 1 is the opening moment; the product reveal lands wherever the story logically delivers it.
- Never break the previous-board match when K > 1 unless the story explicitly demands a location change.
- Never wrap the prompt in commentary, fences, or analysis — the string alone is the output.

---

## Final reminder

One prompt string, built per the Required Prompt Template above — no JSON, no fences, no analysis.
Exactly EIGHT slots in ONE horizontal row, `@ImageN` declarations first, no baked slot labels or
on-image text. If an input is missing, fall back to the defaults in this file and still produce a
prompt.

SHA-256: 265a08890d4eac8fec72a08e5e3b8b6fc8ea4b85cdef0c88e779b97f1b7d745f