How to build a shot list that survives contact with AI generation

A shot list that works on a live set will collapse the moment you start generating. Here is how to plan coverage that accounts for what current AI video models actually give you.

By Leeby Shmeeby

You wrote the shot list. You know the scene: an establishing wide, a clean two-shot, a close-up on the object, a reaction. It is a perfectly reasonable coverage plan. Then you start generating and the wide gives you a camera move you did not ask for, the two-shot has an extra arm growing from the table edge, and the close-up is technically beautiful but belongs to a completely different lighting world. You are now cutting around wreckage, not assembling footage, and you are burning credits faster than you budgeted.

The problem is not that you planned badly. The problem is that a traditional shot list is a document about intention, and AI generation is a document about probability. What you write is a request. What you get is a best-guess render of that request, shaped by whatever patterns the model weighted heavily this week. A shot list built for a live crew assumes that a human operator will problem-solve in real time. A shot list built for AI generation has to do that problem-solving in advance, before the first credit is spent.

How to build a shot list that survives contact with AI generation

Treat every shot as a variable, not a given

On a real set, you can shoot the wide and know it exists. With AI generation, a shot does not exist until you have a usable take in a folder. That shifts the entire logic of planning. Instead of listing what you intend to shoot, list what you need to be true for the scene to cut together, and then work backwards to the minimum number of shots that could prove each of those things.

For a simple dialogue scene, the structural needs might be: establish the space, show both characters sharing it, isolate each face for reaction. That is three functional needs. A traditional shot list might balloon that into seven shots. An AI-aware shot list keeps it at three and plans two prompt variants per shot, so you have an alternative ready without going back to zero.

Write shot functions, not shot names

Instead of labelling a shot "OTS right" or "MCU," label it by what it must accomplish in the cut. This changes how you write the prompt and how you evaluate the result.

```
SHOT FUNCTION: Establish that she is alone in the room
MINIMUM READABLE DURATION: 3 seconds static
CRITICAL DETAILS: single figure, full room visible, no other faces
ACCEPTABLE FAILURE: soft focus on background, minor lighting shift
UNACCEPTABLE FAILURE: second figure, camera drift that reveals a door crew
PROMPT VARIANT A: wide shot, woman seated at wooden table in a small kitchen, daylight from a single window left frame, static camera, 35mm
PROMPT VARIANT B: high angle wide, woman alone at kitchen table, still camera, overcast natural light, film grain
```

When you generate, you are not asking whether the shot is good. You are asking whether it fulfils its function. That is a binary question and it stops you spending twenty minutes falling in love with a take that cannot cut to anything you have.

Plan your coverage in dependency order

Some shots only work if another shot already exists. A close-up on an object only lands if the wide has already shown us where the object lives in the space. A reaction shot only reads if the action it reacts to is already cut.

Before you generate anything, map the dependencies in your shot list.

```
1. WIDE (no dependencies, generate first)
2. TWO-SHOT (depends on wide matching lighting world)
3. INSERT, object on table (depends on wide establishing table position)
4. CU face A (depends on two-shot establishing eyeline)
5. CU face B (depends on CU face A establishing screen direction)
```

If you generate out of order and the two-shot fails, you will not know until you try to cut it next to the wide you already love. Generating in dependency order means every failure is caught before you have built a house on top of it.

Budget a regeneration allowance per shot

Each line in your shot list should carry an honest credit budget. One usable take is the goal, but usable takes do not always arrive on the first generation. A realistic line item looks like this:

```
SHOT: CU face, reaction to letter
PRIMARY BUDGET: 2 generations
FALLBACK BUDGET: 1 generation of variant B prompt
CUT-AROUND OPTION: use end frame of two-shot, push in post
MAXIMUM SPEND: 3 generations, then cut-around
```

Deciding the maximum before you start is the only thing that prevents the slow credit bleed that comes from telling yourself one more try.

Keep a live shot status document

Your shot list is not a planning document. It is a live production document. Every shot should have a status that you update as you generate.

```
SHOT | STATUS | TAKE FILE | NOTES
Wide kitchen | LOCKED | wide_v3.mp4 | Use from 0:02, drift starts at 0:09
Two-shot | IN PROGRESS | — | v1 has table artefact, v2 generating
Insert, letter | LOCKED | insert_letter_v1.mp4 | Clean, holds 4 seconds
CU face A | NOT STARTED | — | Waiting on two-shot lock
```

This takes five minutes to maintain and saves the confusion of returning to a project after two days and not knowing which takes are final and which are the ones you were unhappy with.

When you open your next project, write the shot function for every setup before you write a single prompt. The list will be shorter than you expect, the prompts will be more accurate, and the cuts will be waiting for you rather than fighting you.