Published: August 4, 2026 | Reading time: 10 minutes
People ask how we make our AI benchmark videos. Not the results — the process. Here's the full pipeline, from model evaluation to YouTube upload, running entirely on local hardware. No cloud video editor. No stock voiceover. No subscription SaaS.
Most AI content creators use:
We don't. Our entire pipeline runs on a single AMD R9700 AI Pro in our office. Here's how.
Two models run the same prompt through the same framework. Same tools. Same timeout. We log:
We don't cherry-pick. The prompt is locked before either model runs. No "give me your best." Same question. Different answers.
The evaluation log feeds into a narrative script. Structure:
The script is reviewed for accuracy. No model hallucinations make it into narration. Every claim is traceable to a log entry.
Instead of filming a talking head or using a video editor, we generate HTML slides and render them to video frames. Each slide is:
chromium-browser --headless --screenshotTypical video: 11 frames for a 8-minute script. Each frame displays for ~45 seconds while narration plays.
Why HTML frames over video editing:
We use ChatterboxTTS with a local voice clone — 12 seconds of clean reference audio, trained on our own voice. Settings:
The script is split into segments (one per HTML frame), generated in batches, and verified for corruption. We check peak audio levels — anything hitting 0.0 dBFS gets flagged and re-rendered.
For long scripts we use a resume pattern: batch 1 runs foreground, batch 2 runs via background Python process. Both write to the same output directory.
No video editor. Just ffmpeg:
ffmpeg -framerate 1/45 -i frame_%02d.png -i narration.wav \
-c:v libx264 -pix_fmt yuv420p -r 30 -s 1920x1080 \
-c:a aac -b:a 192k -af "loudnorm=I=-16:TP=-1.5:LRA=11" \
final.mp4
Key technical decisions:
silenceremove instead.Typical output: ~8 minutes, ~19MB, 1920×1080. Uploads fast. Streams smooth.
Upload is scripted, not manual:
Total human time after evaluation: ~15 minutes (review script, approve thumbnail, flip YouTube public, verify X post).
| Stage | Tool | Location |
|---|---|---|
| Evaluation | Hermes Agent + llama.cpp | Local GPU (R9700) |
| Script | Markdown + human review | Local file |
| Frames | HTML + Chromium headless | Local CPU |
| Voice | ChatterboxTTS | Local GPU (R9700) |
| Assembly | ffmpeg | Local CPU |
| Upload | YouTube Data API + xurl | Local script (cloud endpoint only) |
The only cloud touchpoints: YouTube's API (for upload) and X's API (for post). All production — editing, voice, rendering — happens on hardware we own.
Dead air kills retention. Early videos had 10-20 second gaps between narration segments. Viewers dropped. We now run silenceremove on every WAV — threshold -50 dB, collapse gaps >1.5s. A 101-second segment became 52 seconds. Retention improved 30%+.
Title = hook. "GLM-5.2 vs Grok 4.5" gets clicks. "Our Latest AI Test" doesn't. We front-load model names and hardware in titles. The Hermes Agent + R9700 AI Pro branding is secondary — it's the strip, not the spear.
Thumbnail is the first 5 seconds. We render the results table as the thumbnail image. Viewers see the comparison before clicking. CTR jumped from 2.9% to 8.6% after this change.
Locked titles can't change. If the title is woven into the narration audio ("In this video, we're comparing GLM-5.2 and Grok 4.5..."), you can't A/B test post-publish. We decide titles before narration, not after.
Our latest video (GLM-5.2 vs Grok 4.5) at 14 days:
Top driver: Laguna XS 2.1 vs Qwen 3.6 35B (202 views, still climbing). The "vs" format works because it's not a tutorial — it's a fight. Viewers pick sides.
You don't need our exact stack. The principles:
About BizFlowAI: We build custom AI automation for small businesses — websites, lead follow-up, content creation, and video production — all powered by local AI that runs on your hardware. No cloud dependencies. Get in touch.
Related: Atomic Agent vs Hermes: Two Local AI Agents Compared | Laguna XS 2.1 vs Qwen 3.6: AMD R9700 Benchmark Results