---
name: "ai_short_film_production"
description: "Produce a narrative AI short film end to end: one-page treatment, character and location bibles, a shot-by-shot storyboard, per-shot generation prompts with continuity anchors, assembly, sound, and a delivery QA pass. Triggers on 'AI short film', 'make a short film with AI video', 'narrative AI video', 'storyboard an AI film', 'character continuity across shots', 'AI film treatment', or when a story idea needs to become a finished 30 second to 5 minute film, not a pile of unrelated clips."
---

# AI Short Film Production

## Purpose
Turn a story idea into a finished narrative short made from generated clips. The work is production first and prompting second: lock the story, lock who everyone looks like, plan every shot on paper, generate against that plan, then assemble and check the cut as a viewer would. A prompts-only approach fails here because each clip is generated on its own. Continuity, pacing, and story have to be held by the production documents, not by the model.

Scope: shorts from about 30 seconds to 5 minutes. For API automation, batch rendering, and per-second costs, use ai_video_api_workflows. For a single clip with no story, use that skill too. This one owns the film.

## Workflow

### 1. Treatment first, one page, no shots yet
Write the treatment before any image or clip work. Use `assets/treatment-template.md`. It must fit on one page and answer:
- Logline: one sentence, protagonist plus goal plus obstacle.
- Structure: Setup, Confrontation, Resolution. This is the three act shape popularised by Syd Field in Screenplay (1979): act one sets up the world and gives the protagonist a goal at the first plot point, act two is the struggle with a midpoint reversal, act three is the climax and the aftermath.
- For a short, scale it down: in a 90 second film, setup is roughly the first 20 seconds, confrontation runs to about 70 seconds, resolution takes the rest. Mark the midpoint turn even at this length. A short with no turn is a vignette, and that choice should be made on purpose.
- Ending image: name the final frame in one line. If you cannot, the story is not ready.
- Tone and references: two or three named films or looks, stated as visual facts (palette, light, lens feel), not adjectives.

Gate: do not storyboard until the treatment names a protagonist, a want, an obstacle, a midpoint turn, and an ending image.

### 2. Build the bibles before shot one
Create two short documents and treat them as locked once approved. Templates are in `references/storyboard-templates.md`.
- Character bible, one entry per character: age range, face, hair, build, one signature wardrobe outfit per act or scene block, one prop that is theirs, and the exact text block that will describe them in every prompt. Generate or select reference images only after the text is locked: front face, three-quarter, full body in wardrobe. Current tools reward this: Runway Gen-4 is built around carrying a character from a single reference image across lighting and angles, and Veo 3.1 Ingredients to Video takes up to three reference images for a character, object, or style. Check the current model card for the tool you are using, because reference counts and clip lengths change.
- Location bible, one entry per location: time of day, light source and direction, palette, three fixed landmarks that must appear in wide shots, and a reference frame per location.
- Style lock: one line covering aspect ratio, frame rate target, colour approach, and lens language. Every shot inherits it. Changing the style lock mid-film is a reshoot decision, not a tweak.

### 3. Storyboard shot by shot
Fill `assets/storyboard.csv`, one row per shot. Required columns: shot, scene, duration_sec, shot_size, angle, camera_move, action, dialogue_or_sound, character_refs, location_ref, continuity_in, continuity_out, prompt_status.

Rules that keep the board honest:
- Use standard shot sizes: EWS, WS, LS, MS, MCU, CU, ECU. Vary them. Three same-size shots in a row flatten a scene unless the repetition is the point and you note why.
- One action per shot. If a row has two verbs doing two jobs, split it.
- Continuity in and out are mandatory fields. Continuity out of shot N must match continuity in of shot N plus 1: same prop in the same hand, same wardrobe, same light direction, screen direction preserved unless a neutral shot resets it.
- Respect the 180 degree line in dialogue scenes: pick a side for the axis in the first two-shot and keep camera positions on that side until a move on camera crosses it.
- Budget duration before generating. Sum the rows. Run `bin/film_plan.py check assets/storyboard.csv` on your filled board: it totals runtime, flags missing continuity, and flags size monotony.
- Plan coverage for the edit: for each scene, at least one wide or long shot that shows geography, the dialogue or action coverage, and one insert or close-up you can cut away to when a generated take has a flaw in the middle.

