How to log footage without tagging every clip by hand
StoryFolder —
Last updated: 2 September 2026.
In an analysis of 813 storyboards from 295 paying StoryFolder customers, current to 1 September 2026, the busiest account had typed Client, Job# and Title 3,852 times each. That is 11,556 individual entries across 67 boards. Client and Job# are not judgements at all. The client is the same client for the whole board, and the job number was decided before anyone pressed record. The way out is to split the schema by who can answer each field: paste the board-wide facts down once, switch AI Autofill on for the per-shot fields a frame can actually answer (Content Type, B-ROLL, shot size, a usability rating), leave Only fill empty fields on, and review the board when the run finishes.
StoryFolder indexes the shots inside a video you import into it. It does not watch folders, catalogue a shelf of unplugged drives, batch a whole library in one run, or recover the keywords you typed into a project file three years ago. Job#, client approval and release status stay human-supplied, because a frame cannot know them. And AI Autofill is a Pro feature that sends frames to a server. The on-device story belongs to transcription, a different feature on a different path.
New in 0.4. AI Autofill now ships as a per-field switch on your own shot metadata, on StoryFolder Pro; a run sends one frame per shot to StoryFolder's server and on to a hosted vision model. What AI Autofill fills, and what it will not.
Why does footage logging keep getting skipped?
Logging costs you time now and pays somebody else back later, often a freelancer who joins in eighteen months. That asymmetry is why the field stays empty.
The same customer analysis shows both ends of it. One account carries 589 Animation notes: one repeated per-shot classification, typed by hand, hundreds of times. Another account has 53 boards of archive footage and zero notes on any of them: somebody wanted the visual index badly enough to build 53 boards and abandoned the metadata completely. A third encodes its whole taxonomy in board titles like Client_Footage_SELECTS_BROLL, because typing it per shot was too expensive to be worth doing.
The tools exist; they make you pay per shot. On r/editors in May 2025, u/OliveBranchMLP wrote:
"NLEs are super far behind when it comes to logging and managing media in the project bin, and it makes selects far more annoying than they need to be, especially for unscripted or documentary work."
Three moments send people looking. A backlog nobody has an honest plan to catalogue. A new hire who needs to find footage they did not shoot. And the reuse moment, where a client comes back for job four, half the b-roll already exists, and nobody can say where.
Which fields should AI fill, and which should you paste?
Ask a vision model only what one representative frame can support: Content Type, B-ROLL, shot size, camera move and a usability rating, held in Dropdown, Checkbox and Rating fields. Which fields it will attempt, and inside what domain, is the exact field-by-field Autofill contract. Paste or type the rest — Client, Job#, Release form and the folder the original file sits in — because no frame contains a business fact.
| Fill it with AI | Why it works | Paste or type it | Why AI should not |
|---|---|---|---|
Content Type (Dropdown: B-roll / Interview / GFX) |
Visible in the frame, closed option list | Job# |
An external identifier; it is constant per board |
Shot size, Camera move (Dropdown) |
Craft vocabulary, visible | Client |
Same — one value for the whole import |
B-ROLL (Checkbox) |
True or false about what is in shot | Release form |
A legal fact, not a visual one |
Talent present (Checkbox) |
Visible | Find in Folder |
A filesystem fact |
Usability Rating (1–5) |
A judgement about the image itself | Anything with contractual consequence | The cost of a plausible wrong answer is too high |
The reason that column split is safe is the domain constraint, and the constraint is per field type. A Dropdown answer must be one of its options; a Rating must be a whole number, 0 to 5; a Checkbox must be true or false; a Number must be a number, decimals and negatives allowed. Those four are genuinely closed, checked once on the server and again in the worker before anything is written. Tag and Text are open. A Tag field can gain a tag that was never on the list, deliberately, because a model that could only reuse existing tags could never add the first one. A Text field has no constraint at all, because a text field's domain is anything you could have typed into it.
So a Job# stored as a Text field is precisely where a model writes something that looks right and is not, with nothing in the path to catch it. Paste it.
The mirror-image mistake is worth naming too, because it is in our own cancellation data. One customer left with:
"All it does is capture screenshots and allow manual addition of notes. Thought that it filled in info/notes as well as screenshots. Disappointing."
Autofill answers that person. The new way to make the same mistake is expecting it to fill everything. It fills the fields you switched on, inside each field's domain, and every field ships with the switch off.
How do you set up automatic shot logging?
Six steps, and the first three are the schema rather than the AI.
- Import the video. The finished cut, the selects reel, or the b-roll reel, whichever one you would actually pull from again. A local
.movor.mp4works great, and 77% of paying-customer boards come from local files. See importing a local video file. StoryFolder finds the shots. - Create the fields. Settings → Notes & Data → Shot Metadata. Add
Content Typeas a Dropdown with the optionsB-roll,InterviewandGFX, andB-ROLLas a Checkbox. Six types are available: Text, Number, Tag, Dropdown, Checkbox and Rating. See custom fields and choosing a field type. Custom fields are Pro. - Switch Autofill on for those two rows only. Each field row carries its own toggle, and it arrives off. On a fresh install every field is off, and every field that existed before the feature shipped was explicitly written to off. Its tooltip reads "AI Autofill leaves this field alone. Click to let it fill this field." until you click it.
- Open the run. Select a shot, and use Autofill with AI… in the shot inspector, or right-click a shot and choose AI Autofill…. Until at least one field has the switch on, that action is not drawn at all.
- Set the scope and run it. The modal lists only the fields you enabled, each showing
model decideswhere a value would be. Set Apply to → All N shots, leave the write mode on Only fill empty fields, and use the optional Additional context box if the video needs framing; its placeholder reads "e.g. This is a cooking show — focus on the dish being prepared." A line above the button tells you the size of the run: "This run analyzes N shots and asks for N values." Per-field spinners appear on the board cards as answers land, and a Stop autofill button sits on any card with a run in flight. The run belongs to a background worker, so closing the window does not stop it. - Review, then use it. Filter the board on the field you just filled: pick the field, choose
is, and pick one value. WithContent Type is Interviewon, you are looking at only the shots the model calledInterview, so a b-roll frame among them is obvious, and correcting it is a click. Work the values one at a time. Then search, export a spreadsheet, or publish.
AI Discover fields takes a typed description of what you care about, like "cinematography and visual storytelling techniques", and proposes fields with names, types and options. It suggests the schema and writes no values. AI Vision Autofill writes values into fields that already exist. Accepting a discovered field does not switch autofill on for it; that stays a separate deliberate act.
And the model sees one shot at a time. A 300-shot board is 300 model calls, which is why Autofill on import is off by default in Settings → AI Autofill: one drag-and-drop should not quietly become hundreds of calls with nobody at the desk.
What happens when AI gets a tag wrong?
It writes the wrong value and it looks like you typed it.
Content Type = Interview on a b-roll shot is wrong, but Interview is one of the options you defined, so it passes the domain check on the server, passes it again in the worker, and lands in the cell. Autofill stamps a source of its own on every value it writes, but nothing in the app renders that stamp. An AI-written value is visually identical to a typed one in the panel, on the board and in every export. There is no staged accept step, and an autofill run creates no restore point, which is why the modal's own overwrite warning says "There is no undo."
Two habits cover it. Leave Only fill empty fields on, which is the shipped default, so a run can never replace something a person wrote. And correct by hand, on the pass through the board you were going to do anyway.
When an answer fails its domain check, it is dropped silently: no toast, no badge, no per-field note. From your chair the cell is simply still empty, and that is indistinguishable from the model having nothing to say about that shot. The same is true when a single shot's call fails. That shot is marked failed on the job, the run carries on, and the reason is stored but never shown.
How does the log become useful later?
The point of the fields is the question you ask two years later.
Search covers your library and reads two layers in one pass: the values in Text, Number, Dropdown and Tag fields, plus the transcript. It is plain substring matching, so harbour finds the shots where you typed it. Rating and Checkbox fields are filter chips instead. See searching your library. From there the board goes out as a spreadsheet with the fields you choose, as a storyboard PDF, or as a password-protected link for someone who does not have the app.
Because the fields live in the library rather than in a project file, a value you fill today still answers a question after the project is archived, and one filter reaches shots from forty different jobs.
When do you need a different tool?
When the question is about the file itself: which drive it is on, which volume, which folder.
Kyno browses media in place on the drive and hands off to an NLE with metadata attached. Fast Video Cataloger and DiskCatalogMaker catalogue offline drives, so "which volume is this on" is theirs to answer. iconik and axle.ai are asset managers with storage, proxies and permissions behind them. Silverstack sits at ingest on set, before any of this. StoryFolder is the layer before you need one of those: it indexes the shots inside a video you imported, and it does not manage your storage. (Competitor behaviour verified against vendor material on 1 September 2026.)
AI Autofill sends frames to the cloud
It does. A representative frame per shot is encoded and posted to StoryFolder's server, which calls a third-party vision model, and the feature requires a StoryFolder Pro subscription. Transcription is the separate case: it runs on-device with Whisper, your footage is not uploaded to transcribe it, and it is not paywalled. The two features sit next to each other in the app and behave nothing alike.
FAQ
Which field types can AI Autofill fill? Shot-scoped Text, Tag, Dropdown, Checkbox, Rating and Number fields. Dropdown, Checkbox, Rating and Number have closed domains; Tag and Text do not.
Can it fill a client name or a job number? A Text field will accept whatever it returns, but a frame cannot verify an external business fact, so paste those instead of autofilling them.
Will it overwrite notes I already typed? No. Only fill empty fields is on by default and skips any cell that already has a value.
Can it autofill my whole library at once? No. One run is scoped to one video, so a backlog is one video at a time.
Can I undo an autofill run? No. An autofill run creates no restore point, and the modal says so before you run it in overwrite mode.
Does autofill work on video-level fields like Client?
No. Only shot-scoped fields are offered in the run, and the write path is shot-level.
Does it work on Windows and Mac? Yes. StoryFolder is a desktop app for macOS and Windows. There is no Linux build.