Skip to main content

AutoTube

Automated video production pipeline from story sourcing to final render

AutoTube hero
The Problem

AutoTube

An end-to-end automated video production system that sources stories from Reddit, generates scripts with Claude, synthesizes voice with Kokoro TTS, generates images with Gemini, and renders final videos with Remotion. Runs across a Bun API server and a Python GPU backend with an RTX 5070.

Multi-Service

Platform

Solo Developer

Role

My Role
Pipeline ArchitectureAI IntegrationInfrastructureGPU Management
Process

From Story to Screen

01

Story Sourcing Pipeline

Reddit scraper pools ~250 stories from targeted subreddits. Scored by engagement metrics, filtered for content suitability. The pool refreshes automatically so there's always a backlog of production-ready source material.

02

Script & Voice Generation

Claude generates narration scripts with channel-specific voice and style guidelines. Kokoro TTS on the GPU box synthesizes the voice track. Whisper generates word-level timestamps for precise subtitle alignment. Getting the voice to not sound robotic took more prompt iteration than I expected.

03

Image Generation & Rendering

Gemini generates scene illustrations matching script segments. Remotion layers voice, images, subtitles, transitions, and background music into the final video. FFmpeg handles encoding. 15-20 minutes per video, start to finish.

04

Review & Publishing

Finished videos land in Aurora's review queue with script, metadata, and preview. Approve to schedule, reject with regeneration notes. Three YouTube channels with different themes plus TikTok for short-form.

Key Features

Hands-Off, Quality Up

01

End-to-End Automation

Reddit story to rendered video in 15-20 minutes. No manual steps. Six services orchestrated: story sourcing, script generation, voice synthesis, image creation, video rendering, metadata generation. Each stage retries independently. A failed image generation doesn't restart the whole pipeline.

02

GPU-Accelerated Processing

Kokoro TTS and Whisper run on a dedicated machine with an RTX 5070. The GPU box exposes HTTP APIs that the Bun orchestrator consumes. Ollama handles local LLM inference for tasks that don't need Claude-level reasoning. Keeps costs down.

03

Multi-Channel Content System

Three YouTube channels share the same pipeline infrastructure. Channel-specific prompts, visual styles, posting schedules are all configuration, not code. Adding a new channel is a config file, not a feature branch.

Technical Deep Dive

Under the Hood

Built With
BunPythonClaude APIGeminiKokoro TTSWhisperRemotionFFmpegPostgreSQLReddit API
Bun APIClaudeGPU BoxKokoro TTSRemotionPostgreSQL

Key Technical Decisions

Bun + Python Split Architecture

Bun handles orchestration and API coordination. Python handles GPU work (TTS, transcription, image generation) on the GPU box. I tried running everything in one runtime. Dependency hell. This split avoids CUDA/PyTorch in the Node ecosystem and lets each runtime do what it's good at. Plain HTTP between the two.

Remotion for Programmatic Video

Each scene is a React component with props for voice timing, image URLs, and subtitle data. Video templates are version-controlled, testable, composable. Changing the visual style across 50 videos is a CSS change, not 50 editing sessions. The trade-off is learning a new paradigm, but it pays for itself fast.

Word-Level Subtitle Alignment

Whisper gives you word-level timestamps from the synthesized audio. Those timestamps drive subtitle rendering in Remotion, so each word appears at the exact moment it's spoken. Much better than sentence-level captioning. Makes the videos feel professionally produced even though no human touched them.

Learnings

What I Learned

I tried running everything in one process

TTS and LLM inference in Node.js was a non-starter. Splitting into Bun for orchestration and Python for GPU work over HTTP added complexity but eliminated dependency hell. Each runtime stays lean.

Remotion changed how I think about video

Traditional editing is manual and non-reproducible. Remotion treats video like a React app. Components, props, styling. Changing the subtitle font across 50 videos is one line of CSS.

The first version auto-published everything. Bad idea

Quality was inconsistent. Some stories were boring, some scripts missed the tone completely. Adding a human review step in Aurora (approve/reject/regenerate) dramatically improved output quality without losing the automation.

Next ProjectSee more projects →
Aurora

Aurora

Content studio and operations dashboard for solo content creators