### 4. Write per-shot prompts from the board, not from memory
Build each prompt from the row plus the bibles, in this order:
1. Continuity anchor block: the character text block copied word for word from the bible, plus the reference image IDs for that tool.
2. Shot size, angle, and camera move from the row.
3. Action: one present-tense action, with a start state and an end state.
4. Location anchor: location name plus its light and landmark facts.
5. Sound or dialogue line, if the tool generates audio, quoted exactly as written in the board.
6. Style lock line, copied word for word.
7. Negative constraints in plain words: what must not appear, what must not change (wardrobe, hair, prop hand).

Never paraphrase the anchor block between shots. Small wording drift is how a character ages five years between cuts. Generate two or three takes per shot, log the take you accept in the board, and record the seed or job ID where the tool gives one so a pick-up shot can be matched later.

First and last frame control, where the tool offers it, is the strongest join you have: use the accepted last frame of shot N as the first frame input for a continuous shot N plus 1. Use it for moves within a scene. Use a clean cut, not a frame chain, at scene changes.

### 5. Generate in scene order, review as scenes
- Generate scene by scene, not in board order across the whole film. Finish and approve one scene before spending on the next, because a bible fix in scene one changes every later prompt.
- Review each accepted take at full size for the common failures: face drift, extra or missing fingers, wardrobe colour shift, prop switching hands, text artifacts, background figures moving wrong, light direction flipping.
- Keep a rejects note with one line per failure type. If the same failure appears three times, fix the prompt block or the reference, do not keep re-rolling.

### 6. Assemble, then sound, then titles
- Assemble accepted takes in board order. When all clips share codec, resolution, and frame rate, join with the FFmpeg concat demuxer and stream copy. When they differ, normalise first (scale, fps, codec) and re-encode once. Commands are in `references/assembly-and-qa.md`.
- Picture lock before sound work. Then lay dialogue or narration, then effects, then music under dialogue. Normalise the final mix with the loudnorm filter; the FFmpeg filters documentation is the reference for its settings. State your delivery target in the project notes before mixing and measure against it, do not mix by ear alone.
- Titles and credits last, rendered from the locked treatment so names and the title match everywhere.

### 7. QA the cut as a viewer, then as a technician
Run both passes in `references/assembly-and-qa.md`:
- Viewer pass, full watch with no pausing: does the story read without the board in front of you, does the midpoint turn land, does the ending image match the treatment.
- Continuity pass, board in hand: check every cut against continuity in and out, wardrobe, props, screen direction, and light.
- Technical pass: resolution, frame rate, audio levels, no black frames, no frozen tail frames from a generation, captions match dialogue word for word if captions are delivered.
Any failed shot goes back as a pick-up with its original prompt block and reference set, logged as a new take. Do not patch a story hole with a title card.

## Output Contract
A completed production delivers:
1. `treatment.md`: the one-page treatment with logline, three act beats, midpoint, and ending image.
2. `bibles/character-bible.md` and `bibles/location-bible.md`, locked, with reference image files named to match.
3. `storyboard.csv`: every row complete, runtimes summed, accepted take logged per shot.
4. `prompts/shot-NN.md`: the exact prompt sent per accepted shot, anchor blocks intact.
5. `clips/` accepted takes named `shot-NN-take-K.mp4`, plus a rejects note.
6. `final/film.mp4`, a QA report filled from the checklist, and a delivery note stating aspect ratio, runtime, and that the film is AI-generated.

## Operating Rules
1. Accuracy: every claim about a tool (reference limits, clip length, audio support, resolution) gets checked against that tool's current official documentation or model card before the shot plan depends on it. Limits in this skill are examples from research on 2026-10-11, not promises.
2. No generation before the treatment gate and the locked bibles. Prompting first and storyboarding later is the failure this skill exists to prevent.
3. Anchor blocks are copied, never rewritten from memory. One source of truth per character, per location, per style line.
4. Rights and likeness: use only characters and references you have the right to use. No real person's face or voice without their clear permission. Do not imitate a living artist's named style as a selling point.
5. Disclosure: deliver the film labelled as AI-generated. Keep any watermark or provenance mark the tool embedded. Never present generated footage as shot on camera.
6. Spend control: approve scenes in order and cap takes per shot in the project notes before generating. If a shot fails the cap, the fix is a board or bible change, discussed as a production decision, not silent extra takes.
