How to make a shot list from a video that already exists

StoryFolder —

Last updated: 1 September 2026.

The cut is locked and somebody downstream wants a document: every shot in the video, a picture of each one, where it starts and stops, and spreadsheet columns for the things the person receiving it has to act on. To make one, import the video into the StoryFolder app. StoryFolder automatically detects shots and lets you add metadata to any shot, then export a spreadsheet with a thumbnail in every row and a storyboard PDF alongside it. StoryFolder does this from a local .mov or .mp4 on your own machine.

A rendered video file carries no original camera footage filenames, source timecode or handles, so it is not an EDL, XML, AAF or FCPXML, and StoryFolder imports and exports none of them. And since the shot detection is based on an algorithm (though, a smart algorithm), the detection should be reviewed if flawless shot coverage is required. Especially around dissolves or fast-moving and motion-blurred content. The spreadsheet, and the custom fields that become its columns, are Pro.

How is documenting a finished video different from planning a shoot?

Search for how to make a shot list and you get pre-production. Blank templates with columns for lens, setup and location. Guides written for the director in prep. Free spreadsheets laid out for a shoot day that has not happened. A dozen new AI tools that turn a script into shots. Planning invents shots that do not exist yet. Documenting inventories shots that already do, by looking at the picture and finding the cuts.

Planning a shoot Documenting a finished video
What you start with a script or a treatment one exported video file
What the tool produces rows for footage nobody has shot rows for footage that exists, found by detecting the cuts
Typical columns shot size, lens, camera setup, location, shoot day thumbnail, start, end, duration, frame range, plus whatever you are tracking
Who reads it the crew, on the day clearance, VFX, localization, the client signing off, the archive
Tools StudioBinder, Boords, Shot Lister, Celtx, Milanote, every free template PySceneDetect, ffmpeg's select='gt(scene,N)', Resolve Scene Cut Detection, Premiere Scene Edit Detection, Mux Shots, StoryFolder

The documenting side has been asking for this in public for a very long time. A Creative COW thread Cliff Stephenson opened on 10 September 2011 asks how to get a shot log out of Premiere with names, lengths and in and out timecodes: "As often as I have to do this, it seems weird that there isn't something widely available to generate a shot log from an edit." Jamal Al-asmi turned up on the same thread on 27 April 2013 with a delivery the next day and "hundreds of shots to log." Christine Cossu asked on 25 July 2014 whether anyone had found a solution. Nobody ever answered.

Two years earlier, on another Creative COW thread from June 2009, someone who had just finished a documentary explained why they needed the same file: "I need to compile an Archive Usage report for the Producers so that they can pay for what they've used." Most of these requests read like that. The document goes to a licensor, to an artist, to a translator, or onto the shelf beside the master.

Part of why the answers are so hard to find is that the artefact has no settled name. Shot list means the plan. Shot log means what somebody wrote down on set. EDL means conform data. Reverse storyboard is what the reference-analysis crowd calls it. There is no agreed word for a document of every shot in a video that has already been finished, which is why the question keeps getting asked and never accumulates an answer. I call it a shot document here for want of anything better.

What should a shot document contain?

One row per shot, in order, each with a thumbnail, the elapsed start and end, the duration, the first and last frame number, and then one column for each thing the person receiving it needs to act on. That last part is the whole point: a clearance list and a VFX work order are the same rows with different columns.

Which columns depends entirely on who is downstream. An r/Filmmakers thread from 21 April 2025 asks the craft version of this question: watching a finished scene, how do you actually write it down, including the case where the camera moves mid-take? It gets no useful reply. The best answers in practice come from the people already doing it. One StoryFolder customer documents finished pieces with a Scene field holding INT. LIVING ROOM – NIGHT, a Scene / Shot # holding 05 / 04, a Shot Type holding CLOSE UP SH., a Camera Movement holding STATIC, Transitions holding Cross Dissolve, and a Sound field reading Water, Dishes, Sink, Night Ambient. That is slugline discipline pointed backwards at footage.

How do you detect and correct the shots?

Import the file and let detection run, then correct what it got wrong: the sensitivity slider for a board that is wrong throughout, the suggested-cut ticks for boundaries the detector already suspects, and the split and join tools for everything else. Annotate whenever you like. Notes are keyed to frame numbers and survive a re-cut.

  1. Import the finished file. A local .mov, .mp4, .mkv or .avi is the normal path. See importing a local video file.

  2. Let Detecting Shots run. Every frame gets decoded and compared, and the board fills with one card per detected shot, each carrying its own thumbnail.

  3. Move the sensitivity slider if the whole video is wrong in one direction, with too many cards or too few. It re-cuts the entire board.

  4. Take the suggested cuts. With the Split tool active, cards show ticks where a second detector pass found a likely boundary inside that shot. One click takes it at the detector's own frame.

  5. Split and join the rest by hand. Click a thumbnail at the missed cut to split; hover a card's edge and click to fuse it with its neighbour.

  6. Annotate, once the boundaries are right.

The detector converts each frame into a fingerprint and compares each consecutive frame to the next. If the difference is over a certain threshold, a new boundary is placed and a new shot is detected. Boundaries must be at least 10 frames apart, which is about 0.42 seconds at 24 fps.

A cross-dissolve spread over twenty frames never trips that comparison, because no single frame in the dissolve differs much from the one before it. Fades behave the same way. A cut between two visually similar shots, like a shot/reverse in one room, falls under the threshold and is missed. A camera flash or a whip inside one continuous take does the opposite and gets reported as a cut that is not there. A three-frame flash cut cannot be detected at all and has to be added by hand. Audio is irrelevant to all of this; detection runs before any transcript exists.

