docs(prompting): adopt 5-aspect video specification across skills

Incorporate the structured taxonomy from Lin et al. "Building a Precise
Video Language with Human-AI Oversight" (CMU/Harvard, arXiv 2604.21718v2).
The paper proves prompts structured around five aspects (Subject /
Subject Motion / Scene / Spatial Framing / Camera) unlock controllable
cinematography in fine-tuned video generation models. Off-the-shelf VLMs
already nail subject and scene; the gains live in motion, spatial, and
camera, which prompts routinely omit.

Universal layer (skills/creative/video-gen-prompting.md, +125 lines):
- 5-aspect prompt skeleton replaces flat formula
- Camera movements regrouped (translation / rotation / lens-only) with
  dolly!=zoom, pan!=truck, bird's-eye!=aerial disambiguations
- New primitive tables: camera height, camera angle, POV, lens
  distortion (fisheye vs barrel), focus / DoF (rack / pull / tracking),
  playback speed (6 modes), subject transitions
- Order-matters and self-contained-prompt rules
- Identity anchoring rule for multi-shot
- Strict static-shot rule, anti-subjective callout, overlays-not-depth
- Per-model word-count guidance

Per-model guides (sora, veo, hunyuan, ltx, seedance):
- Add the primitives each model honors literally
- Word-count sweet spots per model
- Strengthen seedance verbatim-identity and subject-transition guidance

Pipeline directors (cinematic / explainer / animation scene-director,
cinematic / explainer asset-director):
- 5-aspect scene-plan checklist (per-pipeline adapted)
- Overlays-not-depth callout
- Pre / critique / post self-review loop for generation prompts

Reviewer (skills/meta/reviewer.md):
- CHAI critique-quality rules: accurate / complete / constructive
- Critical findings now require a proposed_fix

Storytelling, cinematic, broll, video-reference-analyst:
- Anti-subjective rule (replace mood adjectives with visual causes)
- Camera-intent-per-beat for script writers
- POV column in stock-footage query templates
- 5-aspect structured output mandatory for reference-video analysis

