The pipeline at a glance
The stack
| Tool | Role |
|---|---|
| Claude (Claude Code / API) | Scripts, titles, descriptions, tags, shot lists, prompts for everything below |
| Piper TTS (Ryan, en_US-ryan-medium) | Narration — local, offline, free. Measured rate: ~2.58 words/sec at length-scale 1.5 |
| HeyGen | Photo avatar for the intro (5s) and outro (10s) |
| Higgsfield AI | Branded cinematic bumper (3–4s) — generated once, reused every episode |
| MoviePy (editor.py) | Draft-cut assembly: stitches bumper → avatar intro → screen recordings → outro |
| DaVinci Resolve | Final polish: color, music, tightening cuts |
| OneDrive | File bridge between the recording machine and the editing machine |
The seven stages
Topic & hook
Pick the next episode from the series arc, then make it concrete with what actually happened in the system that week. Generate 5 title + hook options and pick the strongest.
Script
Claude writes a timestamped script — hook, sections, outro — with
[SCREEN: …] markers for what to record. Review the script and a
beat-by-beat duration projection together, so pacing problems surface before recording.
Shot list, then record
Generate the shot list from the approved script before touching the camera: clip name + the exact narration that plays over it + target duration. Record at 1440p or 4K; record more than you need — extra clips become Shorts.
Narration (Piper TTS)
Generate audio from the approved narration text, against real clip lengths (measured with ffprobe), not planned ones. Check a projected-vs-actual duration table — the table catches drift before your ear has to.
Avatar & bumper
HeyGen renders the intro line (picked from a rotating opener bank — see prompts below) and the templated outro. The Higgsfield bumper is a constant channel asset: rendered once, reused forever, zero credits per episode.
Draft cut → polish
The assembler trims or pads each clip to its planned duration before concatenating — drift becomes impossible by construction. Then DaVinci Resolve for color (one LUT for brand consistency), music at ~15% under narration, and tightened cuts.
Publish
Claude drafts title, description with chapters, and tags. Upload unlisted first, review in YouTube Studio, and flip to public yourself — publishing stays a human click.
Reusable prompts
Script generator
The core prompt. Fill in the brackets, get a timestamped script with screen-direction markers.
You are writing a script for a YouTube [long-form/Short] video for the channel hermeneuticsAI.
Topic: [TOPIC]
Target viewer: Someone who uses Claude but hasn't built agents or workflows yet.
Tone: Smart, practical, no fluff. Like a colleague who builds things.
Format:
- Hook (first 5 seconds — must stop the scroll)
- [3–5 sections with timestamps]
- Outro (subscribe CTA, 10 seconds max)
Output the script with timestamps and [SCREEN: description of what to show] markers.
Title + hook generator
Five options, benefit-first, accurate. The hook is the first spoken line.
Generate 5 YouTube title options for a video about [TOPIC].
Rules: Under 60 characters. Lead with the benefit or the curiosity gap. No clickbait — must be accurate.
Also write a 1-sentence hook for each (the first line spoken in the video).
YouTube description
Description with chapters, CTA, and tags in one pass.
Write a YouTube description for this video:
Title: [TITLE]
Summary: [2–3 sentences about what's covered]
Include: timestamps/chapters, a call to action for the course waitlist, and relevant tags at the bottom.
Higgsfield intro prompt (meta-prompt)
Ask Claude to write the Higgsfield generation prompt for you, tuned to the episode's mood.
Write a Higgsfield AI video generation prompt for a [2–4 second] cinematic intro clip.
Episode topic: [TOPIC]
Mood: [professional / futuristic / minimal / dramatic]
Style: Smooth motion, high quality, no text, no faces. Think: abstract tech aesthetic.
The actual channel bumper prompt
The exact Higgsfield prompt behind the gold intro you see on the channel. Settings: 3–4 seconds, cinematic/realistic, 16:9.
Cinematic macro shot of glowing golden data streams flowing through dark circuit
board nodes, smooth slow motion, ultra high definition, no text, no faces, deep
black background with warm amber and gold light pulses, constellation particle
effects with golden orange glow emanating from center, futuristic technology
aesthetic, 4K
Rotating opener bank (HeyGen intro lines)
Never the same opener twice, never episode-locked either. Generate 3 fresh variants from these seed styles before each episode, pick one, render in HeyGen.
Generate 3 candidate intro lines (max ~5 seconds spoken) for a hermeneuticsAI
episode, each in a different style from this bank:
- Hot take: "Everyone's using Claude as a chatbot. That's like using a sports
car to park."
- Curiosity gap: "There's a way to use Claude that most tutorials never show you."
- Builder voice: "I've been building with Claude for months. Here's what actually
works vs. what people think works."
- Pattern break: "Most AI content starts with prompts. We're starting with
architecture."
- Contrast: "The people getting real results from Claude aren't doing what
you're doing."
Fresh variants, same energy. I'll pick one and render it in HeyGen.
Thumbnail concepts
Three concepts to build from in Canva using the channel's base template.
Write 3 thumbnail concept options for a YouTube video titled "[TITLE]".
For each: the main visual, the text overlay (3–5 words max), and the emotion it
should trigger. Channel style: dark background, gold/amber accents, clean and
technical — no shocked faces, no red arrows.
Shot list from approved script
The single prompt that prevents pacing disasters: recording targets come from the script, not the other way around.
Here is my approved episode script: [PASTE SCRIPT]
Break it into a shot list I can record against. For each clip output a table row:
- clip filename (clip_01_short_description format)
- the exact narration text that plays over this clip
- target duration in seconds, computed from the narration word count at
2.58 words/second (my measured Piper TTS rate)
Then give me the total projected runtime. Flag any clip whose narration runs
longer than 45 seconds — those need to be split.
Piper TTS one-liner
Narration is generated locally, offline, free:
echo "your script text" | piper --model en_US-ryan-medium --length-scale 1.5 --output_file narration.wav
At length-scale 1.5, Ryan speaks at ~2.58 words/second (~147 wpm). Plan clip durations from this number — not from a guess.
See the pipeline in action
Episode one walks the entire pipeline end to end — including the mistakes this page teaches you to avoid.