Skip to main content
A worked example for AUTHORING.md. The input is ordinary spec-format script pages; the output is the shot list. The interesting part is not the syntax, it’s where the cuts land and why. (Packaged with the script-writing skill as references/script_conversion.md by python tools/make_prompts.py.)

The source

What the series config absorbs first

Before any shots, the character introductions leave the script entirely. FILBERT (9), wiry, lost in his own imaginary world. Dressed as a Knight. becomes a series config entry, and note what survives the translation and what doesn’t:
“lost in his own imaginary world” is gone. It’s characterisation, not appearance: the model can’t draw it, and it would displace detail that it can. The knight costume, however, gets expanded, because the screenplay could say “Dressed as a Knight” and trust a costume designer. The prompt can’t. On a target that takes no reference pictures, this sentence is the whole costume. Tracy needs an entry too, but only a voice: she is heard and never seen, so she needs no sheet and never occupies a reference slot. Two locations, both at night:

The breakdown

The first paragraph reads as one continuous move, so it’s one shot: the push in is the shot, and cutting mid-push would throw away the thing the writer asked for. The kitchen scene is four shots, and the reasoning for each split is what matters:

Why the cuts fall there

sh020 is its own shot because the screenplay gives the ball its own sentence before revealing whose hand it is. That reveal only works if the ball is alone in frame first. It’s also the cheapest shot in the scene: 2.33s, one prop, no characters. sh030 cuts rather than pulling out from sh020, because the subject genuinely changes: ball to boy. A pull-out would work too, but then the ball snatch and the reveal share a shot and the joke lands softer. sh040 cuts because a new person enters and speaks. Becky gets a wide, not a medium: the width is the joke, since the point is how much room there is between her and what Filbert thinks is happening. sh050 cuts back to Filbert even though Tracy is the one talking. Tracy is (V.O.), a phone voice from another house. She is never drawn and costs no reference slot. Cutting to Filbert’s face under the line is what makes it funny; cutting to Becky would just be watching someone listen. Nothing became a camera move that should have been a cut, and vice versa. The push-in in sh010 stays a move because the framing changes but the subject doesn’t. The ball-to-boy transition stays a cut because the subject does.

Targets and keyframes

The script names no target:. Every shot here works on the default (H3 Ref2VA, with Filbert’s and Becky’s sheets as reference pictures), and leaving it out means the episode can be moved to another model from the editor without touching the script. first: generate under # sq02 matters only on a target that reads keyframes (H3 FL2VA, LTX-2, Wan, and the hosted models that take a first frame): each shot opens on a still drawn from its own description (the default anyway). None of these shots says continuous: first, because every cut in this kitchen changes the subject or the size: sh030 must not open on the previous shot’s close-up of a counter. Continuity (continuous: first, or continuous: latent on H3 Ref2VA) is for a shot that picks up the previous one’s picture; this scene has none. sh010 is a good candidate for dur: model on LTX if you don’t care exactly how long the push-in runs; the dialogue shots keep their dur:, because the lines need their room.

What got dropped, deliberately

CUT TO: disappears: every ## is already a cut. FADE IN: / FADE OUT. disappear entirely. A fade is an edit decision. If it were in the prompt, the video model would render the fade into the clip and you could never change your mind in the timeline. Generate clean handles; dissolve at conform. The parenthetical (into phone) survives, but inline: BECKY (into phone):. Spec format puts it on its own line; this format doesn’t. WE OPEN on and We push in closer move from the action prose into the camera: line, where they belong. Anything phrased as a camera instruction in the source should end up there, not in the action.

Shot IDs

sh010, sh020, sh030: tens, so sh035 can be inserted later without renumbering anything. This matters more than it looks: seeds are derived from episode, sequence and shot ID, so renumbering a shot changes its seed and invalidates every render of it.