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).
| Folder | Script | What it does |
|---|---|---|
| research | taste.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 |
| research | analyze.py, normcuts.py | deep creator analysis (scene cuts, zoom estimate, audio windows, colour) and the contrast-normalised cut detector used by everything else |
| qa | cutstats.py file.mp4 ... | cut rate of any render: first 5 s, 0-30 s, body cuts/min, longest gap |
| audio | audio_chain.sh in out.wav | MelBand-Roformer dereverb -> DeepFilterNet3 -> voice_master.py (-14 LUFS, TP -1.5) |
| audio | voice_master.py in.wav out.wav | the EQ / de-ess / comp / 2-pass loudnorm stage on its own |
| audio | sfx_synth.py gen [dir] | self-synthesized SFX library (whooshes, risers, hits, clicks, paper, tape...), no samples |
| audio | bedcheck.py, voicegap.py, kitcheck.py | music-bed tempo/downbeat + loudness profile; music-under-voice gap (target 6-10 dB); objective sound-kit file check (clipping, DC, silence) |
| motion | hf_offline.py --project DIR | make a HyperFrames project render offline (vendored GSAP/Lottie, local fonts) |
| motion | qa_check.py VIDEO [--project DIR] | pre-delivery QA gate for renders (loudness, platform specs, HyperFrames check + snapshots) |
| motion | audio_prep.py, remove_fillers.py, broll_grade.py | ffmpeg-only voice clean-up + 2-pass loudness; whisper-based filler cut list (optional VET_WHISPER_VOCAB); b-roll crop (9:16) + luma/colour match |
| motion | broll_fetch.py search "query" --sources pexels,pixabay,nasa,commons | license-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 |
| motion | netlog.cjs | Node preload that logs any network request during a render (proves "offline") |
| screen | track.py, redact.py | vertical scroll tracker for screen recordings (so overlays follow the page); blur boxes on stills or video |
| behind-speaker | plate.sh, matte.py, behind_cards.py, composite.py, preview.py | the "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
| 1 | B=$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) |
| 3 | python $B/matte.py plate.mp4 alpha.mp4 # RVM alpha, CPU (about 0.1-0.3 s/frame at 1080p) |
| 4 | python $B/behind_cards.py spec.json slots/ # cards/bars/arrows as RGBA .mov per moment |
| 5 | python $B/preview.py plate.mp4 alpha.mp4 slots/moments.json m1 120 check.png # check one frame first |
| 6 | python $B/composite.py --plate plate.mp4 --matte alpha.mp4 --moments slots/moments.json --audio mix.wav --out final-master.mp4 --push 100:160 |