Making a shot list from a reference video
StoryFolder —
Part of: A client sent you a reference video. Now what?
Last updated: 2 September 2026.
You have the client's finished reference and you want a row for every shot in it. Almost every shot-list tool you will find wants the opposite: a script, a blank board, or a prompt. The script ones and the prompt ones then propose shots that have never been filmed. The category you want takes a video file as its input and finds the cuts. StoryFolder does that on macOS and Windows from six local formats or a public URL, and one export writes Shot List.xlsx and Shot List.csv with a row per detected shot, elapsed timecodes, first and last frame numbers, an optional embedded thumbnail, and a column for each note field you switched on.
Two limits before you go further. StoryFolder finds hard cuts and hands you the rows, and it makes no judgement about how a shot was made, does not propose coverage you have not shot, does not schedule anything, and writes no EDL, XML, AAF or FCPXML. The spreadsheet export and custom fields are both on the Pro plan.
What kind of shot-list tool works from a reference video?
Sort the field by what goes in. Five categories turn up under the same search term and only the first one starts from a video that already exists.
| Category | Starts from | Produces | Right job | Wrong job |
|---|---|---|---|---|
| Video-first detector | A finished file or a URL | Detected shots with thumbnails, elapsed timings, note fields, exports | Documenting what is in a reference or a cut | Planning coverage for a shoot |
| Script or prompt builder | A script, a scene, a prose description | Proposed shots for footage nobody has filmed | Prep on a scripted job | Anything where the footage exists |
| On-set runner | A shot list you already made | Setup order, completion status, day management | Running the shoot day | Analysing a reference |
| Reference library | A search query | Frames from other people's films | Finding a reference | Breaking down the one you were sent |
| Video-to-prompt tool | A short clip | A text or JSON prompt for a generative model | Feeding an AI video generator | Handing a document to a crew |
The distinction is not academic. StudioBinder's shot list template is built around shots that are still to be shot, with columns for lens, gear and setup. Storyflow's own roundup of shot list tools describes its product as building from a script. Those are good tools aimed at the job before yours. If you drop a client's reference into one of them, you type every row yourself.
The test to apply to any candidate is short. Can I give it the video file rather than a description of the video? Does what comes out have a time on every row? Can I get those rows into a spreadsheet without retyping them?
Which tools actually accept a finished video as the input?
Very few, and they split into ones that watch a video to describe it and ones that read a video to segment it.
| Tool | Input | Output | Limit worth knowing |
|---|---|---|---|
| StoryFolder | Six local formats, or a public YouTube or Vimeo URL | Detected shots with thumbnails, timings, frame bounds, your own fields; XLSX + CSV, PDF, PNGs, MP4 clips, a share link | Hard cuts are what it detects; desktop only, macOS and Windows; spreadsheet export is Pro |
| Gemini | A video file or a public YouTube URL | Prose description, and whatever structure you prompt for | Google's video understanding docs say the API samples video at one frame per second, so a two-second shot contributes about two frames |
| Twelve Labs | Video, through an API | Whatever schema you define and prompt for | Developer infrastructure. You write the pipeline; check current pricing directly |
| Video-to-prompt tools | A clip or a URL | A generation prompt | Built to feed a generative model rather than a crew |
| Script-first builders | A script | Proposed future shots | Your reference is not an input at all |
The sampling difference matters more than it sounds. A general assistant looking at one frame per second does not see a whip pan, and it will miss most of a montage entirely. StoryFolder's analysis pass decodes every frame of the file, which is why it finds cuts a sampled read cannot. The comparison marks where the picture changes. It has no opinion about why.
That is the honest trade. If what you want is a paragraph interpreting the reference's tone, an assistant will give you one and StoryFolder will not. If what you want is 52 numbered rows with durations you can hand to a DP, the assistant will approximate them and StoryFolder will detect them.
What does StoryFolder put in the spreadsheet?
One export writes two files into a Shot List folder: Shot List.xlsx and Shot List.csv. There is nothing to convert afterwards and no separate CSV export to find. One row per detected shot, in order.
The columns come out in this order:
| Column | Present when | Value |
|---|---|---|
Frame |
Only if you also turn on the Images output | The shot's frame, embedded in the XLSX at 200 px wide |
Filename |
Only if you also turn on the Images output | Shot-<n>.png, matching the file the Images output wrote |
| One column per field | One for each shot-level field you left visible | Whatever you typed |
Start Timecode |
Always | HH:MM:SS,mmm |
End Timecode |
Always | HH:MM:SS,mmm |
Duration Timecode |
Always | HH:MM:SS,mmm |
First Frame |
Always | An integer frame number |
Last Frame |
Always | An integer frame number |
End Time |
Always | Raw seconds |
Four things about that table are easy to get wrong.
There is no shot-number column. The sequence number reaches the sheet only inside the Filename value, as Shot-12.png, and only when the Images output is on. If you need a numbered first column, add it in the spreadsheet.
The thumbnails come from the Images output, not from the spreadsheet. The XLSX embeds the PNGs the Images task wrote, so turning on Spreadsheet alone gives you a sheet with no Frame and no Filename column at all. Turn both on in the same export. The CSV never carries images, which is what the Filename column is for.
The timecodes are elapsed from the first frame of the file you imported. They are not source timecode, there is no reel, and there is no SMPTE frames field. A master that starts at 01:00:00:00 needs that hour added by hand. For anything sub-second, use First Frame and Last Frame, which are exact.
Only shot-level fields become columns. Anything you put in a video-level category stays out of the sheet.
The export is one-way. There is no path back in from a spreadsheet, so treat the file as a deliverable rather than as a working copy you intend to reconcile later.
Both the spreadsheet output and the ability to create your own fields are on Pro. The storyboard PDF, the images and the share link are on the free plan, with a watermark on every rendered frame and the PDF truncated to the free plan's shot limit. See what each export produces.
How do you get a trustworthy shot list out of automatic detection?
Import the reference, move the sensitivity slider if the whole board came back wrong in one direction, then split and join the individual mistakes before you annotate. That whole loop, including which cuts detection misses and what to do about them, is covered in what to do when a client sends you a reference video.
When do you still need a planning or on-set tool?
The moment the work stops being about the reference. Once the rows are agreed, everything downstream is a different shape of problem, and StoryFolder models none of it. There is no entity above a shot: no scene, no script, no shoot day, no unit, no crew, no gear list, no location record. The only order it knows is the order things appear in the video.
So you still want something else for:
- Script and scene linkage, if the new piece is scripted. StudioBinder and Celtx are built around that.
- Shoot order and call sheets. Nothing in StoryFolder groups shots into a day.
- Running the day. Shot Lister and similar apps exist to be held on set.
- Visual direction as a board. Milanote and Canva do a designed page in a way a fixed two-up PDF never will.
- Anything going back into an NLE. There is no EDL, XML, AAF or FCPXML writer, so a conform is out of scope.
None of that is a criticism of those tools or an argument that you should not use them. It is the boundary: the reference becomes rows here, and the rows go there.
When the PDF is enough, and when you need the spreadsheet
Use the PDF when the thing you owe someone is a visual document to look at. It prints two cards to a page on US Letter, portrait, with the shot number, start timecode, duration and frame range on each card and your filled fields underneath. It has no cover page, no header, no footer and no layout controls, so it is a shot document rather than a designed treatment.
Use the spreadsheet when the rows have to move: into a producer's own sheet, into a production system, into a tracker somebody else owns. That is the one that is on Pro.
FAQ
Does one export create both an Excel file and a CSV?
Yes. A single Spreadsheet / Shot List export writes Shot List.xlsx and Shot List.csv into the same folder.
Is there a Shot Number column?
No. The columns are the optional Frame and Filename, your chosen note fields, then Start Timecode, End Timecode, Duration Timecode, First Frame, Last Frame and End Time.
Can the Excel file contain thumbnails? Yes, if you turn on the Images output in the same export. The XLSX then embeds each shot's frame at 200 px wide.
Does the CSV use source timecode?
No. Every time value is elapsed from the start of the imported file, formatted HH:MM:SS,mmm.
Can StoryFolder export an EDL or FCPXML? No. There is no EDL, XML, AAF or FCPXML writer, and the spreadsheet export does not come back in.
What is the shortest shot automatic detection will find? Ten frames, which is about 0.42 seconds at 24 fps. A manual split has no such floor, so faster cutting can be added by hand.
Which file formats can I import? MKV, AVI, MP4, MTS, WebM and MOV, plus a public YouTube or Vimeo URL.