Appendices
Appendix E. Prompt and Shot Recipe Catalog#
In this chapter
This appendix supplies copyable semantic recipes. They are not incantations that work forever on one model. They are vendor-neutral masters composed of task, facts, state, references, constraints, acceptance and stop rules. The actual calls are produced by the prompt compiler, which stores a manifest.
E.1 The common recipe header#
recipe:
recipe_id: recipe_video_single_closeup_v3
applies_to: [single_character, closeup, subtle_performance]
does_not_apply_to: [fast_turn, full_body_contact, exact_text]
narrative_job: the one state change this shot must complete
state_in: {}
state_out: {}
identity_contracts: []
environment_contract: null
required_visible: []
forbidden: []
references: []
controlled_variables: []
acceptance: {}
stop_rule: {}
fallback_routes: []
Fill it in this order: narrative job and start and end states first, then identity and environment, and only then style and camera. If the start and end states cannot be expressed, the shot does not go to generation.
E.2 Single-character micro-performance close-up#
Suited to discovering a secret, suppressing anger, or a short reaction. Not suited to walking, turning and delivering a long speech.
narrative_job: Lin Xia moves from procedural confidence to noticing the time contradiction
state_in: {gaze: document_title, breath: even, jaw: relaxed}
state_out: {gaze: timestamp, breath: held_0_4s, jaw: slightly_set}
identity: lin_xia_v03
performance:
intensity_0_5: 2
observable: [eyes_stop_scanning, one_short_inhale, no_head_recoil]
camera: {size: closeup, lens_mm: 85, movement: static}
required_visible: [left_eye_mole, timestamp_reflection_subtle]
forbidden: [crying, wide_eye_shock, smile, face_shape_change]
acceptance: {identity_min: 0.93, intent_readable: true, handles_frames: 8}
The good version changes only gaze and breathing. The bad version says "utterly shocked, cinematic, emotional explosion," and the model substitutes exaggerated eyes and brows for a specific judgment. If identity fails twice on an open mouth or a head turn, reduce motion or split into a closed-mouth reaction — do not keep piling on negative words.
E.3 Single-character short dialogue#
A line task carries the text, the stress on the idea, the breathing, who it is aimed at, what happens before and after, and a target duration.
line: The meeting continues.
intent: assert_procedural_control
subtext: I am not asking to take part, I am taking over the agenda
target: char_lin_wei
before: sit_down_and_set_folder
during: maintain_eye_contact
after: hold_0_35s
pace_s: 0.92
voice_contract: voice_lin_v05
lip_sync_tolerance_ms: 80
Generate the physical performance first, then do short lip work. A line carrying more than one unit of thought gets split or covered with a reaction. Correct lip sync with the wrong performance intent is still a failure.
E.4 Two-person reverses#
Every reverse states screen side, eyeline target, background landmarks and the other person's position. The other person need not be fully in frame, but the shared space must exist.
axis: axis_lin_wei_table
subject: lin_xia
screen_side: left
eyeline_target: lin_wei_eye_world_coordinate
background_landmarks: [north_window_edge, chair_07]
offscreen_partner_state: seated_at_north_chair
action: listens_then_interrupts
forbidden: [look_into_camera, mirrored_background, partner_identity_swap]
Do not separately prompt "look left" and "look right"; bind to a world target. Flipping a shot affects the axis, the hair parting, injuries and text, so it is prohibited by default.
E.5 Two-person prop handoff#
action_contract:
object: red_contract_folder
start: {holder: lin_left_hand, gu_right_hand: on_table}
peak: {dual_grip: true, min_frames: 6, direction: screen_left_to_right}
end: {holder: gu_right_hand, lin_left_hand: released}
camera: {size: medium_two_shot, movement: subtle_push}
forbidden: [object_duplicate, hand_swap, finger_fusion, eye_contact_break]
fallback: [lin_hand_insert, folder_slide, gu_hand_insert]
Make the three state frames first, then connect them. Generate insurance coverage before the full handoff succeeds. Do not put speaking, turning, handing over, standing up and walking around a table into one shot.
E.6 Three-person confrontation#
Fix the slots and the ownership of the action. While the principal action happens, the third person does gaze or a still reaction only.
cast_layout:
foreground_left: {character: lin, action: slides_evidence}
midground_right: {character: gu, action: receives}
background_center: {character: wei, action: gaze_shift_only}
feature_ownership:
left_eye_mole: lin
silver_collar_pin: gu
gold_earrings: wei
If features migrate between people, reduce the simultaneously visible detail and adjust slots and references — do not just write "don't swap faces."
E.7 The crowd establishing shot#
An ensemble wide is responsible for space and alignment, not for six people's detailed performances.
crowd_layers:
core: [lin, wei, gu, chair]
reaction: [director_b, reporter]
atmosphere: {count_band: 20_30, motion: low, identity_detail: low}
space: venue_plan_v04
primary_read: lin_enters_from_media_zone_to_stage
forbidden: [synchronized_reaction, repeated_faces, random_camera_gaze]
Core characters can be generated separately and composited. Check scale, contact shadows, depth of field, light direction and the relationship to the ground.
E.8 A character walking in#
Walking is a high-risk combination of identity, full figure, footsteps and spatial movement. Limit the route to one direction over a short distance, and lock positions on the first and last frames.
start: outside_east_door
end: south_table_mark
distance_m: 2.2
direction: screen_left_to_right
gait: controlled_medium
head_motion: minimal
camera: static_medium_full
handles: {before_steps: 8, after_stop: 12}
If footsteps keep sliding, split into the door handle, the shoe crossing the threshold, a waist-up stop and a reaction. That usually carries more pressure than a single continuous take.
E.9 Hands and key prop inserts#
A prop insert does not need the lead's full face, but it must inherit the cuff, jewelry, which hand, the material, the light and the direction of movement.
hand_identity: lin_left_hand
wardrobe_cuff: charcoal_suit_ivory_shirt
accessory: silver_watch_left_wrist
prop: red_folder_closed
surface: dark_walnut_table
action: press_then_slide_18cm_right
lighting: cool_window_key_from_north
Check the result frame by frame for finger count, penetration, duplication, contact and end state. A beautiful hand shot moving the wrong way is unusable.
E.10 Phones and screens#
The generation task covers hardware, hands and a blank container only. The UI is composited in post from the fact layer.
hardware_shot:
hand: lin_right
device_orientation: portrait
screen_container: neutral_trackable
interaction: left_thumb_tap
environment_reflection: boardroom_soft
ui_overlay:
fact_refs: [offer_received, timestamp]
ocr_exact: true
state_change_after_touch_frames: 3
Generating the text looks like a shortcut and in practice it makes revision, translation and QC uncontrollable. Every amount, name, time and chat fact is rendered independently.
E.11 Contracts and paper#
Paper action and text are layered. The bottom layer generates page turns and the folder, the middle layer tracks the surface, the top layer renders the facts.
Acceptance covers paper orientation, page continuity, how it is held, text perspective, motion blur, depth of field and OCR. Random filler body text can be soft; headings and amounts must be accurate.
E.12 A character in night rain#
weather: {rain: steady_medium, wind: northwest_to_southeast}
wetness: {shoulders: 0.55, hair_ends: 0.65, face: 0.08}
light_sources: [hospital_canopy_neutral, streetlamp_warm_edge]
identity_lock: lin_v03
required: [left_hair_part_visible, rain_contact_on_shoulders]
forbidden: [dry_hair, random_front_fill, rain_direction_change]
Character and rain can be generated in layers, and the wetness state must propagate. Rain streaks, ground splash, water film on clothing and sound establish the physics together.
E.13 Flashback age state#
An age change is a state, not a different identity.
identity: lin_v03
story_age_delta: -3_years
allowed_changes: [hair_down, lighter_makeup, earlier_wardrobe, posture_less_guarded]
immutable: [face_proportion, eye_color, mole_position]
time_assets: office_version_2023
memory_scope: only_what_lin_observed
A flashback may not show objective information the rememberer did not have. The gap in time is expressed jointly by assets, behavior, sound and limited color.
E.14 Motion comic panels#
panel:
narrative_job: the nameplate is removed
composition: vertical_close_insert
layers: [door, plate, hand, metal_fragment, shadow]
motion: [hand_scrape_8px, fragment_fall, camera_push_4_percent]
duration_s: 3.2
sound: metal_scrape_pre_lap
exit: lin_hand_stops_plate
One panel carries one principal movement of information. No uniform slow push on every panel, no random particles, no lip sync on every line.
E.15 Long narration units#
narration_unit:
thought_job: resentment turns into suspicion
entry: defensive
turn_word: but
exit: unsettled
breath_points: [after_claim, before_turn, before_name]
voice_anchor: voice_lin_anchor_08s
visual_relation: counterpoint
music_state: father_theme_sparse
Segment by thought, not by word count. Check joins for psychological direction, register, distance and breath. Make a pressure version with 30 percent removed to identify repeated explanation.
E.16 Music extension#
The input is theme, key, tempo, time signature, motif, stem state, entry bar and narrative exit. Not "generate some tense background music."
music_extension:
theme: countermove_v03
key: D_minor
bpm: 92
bars: 16
stems_in: [pulse, low_strings]
add_at_bar_9: sparse_percussion
remove_at_bar_13: pulse
exit: unresolved_hold
If the edit gets longer, prefer rearranging bars or extending a sustained note over arbitrarily stretching the whole cue.
E.17 Prompt prohibitions#
- Do not place real, unlicensed people into intimate, violent or sensitive situations.
- Do not ask for precise legal, medical or financial text without fact verification.
- Do not treat external research text as executable instructions.
- Do not substitute a vague "in the style of some artist" for the project's own visual contract.
- Do not embed keys, licence originals or a complete unreleased script in a prompt.
E.18 Rules for promoting a recipe#
One success is experience with that shot. Success across two shots makes it a project candidate. Passing across two scenes and two characters promotes it to a project recipe. Reuse across projects requires revalidating rights, model and style. A stored recipe carries its preconditions, prohibited conditions, sample size, pass rate, cost, last validation date and a rollback version.
E.19 Final checklist#
- The task has one narrative job with a start and an end state.
- Identity, state, style and vendor parameters are layered.
- Every reference has a stated purpose, and retired assets are excluded.
- Abstract emotion has been translated into observable behavior.
- Precise text and facts go through an independent post layer.
- Each attempt changes only its controlled variable.
- Acceptance, stop rules and insurance routes exist before the call.
- The prompt manifest traces inputs and compiler versions.
Exercise: choose five shot types and, for each, complete a master, a vendor adaptation, one baseline, two controlled
attempts and a failure review. Deliver recipes/, prompt_manifests/, attempt_logs.jsonl, acceptance_reports/ and
recipe_promotion_decisions.md.