Claude EN end-to-end, and an 8x cheaper road to automation
Blog post #42
Built the first English Claude explainer video today. End to end: script, VO, avatar, slides, composited cut. About 2:38, ready to upload.
The interesting part wasn’t the video. It was discovering — by accident, in a HeyGen support reply — that the cost of scaling this to 384 videos just dropped 8x.

What shipped
claude-en-v3.mp3— 2:23 of Stefan in English, ElevenLabs v3 with a one-time stability bump to kill mic breath3-minutes-claude-en-firstcut.mp4— 2:38 first cut, HeyGen avatar spine + 11 slides + PiP + two-stage outro- A reusable
build-en.shffmpeg pipeline that handles glass-blur (now retired in favour of full ChatGPT-generated slides), three-percent zoom on the avatar base, and a clean hold-card after the audio ends - Three new memory files: the manus structure, the v3 VO workflow with stability override as a one-off, and a full HeyGen API kartläggning
Decisions made
- Manual UI render this time, MCP next time. HeyGen support clarified that Direct API uses a separate prepaid wallet, but their MCP integration bills against the web plan’s credit balance. Creator plan, 600 credits/month, ~80 videos a month included in the $29. The whole 384-video EU pipeline lands at ~$145 over five months instead of $1,150+ for Direct API. Tomorrow’s first task is wiring the MCP server up and running the next render through it.
- Avatar III over IV/V. Six-point-seven times cheaper, and for an explainer with a static head-and-shoulders frame, the quality lift on IV/V doesn’t earn its keep. Locked III as the series default.
- Slide 2 moved from HTML composition to ChatGPT image gen. The original ChatGPT-style glass-blur card over the avatar worked, but maintaining two slide pipelines (Chrome→PNG plus ChatGPT) for what’s essentially one card per language was overkill. Now every slide is ChatGPT-generated and PiP overlays into a reserved bottom-right corner of the slide. Build script lost a whole filter block.
What’s working
- ElevenLabs v3 with a stability override at 0.65 cleaned up the breath sounds in the cloned Stefan voice. Take two of the same prompt was 16 seconds longer than take one — keeping take one as a backup file before regenerating turned out to be cheap insurance.
- A three percent zoom on the HeyGen base (
scale=1978:1112,crop=1920:1080:29:16) trims the lamp-glow at the top of the frame that was reading as “white bars”. Subtle enough to not feel cropped, enough to fix the edge. - The two-stage outro — main card during the closing line, then a five-second hold-card after the audio ends — gives the video room to breathe. Better than a hard cut, less padded than fading audio.
What’s unclear
- HeyGen MCP is documented but unverified. The support reply said Avatar III is available via the web plan, but it’s possible MCP only exposes the newer engines (IV/V) the way the v3 REST API does. Tomorrow we find out.
- Whether the same Stefan voice clone works for the Swedish dub on the same v3 model, or if
multilingual_v2is still the safer call. The Swedish version is the next test.
Tooling & process
A complete pipeline finally exists on disk for a new tool’s video:
- Write manus + VO files (
claude-manus-en.md,claude-vo-en-v3.txt) python generate-vo.py→ mp3 via ElevenLabs- Render avatar in HeyGen with the mp3 (manual today, MCP next time)
- Generate slides via ChatGPT image gen using a
bilder-att-generera.mdprompt list bash build-en.sh→ final cut
Steps 1, 4, and 5 are scripted. Step 3 is the next thing to automate. Step 2 already is.
— Stefan