Turns a raw .mov screen recording into a full content package: a narrated YouTube video with a branded intro, animated concept cut scenes, an SRT caption file, a thumbnail, a blog article, and YouTube metadata.
It runs as a Claude Code skill (shipped in .claude/skills/content-pipeline/) backed by an idempotent, multi-stage Python pipeline.
| Output | Stage | Description |
|---|---|---|
content-ideas.md |
I | Ranked trending-AI-tool ideas to record next |
frames/ |
1 | Deduplicated screenshots from the recording |
captions.json |
2 | Claude Vision narration per frame |
output.mp4 |
3+4 | Composed video with AI narration and music |
thumbnail.png |
5 | 1280x720 YouTube thumbnail |
youtube.md |
6 | Title, description, and tags |
captions.srt |
7 | SRT subtitles |
article.md |
8 | Full tutorial blog post |
output_with_intro.mp4 |
0 | Final video with branded intro |
Run in order (each stage is idempotent, so you can re-run safely):
ideate.py— pick what to record based on trending signals01_extract_frames.py— extract and dedupe frames02_caption_frames.py— Claude Vision writes first-person narration per frame03_generate_audio.py— ElevenLabs TTS + background music04_compose_video.py— cut and compose the video05_create_thumbnail.py— build the YouTube thumbnail06_youtube_metadata.py— generate title, description, tags07_generate_srt.py— transcribe audio to SRT08_generate_article.py— write the blog post00_create_intro.py— prepend the branded intro (run last)
See .claude/skills/content-pipeline/SKILL.md and the reference/ docs for full details.
pip install -r requirements.txt
cp .env.example .env # then fill in your keysRequired keys (see .env.example):
ELEVENLABS_API_KEYandELEVENLABS_VOICE_ID— text-to-speech and transcriptionAI_GATEWAY_API_KEY— Claude access for captioning, ideation, and writing
- Media files (
.mov,.mp4, generatedframes/,audio/, etc.) are gitignored — they are large and regenerated per run. - Never commit your real
.env; it holds API keys.