README.md
HyperFrames production templates (drafts)
Built and tested on HyperFrames 0.8.185 on a CPU-only box (8 vCPU, no GPU). Every template renders fully offline:
local assets/gsap.min.js, self-hosted OFL fonts (/workspace/video-editor-tools/fonts, see FONTS.md), no CDN
(verified with tools/motion/netlog.cjs: 0 external requests, plus a no-network unshare -rn render).
Run install.sh first: it downloads the OFL fonts and GSAP/Lottie into fonts/ and vendor/, and makes the placeholder clips.
All sample content is placeholder (no real names, prices or clients).
| template | what | sample output (<template>/sample/, not in git) | dur / res | render |
|---|---|---|---|---|
hormozi-short/ | talking-head short: fillers → silence trim → captions, punch-in per cut, --batch hook variants | sample/hormozi-short-sample.mp4 | 33.6 s, 1080x1920 | 30.4 s (-w 6) |
gadzhi-luxe/ | dark LUT grade + CSS grain + light sweep + serif/sans editorial captions, 9:16 and 16:9 | sample/gadzhi-luxe-9x16.mp4, -16x9.mp4 | 11.4 s each | 40.0 s / 24.6 s |
cinematic-opener/ | 5-10 s AI-clip slot → scene-whip → main edit | sample/cinematic-opener-sample.mp4 | 12.2 s, 1920x1080 | 16.4 s |
launch-video/ | 16:9 hook → demo → payoff (45-90 s) + --mode yc-raw audio-only cleanup with 1:00 hard fail | sample/launch-video-sample.mp4, sample-yc/yc-raw-sample.mp4 | 48.0 s / 25.8 s, 1920x1080 | 20.8 s / 4.4 s |
Shared code: _lib/hf.py (project scaffold, hash-named assets, offline rewrite, CPU-load gate + render lock,
TTS/transcribe helpers). Shared tools in tools/motion/:
audio_prep.py (highpass → afftdn/arnndn → de-ess → two-pass -14 LUFS loudnorm), qa_check.py
(hyperframes check, ffprobe, loudness, 9:16 safe-zone mask), hf_offline.py, netlog.cjs.
Render etiquette: hf.render() waits (up to 7 min) for the 1-min load to drop below the core count
(HF_MAX_LOAD to override) and serialises this toolkit's own renders with a lock. Single render: -w 6;
batch: 3 jobs at -w 3.
Each template: cd hf-templates/<name> && python3 build.py (edit params.json first).