How to catalog b-roll across multiple clients
StoryFolder —
Last updated: 2 September 2026.
A producer asks whether you still have the drone shot of the loading dock from the job you shot two summers ago. The project is archived, the person who cut it has left, and what survives is a job number and a rough memory of a folder name.
To make that answerable, leave the media where it lives and build one small schema around the business: Client, Job#, Location, Content Type, and a text field holding the folder the original sits in. Import the piece you would actually reuse, and those fields land on every shot in it.
Custom fields are a Pro feature. StoryFolder finds the shots in whatever you import — the finished cut, or the selects and b-roll reel — and the fields live in the library, so one search box reaches the shot fields and the transcript across forty different jobs, while video-level fields like Client gate whole projects with a filter chip and answer to the search box as well.
StoryFolder keeps its own database and points at your file where it already sits. That is why the index still works with the drive unplugged, and why it never knows which drive that is. It does not manage storage, watch folders, ingest in batches or catalogue a shelf of unplugged externals. When the real question is "which volume is this on," that is what NeoFinder and DiskCatalogMaker are for.
New in 0.4. Collections hold hand-picked shots across videos, quick filters save the searches you rerun, video-level fields carry Client and Job# on the project, and a desktop assistant can now search the library for you. The library controls · connecting an assistant.
Why does b-roll become unfindable when a project closes?
Your keywords live inside the file that created them, so the edge of that file is the edge of your search. Frame.io's own Workflow Guide states it and then gives advice that only works if your unit of work is one production:
"Content metadata does not live with the file. It exists only in an NLE or Media Asset Management System (MAM)." "For this reason, it is always best to remain within one NLE from beginning to end of the project." — Frame.io Workflow Guide, managing metadata
"Remain within one NLE" is fine advice for one job and no help at all across forty jobs and four years. The NLEs are consistent about where the boundary falls:
| Where you typed it | What a search reaches |
|---|---|
| Premiere clip metadata | The open project. Adobe's own documentation says clip metadata "exists only within your Premiere project file". Embedded XMP does travel with the file, but Premiere will not search it until the media is re-imported, and the Media Browser matches filenames. |
| Final Cut Pro keywords | One library at a time. Keyword ranges are the best ergonomics in the category and they live inside the .fcpbundle. Studios keep a library per client, which puts every client behind a different door. |
| Resolve Smart Bins | One project. Power Bins reach across projects inside one database, and are curated by hand; a bin cannot be both. |
| Avid search | "All the bins in the current project." Crossing projects means MediaCentral. |
| StoryFolder | The library. Fields are defined once and appear on every video you import, and a value is stored against a frame number in the app's own database. |
Cross-library search has been Final Cut's most-asked-for feature for years. Item #28 on fcpx.tv/top asks for "a single master searchable database across all previously opened Libraries." On the Adobe forums in 2020, teachersam compared the situation to Lightroom's single catalogue and called opening and closing every project from the whole year "really annoying." On the Blackmagic forum in 2024, MartyMc, wanting a central repository independent of any one project, worked through subclips, rejected them as project-bound, and then asked the question everyone asks eventually: does a pointer-based library still mean anything after you unplug the drive.
Which metadata fields make client footage reusable?
Eight fields answer almost every question a producer will bring you in two years: who the job was for, which job it was, where it was shot, what kind of material it is, who is on camera, whether you are cleared to reuse it, where the original file lives, and whether it is any good. Fields you will not fill are worse than fields you do not have.
The evidence for that shape is repetition. In an analysis of 813 storyboards from 295 paying StoryFolder customers, the single busiest account had built exactly this schema and filled Client, Job# and Title 3,852 times each. One client's name accounts for 2,046 of those values and a second for 1,528. A B-ROLL field was filled 828 times. Alongside them sit Location (town and state), Content Type, Talent Name, and a field named Find in Folder, whose most common value was typed 38 times.
A practitioner template, not something the app ships with:
| Field | Type | Lives on | The question it answers |
|---|---|---|---|
Client |
Dropdown | the video | Whose job was this? |
Job# |
Text | the video | Which job, in your own numbering? |
Content Type |
Dropdown | the shot | B-roll, interview, GVs, drone? |
Location |
Text | the shot | Where was this shot? |
Talent Name |
Text | the shot | Who is on camera? |
Release form |
Checkbox | the shot | Are you cleared to reuse it? |
Find in Folder |
Text | the shot | Where does the original file live? |
Rating |
Rating | the shot | Is it any good? |
Six field types ship: Text, Number, Tag, Dropdown, Checkbox and Rating. A category decides whether its fields attach to the video or to each shot, so Client is typed once per import while Location varies down the board.
What a new library ships with is a category called My Notes holding twelve text fields: Key Takeaways, Interpretation, Story, Messaging, Emotional tone, Symbolism and the rest. Those are ours, not a customer's, and they are built for taking apart a film rather than for running client work. Building your own schema is the first thing you do, and creating a category and its fields takes a couple of minutes.
Keep it small, because the failure mode is well documented. No Film School's tagging guide, still the canonical Premiere piece, said so in 2019: "It will take you forever to add tags to your clips. That's just a fact." And on Creative COW in 2015, Mark Raudonis put the objection in four words: "Logging metadata is NOT editing!"
So the filling has to cost close to nothing per shot:
- Import the piece you would reuse. The finished cut or the selects reel, not every card from the shoot. A local
.movor.mp4works great, and in that same analysis 77% of paying-customer boards came from local files rather than a URL. See importing a local video file. - Create the fields once. Settings → Notes & Metadata → Shot Metadata,
+ New category, then add fields to it. You can also right-click a category in the shot inspector and add a field without leaving the board. See custom fields and choosing a field type. - Put the once-per-job answers on the video.
ClientandJob#go in the Video Metadata pane, where you type them one time for the whole import instead of once per shot. - Select shots and edit them together. One panel serves any selection, and a field the selected shots disagree on reads
Mixed · N values. This is what makesContent TypeandFind in Foldercheap: a whole run of shots from one folder gets one value in one gesture. Tag fields are the exception and edit one shot at a time, so keep the taxonomy in a Dropdown if you want it filled. - Fill one shot properly, then paste it.
Copy notes & metadataon a good shot, thenPaste notes & metadata, chooseAll N shotsand leave the write mode onOnly fill empty fields. Existing values are never touched, and empty fields are never copied over anything.
That gets Client, Job#, Content Type and Find in Folder onto a 400-shot board for a few gestures each. Location, Talent Name and a Rating are the ones that genuinely cost you time, because they change shot to shot. Fill those on the shots you would actually pull again and leave the rest empty; an empty field still filters as empty.
How does Find in Folder make an archive searchable?
The Library's search box covers the video title and description, the shot fields you can type into, and the transcript. It does not cover the file path. A customer worked that out and did the obvious thing: made a text field, typed the folder name into it, and turned an unsearchable path into a searchable value. Find in Folder is a workaround, and it is the right one.
Specifically, the search box matches plain case-insensitive substrings against:
- the video's title and description;
- every shot-scoped field of type Text, Dropdown, Tag or Number;
- the transcript segments overlapping each shot.
Ratings and checkboxes carry no text to match, so they are reached with a filter chip instead. Video-scoped fields such as Client are read by the box like any other text, dropdown, tag or number field, so typing a client name brings back the projects it is filed against as well as the shots that mention it. The folder locator stays a shot text field for a different reason: the box does not read filenames or paths, so somebody has to type the folder name into something.
Results come back grouped under the video that owns them, and each one tells you why it matched, using the field's own label and the matching value. Search harbour inside a folder holding a year of jobs and you get a row reading Location · Harbour Point under one project and Find in Folder · Harbour Refit finals under another, because the search matches the substring wherever it sits in the value. The box covers where you are standing: a folder and everything nested inside it, or, from the library root, the whole library.
Type a folder name you would actually recognise rather than a full path. StoryFolder records one absolute path per import for its own use and nothing about the volume that path was on.
How do you search across clients without opening every project?
Search from the library root and you're already across the whole library. What a quick filter buys you is reuse: save the query once and it becomes a card in the rail with a live count that re-runs as the library grows. A folder still covers itself and everything nested inside it, so step up to the root if a client's work is scattered across several; what each search destination covers sets out the rest.
A useful query crosses the two scopes. Client is Northline Dairy is a video field, so it gates whole projects; Content Type is B-roll is a shot field, so it selects inside the projects that survived. Filters are ANDed, one per field, and the chips read as sentences: Location contains harbour, Rating is at least 4, Release form is true. The count line above the results reads like 47 shots in 6 projects.
For picks that no filter describes, there are collections: hand-picked bins of shots drawn from any number of videos, which is the nearest thing in the product to a Power Bin. A collection survives you re-cutting the video later, and nothing in it is destroyed when shots are merged or split. Add to collection takes one shot per invocation.
A desktop assistant can do that search for you, in one call across every project: Claude Desktop, Claude Code, or ChatGPT through Codex. It reads the running app, so StoryFolder has to be open, and its edits land in version history badged as its own. The search_frames tool it calls omits the project entirely and searches every project not in the Trash at once, across metadata and transcript together, and each match names its project. That is the shape of asking an assistant to search across projects.
What survives when the drive is unplugged or the shots are re-cut?
The index does. A local import is never copied into the app, so when the file moves, is renamed, or the drive goes back on the shelf, the project keeps browsing from its cached frames and proxy and tells you what happened:
"The original video file for this project can't be found. It may have been moved, renamed or deleted — use Locate File to reconnect it."
Locate File… accepts a replacement on a duration match, so a re-encode or a remux of the same cut reconnects while a different video is refused.
Re-cutting is safe for the same underlying reason. Values are keyed to the frames you put them on, because shots are re-derived from scratch every time you move the sensitivity slider or split and join something. Drag sensitivity across the whole board and your notes are still on the frames you put them on.
When has this workflow outgrown a visual index?
Three things send you past this layer: watch folders and batch ingest, since StoryFolder imports one video per drop; proxies your NLE can actually cut with; and two people on one library at once, since the database is a local SQLite file with no sync layer behind it. Where exactly that threshold sits, and what the alternatives cost, is its own argument.
There is a second reason this layer exists at all, which is that transcripts do not see b-roll. The open-source arkiv project indexed a real 1,506-clip production library in which 1,161 clips carry no dialogue. A tool that searches only what was said reaches under a quarter of that library, which is why typed fields on a picture still matter.
What can you hand to someone else?
Three things: a spreadsheet with a thumbnail in every row and a column per field, a storyboard PDF, and a published link. The spreadsheet is the one producers ask for, and it is a Pro export. See exporting a spreadsheet and publishing a link. None of them carries the media or the searchable database with it.
FAQ
Does StoryFolder store my b-roll files?
No. A local import stays exactly where it is on your disk; the app writes its own cached frames and a proxy for browsing, plus a database.sqlite holding your metadata.
Can StoryFolder tell me which hard drive a clip is on? No. It records one file path per import and nothing about the volume. Cataloguing offline drives is what NeoFinder and DiskCatalogMaker do.
Which metadata field types can I create? Six: Text, Number, Tag, Dropdown, Checkbox and Rating, where a rating is 1 to 5 stars and clearing it means unrated rather than zero.
Can I set Client on forty videos at once?
No. Library selection is one video at a time, so a field that spans many imports is typed per video. Multi-select editing works within a single project.
Can I search transcripts and custom fields in one box? Yes. The Library search box matches metadata fields and transcript in one pass and tells you which one produced each hit, across your whole library from the library root, or within a folder and everything nested under it. The matching is plain substring, not fuzzy.
Which platforms does StoryFolder run on? macOS and Windows. There is no Linux build.
Do I need to pay to build a schema like this? Custom fields and spreadsheet export are Pro. The free tier gives you 3 boards at 12 shots each and lets you fill and search the fields that ship with a new library.