Exporting a shot list to a spreadsheet with durations
StoryFolder —
Part of: How to make a shot list from a video that already exists
Last updated: 1 September 2026.
"I'm up against the wall with a delivery tomorrow and there are hundreds of shots to log." Jamal Al-asmi posted that to Creative COW on 27 April 2013, on a thread Cliff Stephenson opened in 2011 because he was delivering a project to a studio and needed a shot log with names, lengths and timecodes. Christine Cossu turned up on 25 July 2014 asking the same thing. Nobody ever answered.
If you have a finished video file, use StoryFolder, a tool that writes an XLSX and a CSV of every detected shot with start, end and duration, along with other customizable metadata.
If you have a timeline, export an EDL or XML and push it through EditingTools.io or Sequence Clip Reporter, which can carry original clip names that a video file simply does not contain. For durations, take the frame integers over the timecode string and do the arithmetic in the sheet.
Detecting the shots and correcting the boundaries first is the pillar article's job, and that pass is the same whatever the sheet is for.
What can't a video-derived shot list give you?
StoryFolder detects the edits in a rendered video file. That file carries none of what a conform needs: original camera filenames, reel, source timecode or handles. One source file goes in, so one filename comes out, and the timecodes are elapsed from the first frame of the file you imported. If your deliverable is a pull list an online editor will key off, you want the EDL route. That is what Gutbucket62 asked for on an undated Adobe Community thread: "a pull list of shots for our VFX artist with original file names." The sibling article on exporting a shot list with original file names is about that boundary in full.
Which tools can export a finished video's shots to a spreadsheet?
Everything below documents a video that exists.
| Tool | Input | Spreadsheet output | Thumbnails | Original footage names |
|---|---|---|---|---|
| StoryFolder | video file | Shot List.xlsx and Shot List.csv, both written every export |
Yes, embedded per row in the XLSX when Images is on | No |
| PySceneDetect | video file | CSV scene list, command line (detect-adaptive list-scenes save-images) |
Separate image files, not embedded | No |
| Premiere Scene Edit Detection | sequence | None; you get cuts, subclips or markers | No | Stays in the project |
| DaVinci Resolve Scene Cut Detection | video file | Timeline splits; the escape is Edit Index → CSV | No | No |
| Mux Shots | video file, via API | JSON plus a WebP per shot | Per-shot images, developer-facing | No |
| EditingTools.io Edit Shot List | EDL or XML | CSV, JSON, PDF, TXT | No | Yes |
| Sequence Clip Reporter | FCP/Premiere sequence | Shot sheets with stills, timecode, clip names and filepaths | Yes | Yes |
Resolve's Scene Cut Detection needs a Studio licence, and its accuracy drew complaints in 2019: isticism reported on the Blackmagic forum on 22 April 2019 that a 15-minute ProRes HQ clip came back 30 to 40 frames short, calling the feature "professionally unusable for me as a feature." Mux is usage-priced and aimed at developers. Check current pricing at the source.
A video file yields shot boundaries, durations and thumbnails but never original clip names; a timeline yields clip names and source timecode but needs an EDL or XML export first. Choose the tool that matches the input you actually have, then verify durations against frame numbers rather than a timecode string.
What columns should the spreadsheet contain?
| Column | Value | Present when |
|---|---|---|
Frame |
the embedded thumbnail sits over this cell | only with Images enabled |
Filename |
Shot-1.png, Shot-2.png, … |
only with Images enabled |
| your field titles | one column per shot-level field you switched on | always, for chosen fields |
Start Timecode |
HH:MM:SS,mmm, elapsed |
always |
End Timecode |
HH:MM:SS,mmm, elapsed |
always |
Duration Timecode |
HH:MM:SS,mmm of the shot's length |
always |
First Frame |
integer | always |
Last Frame |
integer | always |
End Time |
seconds as a float | always |
Every shot-level field you create becomes one of those middle columns, in whichever of the six types fits: Text, Number, Tag, Dropdown, Checkbox and Rating. Which fields a job wants depends on who is downstream, and the pillar article on making a shot list from a video that already exists maps deliveries to schemas in full.
AI Vision Autofill fills the fields you switch it on for, one field at a time, and every field starts with that switch off. A Dropdown is held to its own options, a Rating to a whole number and a Checkbox to true or false, so none of the three can come back with something that was never valid. Tag and Text are open, which is why an Archive ref or a Job# is exactly where a model writes something plausible and wrong. Read those two column types before you trust them.
Spreadsheet export, the custom fields that become its columns and Autofill are all Pro. Both files land in the same folder from one export. You do not open the XLSX and re-save it as CSV; the .csv is already sitting next to it. The export itself is one-way.
Two formatting details will bite you in Excel. Checkbox fields arrive as real booleans, and ratings as integers 1 to 5, so both sort and pivot cleanly. Tag fields arrive as a JSON array literal in the cell: ["Drone","Daylight"], brackets and quotes included. Split on "," or strip the brackets with a formula before you try to filter on a single tag.
How do you calculate exact shot durations in Excel or Sheets?
Use the frame columns:
duration in seconds = (Last Frame − First Frame + 1) ÷ frame rate
Put your project's frame rate in a cell and reference it, so a 23.976 project and a 25 project use the same sheet. First Frame and Last Frame are integers, and the + 1 is there because both bounds are inclusive: a shot that runs from frame 100 to frame 100 is one frame long, not zero. The same frame count divides to a different length at 23.976 than it does at 24, which is why the frame rate belongs in a cell rather than in the formula.
Keep the seconds column unrounded and format the display instead, so a total across two hundred rows does not drift by a second against the video.
Why not just parse Duration Timecode? Because hours, minutes and seconds are the part of that string worth trusting. It is HH:MM:SS,mmm with a comma before the milliseconds, and those milliseconds are not a precision promise. The frame columns are what the formula above reads.
Two more things about that string. It is not SMPTE, so there is no :FF frames field to read. It is elapsed time from the start of the file you imported, so if your master starts at 01:00:00:00, every number in the sheet is offset by an hour and you will need to add that offset yourself.
How do thumbnails get into Excel?
Turn on Images in the same export. The XLSX then embeds a 200 px-wide PNG in every row and sets the row height to match; without Images, the Frame and Filename columns are not written at all. The CSV never carries pixels, whatever you do — its Frame cell is empty by design.
Read how the image export works if you want the frame each thumbnail is taken from to be one you chose.
FAQ
Does one export create both an XLSX and a CSV?
Yes. Shot List.xlsx and Shot List.csv are written together from the same export, so there is nothing to convert.
Which column stores the duration?
Duration Timecode, formatted HH:MM:SS,mmm. There is no duration-in-seconds column.
What happens to numbering if I export only my favourites?
The filtered shots are renumbered 1..n in the export, so Shot-1.png is the first favourite rather than the first shot in the video.
Does the CSV include thumbnails?
No. Only the XLSX embeds a 200 px-wide PNG per row, and only when Images is enabled in the same export; the CSV's Frame cell is empty.
Does the shot list include shot numbers?
There is no shot-number column. The sequence number appears only inside the Filename value, such as Shot-12.png, and only when Images is on.
How are tag fields written into a cell?
As a JSON array literal, for example ["Drone","Daylight"], in both the XLSX and the CSV.
Does any StoryFolder export print a timecode to the frame?
The storyboard PDF does. Its per-shot attributes strip prints Shot, Start in m:ss:ff, Duration to one decimal and an inclusive Frames range.
Is a video-derived shot list ready for a conform? No. It carries elapsed timecode and frame ranges, not reel or source timecode, handles, or original camera filenames.