analyze_footage
Analyzes raw video clips using Whisper transcription, silence detection, and adaptive Claude Vision to classify each clip's quality, speaker presence, and suggested usage.
When to use
Use as the first step in an auto-assembly pipeline (see Footage Director guide). The output feeds footage_assembler and assemble_transcript.
In the editor
Add it from the Library (AI group), or with + add step and a search for analyze_footage, as the first step of an auto-assembly template.
Under Inputs, add clips as a file input naming the footage. This one usually points at a whole set of files rather than a single one, since the point of the step is to sift through everything you shot. analysis_mode decides how closely it looks: audio_only listens, keyframe looks at frames spread through the clip, and adaptive (the default) listens first and only looks closely at the parts that seem worth it. Set language if you know it, or leave it empty to let the transcription work it out.
This step needs your own OpenAI key for transcription. Add it in the workspace's Variables & Service API Keys, reachable from the editor's Settings; a run that needs a key you have not set stops and asks for it before it does any work.
Nothing appears on the timeline. What you get is a read on every clip: how good it is, whether someone is speaking, what happens in it, and whether it is better used as your main footage, as b-roll, or not at all. That report is what footage_assembler and assemble_transcript read, so wire this step into them as an input.
YAML Example
- id: analyze_raw
processor: analyze_footage
input:
- id: clips
file: raw-footage # points to a glob matching multiple files
params:
analysis_mode: adaptive
language: "en"
cache: true
Inputs
| ID | Source | Description |
|---|---|---|
clips |
file (glob) | One or more raw video clips to analyze |
Params
| Param | Type | Default | Description |
|---|---|---|---|
analysis_mode |
select: audio_only, keyframe, adaptive |
"adaptive" |
"audio_only" (transcript + silence only), "keyframe" (sparse frames), "adaptive" (audio first, then adds vision for interesting moments) |
frame_interval_sec |
duration (s) | 5 |
Interval for sparse frame extraction in keyframe/adaptive mode |
silence_threshold_db |
number | -40 |
dB threshold for silence detection |
silence_min_duration_sec |
duration (s) | 0.5 |
Minimum duration to count as a silence |
dense_context_sec |
duration (s) | 0 |
Context window around interesting timecodes for adaptive dense sampling |
language |
string | none | ISO 639-1 language code for Whisper. Empty = auto-detect. |
Output
Analysis containing FootageAnalysis with per-clip metadata: transcript, silence ranges, visual summary, quality score, key moments, suggested usage (backbone/broll/skip).
Notes
- Uses Puffin Ship's built-in AI (no API key required); requires an
OPENAI_API_KEY(set in your workspace's Service API Keys) for transcription. adaptivemode is recommended: it starts with cheap audio analysis and only adds vision for clips with interesting content.- Always use
cache: true: analysis is expensive and deterministic.