PySceneDetect's own benchmarking issue has been open since April 2016. Mux's engineers were blunt about the ceiling when they wrote up their own shot detection: distinguishing a smooth transition from a true shot change "would require at least a basic understanding of the content of each shot." On the Blackmagic forum on 22 April 2019, isticism reported that a 15-minute ProRes HQ clip came back from Resolve's Scene Cut Detection 30 to 40 frames short and called the feature "professionally unusable for me as a feature."

Your notes attach to frame numbers rather than to shots, which makes the correction pass much cheaper than it sounds. Change the sensitivity and re-cut the board, and the values stay on the frames they were typed against. Merge two annotated shots and the merged card inherits both halves. So you can annotate before you are certain the boundaries are final, which is the order most people work in anyway.

How do you get the thumbnails, timecodes and notes out?

One export writes both Shot List.xlsx and Shot List.csv, so there is nothing to convert afterwards. Turn on Images in the same export as the spreadsheet: the thumbnails in the XLSX are read off the PNGs the Images task writes, so without it the Frame and Filename columns are not written at all.

The columns come out in this order: Frame, Filename, then one column for each shot-level field you switched on, then Start Timecode, End Timecode, Duration Timecode, First Frame, Last Frame and End Time. There is no shot-number column. The sequence number reaches the sheet only inside the Filename value, as Shot-12.png. The sibling article on exporting a shot list to a spreadsheet with durations goes through every column and the duration arithmetic. One formatting detail is worth knowing here: a Tag field arrives in the cell as a JSON array literal, ["Drone","Daylight"], brackets and quotes included, in both the CSV and the XLSX.

The time values are elapsed from the first frame of the file you imported, so a master that starts at 01:00:00:00 needs that hour added by hand. The format is HH:MM:SS,mmm, and hours, minutes and seconds are the part of it worth quoting. First Frame and Last Frame come through as integers alongside it.

If the deliverable is paper rather than a sheet, the storyboard PDF is the better artefact. Its per-shot strip prints a timecode to the frame, the duration to one decimal and the inclusive frame range under each thumbnail, with the shot's notes printed in full underneath. The export itself is one-way.

Which fields do you add for which delivery?

The rows are the same every time. The columns are what you build per job, as custom shot fields in one of six types: Text, Number, Tag, Dropdown, Checkbox and Rating.

Delivery Fields worth creating
General shot document Scene, Scene / Shot #, Shot Type, Camera Movement, Description
VFX work order for an artist VFX (checkbox), Shot ID (text), Status (dropdown), Complexity (rating)
Clearance and archive usage report Source, Rights holder, Licence, Archive ref, Cleared (checkbox)
Localization Super for on-screen text, plus the subtitle and transcript exports

For a localization handoff the useful export is the transcript CSV rather than a field: its start,end,shot,speaker,text columns key on the same shot number the shot-list images use, so a translator can join each line of dialogue to the thumbnail it was said over. SRT and WebVTT come out alongside it, transcription runs on your own machine, and the translate task moves the transcript to English only. Each cut is its own project, so a US and a German version are two shot lists compared by hand; there is no version diff.

None of these are features. There is no rights model, no VFX pipeline and no clearance engine underneath them. They are fields you name, holding values you type, printed into a document. That is less than a real system and more than what most people have, which is a spreadsheet somebody is maintaining by hand while watching a timeline. One paying customer uses exactly this pattern to track release-form status per shot.

Two flags narrow what gets exported: favourite and hidden. Mark the nine shots going to the artist as favourites, set the export to favourites only, and the XLSX, the CSV and the per-shot images all contain only those nine, renumbered from one. An active search or filter does not narrow an export, so use the flags.

What still needs another tool?

Original camera filenames, reel and source timecode all live in the timeline, and an exported file does not carry them. The Adobe Community thread asking for "a pull list of shots for our VFX artist with original file names" is asking for something StoryFolder cannot supply. For that half, export an EDL or XML from your NLE and run it through EditingTools.io or Sequence Clip Reporter, both of which read a sequence rather than a picture. No handles are added to the detected in and out points either. Comparing two cuts of the same programme is a manual job as well: import both and diff the two shot lists in the sheet. And StoryFolder itself needs a Mac or a Windows machine; there is no Linux build.

Can you do this without paying?

Not the spreadsheet. Shot-list and spreadsheet export is a Pro feature, and so is creating the custom fields that become its columns. The free plan exports the storyboard PDF and per-shot images with a watermark, and caps you at 12 shots per board across 3 boards. Plans move, so check the pricing page rather than this paragraph.


FAQ

Can StoryFolder read a Premiere or Resolve timeline? No. It reads one finished video file and imports no EDL, XML, AAF or FCPXML.

Why does shot detection miss dissolves? It compares each frame with the one before it, and no single frame inside a gradual dissolve or fade differs enough to cross the threshold. Add those cuts with the Split tool.

What is the shortest shot that can be detected automatically? 10 frames, roughly 0.42 seconds at 24 fps. Anything shorter has to be split in by hand.

Does changing sensitivity delete my notes? No. Metadata is keyed to frame numbers rather than to shots, so re-cutting keeps your values and a merged shot inherits both halves.

Is the timecode in the spreadsheet source timecode? No. It is HH:MM:SS,mmm elapsed from the first frame of the imported file, with no reel and no SMPTE frames field.

Does one export produce both XLSX and CSV? Yes. Shot List.xlsx and Shot List.csv are written together, and the XLSX embeds a thumbnail per row when Images is enabled in the same export.

How does a Tag field appear in the spreadsheet? As a JSON array literal, for example ["Drone","Daylight"], in both the XLSX and the CSV.

← All articles