README.md

tools

Everything reads VET_HOME (default /workspace/video-editor-tools). Python tools run with $VET_HOME/.venv/bin/python (install.sh puts it first on PATH).

FolderScriptWhat it does
researchtaste.py video.mp4 transcript.(vtt|json)personality numbers: pauses (landing vs thinking), fillers, stumbles, wpm per 15 s, jump cuts, hook timeline, you/I %, 4-grams
researchanalyze.py, normcuts.pydeep creator analysis (scene cuts, zoom estimate, audio windows, colour) and the contrast-normalised cut detector used by everything else
qacutstats.py file.mp4 ...cut rate of any render: first 5 s, 0-30 s, body cuts/min, longest gap
audioaudio_chain.sh in out.wavMelBand-Roformer dereverb -> DeepFilterNet3 -> voice_master.py (-14 LUFS, TP -1.5)
audiovoice_master.py in.wav out.wavthe EQ / de-ess / comp / 2-pass loudnorm stage on its own
audiosfx_synth.py gen [dir]self-synthesized SFX library (whooshes, risers, hits, clicks, paper, tape...), no samples
audiobedcheck.py, voicegap.py, kitcheck.pymusic-bed tempo/downbeat + loudness profile; music-under-voice gap (target 6-10 dB); objective sound-kit file check (clipping, DC, silence)
motionhf_offline.py --project DIRmake a HyperFrames project render offline (vendored GSAP/Lottie, local fonts)
motionqa_check.py VIDEO [--project DIR]pre-delivery QA gate for renders (loudness, platform specs, HyperFrames check + snapshots)
motionaudio_prep.py, remove_fillers.py, broll_grade.pyffmpeg-only voice clean-up + 2-pass loudness; whisper-based filler cut list (optional VET_WHISPER_VOCAB); b-roll crop (9:16) + luma/colour match
motionbroll_fetch.py search "query" --sources pexels,pixabay,nasa,commonslicense-aware B-roll search/download (official APIs only) with a sidecar JSON per clip; keyed sources need your own PEXELS_API_KEY / PIXABAY_API_KEY / COVERR_API_KEY
motionnetlog.cjsNode preload that logs any network request during a render (proves "offline")
screentrack.py, redact.pyvertical scroll tracker for screen recordings (so overlays follow the page); blur boxes on stills or video
behind-speakerplate.sh, matte.py, behind_cards.py, composite.py, preview.pythe "graphics behind the speaker" finish (see below)
.smoke_test.sh [clip]5 s HyperFrames render + audio chain, run after install

Behind-the-speaker in five commands

bash
1B=$VET_HOME/tools/behind-speaker
2$B/plate.sh cam.mp4 plate.mp4 $VET_HOME/luts/luxe-noir-33.cube # graded, delivery-size plate (LUT optional)
3python $B/matte.py plate.mp4 alpha.mp4 # RVM alpha, CPU (about 0.1-0.3 s/frame at 1080p)
4python $B/behind_cards.py spec.json slots/ # cards/bars/arrows as RGBA .mov per moment
5python $B/preview.py plate.mp4 alpha.mp4 slots/moments.json m1 120 check.png # check one frame first
6python $B/composite.py --plate plate.mp4 --matte alpha.mp4 --moments slots/moments.json --audio mix.wav --out final-master.mp4 --push 100:160