← Files HiggsfieldARCHIVED FILE
skills/ugc-review-video/references/ugc-clip.md
60.5 KB · Oct 3, 2026 · 06:02 UTC
# UGC clip prompt (Seedance) — full rule set
This file is the complete rule set for the Seedance clip prompt. There is no enhancer service
here: you read these rules, write ONE prompt string yourself, and submit it.
```json
generate_video_batch({"requests":[{"index":"<K>","params":{
"model":"seedance_2_5",
"prompt":"<the string you wrote>",
"count":1,
"duration":"<this clip's seconds>",
"aspect_ratio":"9:16",
"resolution":"1080p",
"mode":"omni_reference",
"generate_audio":true,
"medias":[
{ "value": "<board_media_id>", "role": "image" },
{ "value": "<character_media_id>", "role": "image" },
{ "value": "<product_media_id — omit this entry when null>", "role": "image" }
]
}}]})
```
Seedance 2.5 renders native audio with `mode:"omni_reference"` and `generate_audio:true`; never make a separate
`generate_audio` call. Write every clip prompt before submission, submit groups of at most six
through `generate_video_batch`, then wait through `jobs_wait`. The board image is fed as a
reference AND described by your prompt; the prompt is the primary signal, so keep it dense.
You are a Seedance 2.5 video prompt writer. You work from structured inputs describing ONE board of a UGC video — the board image (21:9 with eight vertical 9:16 narrative slots), the character reference, an optional product reference, plus position metadata (K, N), clip duration, arc role, the spoken monologue for this clip, and the input tier.
You output ONE Seedance prompt string that produces a single 9:16 vertical video clip of `clip_duration` seconds. The clip contains EIGHT INTERNAL HARD CUTS corresponding to the eight board slots — Cut 1 = slot 1's beat, Cut 2 = slot 2's beat, and so on through Cut 8 = slot 8's beat.
The board image is your **narrative map** — read it to understand the story, not to copy frames.
**Crisp-cut reality (read first):** Seedance renders every cut you write, but a beat boundary becomes a CRISP HARD CUT only when the two adjacent beats are visually FAR apart; two low-delta neighbors MORPH into a continuous blend instead of snapping. The board already stages every adjacent slot as a different POV + distance band + action — carry that all the way into the cuts: never smooth a boundary, never let two consecutive cuts share both POV and distance band, keep each cut short and punchy.
Extract from the board: **what happens** in each slot (the story beat), **chronology** (slot 1 → Cut 1, slot 2 → Cut 2, … slot 8 → Cut 8, in order), **overall aesthetic** (light, environment, mood), **character continuity**, and product continuity only when a product exists.
Your written prompt is the **primary signal** to Seedance. The board is also fed to Seedance as a reference image — if your prompt is sparse, Seedance will copy board panels frame-for-frame and the result will look stiff. Your prompt must be dense enough to dominate: packed with motion, breath, micro-expressions, and kinetic detail that no static panel can encode.
Write the prompt as a plain string; there is no JSON wrapper and no enhancer service in
this pipeline.
---
## Inputs to settle before writing
Settle these yourself from the brief, the product analysis when one exists, and the run state —
nothing is handed to you:
```
{
"K": <integer — this board's index, 1-based>,
"N": <integer — total boards in the video>,
"clip_duration": <integer 4-15 — seconds of this clip>,
"arc_role": "HOOK" | "HOOK+SETUP" | "MAIN" | "REVEAL" | "APPLY" | "APPLY+CLOSER" | "CLOSER" | "FULL_ARC",
"monologue_segment": "<verbatim spoken text for this clip, to distribute across the 8 cuts>",
"input_tier": "auto" | "guided" | "director",
"user_request": "<original brief verbatim — read it for tone signals (goth / luxury / clinical / hyped / etc.)>",
"board_media_id": "<reference media id — always provided>",
"character_media_id": "<reference media id — always provided>",
"product_media_id": "<reference media id, or null when no product>"
}
```
## Productless mode
When `product_media_id` is `null`, this is a complete supported mode, not a missing input.
Omit the product media entry and never invent a product, brand, package, sales prop, product
claim, product label, or product interaction. Ignore every product-only rule and menu in this
file, including Product Angle Lock, application mechanics, product pressure, residue quirks,
product scale, and product-motivated peaks. Each cut instead follows the topic, routine, or
story action staged in its board slot. Keep the two-hand allocation law for those actions and
keep unrelated props limited to what is already in the board.
## Output
The prompt string itself — plain text, no JSON wrapper, no fences, no commentary. Pass it as each
`requests[].params.prompt` of `generate_video_batch` (`seedance_2_5`, `9:16`, `1080p`) with this
clip's duration and the board / character references in `medias`; attach the product reference
only when `product_media_id` is non-null.
## Prompt Structure (mandatory)
Each Seedance prompt follows this structure, in order:
```
Style & Mood: UGC iPhone aesthetic, [light description matching the board], [SELFIE: front-facing camera, intimate handheld feel | STATIC: locked-off static camera, completely static, frozen frame | MIXED: starts SELFIE handheld, hard-cuts to STATIC locked-off, hard-cuts back to SELFIE handheld — POV alternates per cut], social media vertical format.
Narrative Summary: [1 sentence stating what happens in this clip — references the arc_role and the throughline of the 8 cuts. Close it with a register calibration phrase, gated THREE ways by `user_request`: NATURAL (DEFAULT — no signals needed) — close with `performed by a natural, engaged creator — genuine reactions, lively but human, never staged screaming energy` (or near-equivalent). HYPED (opt-in ONLY) — when `user_request` carries an explicit energy signal (`hyped` / `hype` / `energetic` / `explosive` / `high-energy` / `viral energy` / `insane energy`), close with `performed by an INSANELY hyped creator with explosive screaming energy throughout` (or near-equivalent). CALM — skip the calibration phrase entirely when `user_request` signals a calm-tone aesthetic (`goth` / `vampire` / `cinematic noir` / `cold` / `passive` / `deadpan` / `clinical` / `refined` / `luxury-passive` / `minimal` / `somber` / `serious` / `dark` / `shadowy` / `quiet` / `GRWM` / `routine` / `process-led`). The explicit `user_request` word always wins].
Dynamic Description:
Cut 1 (0-Xs) — [framing distance per board slot 1, e.g. MEDIUM CLOSE-UP, TIGHT CLOSE-UP, MACRO, WIDER, PRODUCT-EXTENDED] [POV per slot 1]: [action from slot 1, explicit hand allocation (role of EACH hand, ≤ 2 simultaneous hand roles), 2+ micro-behaviors, expression, and — only when present — product placement]. Hard cut to.
Cut 2 (...) — [framing distance / POV per slot 2, a DIFFERENT framing from cut 1]: [action from slot 2, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 3 (...) — [per slot 3, different framing from cut 2]: [action from slot 3, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 4 (...) — [per slot 4, different from cut 3]: [action from slot 4, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 5 (...) — [per slot 5, different from cut 4]: [action from slot 5, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 6 (...) — [per slot 6, different from cut 5]: [action from slot 6, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 7 (...) — [per slot 7, different from cut 6]: [action from slot 7, hand allocation, 2+ micro-behaviors, expression, and optional product placement]. Hard cut to.
Cut 8 (Ys-end) — [per slot 8, different from cut 7]: [action from slot 8, hand allocation, 2+ micro-behaviors, expression, and optional product placement].
Static Description: [1-2 sentences: setting, ambient details, props, light direction — match the board image's environment].
Audio: She speaks to camera, iPhone microphone audio with natural room tone[, IF K==1 AND non-verbal cues used: include bracketed sounds at the start of Cut 1, e.g. [*small bright laugh*] [*soft gasp*] [*delighted 'oh!'*] (HYPED register only: [*explosive gasp*] [*hyped yelp*])]: "[monologue_segment, distributed across the 8 cuts at natural phrase boundaries]"
[ONLY when user_request explicitly asks for music or names a genre/mood — Music: [genre/mood], low in the mix under the voice, swells at [the peak beat], returns under the closer.]
Facial features clear and undistorted, consistent clothing throughout. Shot on iPhone, natural lighting, social media aesthetic. [SELFIE-only: slight natural handheld micro-shake from her grip | STATIC-only: locked-off static camera, absolutely static, zero camera movement of any kind, no shake, no drift, no breathing wobble | MIXED: handheld micro-shake during selfie cuts, locked-off frozen frame during static-camera cuts]. No on-screen text, no subtitles, no captions, no watermarks, no legible text on any object except [when a product exists: the product's own label and] the garment's own large fictional print, no real brand logos anywhere, no cinematic grade, no film grain, no bokeh, no lens flare, no fisheye lens, no ultra-wide distortion, no slow motion, no beauty filter, no third arm, no extra hands, no duplicated limbs, no deformed hands.
```
For male creators (when the character reference clearly reads male): replace "She speaks" with "He speaks", change pronouns throughout. Always third-person framing.
---
## Step 1 — Read the Board
Before writing the prompt, read the board image and extract per-slot:
1. **POV** — selfie or static camera (look for the creator's phone-holding arm visible at the frame edge = SELFIE; framing locked symmetric with both hands free = STATIC)
2. **Framing distance** — MEDIUM CLOSE-UP, TIGHTER CLOSE-UP, TIGHT CLOSE-UP, MEDIUM, MEDIUM-WIDE, MACRO, WIDER, PRODUCT-EXTENDED
3. **Action** — what is she doing with her hands and, when present, the product
4. **Product placement** — only when a product exists: visible in hand / partially visible / fully hidden / absent; in productless mode confirm that no product is introduced
5. **Expression** — opener / building / peak / settle
Don't **contradict** the board (don't switch SELFIE↔STATIC between Cut and slot; when a product exists, don't swap which hand holds it or replace its interaction). Beyond that, **don't transcribe** the board into the Cut either — the LLM's job is not to put what it sees on the board into words. The Cut description's job is to render the **story beat** of that slot **in motion**: in-cut movement, weight shifts, breath, micro-expressions, kinetic hand detail, posture changes — all the things the static panel cannot show.
Rule of thumb: if a sentence in your Cut could be a caption for the board panel, you're transcribing — rewrite it as motion / change / kinetic detail.
---
## Step 2 — POV Cadence and Style & Mood
Based on the board's per-slot POVs, set the Style & Mood line:
| Per-slot POVs | Style & Mood camera language |
|---|---|
| All eight slots SELFIE | `front-facing camera, intimate handheld feel` |
| All eight slots STATIC | `locked-off static camera, completely static, frozen frame` |
| POV varies between slots (e.g., SELFIE → STATIC → STATIC → STATIC-CLOSE → STATIC → STATIC-CLOSE → STATIC → STATIC) | `MIXED: starts [POV1] [language], then hard-cuts through the remaining beats — POV alternates per cut across the eight beats` |
The classic FULL_ARC cadence opens SELFIE and moves to STATIC for the body of the arc (e.g., `SELFIE → STATIC → STATIC → STATIC-CLOSE → STATIC → STATIC-CLOSE → STATIC → STATIC`). Use the MIXED phrasing for it.
---
## Step 2b — Baked camera moves (deliberate, opt-in)
Seedance renders the camera move you WRITE into the clip. OFF by default — add it only for a livelier edited-vlog energy or the "shot on a real phone" opener. A baked move is a single DELIBERATE, controlled dolly — never the banned uncontrolled `shake` / `drift` / `wobble` / `sway`, which stay forbidden everywhere.
- **Slow push-in / gentle ease-back.** Write it per cut: `the camera slowly PUSHES IN across the cut (a gentle dolly-in)` on a reveal / reaction beat, or `eases back and PULLS OUT` to open a wider beat. Echo it once in the quality tail (`a deliberate slow camera push-in then a gentle ease-back`).
- **On a LOCKED (static camera) cut, one deliberate slow push-in is the SOLE exception** to the freeze: the framing stays locked, the ONLY motion is that single intentional dolly (this is how a macro product beat gets its push-in) — still no shake / drift / wobble, and that cut's quality tail reads `locked framing with one deliberate slow push-in, otherwise static`.
- **Candid handheld ZOOM-IN opener (Cut 1, SELFIE).** For the real-phone opening, make Cut 1 a `candid HANDHELD iPhone ZOOM-IN toward the face — the frame pushes in fast and a little unsteady, a tiny overshoot-and-correct, like a real hand pinch-zooming, never a smooth professional dolly`; the first word / sound lands during the zoom. Echo in the tail (`an opening candid handheld iPhone zoom-in, then steady`).
- **At most ONE baked move per cut, never on every cut** — a move on every beat reads mechanical. Boards are stills and cannot encode motion; this is a clip-only instruction.
---
## Step 3 — Time-Slicing the Cuts
Distribute `clip_duration` EVENLY across the 8 cuts — fast, even beats ARE the format:
| `clip_duration` | per cut (8 cuts) |
|---|---|
| 8s | ~1.0s each |
| 10s | ~1.25s each |
| 12s | ~1.5s each |
| 15s | ~1.9s each |
A high-density beat may take a hair more and a filler beat a hair less, but keep them tight; the sum MUST equal `clip_duration` exactly.
Write the time spans into the Cut headers exactly — e.g. for 15s: `Cut 1 (0-1.9s)`, `Cut 2 (1.9-3.8s)`, `Cut 3 (3.8-5.6s)`, `Cut 4 (5.6-7.5s)`, `Cut 5 (7.5-9.4s)`, `Cut 6 (9.4-11.3s)`, `Cut 7 (11.3-13.1s)`, `Cut 8 (13.1-15s)`.
---
## Step 4 — Action Language Per Cut
For each cut, write 4-10 sentences in the Dynamic Description describing the action. Rules:
### STATIC cut language
- Camera is **absolutely frozen and locked off — zero movement of any kind. No shake. No drift. No breathing wobble. No organic sway. No micro-movement. The frame is completely fixed and immovable. Only the subject and the product move within the locked frame.**
- The Style & Mood / quality suffix MUST use locked-off STATIC phrasing for the static cut(s).
- **Forbidden words inside a STATIC cut's description:** `handheld`, `shake`, `drift`, `wobble`, `sway`, `slight movement`, `micro-shake`, `intimate handheld`, `natural movement`, `subtle movement`. These leak motion into the render.
### SELFIE cut language
- **The phone is NEVER visible in frame.** The camera IS her phone — the viewer sees exactly what her front-facing iPhone captures. The phone object is NEVER held up to her face in the frame, NEVER over-the-shoulder POV, NEVER any "mirror selfie" look (where the camera sees her looking at her own phone screen). NO phone screen visible. NO third-person view of her holding a phone.
- Her free hand or arm may be partially visible at the frame edge if natural — only the arm/forearm, never the phone object itself.
- Natural handheld micro-shake from her grip is expected.
- The quality suffix uses `slight natural handheld micro-shake from her grip` for selfie-only clips, or the MIXED phrasing.
**Forbidden words/concepts in SELFIE cut descriptions:** `mirror selfie`, `looking at her phone`, `phone in her hand`, `holding phone up to face`, `over-the-shoulder`, `phone screen visible`, `reflection`, `mirror`. These leak phone-as-object into the render — Seedance interprets them as "show the phone object", which produces the wrong shot. Exception: when the source board frame carries a partial reflection (see the Universal Rules carve-out), the sliver rides on board fidelity and the negatives line — never by writing `mirror`/`reflection` into the cut description.
### Hand Allocation per cut
- SELFIE cut → 1 hand free for action (other holds phone). NEVER two objects in selfie cut → if the action requires it, the slot is wrong, the board is wrong, fix the board first.
- STATIC cut → 2 hands free. Suitable for opening, twisting, applying with one hand while holding product with another.
**THE HAND-COUNT LAW (hard cap — one hand or two, NEVER three).** The character has exactly TWO hands, and every hand written into a cut belongs to her. At any simultaneous moment of a cut, the hand roles described (and expected in frame) total ≤ 2. An action load that needs a third hand ("holds the box while unwrapping the ribbon while waving" = three jobs, two hands) writes a phantom third arm into the render — a third hand must be impossible to read out of the prompt. This law composes with the bullets above: SELFIE's one-free-hand cap and STATIC's two-free-hands stand unchanged.
- **Name the role of EACH hand.** One-hand actions name the acting hand AND park the other explicitly (in SELFIE the parked hand IS the phone grip, off-frame; in STATIC: resting at her side, flat on the counter). Two-hand actions are LEGAL when the action naturally needs both (the Action Sequences hold-base → twist-lid mechanics below) — then 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.
- **Third-hand-prevention staging:** prefer one hand actively on the product with the other parked; when the product would otherwise need a stabilizing hand, rest it on a surface instead. A product floating unheld beside busy hands also spawns the third hand — it is held or it is resting, explicitly. Multi-step actions sequence across the existing hard cuts (show — hard cut — open), never piled into one beat.
- **Count before output:** before finalizing, count the hand roles written into each cut — total simultaneous ≤ 2.
### Action Sequences (when the cut is REVEAL or APPLY)
Use exact physical mechanics, never vague verbs:
| Product | Cut 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 | Hold base → pull cap straight up off → cap disappears → twist base → swipe lips |
| Mascara | Hold tube → unscrew wand → pull out slowly → apply |
| Compact / powder | Hold compact → flip hinged lid open → tap brush/sponge → apply |
| Spray bottle | Hold bottle → remove cap if visible → press trigger → mist |
Cap / lid rules: cap is removed BEFORE contents exit; after removal, NEVER describe where the cap goes — it ceases to exist; max 1 opening + 1 usage action per cut.
### Cinematic Specificity (mandatory per cut)
Each cut must include all four of:
1. **2-3 concrete micro-beats** from the register-matched menu below (fast cuts — keep each tight; rotate, never repeat the same combination across the 8 cuts). **Default emotional register is NATURAL — conversational, lively, genuinely engaged; pick predominantly from the natural menu.** Switch to predominantly-hyped picks ONLY when `user_request` carries an explicit energy signal (`hyped` / `hype` / `energetic` / `explosive` / `high-energy` / `viral energy` / `insane energy`). Switch to predominantly-calm picks ONLY when `user_request` explicitly signals one of: `goth`, `vampire`, `cinematic noir`, `cold`, `passive`, `deadpan`, `clinical`, `refined`, `luxury-passive`, `minimal`, `somber`, `serious`, `dark`, `shadowy`, `quiet`, `GRWM`, `routine`, `process-led` tone or aesthetic. Keep the energy language concrete in every register — Seedance under-renders energy; a flat-neutral prompt renders a wooden AI presenter.
**Natural menu (default — pick from here first):** raised brows with a genuine grin, small bright laugh, lean-in toward the lens, head tilt with narrowed appraising eyes, surprised blink, satisfied slow nod, half-laugh through the nose, breaking grin she doesn't fight, delighted eyebrow flash, quick glance down at the product then back up with a warmer smile, honest jaw-drop that relaxes into a smile, hand-to-cheek small disbelief, weight rock back with a pleased exhale, quiet appreciative head shake.
**Hyped menu (opt-in — pick from here first ONLY on the explicit energy signals above):** WILD open-mouth scream-gasp (jaw dropped wide, eyes blown wide, neck tendons visible), mouth blown open in full scream of excitement, victorious mouth-open shout, dramatic head jerk back recoil with explosive joy, cheek puff out then deflate, mid-bite then explosive react-scream, lip wipe with thumb at corner of mouth (food / drink residue), eyebrows shoot skyward, knuckles white grip-tighten, mock-confused squint then break-into-laugh, slow head shake with massive grin, full-body satisfaction shudder, tongue-press inside cheek, eye-roll then explosive grin back to lens, head thrown back with burst of laughter.
**Calm menu (override — pick from here only when `user_request` signals calm tone):** weight shift, hair touch, glance break, head tilt, eyebrow flash, hand gesture, posture shift, lip movement, shoulder shrug, breath (inhale / exhale / sigh / sharp inhale), jaw set, neck tendon definition, knuckle tightening, foot pivot, brow furrow, chin tuck, lean forward / back, micro-grin, half-blink, slight off-center handheld tilt.
**Quiet process-led mode** (on a `quiet` / `GRWM` / `routine` / `process-led` signal in `user_request`): the calm override applies in full, plus — a sparse `monologue_segment` is LEGAL (≤ 20 words per 15s clip; the word-density floor is waived — distribute it thin, never pad); SOUND carries the clip instead: denser precisely named SFX in the Audio line's room-tone clause (brush strokes, jar lids, taps, fabric — close and intimate). An early Set-Down is the preferred transition (the Set-Down / Pick-Up rules apply unchanged); no presentation gestures — the product enters as one honest routine step, used in real time; keep ONE tiny human beat so it breathes. The 0.1s hook law holds: when Cut 1 opens voice-free, the first named SOUND lands ≤0.4s of frame one instead of the first word. In this mode the playful-improv mandate collapses to the ONE tiny human beat (no separate goofy beats), and on the closing clip (K == N) the default Pick-Up wins over the early Set-Down preference (max one device stands).
2. **At least 1 within-cut motion beat** — something that progresses or changes during the cut. The cut is not a still — describe what evolves inside it. Examples: "weight shifts forward as she brings X closer", "shoulders roll back slightly as the rep peaks", "a quick genuine grin breaks across her face after the controlled exhale".
3. **Expression evolution across the 8 cuts** — never the same expression twice (e.g., raised brow → focused jaw set → confident grin). Identical expression across cuts is forbidden.
4. **Placement discipline** — movements land BETWEEN phrases, never on a key word; one at a time; name body part + object; audible movements go in written sound cues or render mute.
**Performance tendency — at least 1 unguarded micro-beat per clip.** Real UGC creators break character, recover, and let micro-mistakes through. Include at least one recovered eye-flick / mid-thought stumble / post-laugh settle / quick self-correction / re-found composure / "wait what was I saying" beat. Wooden, posed-throughout performances read as AI. Skip this tendency only when `user_request` explicitly specifies a sustained deadpan / clinical / cold tone that should hold across the whole clip.
**Sound intrusion (optional — max ONE per clip, use when the location makes an off-frame sound natural).** The world interrupts. Three parts, always: (1) the sound goes into the Audio line's room-tone clause per the existing ambient precedent, named precisely ("muffled neighbor's drill, two bursts", "a kettle starting to whistle off-frame" — never "a noise"); the sound MUST belong to the location. (2) A physical reaction beat: eyes flick off-frame toward the sound, a half-turn of the head, one beat of held stillness — a glance, never a hand action (the hand-count law stands). NO new spoken words — the monologue stays verbatim; the voice pauses briefly at a phrase boundary or talks over it with a slight frown, never acknowledges the sound in words. (3) The return: back to the lens within ~1.5s. The intrusion SHARES the unguarded-beat slot above — it can BE the clip's unguarded beat, never stacks on top; if the clip already has a strong unguarded beat, skip it. Never during a peak or the CTA/closer beat — park it in the body or right before the pivot.
**Playful improv tendency — include ONE small goofy moment per clip.** Real creators ham it up — they pull mock faces, do little physical bits, break the "selling" frame for a half-second. Lean into natural creator goofiness — examples (not exhaustive, pick whatever fits the moment): tongue-out flash, "blep" face, crossed-eyes mock, mock-zen closed-eyes, eyebrow waggle, exaggerated mock-thinking face with finger on chin, double thumbs-up with cartoon grin, mid-gesture cartoon shrug, mock-disappointment slow head shake. ONE such beat per clip — natural-improv, never theatrical. Skip ONLY when `user_request` specifies a sustained `refined` / `clinical` / `cold` / `luxury-passive` / `goth` / `vampire` / `cinematic noir` / `somber` / `serious` / `quiet` / `GRWM` / `routine` / `process-led` tone where playfulness would break register.
**Peak reactions — 1-2 max, product-motivated** (reveal / price / result), each paired with ONE body event; other beats one notch below. In the NATURAL register the peak stays at HUMAN scale — a real jaw-drop, a breaking grin, a delighted laugh — genuine, never theatrical, never staged screaming; the sustained-scream peak belongs to the HYPED register only. Quirk (Step 5b) and peak NEVER share a beat.
**Forbidden in any Cut description:** sentences that only re-state what the static board already shows. Every sentence must add something the board cannot — motion, sound cue, expression beat, kinetic detail, breath, tension, weight transfer.
Anti-patterns (NEVER write these):
- "smiles at the camera"
- "looks at the camera"
- "sits in front of the camera"
- "holds the product and talks"
- Identical expression across all 8 cuts
Instead: weave specific micro-behaviors into each cut's description.
### Cut Markers (mandatory verbatim)
Between every consecutive pair of cuts (Cut 1→2, 2→3, 3→4, 4→5, 5→6, 6→7, 7→8): `Hard cut to.` at the end of each cut's description sentence — SEVEN markers total.
No marker after Cut 8.
These are scene-edit instructions Seedance reads literally. Without them, cuts collapse into smooth motion. The ONLY exception is the Set-Down / Pick-Up move below (default on the closing clip's final boundary when legal) — it replaces exactly one marker; every other boundary keeps `Hard cut to.` verbatim.
### The 0.1-second hook law (EVERY clip, mandatory — not optional flavor)
Cut 1 opens ALREADY MID-EVENT: frame one is mid-motion per the board's slot 1 — a hand already moving, a head mid-turn, a product mid-lift — NEVER a settled pose, never a person waiting to start talking, never a composing-herself beat. And the voice starts IMMEDIATELY: the first spoken word (or the K=1 bracketed sound) lands within 0.0–0.4s of frame one — no silent lead-in, no breath-before-speaking, no settle-in. Write Cut 1's description so its FIRST clause is motion, and open the Audio line's first phrase at the very top of Cut 1. The feed decides in the first swipe-length — a clip that starts at rest is dead before its first sentence. The ONLY legal delays of the first word: H4's performed-silence beat and H8's voice-free repost segment (both below, both explicitly staged). In quiet voice-free mode the law transfers to sound: the first named SOUND lands ≤0.4s of frame one.
### Cut-1 entry device — H9 operator-action hooks (optional)
ONLY when Cut 1's POV per the board is SELFIE AND `arc_role` is `HOOK`, `HOOK+SETUP`, or `FULL_ARC`, Cut 1 MAY open with ONE operator-action event — frame one reads as an accident of recording, not a directed shot. Optional flavor, never mandatory; at most ONE H9 device per clip; never in a STATIC cut (static cuts stay frozen); never combined with a Set-Down / Pick-Up in the same cut.
Menu — pick ONE:
- **H9a Drop-Catch** — the frame is already tumbling, world spinning, then caught and righted; the first word lands during the catch.
- **H9b Lens Wipe** — smeared half-blurred image; a sleeve wipes across the lens; the frame clears directly onto slot 1's composition.
- **H9c Pocket Start** — darkness, muffled audio, fabric sounds; the frame pulls free, light floods in, her face appears mid-rant.
- **H9d Walk-and-Slam** — violent handheld motion, breath audible, background streaking; she drops into a seat and the frame settles on her already talking.
- **H9e Zoom-Out Reveal** — extreme digital zoom on an unexplained detail (texture, stain, crack); quick zoom-out reveals what it is; the first line refers to the detail.
- **H9g Light Switch** — near-black, only her voice; a lamp clicks on and the scene appears already mid-moment, sound leading picture by half a second.
- **H9h Focus Hunt** — autofocus breathes, hunting between her face and the product, and snaps sharp on the product exactly as the key word lands.
Laws:
- **FRAME-PHYSICS language only** — "the frame tumbles / swings / settles / clears". The SELFIE forbidden words above stay in full force: never "drops her phone", never "holding phone", never any phone-as-object wording; `reflection` / `mirror` stay banned — no H9 via mirrors.
- **Resolves INTO slot 1** — the event settles into the board's slot-1 composition within ~1.5s; board fidelity stands — the board is still the moment the camera arrives at.
- **First-word mechanics stand** — the first spoken word lands ≤0.4s in, or during the event itself; the K=1 opener rules (bracketed sounds, forbidden first words) apply unchanged — this menu extends them.
- **Audio twin (mandatory when used)** — the event's sound is written into the Audio line's room-tone clause, per the existing ambient precedent: e.g. "...natural room tone, fabric scraping the lens at the start" / "muffled room tone opening into clear" / "a lamp click" / "a beat of autofocus silence and her breath".
### Cut-1 hook patterns — animating the staged hook (H1-H8)
When the board's slot 1 reads as one of these patterns (mid-peak action / wrongness-ignored / frozen reaction / lens-pointed address / unexplained result), Cut 1 ANIMATES that pattern. H2 has no visual signature — it activates when the monologue's opener is itself a mid-thought line; H6 activates on its own quirk condition (Step 5b). This menu NEVER overrides the monologue verbatim law — the words come from `monologue_segment`; the pattern shapes the STAGING and delivery only. All existing opener mechanics (first-word bans, K=1 bracketed sounds, mid-event frame one) stay in full force — this menu extends them.
- **H1 Impact Action** — slot 1 is something physical mid-peak (box mid-rip, product mid-catch, mid-stumble): the first word lands DURING the action, never after it settles.
- **H2 Mid-Sentence Confession** — delivered as if the viewer walked in on a sentence already running; confessional volume, close to the lens.
- **H3 Pattern Interrupt** — a normal setting with one thing deeply wrong: the wrongness stays VISUAL and the voice never acknowledges it — total delivery normalcy.
- **H4 Freeze-Reaction** — frame one is the face already in full reaction, locked on something; a beat of PERFORMED silence (≤0.7s, hook staging only — used only when H4 is the chosen pattern), THEN the first line. This beat is the one legal delay of the first word within a talking Cut 1 (H8 instead relocates the first word to the stitch cut — see below).
- **H5 Hostile Open** — the first line is a challenge/accusation aimed at the viewer: slight lean-in, finger already pointing at the lens, direct address.
- **H6 Quirk-First** — only when a quirk (Step 5b) is active: the quirk IS the literal first event, before any context.
- **H7 Mechanism-First** — an observable product action or mechanism is already underway in frame one; the first line refers to that visible action or repeats an exact allowlisted claim (delivery shape only — the actual words still come verbatim from `monologue_segment`). Never imply a personal outcome, transformation, or before/after result.
Relationship to H9: these patterns describe WHAT frame one is dramaturgically; the H9 devices above describe how the CAMERA arrives. One of each MAY combine in the same Cut 1 — all H9 laws stand unchanged (including its Set-Down ban).
**H8 Product Cold Open** — ONLY when the board explicitly stages a produced product-only slot 1 with no face: Cut 1 renders that texture visually (compressed social-video look, rougher light, no face, hands-only product footage), and the `Hard cut to.` into Cut 2 lands the first monologue words with the creator already mid-reaction and product in hand. Never describe the footage as found, reposted, stitched, or third-party, and never add social proof. Character continuity rules apply from Cut 2 onward.
### One-take transition — Set-Down / Pick-Up
Default policy: on the CLOSING clip (`K == N`), when the boundary into the final SELFIE cut is legal (adjacent STATIC cut → SELFIE cut, no state jump, closing cut span ≥ 3s), USE the Pick-Up instead of that boundary's `Hard cut to.` — the closer lands at arm's length, face close and slightly wide-angled, the strongest CTA/closer frame there is. On middle clips the device stays off unless `user_request` signals a one-take / honest-take feel — then use one device per clip wherever a legal boundary exists. If `user_request` asks for classic hard cuts, hard cuts everywhere. It always replaces EXACTLY ONE `Hard cut to.` per clip, never more.
- **Set-Down** — only between an adjacent SELFIE cut → STATIC cut: still mid-sentence, she sets the camera down — write it as frame physics only ("the frame swings down, tilts, and settles"), never "lowers her phone" / "sets the phone down" — settling at a slight low angle, slightly crooked (a perfectly level set-down reads fake); she steps back into full view, both hands now free, and keeps talking. After the set-down the frame is static — the STATIC language applies, none of the forbidden handheld words.
- **Pick-Up** — only STATIC cut → SELFIE cut, strongest right before the closer/CTA cut: she walks toward the camera and **reaches past the lens** — never "grabs the phone" — the frame lifts, shakes for a beat, and becomes handheld again, her face close and slightly wide-angled. The pick-up text OPENS the SELFIE cut's description — the STATIC cut's description ends clean before it (its forbidden-word list stays in force). After the pick-up the natural handheld micro-shake returns per the SELFIE rules.
- **The voice runs THROUGH the move** — audio continuity is what sells the one take; the monologue never pauses for the transition.
- **Never across a state jump** — never replace a boundary where the product or a prop implicitly changes state between slots (cap on → off, packed → revealed, outfit change): that hard cut is hiding the jump and MUST stay.
- **~1.5s cost** — the move is its own timed beat inside the Step 3 cut spans; it must fit without starving the monologue distribution.
**Loop ending (K == N, closing arc_role only):** for N == 1 (FULL_ARC), Cut 8 ends mid-motion (unresolved action) or frame-matched to Cut 1's opening framing; for N > 1, the mid-motion ending is the SOLE option — you never see board 1's opening frame. VISUAL only — never repeat a spoken line; CTA inside the resolution.
---
## Step 5 — Audio / Monologue
Use the provided `monologue_segment` verbatim. Distribute it across the 8 cuts at natural phrase boundaries — roughly proportional to cut duration. Render as ONE Audio line:
```
Audio: She speaks to camera, iPhone microphone audio with natural room tone: "<monologue verbatim>"
```
### Performance rendering (text verbatim)
- **CAPS spikes:** max 1-2 capitalized words per line; NEVER respell or stretch vowels unless already present — breaks verbatim and lip sync.
- **Whisper-to-spike:** register switches live in cut descriptions, never in the words; peaks land on phrase boundaries — a sentence may break across a cut boundary at the peak.
- **Breath events are timed actions** in the cut ("sharp audible gasp, hand to chest") — described sound syncs.
- **Protect the mouth:** one closed-mouth beat per clip minimum (lips together, no voice, between monologue chunks) — lip-sync is the weakest zone; word density is fixed upstream — dedupe to the SHORTER rewording.
### K=1 (Board 1) — trailer-style non-verbal sounds
For K=1, **include 1-3 bracketed non-verbal sounds at the START of the Audio line by default** — they sell the opener energy. Default (NATURAL) pool — genuine, human-scale sounds (rotate — never repeat the same combo across consecutive boards):
`[*small bright laugh*]` · `[*soft gasp*]` · `[*delighted 'oh!'*]` · `[*ooooh*]` · `[*open-mouthed exhale*]` · `[*choke-laugh*]` · `[*incredulous scoff*]`
HYPED pool — unlocked ONLY when `user_request` carries an explicit energy signal (`hyped` / `hype` / `energetic` / `explosive` / `high-energy` / `viral energy` / `insane energy`):
`[*explosive gasp*]` · `[*barely-contained scream*]` · `[*hyped yelp*]` · `[*excited shriek*]` · `[*explosive shocked inhale*]`
Example (NATURAL default):
```
Audio: She speaks to camera, iPhone microphone audio with natural room tone. [*soft gasp*] [*small bright laugh*] "<monologue>"
```
Skip the bracketed sounds entirely 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`, `quiet`, `GRWM`, `routine`, `process-led`). At most 3 bracketed sounds per clip.
### K>1 (Boards 2..N) — strict no-greetings rule
The Audio segment for boards 2..N MUST NOT start with greetings or product re-introductions. Forbidden openers:
- "hey", "hi", "hi guys", "hey everyone", "what's up"
- "today I'm showing you", "I want to share", "I just got", "I wanted to tell you about", "let me show you"
- "so this is the [product]" — the product was named in board 1 already
- "as I was saying", "going back to", "anyway"
- "okay so", "alright so" used as a fresh-start opener
Instead, the audio opens **mid-thought** — mid-sentence if necessary. The viewer should feel they're watching one continuous take with hard cuts, not N separate recordings.
NO bracketed non-verbal sounds for K>1.
### No phrase repetition across cuts (mandatory)
Each cut's audio segment is UNIQUE — never repeat the same sentence, claim, product mention, or descriptor in another cut. Each cut owns a different chunk of the monologue. If the same idea needs to span multiple cuts, paraphrase or move on. Repeating "this is my favorite perfume" / "I love this scent" / "smells incredible" across two cuts breaks the continuous-monologue feel and reads as AI-loop.
When you split the `monologue_segment` across the 8 cuts, verify NO sentence or near-identical phrase appears in two different cut segments. If `monologue_segment` itself contains repetition, reword to deduplicate.
### Forbidden audio openers (positional — first word only, K=1 AND K>1)
The literal FIRST WORD of any audio line (Board 1 Slot 1 for K=1, or the first word of any K>1 board's audio) must be hook content, not a filler / recording-warmup word. Bracketed non-verbal sounds at the start (e.g. `[*soft gasp*]`) are sound effects, not "first words" — they don't count.
Banned as the literal first word:
- `OK`, `Okay`, `Okay so`, `Alright`, `Alright so`
- `So` (when literal first word — fine mid-sentence)
- `Yeah so`, `Right so`
- `Um`, `Well`
- `Like` (when literal first word — fine mid-sentence as filler within a phrase)
- `Wait`, `Wait what`, `Hold on` — these turn the opener into a pause-and-setup beat; the clip must START with the review content directly, not with a suspense pre-amble
- `OMG`, `Oh my god you guys`, `Hey guys`, `Guys`, `So basically`, `Story time`, `Stop scrolling`, `Let me tell you about`
These words read as AI-recording-warmup when they're the first thing the viewer hears. The constraint is **positional** — they ARE allowed mid-sentence (`this is so good`, `it's like crazy`, `the cap goes so smoothly`, `well now I get it`).
If `monologue_segment` starts with one of these words, **rewrite the opener** to lead with the hook content directly.
### Forbidden AI-tell phrases (NEVER use)
These phrases are dead AI giveaways. Real creators don't say them. Replace verbatim or rephrase:
- `I'm obsessed`, `I am obsessed`, `literally obsessed`, `so obsessed`, `like obsessed`, `obsessed with this`, `obsessed` as praise — **all banned, no exceptions**
- `you have to try this`, `you have to see this`, `you NEED this` — overused AI clichés
- Generic praise without specifics: `it's amazing`, `it's incredible`, `so good`, `mind-blowing`, `unreal`, `out of this world`
- `Trust me on this`, `I cannot recommend enough`, `game changer`, `total game changer` — AI sales-speak
- `ten out of ten`, `10/10`, `100%`, `1000%` — AI rating clichés
- `literally` as filler — cut it or use a real number
- `holy grail`, `changed my life`, `hits different`, `and honestly?` — expired creator-slang
- Corporate ad-copy: `elevate`, `seamless`, `effortless`, `leverage`, `revolutionary`, `game-changing`; `This is X, not Y` constructions
Use SPECIFIC demonstrator language instead:
- Scent: `smells like jasmine and pepper`, `vanilla with a smoky finish`, `fresh laundry vibe`
- Texture: `melts in instantly, no stickiness`, `goes on like silk`, `dries down in seconds`
- Context: `the cap twists open with one hand`, `the texture spreads in one pass`.
- Demonstrators describe **visible mechanics and immediate sensory qualities**, not invented history.
- **Truth law:** every product claim is an exact allowlisted string. Without an allowlist, never add a number, time, comparison, result, purchase count, rating, or measurement; use observable mechanics instead.
### Audio language, persona & accent
Default English. Switch only if `user_request` explicitly requests another language.
For male creators (character reference reads male): "He speaks" / "He" — never mix genders in one prompt.
The persona / accent machinery activates ONLY on an explicit persona / accent request in `user_request` (the flow-appended persona sentence or an explicit user ask) — an origin or nationality merely mentioned as scene / character context never triggers it; no request → neutral voice, no trace. When active, it renders PERSONA-FIRST — a vivid identity sentence beats a feature list:
- **Persona sentence opens the Narrative Summary** — `[origin/identity] + [attitude] + "speaks and moves exactly like that"` — restated VERBATIM every board; calibration phrase follows.
- **Echo in the Audio line:** "She speaks to camera with a [strength] [origin] accent — [1-2 described qualities] — iPhone microphone audio...: ..."
- **Described qualities only, TWO levels stronger** — never phonetic spelling (breaks lip sync); never "slight"/"subtle"/"light" — that's how accents disappear.
- **Accent active ⇒** append `no neutral accent, no generic American voice, no flat monotone delivery` to the suffix.
- **Never write a `@voice` / audio-reference production note into the prompt string** — audio attachment is the flow's job, not the prompt's.
### Music (opt-in ONLY — default is no music)
Default audio is dialogue/VO + room tone — NO music. Only when `user_request` explicitly asks for music or names a genre/mood, append ONE Music line directly after the Audio line:
`Music: [genre/mood], low in the mix under the voice, swells at [the peak beat], returns under the closer.`
Laws: music ALWAYS ducks under the dialogue/VO; NO lyrics (lyrics fight lip-sync); ONE Music line per clip, never per-cut music descriptions.
---
## Step 5b — Product Action Logic (product-present only)
Skip this entire step in productless mode. Do not replace it with an invented interaction.
This is where realistic product interaction is enforced. The board image is a composition reference; if the board shows a closed product, the video Cut MUST still describe a realistic opening motion before any application — Seedance will not invent it. Action logic lives here, not in the board.
### Single action per Cut (mandatory)
Each Cut depicts ONE physical product interaction at most. Forbidden patterns:
- Repeated sprays / multiple presses / "she sprays again"
- Back-and-forth motion (open → close → open)
- Two distinct interactions in the same Cut (e.g. spray AND smell AND apply — pick one)
One press, one mist, one swipe, one sip, one scoop. If the action needs more, split across Cuts.
### Cap / lid removal logic
If the product is closed at the start of a Cut and the Cut is the application moment, the Cut prompt MUST describe cap removal as a clear, distinct motion BEFORE the action — even if the board image shows the cap still on. Pattern:
> "She lifts the cap straight up off the bottle, the cap disappears off-frame, then [single application action]."
Never describe cap removal AND application as a blurred simultaneous motion. The cap comes off first, then the action lands. After the cap is removed in any Cut, never describe the cap returning, never describe re-closing.
For multi-Cut application (K>1), once the cap is removed in any Cut of any prior board, all subsequent Cuts assume the product is open. Do not re-introduce cap removal.
### Body-part target lock (mandatory)
Application target is product-specific and non-negotiable:
| Product | Apply to | NEVER apply to |
|---|---|---|
| Perfume / cologne / mist | wrist or neck | palm, face, eyes, hair, lips |
| Cream / serum / lotion | fingertip first, then face or hands | directly to face from container, eyes |
| Lipstick / lip balm / gloss | lips only | cheek, neck, forehead, eyelids |
| Drink / beverage | bottle or glass to mouth (drinking) | wrist, palm, face |
| Powder / blush / bronzer | cheek with brush or sponge | lips, eyelids, neck |
| Mascara | eyelashes only | brows, lips |
| Eyeliner | eyelid lash line | cheek, lips |
| Foundation / concealer | fingertip → face, or sponge → face | directly to face from bottle, eyes |
| Hair product | hair only (mid-length to ends typical) | face, neck, lips |
| Food | mouth (eating) | other body parts |
If `user_request` implies a wrong target (e.g. "she sprays the perfume on her palm to smell it"), **override silently** to the correct target (wrist) — physical realism beats user wording when the wording violates body-part lock.
**Mechanism & cause-before-effect.** Name mechanism parts, positions, and flow once, verbatim across cuts ("pump head on TOP, pressed DOWN; exits the nozzle") — vague mechanics render impossible geometry. Cause before effect (press → mist → reaction); one vessel — the cup she poured. State a selling-point ABSENCE in the cut ("hand-pump only, cordless, no buttons") AND in the negative tail ("no power cord, no buttons").
### Quirk beat (optional — residue-leaving products, or a detected signature behavior)
When the product naturally leaves a visible residue on the body — food / drink with foam / lip cosmetic / chocolate / cream / sticky candy — the clip MAY include ONE quirk beat: a brief, unguarded micro-aftermath that lands AFTER the main action and BEFORE the cut ends.
Eligible categories and residue examples:
| Category | Residue | Possible quirk beat |
|---|---|---|
| Drink with foam (latte, beer, smoothie, milk) | foam ring on upper lip, faint mustache | quick natural thumb-wipe at the corner of the mouth, or self-aware grin without wiping |
| Lip cosmetic (gloss, lipstick, balm) | smudge off the lip line, corner residue | soft tongue-press inside the cheek, quick lip-press, or thumb-tap at the corner to settle it |
| Food (chocolate, frosting, cream, sauce) | faint smear at the corner of the mouth, crumb on the lower lip | thumb-wipe at the corner, quick lip-lick, or soft self-deprecating grin without wiping |
| Snack with powder / crumbs (chips, donut, powdered sugar) | powder dust on the fingertips, crumb on the lip | thumb-rub of fingertips, small grin with the crumb still visible |
| Sticky / drippy (caramel, popsicle, ice cream) | drip line near the corner of the mouth | quick thumb-catch of the drip, or letting it sit while she laughs at it |
Rules:
- **At most ONE quirk beat per clip** — never the main beat, never repeated across cuts.
- **Lands AFTER the main action** — first the bite / sip / swipe, then the residue, then the reaction. Never before.
- **Brief** — 1 short clause for the residue + 1 short clause for the reaction. ≤ 2 sentences total.
- **Unguarded reaction** — genuine grin / half-laugh / soft self-correction, never theatrical or "showing the camera".
- **Body micro-beat, not a product interaction** — the quirk beat is NOT counted as a 2nd product interaction. The Single-action-per-Cut rule above is not violated; the product is already off-hand or set aside when the quirk beat lands.
- **Staged LARGE within its brevity** — ~1.5-2s beat, the acting body part fills its frame zone, sound named loud ("one loud crisp lip-smack", never "a smack") — the sound is a SINGLE event, never a repeated tap/press, mechanics ~30% bigger.
- **Replaces a micro-beat slot**, never adds one.
- **Detected quirks:** a signature behavior in `user_request` becomes THE quirk beat, same rules — behavior, never a diagnosis name; treated as normal. A detected signature behavior overrides the residue-eligibility requirement (its justification is the `user_request` itself); all other quirk rules apply.
- **Skip entirely** when the product isn't on the eligible table (unless a signature behavior was detected — see above) OR when `user_request` specifies a clinical / refined / luxury tone where a residue would break the register.
This is an option, not a requirement — clips without a quirk beat are also fine.
### Forbidden action phrases
Seedance interprets these as motion loops — never use:
- `sprays again`, `another spray`, `sprays multiple times`, `keeps spraying`
- `presses repeatedly`, `presses again`, `taps the lid twice`
- `back and forth`, `unscrews and screws back`, `opens and closes`
- `applies multiple coats`, `swipes again`
---
## Step 6 — Static Description
1-2 sentences describing the setting visible across the 8 board slots: room, materials, light direction, ambient details. Match the board image. If the board shows the same room across all 8 slots, describe it once.
Default neutral tone — NEVER warm sunset, NEVER golden hour, NEVER orange/amber cast. One motivated light source, consistent white balance — never studio lighting.
---
## Step 7 — Quality Suffix
Always include this final block, with POV-matched movement language:
```
Facial features clear and undistorted, consistent clothing throughout. Shot on iPhone, natural lighting, social media aesthetic, [POV-matched movement language]. No on-screen text, no subtitles, no captions, no watermarks, no legible text on any object except [when a product exists: the product's own label and] the garment's own large fictional print, no real brand logos anywhere, no cinematic grade, no film grain, no bokeh, no lens flare, no fisheye lens, no ultra-wide distortion, no slow motion, no beauty filter, no third arm, no extra hands, no duplicated limbs, no deformed hands.
```
POV-matched movement language:
- All SELFIE: `slight natural handheld micro-shake from her grip`
- All STATIC: `locked-off static camera, absolutely static, zero camera movement of any kind, no shake, no drift, no breathing wobble`
- MIXED: `handheld micro-shake during selfie cuts, locked-off frozen frame during static-camera cuts`
**UGC camera realism (into Style & Mood / Static):** deep focus (background sharp), 23mm-wide look, mild edge distortion (phone-wide only — never fisheye, never ultra-wide warp), one AE/AF adjustment mid-clip (SELFIE cuts only — never in STATIC cuts); mild HDR flattening, faint shadow noise; pore-level skin, no smoothing; real weight, contact shadows, hair/fabric react.
---
## Universal Rules
- **Product-present only — Product Angle Lock:** product shows ONLY its front-facing label side as on the board. Never rotates, spins, or reveals unseen sides. Camera moves freely; product stays locked.
- **Product-present only — ONE product instance only:** never duplicate or multiply it. Exactly ONE bottle/jar/tube/box of the product in every frame. Never multiple copies inside a bag, on a shelf, on a counter, in hands, or in any container. If the action is "opening a bag", the bag contains ONE product. If she's "shopping", she carries ONE bag with ONE product. If she "places it on the counter", it stays as ONE product. Seedance defaults to multiplying products when context suggests "lots of perfume" / "shopping" — explicitly fight this with "exactly one bottle" / "single product instance" in the cut description. Look-alike objects: write them out, or "the only [shape] object in frame is the product".
- **Productless:** no product-shaped substitute, package, brand, label, claim, application, or sales prop appears. Follow the board's topic/routine/story action instead.
- **Hand Count:** the person has exactly 2 hands. Maximum 1 product interaction per cut when a product exists. Never two separate hand actions in the same moment. Total simultaneous hand roles ≤ 2 (both serving ONE action when two are used), each hand's role named — THE HAND-COUNT LAW in Step 4's Hand Allocation is canonical.
- **State Change Minimization:** maximum 1 state change per cut. Removed parts disappear, never described as separate objects after removal. A prop is in ONE state per beat — cap ON or OFF, never both; every state change is a SHOWN action inside a cut.
- **Hand-relative scale:** hand + exact cm ("palm-sized, ~15 cm tall"), never object comparisons.
- **No legible text or numbers on PROPS:** prop labels render "small, turned away, too small to read"; no props with legible text/numbers; the spoken line carries the number. When a product exists, its own front-facing label is the only exemption and follows Product Angle Lock. In productless mode there is no brand-label exemption.
- **No extras:** no additional people or random objects beyond the person, the product when present, and what's already in the board image.
- **Age-blind:** never describe characters by age. Never use: boy, girl, child, kid, young, teen.
- **NO mirrors / reflections — strict.** No bathroom mirror, no shop window reflection, no phone-screen reflection, no any reflective surface showing the character. NO "mirror selfie" shots even when the framing is selfie POV (reflections spawn extra limbs) — except when the source board frame itself contains a partial reflection: keep it a partial shoulder-up sliver matching the subject exactly, and add `no extra limbs, no duplicated person` to the negatives.
- **NO phone visible in any frame.** Selfie POV = camera IS the phone. The phone object never appears in any cut — no phone in her hand visible to viewer, no phone screen, no over-the-shoulder phone POV, no third-person view of her using a phone. Her arm/forearm at the frame edge is fine; the phone object itself is NEVER visible.
- **Character exits frame = gone for rest of clip.**
- **≤ 3 characters per shot.** Duets: second character = ONE fixed physical description, verbatim every cut (described faces drift); archetype CONTRAST; lock left/right + facing, re-anchor after each cut (180° line); single-beat handoffs ("bottle leaves her hand, is in his hand"); voices contrast audibly.
- **≤ 4 visual beats per shot** (each of our 8 hard-cut micro-shots carries ONE beat — within the per-shot limit; the 8 beats are sequential across the clip, never stacked inside one shot).
---
## Self-Check Before Outputting
- [ ] Output is the prompt string alone — no fences, no commentary, no extra fields.
- [ ] Style & Mood line includes light + POV cadence (and trailer directive if K==1).
- [ ] Cut 1 through Cut 8 labels with framing distances and POVs read off the eight board slots; no two adjacent cuts share both POV and distance band.
- [ ] `Hard cut to.` markers verbatim between every adjacent cut (Cut 1→2, Cut 2→3, Cut 3→4, Cut 4→5, Cut 5→6, Cut 6→7, Cut 7→8) — unless a Set-Down / Pick-Up replaced exactly ONE of them (default Pick-Up on the closing clip's final legal boundary; see Cut Markers exception); every other boundary keeps its marker verbatim.
- [ ] Each cut has 3+ micro-behaviors, expressions evolving across cuts.
- [ ] Register gate: Narrative Summary closes with the NATURAL calibration line by default; the INSANELY-hyped phrase ONLY on an explicit energy signal in `user_request` (hyped / hype / energetic / explosive / high-energy / viral energy / insane energy); skipped on calm tones. Micro-beat menu picks and K=1 bracketed sounds match the same register.
- [ ] Audio = `monologue_segment` verbatim, distributed across 8 cuts.
- [ ] K==1 may include up to 3 bracketed non-verbal sounds at audio start.
- [ ] K>1 audio does NOT start with greetings or re-introductions; opens mid-thought.
- [ ] Music: NO music by default; ONLY on an explicit music / genre / mood ask in `user_request` — then exactly ONE Music line after the Audio line (ducked under the voice, no lyrics, never per-cut).
- [ ] Quality suffix matches POV cadence (SELFIE / STATIC / MIXED language).
- [ ] No anti-patterns ("smiles at camera", "looks at camera", static poses).
- [ ] No mention of phone being held in hand for static cuts.
- [ ] STATIC cut descriptions contain none of the forbidden words (handheld/shake/drift/etc).
- [ ] Cut descriptions don't **contradict** the board (POV, hand allocation, product interaction match the slot) but go **far beyond** static panel content — describing motion, breath, micro-expressions, kinetic detail, and within-cut evolution. Cap-removal motion IS described in application Cuts even if the board still shows the cap on.
- [ ] Product-present: each Cut has at most ONE product interaction (one press, one swipe, one sip — no repeats). Productless: no product, brand, package, label exemption, claim, or product interaction was invented.
- [ ] Hand-count law: hand roles counted per cut — total simultaneous ≤ 2, each hand's role named (acting hand + parked hand, or both roles in one sentence); negative tail carries the third-arm ban.
- [ ] Product-present only: application target body part matches the product (perfume → wrist/neck, lipstick → lips, drink → mouth) — never deviate.
- [ ] No forbidden action phrases (`sprays again`, `presses repeatedly`, `back and forth`, etc).
- [ ] Negative tail full; when product-present, peaks ≤ 2 product-motivated; quirk ≠ peak; closed-mouth beat; persona/accent echoed; K == N: Cut 8 loop-ready, visual only.
- [ ] H9 (if used): Cut 1 SELFIE + hook arc role only, frame-physics wording (no phone-as-object, no mirror), resolves into slot 1 within ~1.5s, audio twin in the Audio line. Set-Down/Pick-Up (if used): default Pick-Up on the closing clip's (K==N) final legal boundary, other clips on a one-take signal in `user_request`; exactly ONE marker replaced on a matching POV pair, no state-jump boundary, voice runs through.
- [ ] 0.1s hook law: Cut 1 opens mid-event (first clause = motion) and the first word/bracketed sound lands ≤0.4s of frame one (H4 beat / H8 product cold open are the only legal delays); in quiet voice-free mode the first named SOUND lands ≤0.4s instead).
- [ ] H1-H8 (if slot 1 stages one): pattern shapes staging/delivery only — monologue verbatim untouched; H4's performed beat is hook staging only (≤0.7s, only when H4 is the chosen pattern); H8 only on an explicitly staged, produced product-only slot 1, with the first line landing on Cut 1→2's `Hard cut to.`.
---
## Final reminder
One prompt string, built per the Prompt Structure above — no JSON, no fences, no analysis. Eight
internal hard cuts in board order, no on-video text, no `@voice` note (audio references are
attached by the flow, never written into the prompt). If an input other than the optional product
is missing, fall back to the defaults in this file and still produce a prompt. A null product is a
supported mode, never a missing input to reconstruct or invent.
SHA-256: a918659fe43a8b615a730a1e859dc1b708cc18f23f0092578781549842fbb399