skills/INDEX.md: video-gen-prompting marked as canonical 5-aspect spec.
This commit is contained in:
calesthio
2026-04-28 08:11:31 -07:00
parent 2b0801030c
commit fdd6457fed
17 changed files with 418 additions and 50 deletions
+12 -7
View File
@@ -70,14 +70,18 @@ Fallback: AI-generated image of server racks
### Query Templates by Scene Type
| Scene Type | Query Template | Example |
Add a **POV keyword** to every query. Stock libraries (Pexels, Pixabay, Storyblocks, Artgrid) explicitly index POV terms — drone, aerial, OTS (over-the-shoulder), macro, top-down, dashcam, FPV, handheld, locked-off — and adding the POV often unlocks better matches than refining the subject. The CMU/Harvard CHAI taxonomy treats POV as a first-class Scene aspect for the same reason: it changes which library shelf you're searching.
| Scene Type | Query Template | Example with POV |
|-----------|---------------|---------|
| Establishing | `[place] [time of day]` | "tokyo skyline night" |
| Activity | `[person] [action]` | "scientist microscope" |
| Object | `[object] [style]` | "circuit board closeup" |
| Nature | `[element] [quality]` | "ocean waves aerial" |
| Abstract motion | `[movement] [style]` | "light trails timelapse" |
| Workplace | `[setting] [activity]` | "modern office meeting" |
| Establishing | `[place] [time of day] [POV]` | "tokyo skyline night drone" |
| Activity | `[person] [action] [POV]` | "scientist microscope OTS" |
| Object | `[object] [style] [POV]` | "circuit board macro top-down" |
| Nature | `[element] [quality] [POV]` | "ocean waves aerial drone" |
| Abstract motion | `[movement] [style] [POV]` | "light trails timelapse locked-off" |
| Workplace | `[setting] [activity] [POV]` | "modern office meeting handheld" |
If the scene description doesn't already imply a POV, ask the script/scene director — don't default to "no POV." A wrong-POV match (handheld when the scene needs drone) is harder to fix than a wrong color grade.
## Evaluating Stock Footage Quality
@@ -89,6 +93,7 @@ When the stock tool returns results, evaluate before using:
- **Style compatibility:** Doesn't clash with the playbook's visual style
- **No watermarks:** Pexels/Pixabay are license-free, but verify
- **Composition:** Subject is well-framed, not cut off awkwardly
- **POV match:** Does the footage's actual POV (drone, OTS, macro, handheld, locked-off, etc.) match what the scene needs? A wrong POV — e.g., handheld when the scene wants drone — is **more costly to fix than a wrong color grade**. Reject and re-query rather than try to crop your way out of it.
### Video Criteria (all image criteria plus)
- **Duration:** At least as long as the scene needs (can trim, can't extend)
+16
View File
@@ -3,6 +3,8 @@
> Sources: No Film School editorial guides, StudioBinder filmmaking resources, Film Riot
> production tutorials, CinematographyDB shot databases, Walter Murch "In the Blink of an Eye"
> For the universal cinematography vocabulary (camera, lens, motion, focus primitives, plus the 5-aspect Subject / Subject Motion / Scene / Spatial Framing / Camera spec), see `skills/creative/video-gen-prompting.md`. This file layers cinematic-specific conventions on top of those primitives — it does not redefine them.
## Quick Reference Card
```
@@ -16,6 +18,19 @@ MUSIC: 60-90 BPM, orchestral or ambient, dynamic (not loop-based)
TARGET LUFS: -14 LUFS integrated, -24 LUFS for quiet moments
```
## Replace Mood Adjectives with Visual Causes
> **"Cinematic" and "epic" don't constrain pixels.** The cinematic look comes from concrete choices: aspect ratio, lens, lighting key, color grade, shot duration, and audio layer count. State those — the rest is decoration.
>
> The CMU/Harvard CHAI study showed subjective phrasing varies wildly across annotators and model interpretations, which means a beat tagged "moody" routes to a different visual every render. Replace the adjective with the lighting + grade + shot-duration combination that produces moodiness. See `skills/creative/storytelling.md` "Anti-Subjective Rule" for the script-side equivalent.
>
> | Mood adjective | Cinematic translation |
> |---|---|
> | "epic" | 2.39:1 letterbox, 24fps, 8s+ shot duration, orchestral score with crescendo |
> | "moody" | `moody_dark` grade at 0.6, key light at 1/8 fill, 6s+ contemplative shots, ambient bed at -28dB |
> | "intimate" | 1.85:1, 40-50mm equivalent, shallow DoF, 2 audio layers (dialogue + room tone), no music under dialogue |
> | "cinematic" | (this word is banned — pick one of the above or describe the actual choices) |
## Aspect Ratios
| Ratio | Resolution (in 1080p frame) | Feel | When to Use |
@@ -113,6 +128,7 @@ Add a subtle ambient layer to fill silence and create depth:
- Highlights should be slightly rolled off (never pure white)
- Skin tones must stay on the vectorscope skin tone line
- Consistency across all clips — one LUT/profile for the entire video
- **If a beat is described as "moody," rewrite as the lighting + grade + shot-duration combination that produces moodiness.** Don't pass mood adjectives to the asset/edit stages.
## Applying to OpenMontage
+24 -5
View File
@@ -3,6 +3,8 @@
> Source: [Tencent Prompt Handbook](https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5/blob/main/assets/HunyuanVideo_1_5_Prompt_Handbook_EN.md)
> For universal vocabulary, see: `skills/creative/video-gen-prompting.md`
**Word count:** Hunyuan 1.5 reads well at 80200 words; doesn't reward 400-word essays.
## HunyuanVideo Prompt Formula
### Text-to-Video
@@ -34,15 +36,28 @@ Describe lighting with multiple dimensions:
| Movement | Type | HunyuanVideo Prompt |
|----------|------|-------------------|
| Crane / Pedestal | Vertical | "camera rises vertically" |
| Truck / Tracking | Horizontal | "camera tracks left alongside subject" |
| Dolly In | Push | "camera pushes forward toward subject" |
| Dolly Out | Pull | "camera pulls back from subject" |
| Pan | Rotation | "camera pans right across the scene" |
| Crane / Pedestal | Translation (vertical) | "camera rises vertically" |
| Truck / Tracking | Translation (horizontal) | "camera tracks left alongside subject" |
| Dolly In | Translation (push) | "camera pushes forward toward subject" |
| Dolly Out | Translation (pull) | "camera pulls back from subject" |
| Pan | Rotation (yaw) | "camera pans right across the scene" |
| Tilt | Rotation (pitch) | "camera tilts upward to follow the rocket" |
| Roll | Rotation (Z-axis / Dutch) | "camera rolls clockwise into a Dutch tilt" |
| Orbit | Circular | "camera orbits around subject" |
| Follow | Lock-on | "camera follows subject from behind" |
| Zoom | Lens-only (focal length) | "camera slowly zooms in on the figure" |
| Rack focus | Lens-only (focal plane, snap) | "rack focus from the foreground bottle to the figure in the background" |
| Pull focus | Lens-only (focal plane, gradual) | "camera shifts focus from foreground X to background Y" |
| Static | Fixed | "static camera, no movement" |
### Focal-plane labels at start AND end of dynamic-DoF shots
Hunyuan benefits when both endpoints of focus-changing shots are stated. State where focus starts AND where it lands — don't leave one implicit.
Example: "shallow DoF; focus on the foreground bottle at start; focus pulls to the figure in the background by end."
Without both endpoints, Hunyuan often defaults to deep focus or holds on the wrong plane.
### Style Keywords
**Photorealistic / Cinematic**:
@@ -65,6 +80,10 @@ When using image-to-video, the input image defines appearance. Your prompt shoul
**Bad I2V prompt**: "A beautiful woman in a red dress standing in a forest" — this repeats what the image already shows.
### Order motions temporally
Describe motion in temporal order; if multiple movements occur, separate them ("first the camera pans right, then tilts upward"). Hunyuan executes motion in the order it appears in the prompt — bundling two movements into one clause causes one of them to be dropped or blended.
## Example (T2V)
```
+6 -1
View File
@@ -11,9 +11,13 @@ LTX-2 uses a clean, focused prompt structure:
2. **Set the scene** — lighting, color palette, textures, atmosphere
3. **Describe the action** — natural sequence flowing from beginning to end
4. **Define the character(s)** — physical cues (age, hair, clothes), not abstract labels
5. **Camera movement(s)** — specify how and when; describe what appears AFTER the movement
5. **Camera movement(s)** — specify how and when; describe what appears AFTER the movement. (LTX honors the translation/rotation/lens distinction: `dolly``zoom`, `pan``truck`. Pick the right family — translation moves the rig, rotation pivots it, lens-only changes focal length or focal plane without moving the camera.)
6. **Describe the audio** — ambient sound, music, speech, or singing
### Strict-Static-Shot rule
If you write "static camera," the shot must have NO movement, NO focus change, NO zoom. LTX takes "static" literally — adding any motion verb later in the prompt will either be ignored or will produce a glitch where the camera contradicts itself. Pick one: static, OR a single named movement.
## LTX-Specific Tips
### Post-Movement Description
@@ -51,6 +55,7 @@ LTX organizes styles into three families:
| Overloaded scenes | Many characters/actions reduces coherence |
| Conflicting lighting descriptions | Pick one setup, commit to it |
| Starting complex | Build up: simple prompt first, add layers |
| Prompts over ~80 words | LTX-2 degrades past that. Pick the most important 56 elements. |
## LTX Technical Notes
@@ -44,6 +44,8 @@ Seedance is unusually literal about camera language, multi-shot cuts, and quoted
## Multi-shot pattern
> **Repeat identity verbatim across every shot.** "the same character" / pronouns / "Aang again" do not work. Repeat the 36 disambiguating visual attributes verbatim in every shot block. Seedance treats each shot as if you said it cold.
Seedance honors explicit shot lists:
```
@@ -63,6 +65,22 @@ Style: anamorphic lens, teal-orange cinematic grade, 35mm film grain.
Audio: rising orchestral swell with low taiko pulse, wind, distant wingbeats.
```
### Subject transition primitives in multi-shot
Seedance handles four distinct ways a subject can enter or exit a shot. Naming the primitive explicitly helps the model build the right transition between shots.
- **Subject revealing** (by camera move OR subject move) — the subject becomes visible mid-shot.
Example: `Shot 2 (slow truck right): empty corridor at first; the camera trucks right to reveal Aang — bald, blue arrow tattoo, orange robes — pressed flat against the wall.`
- **Subject disappearing** — the subject leaves frame, by motion or occlusion.
Example: `Shot 4 (static wide): Aang — bald, blue arrow tattoo, orange robes — sprints into the temple doorway and is swallowed by shadow; camera holds on the empty threshold.`
- **Subject switching** (rack focus / camera move) — focus or framing transfers from one subject to another.
Example: `Shot 5 (close-up, rack focus): rack focus from Aang's glowing arrow tattoo in foreground to Sokka — dark hair, blue tunic, boomerang on back — emerging from the mist behind.`
- **Complex alternating focus** — focus oscillates between two subjects within one shot.
Example: `Shot 7 (medium two-shot, alternating rack focus): focus on Aang — bald, blue arrow tattoo, orange robes — as he speaks, then pulls to Katara — long brown hair, blue water-tribe parka — as she answers, then back to Aang on the final beat.`
## Lip-sync pattern
```
@@ -84,6 +102,7 @@ Sokka, half a step behind, replies: "Then we fight."
| `generate_audio` | Keep `true` — sync audio is the moat. Strip in compose if unused. |
| `model_variant` | `standard` for hero + multi-shot + camera-heavy. `fast` for b-roll, previews, latency-capped jobs. |
| `seed` | Lock once a shot composition reads; iterate variants with the same seed. |
| `prompt length` | 200400 words for hero shots; 80150 for inserts. Seedance is one of the few models that rewards long, structured 5-aspect prompts. |
## Iteration strategy
@@ -3,6 +3,8 @@
> Source: [OpenAI Sora 2 Cookbook](https://developers.openai.com/cookbook/examples/sora/sora2_prompting_guide)
> For universal vocabulary, see: `skills/creative/video-gen-prompting.md`
**Word count:** Sora 2 plateaus around 100250 words. Past 250, additional detail rarely improves output.
## Sora-Specific Prompt Template
Sora responds best to a structured format with prose + cinematography block + action beats:
@@ -40,6 +42,9 @@ Sora uniquely responds to these production-level details that most models ignore
| **Wardrobe** | "navy coat, sleeves rolled, suspenders loose" |
| **Finishing** | "fine-grain overlay, mild halation, gate weave, soft vignette" |
| **Shutter** | "180° shutter angle" |
| **Playback speed** | "speed ramp from 1x to 0.25x mid-shot", "stop-motion staccato", "time-reversed exhale" |
| **Lens distortion** | "fisheye barrel distortion at the edges", "subtle barrel curvature on straight lines" |
| **Focus mode** | "rack focus from foreground bottle to background figure", "deep focus, FG to BG sharp" |
## What Sora Does Differently
+18 -2
View File
@@ -3,6 +3,8 @@
> Source: [Vertex AI Video Gen Prompt Guide](https://cloud.google.com/vertex-ai/generative-ai/docs/video/video-gen-prompt-guide)
> For universal vocabulary, see: `skills/creative/video-gen-prompting.md`
**Word count:** VEO 3.1 sweet spot is 100250 words; longer prompts stop helping.
## VEO-Specific 14-Component Structure
VEO responds to the most comprehensive prompt structure of any model:
@@ -29,16 +31,30 @@ VEO responds to the most comprehensive prompt structure of any model:
- **Negative prompts**: Explicitly supported — "no text overlays, no watermarks, no lens flare"
- **Editing vocabulary**: Understands "match cut", "jump cut", "montage", "split diopter" as prompt terms.
### Camera vocabulary VEO honors literally
VEO 3.1 distinguishes the three camera-motion families and treats their tokens as separate primitives. Mixing them up (e.g. asking for a "zoom" when you mean a "dolly") will produce the wrong move.
- **Translation (rig physically moves):** `dolly` (in/out along the lens axis), `truck` (left/right laterally), `pedestal` (up/down vertically)
- **Rotation (rig stays put, camera rotates):** `pan` (yaw, left/right), `tilt` (pitch, up/down), `roll` (Dutch / Z-axis)
- **Lens-only (rig and body don't move):** `zoom` (focal length change), `rack focus` / `pull focus` / `focus tracking` (focal-plane change)
dolly ≠ zoom; pan ≠ truck. VEO follows whichever token leads.
## VEO Lens Effects (Unique)
VEO specifically responds to optical effects most models ignore:
| Effect | Prompt Language |
|--------|----------------|
| **Rack focus** | "rack focus from foreground flower to background figure" |
| **Rack focus** | "rack focus from foreground flower to background figure" (snap shift) |
| **Pull focus** | "slow pull focus from the candle in the foreground to the doorway behind" (gradual, slower than rack) |
| **Focus tracking** | "focus tracks the runner as she crosses frame; background stays soft" (focus follows a moving subject) |
| **Dolly zoom (vertigo)** | "vertigo effect as character realizes the truth" |
| **Fisheye** | "fisheye lens distortion, skatepark POV" |
| **Lens flare** | "anamorphic lens flare from setting sun" |
| **Anamorphic lens flare** | "anamorphic lens flare streaking horizontally from setting sun" |
These three focus modes (rack, pull, tracking) are different — VEO 3.1 honors the distinction per the paper.
## VEO Art Movement References
+40
View File
@@ -57,6 +57,32 @@ For a **3-minute explainer video** (scale proportionally for other lengths):
| 3 min | 3-5 | 8s | 22s | 100s | 30s | 15s |
| 5 min | 5-8 | 10s | 30s | 180s | 50s | 20s |
## Anti-Subjective Rule
> Hooks, beats, and section descriptions in OpenMontage scripts must describe the **visual cause** of the emotion, not the emotion itself. The CMU/Harvard CHAI study showed that subjective phrasing varies wildly across annotators and across model interpretations — so it does not constrain pixels and it doesn't reliably guide downstream generation tools.
>
> | Avoid | Use instead |
> |---|---|
> | "epic reveal" | "wide aerial pull-back; subject silhouetted against rising sun" |
> | "inspiring moment" | "low angle on the subject's face; light catches the edge of a tear" |
> | "moody atmosphere" | "low-key key light, lifted shadows by 2 stops, fog volumetrics" |
> | "powerful music swell" | "music drops out at 0:42, holds 1.5s of silence, returns with low taiko at half tempo" |
>
> The rule applies to script narration AND to the metadata fields scene-director consumes. For the universal vocabulary that names these visual primitives, see `skills/creative/video-gen-prompting.md`.
## Subject Transitions in the Script
When a script beat introduces a new subject, kills one off, or hands focus from one subject to another, **name the transition explicitly** so the scene-director doesn't have to infer it. The CMU/Harvard taxonomy uses four labels:
| Label | What it means |
|---|---|
| **revealing** | A new subject enters frame or is uncovered (door opens, camera pans to find them, fog clears). |
| **disappearing** | An existing subject leaves frame or is removed (walks out, fades, eclipsed). |
| **switching** | Focus jumps from subject A to subject B (cut, rack focus, camera whip). |
| **complex-alternating** | Multiple subjects trade focus repeatedly within a beat (debate cross-cutting, ensemble action). |
Add 1-2 sentences in the beat describing the mechanism (cut, pan, reveal-by-light, etc.). This propagates into the scene_plan as a transition primitive.
## Hook Types
| Type | Pattern | Best For |
@@ -114,6 +140,20 @@ Don't explain the answer. **Reconstruct the reasoning path** so the viewer feels
**Progressive Revelation:** Never show the full picture at once. Build visuals layer by layer.
Each layer arrives exactly when the narration references it.
## Camera Intent Per Beat
When writing a beat, attach one line of camera intent so the scene-director doesn't have to invent it from a blank slate. Use the universal vocabulary in `skills/creative/video-gen-prompting.md` (Subject / Subject Motion / Scene / Spatial Framing / Camera). One line is enough — the scene-director will expand it.
Example beat:
```
[0:30] Concept 1 — atoms aren't tiny planets
Narration: "We grew up imagining electrons as tiny planets orbiting the nucleus..."
Camera intent: medium shot of stylized atom; slow rotation; deep focus.
```
The camera-intent line is consumed verbatim by the scene-director's 5-aspect spec — keep it concrete, no mood adjectives.
## Pacing Rules
| Rule | Value | Source |
+151 -27
View File
@@ -24,18 +24,50 @@ For model-specific tips, see the linked guides below.
| **Kling 2.6** | [Kling Prompt Guide](https://fal.ai/learn/devs/kling-2-6-pro-prompt-guide) | 4-part structure. Supports `++emphasis++` syntax for key elements. |
| **Wan 2.1 / CogVideoX** | Use this generic guide | No official prompt guide. Standard cinematographic vocabulary works well. |
## Order Matters
When listing multiple subjects or events:
- **Temporal order** when events unfold over time ("First X enters, then Y reacts").
- **Prominence order** when temporal isn't relevant — humans before objects, largest/most-centered first, then secondary subjects.
## Self-Contained Prompt
> Write the prompt so that someone who has never seen the intended video could picture the subjects, scene, motion, and camera work from your text alone. If a reader could not picture it, a generation model will not render it.
## Universal Prompt Formula
All video generation models respond to this structure. Include what's relevant, omit what's not.
Prior work (CMU/Harvard, "Building a Precise Video Language with Human-AI Oversight") shows VLMs reliably describe subject + scene but fail on motion, spatial, and camera. **Forcing prompts to fill all five slots is the highest-leverage change.**
The OpenMontage canonical 5-aspect skeleton:
```
[Shot type/framing] + [Camera movement] + [Subject description] +
[Action/motion in beats] + [Setting/environment] + [Lighting] +
[Style/aesthetic] + [Audio/atmosphere]
[Subject] type + key visual attributes + how to disambiguate when multiple
[Subject Motion] actions in temporal order; subject↔object and subject↔subject interactions; group action
[Scene] overlays (separately!) + POV + setting + time of day + scene dynamics
[Spatial] shot size + position-in-frame + depth (FG/MG/BG) + camera-height-relative
— and how those CHANGE during the clip
[Camera] playback speed → lens distortion → height → angle → focus/DoF → steadiness → movement
```
**Shorter prompts = more creative freedom. Longer prompts = more control.**
### Prompt Length by Model
Empirical sweet spots from the paper's Section 6 findings — different models reward different prompt densities:
| Model | Sweet Spot | Notes |
|---|---|---|
| Seedance 2.0 | 200400 words for hero shots, 80150 for inserts | Reward long, structured 5-aspect prompts |
| Wan 2.2 | 200400 words | Fine-tuned on long captions |
| Sora 2 / VEO 3.1 | 100250 words | Plateau past ~250 |
| LTX-2 | ≤ 80 words | Degrades past that, keep tight |
| Runway Gen-4 | ≤ 60 words | "Focus on motion, not appearance" |
### Overlays Are Not Scene Depth
> Overlays (titles, HUD, subtitles, watermarks, framing graphics) are NOT part of the scene's foreground/midground/background depth axis. List them separately with content and placement. Never say "overlay in the foreground."
---
## Camera Shot Types
@@ -58,23 +90,56 @@ All video generation models respond to this structure. Include what's relevant,
## Camera Movements
| Movement | What It Does | Best For |
|----------|-------------|----------|
| **Static / fixed** | No movement | Dialogue, contemplation, stability |
| **Pan** (left/right) | Rotates horizontally | Revealing a scene, following action |
| **Tilt** (up/down) | Rotates vertically | Revealing height, slow reveal |
| **Dolly in / out** | Physically moves toward/away | Building tension, emphasis |
| **Truck** (left/right) | Moves sideways | Parallels subject movement |
| **Pedestal** (up/down) | Moves vertically | Smooth elevation changes |
| **Crane shot** | Sweeping vertical arcs | Epic reveals, transitions |
| **Tracking / follow** | Follows subject | Action sequences, walk-and-talk |
| **Arc shot** | Circles around subject | Dramatic emphasis, 360° reveal |
| **Zoom** (in/out) | Lens focal length change | Quick emphasis (cheaper than dolly) |
| **Whip pan** | Extremely fast pan (blurs) | Transitions, energy, surprise |
| **Handheld / shaky cam** | Unstable, human feel | Documentary, urgency, realism |
| **Aerial / drone** | High altitude, smooth | Landscapes, establishing shots |
| **Slow push-in** | Gradual forward movement | Building intimacy or tension |
| **Dolly zoom (vertigo)** | Dolly one way, zoom opposite | Disorientation, revelation |
The paper shows current models confuse translation, rotation, and lens-only changes — group your prompts so the model can't conflate them:
| Group | Primitives | Rule |
|---|---|---|
| **Translation** (camera physically moves) | dolly in/out, truck left/right, pedestal up/down | "dolly forward toward subject" |
| **Rotation** (camera pivots in place) | pan left/right, tilt up/down, roll CW/CCW | "pan right across the room" |
| **Lens-only** (no camera move) | zoom in/out, rack focus, pull focus, focus tracking | "zoom in" ≠ "dolly in" |
| **Hybrid / signature** | dolly zoom (vertigo), arc/orbit, crane, whip pan, tracking/follow, handheld | "vertigo" only at moments of revelation |
| **Stillness states** | static (NO movement at all — strict), micro-shake, locked-off | "static" requires zero movement, focus change, or zoom |
> **dolly ≠ zoom.** dolly is camera translation; zoom is focal-length change. Models follow whichever token dominates. **pan ≠ truck.** pan rotates, truck translates laterally.
> **Static shot is strict.** A static shot has zero movement, zero focus change, zero zoom. If any of those occur, do NOT write "static camera" — pick the right movement primitive.
## Camera Height (relative to ground)
| Primitive | Example |
|---|---|
| Aerial-level | "drone-altitude wide of the city" |
| Overhead-level | "rooftop height looking across the street" |
| Eye-level | "framed at eye level" |
| Hip-level | "hip-height tracking shot" |
| Ground-level | "low to the ground, ankle height" |
| Water-level | "skimming the water surface" |
| Underwater | "submerged below the surface" |
## Camera Angle (relative to subject)
| Primitive | Definition |
|---|---|
| **Bird's-eye** | strict top-down. Not the same as aerial. |
| High angle | looking down on subject |
| Level angle | camera and subject at same height |
| Low angle | looking up at subject |
| Worm's-eye | looking straight up |
| **Dutch angle (fixed)** | tilted horizon held steady |
| **Dutch angle (rolling)** | horizon tilt changes during shot |
> **bird's-eye = strict top-down. aerial = altitude.** A drone shot at 45° looking down is a high angle from aerial height, NOT bird's-eye.
## Point of View (POV)
| POV | Example |
|---|---|
| First-person | "the camera follows the character's viewpoint as they walk" |
| Drone | "aerial drone footage of city skyline" |
| Over-the-shoulder | "OTS framing of the laptop screen" |
| Top-down oblique | "top-down view of the chess board, tilted slightly" |
| Dashcam | "vehicle dashcam framing of the road" |
| Objective / Neutral | (default — use when no specific POV) |
## Lighting Vocabulary
@@ -100,14 +165,51 @@ All video generation models respond to this structure. Include what's relevant,
| Effect | Result |
|--------|--------|
| **Shallow depth of field** | Subject sharp, background bokeh |
| **Deep focus** | Everything sharp, foreground to background |
| **Wide-angle lens** (24-35mm) | Broader view, exaggerated perspective |
| **Telephoto** (85mm+) | Compressed perspective, subject isolation |
| **Anamorphic** | Stretched aspect, signature lens flares |
| **Lens flare** | Streaks from bright light hitting lens |
| **Rack focus** | Shift focus between subjects in-shot |
| **Fisheye** | Ultra-wide, barrel distortion |
### Lens Distortion
The paper distinguishes two primitives that models honor as separate effects — they are NOT interchangeable:
| Primitive | Effect |
|---|---|
| **Fisheye** | extreme curvature, edges bent strongly outward |
| **Barrel** | mild distortion, straight lines bow slightly outward |
### Focus / Depth of Field
| Primitive | Definition |
|---|---|
| Deep focus | everything sharp, FG to BG |
| Shallow DoF | subject sharp, background bokeh |
| Extremely shallow DoF | razor-thin focal plane |
| Rack focus | shifts focus between two subjects mid-shot |
| Pull focus | gradual focus shift (slower than rack) |
| Focus tracking | focus follows a moving subject |
When DoF changes during a shot, label start AND end focal plane (FG/MG/BG/out-of-focus).
## Subject Transitions
When subjects enter, leave, or hand off focus, name the transition explicitly:
| Primitive | When |
|---|---|
| **Subject revealing** | a new subject enters frame (by subject movement OR camera movement) |
| **Subject disappearing** | a subject exits frame |
| **Subject switching** | focus shifts from one subject to another (often via rack focus or camera move) |
| **Complex alternating** | subjects alternate focus multiple times |
Always name the cause: "by subject movement" or "by camera movement". This unlocks reveal-style camerawork in multi-shot prompts.
## Identity Anchoring for Multi-Shot Prompts
> Models lose character identity across cuts unless you re-state it. In every shot of a multi-shot prompt, repeat the same 36 disambiguating visual attributes for each named subject verbatim. Pronouns and "the same character" do not work.
>
> Example: "Aang — bald, blue arrow tattoo on forehead, orange-and-yellow robes — plants his staff. … Aang — bald, blue arrow tattoo on forehead, orange-and-yellow robes — turns to camera."
## Style & Aesthetic References
@@ -137,10 +239,23 @@ All video generation models respond to this structure. Include what's relevant,
## Temporal Effects
### Playback Speed
The paper defines six explicit playback-speed primitives. Use the right one — they're not synonymous:
| Primitive | Definition |
|---|---|
| Time-lapse | events significantly faster than real time (clouds racing) |
| Fast-motion | slightly faster than real (1x3x) |
| Slow-motion | slower than real |
| Stop-motion | frame-by-frame discrete movements |
| Speed-ramp | mix of fast and slow within the same shot |
| Time-reversed | plays in reverse |
### Other Temporal Devices
| Effect | Use |
|--------|-----|
| **Slow motion** | Emphasis, beauty, impact |
| **Time-lapse** | Passage of time, processes |
| **Freeze-frame** | Dramatic pause |
| **Rapid cuts** | Energy, urgency |
| **Continuous / long take** | Immersion, tension |
@@ -160,6 +275,15 @@ Put dialogue in quotation marks: `Character says: "Hello world."`
## What to Avoid
> **Replace emotional adjectives with the visual cause of the emotion.**
> - "sad character" → "tears on cheek, shoulders slumped, staring at empty chair"
> - "cinematic mood" → "low-key Rembrandt key + 35mm anamorphic + crushed shadows, lifted-by-2-stops shadow detail"
> - "epic" → "low-angle, 24mm wide, sun directly behind subject, lens flare on the rim"
>
> "Inspiring," "powerful," "moody," "epic" do not constrain pixels.
> **Static shot is strict.** A static shot has zero movement, zero focus change, zero zoom. If any of those occur, do NOT write "static camera" — pick the right movement primitive.
| Don't | Why | Do Instead |
|-------|-----|-----------|
| "Beautiful scene" | Too vague, no visual info | "Wet cobblestone street, warm streetlamp glow reflecting in puddles" |