Video Edit
Real footage, deterministic edits, verified output. Every operation is a video-tools MCP tool;
call them instead of hand-writing ffmpeg so paths, encodes and loudness are always right.
Ground rules
- Never touch the originals. Write into
video-out/<slug>/with numbered steps (01_trim.mp4,02_jumpcut.mp4, ...). Tools refuse to overwrite unlessoverwrite=true. - Look before you cut. Start with
probeandcontact_sheeton every source. Usedetectfor scene cuts and silences. If a transcript is needed and thewatchplugin is installed, use it; otherwiseextract_audioto.wavand transcribe with whatever is available (whisper, a cloud API the user has), and say which. - One change per step, then glance at the result (
contact_sheet) before the next. - Picture first, sound second, delivery last: cut → captions → music → loudness → export.
Standard passes
| Goal | Tool call |
|---|---|
| Inspect | probe(path, measure_loudness=true), contact_sheet(input), detect(input) |
| Select a range | trim(input, output, start, end) (precise by default) |
| Talking-head tightening | remove_silence(input, output, threshold_db=-35, min_silence=0.45, padding=0.12); raise threshold_db toward -30 for noisy rooms, raise padding if words get clipped |
| Assemble | concat(inputs, output, crossfade=0); mixed sizes/fps/no-audio clips are conformed automatically |
| Captions | write an .srt from the transcript (max ~32 chars/line, 2 lines, 1-6 s each), then `burn_captions(style=clean |
| Music | add_music(input, music, output, music_db=-16, duck=true); the music is looped, trimmed, faded and sidechain-ducked under speech |
| Vertical / square | `reframe(aspect="9:16", fit=blur |
| Speed ramp | speed(factor) on a trimmed segment, then concat |
| Thumbnail candidates | frame(time) at 3-5 strong moments from the contact sheet |
| Loudness only | normalize_audio(target_lufs=-14) |
| Delivery | `export(preset=youtube |
Short-form from long-form
detect+ transcript → pick 15-60 s with a hook in the first 2 s and one complete idea.trim→remove_silence→reframe 9:16→burn_captions style=bold→export shorts.- If the user wants a stronger opener and the
viral-hookskill is installed, offer it.
Finish
Always end with the video-qa skill on the final file with the matching target.