Module 2. Your idea becomes a script, and your script becomes a shot list, as a file with structure, not a document you retype into a prompt box thirty times.
The generation is only ever as good as the thing you asked for.
Most people skip this and pay for it later: they prompt shot by shot, out of their head, and by shot fourteen the character has drifted, the look has drifted, and there is no document anywhere that says what it was supposed to be.
Every serious course in this field opens on story. Not because it is romantic, because it is the only thing that makes the next four modules cheap.
A prompt you typed once and cannot find again is not a decision. It is a lucky accident you are now trying to reproduce from memory.
You almost never start from nothing. You start from a brief, a reference, a client's half-sentence, or a shot you saw and want to steal the feeling of.
Put that in the folder. A .txt, a PDF, a screenshot, notes you dictated badly, it does not need to be tidy.
"Read everything in ./brief. Tell me back what you think we're making, who it's for, and what the one feeling is. Where the brief is vague or contradicts itself, say so instead of smoothing it over."
That last clause is the whole slide. A model asked to summarise will paper over a gap. A model asked to find gaps will find them.
The fastest way to a brief you can use is not typing one. It is being asked.
"Interview me about this. One question at a time, hardest first. Stop when you have enough to write a treatment I'd actually recognise."
One question at a time matters. A list of twelve questions gets three lazy answers; one question at a time gets twelve real ones.
When the treatment is right, it goes on disk. story/treatment.md. Then the script beside it.
Because it is a file:
This is the difference between using a chat tool and running a pipeline.
Now the move the rest of the course stands on:
"Break the script into shots. Write it tostory/shots.json. One object per shot with:id,scene,description,character,location,time_of_day,camera,duration_s,prompt,status. Leavepromptandstatusempty, we'll fill those in the next module."
You now have a shot list that a machine can act on. Not a table you read and retype, a file that the image module reads, the video module reads, and the edit reads.
| A prose shot list | A structured one |
|---|---|
| You read it and retype into a prompt box | The next module reads it and generates from it |
| "Shot 12ish, the alley one" | id: 12, unambiguous, forever |
| Changing the look means editing 30 paragraphs | Change one field, regenerate the affected shots |
| No idea which shots are done | status tells you, and tells the pipeline |
| A client note means starting over | A client note changes one row |
This is the file that makes the unattended pipeline possible. Twenty platform cuts, delivered while you sleep, all tracing back to these rows.
While you are in the script, name the things that must not drift:
"Pull every character and every location out of the script into story/bible.json, one entry each, with the details that have to stay identical across shots. Flag anything the script never actually specifies."
The flags are the valuable part. The script never said what colour her coat is, so every generation will invent a different one. Decide it now, once, in a file, or discover it across thirty shots.
Fifteen minutes, on something real. Not a practice idea.
./brief, even one messy paragraph./brief, tell me what we're making, and name what's missing."story/treatment.md."story/script.md."story/shots.json, fields as listed, prompt and status empty."story/bible.json. Flag what the script never specifies."Then open shots.json and read it. If a row is wrong, the fix is one row, that is the point.
story/treatment.md: what you are making, in language you recognisestory/script.md: the thing itselfstory/shots.json: every shot, as data, ready to generate fromstory/bible.json: what must not drift, decided onceYou have not generated a single image yet, and you are already ahead of where most people are at shot thirty.
Image. Stills first, always, the look, the frames, and a prompt library that fires twenty variants off the shot list you just built and keeps the ones that worked.
Verified against Claude Code 2.1.220 · 2026-07-30.