describe
Labels video footage in fixed time windows so b-roll can be found by what is in it. Supports a plan mode to preview the work before writing.
Instructions
Describe footage in fixed windows, so b-roll can be found by what is in it.
A description is (clip_id, src_start, src_end, text) in source
seconds, which is why cutting the edit can never invalidate one. Omit
clip_id to describe every video clip that has not been described yet;
name one to do just that clip. Audio-only clips are refused — their words
are what transcribe indexes.
This is a job, not a request. Cost is about three seconds per window
regardless of how much footage the window spans, so a project's footage
is minutes of GPU time. Run it with plan=True first: that resolves the
whole work list and the estimate, and reports whether this machine can
run the model at all, without loading anything.
Already-described clips are skipped unless force. Do not widen window
to save time without a reason — a single pass over a whole clip describes
six frames as six people, fluently and with nothing saying it is wrong.
Read errors and truncated in the result. A truncated description
stops mid-fact and reads exactly like a complete one, and a window is
never evidence of a continuous shot: the model narrates across a cut
inside one as though it were a single take.
The descriptions are written into the project, and force replaces the
ones a clip already has; without it an already-described clip is skipped,
so a repeat costs nothing and changes nothing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | The project directory to act on. Omit it — the usual case — when this server is bound to a project (started as `proofcut -C DIR mcp`, or inside a project; `ping` says which): it then resolves to that one bound project, a relative path resolves against it, and a path outside it is refused by name. Unbound, `path` is the whole address and omitting it refuses rather than guessing. | |
| plan | No | Resolve the whole call and report what it would do, writing nothing. Prefer it over doing the thing and undoing it. | |
| force | No | Describe clips that already have descriptions, replacing them. Without it they are skipped. | |
| window | No | Seconds of footage per description. Do not widen it to save time: a single pass over a whole clip describes six frames as six people, fluently, with nothing saying it is wrong. | |
| clip_id | No | One clip to describe. Omit it for every video clip not described yet; audio-only clips are refused, since their words are what `transcribe` indexes. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||