Case study
Media generation platform
Orchestrating image, text, and audio into repeatable long-form video production.
In 2021, I committed full-time to a product thesis: generative AI would make text, narration, and imagery dramatically cheaper, but turning those assets into complete long-form media would still require reliable orchestration, rendering, and distribution. I built the platform around that missing production layer, using audiobook, read-along, and educational YouTube channels as the initial testing ground.
A Scandal in Bohemia
Illustrated full-cast Sherlock Holmes; text highlights in time with the narration.
Read-along story
Illustrated public-domain fiction; text highlights in time with the narration.
Video crossword
Themed mini-crossword solved on a timer.
The Problem
Testing a YouTube concept requires a catalog, not a single demonstration. Producing enough long-form videos manually to evaluate an idea makes experimentation slow and expensive.
I built the platform to reduce the path from concept to 30 published videos, then reuse the same orchestration and rendering infrastructure across books, language learning, games, and other formats.
Product Walkthrough
This walkthrough follows two audiobook projects from scheduling through a shared production template, persisted production contracts, parallel containerized GPU workers, visual review, and YouTube delivery.
Two projects from queue to delivery
The operator queues a two-project batch; the choreography layer creates a production contract for each project, triggers remote renderers, tracks completion, previews synchronized output, and delivers the publishing assets.
Pipeline Architecture
The pipeline is a set of monotonic scripts. The scripts are all idempotent — they progress beginning to end, and if they're interrupted, we can investigate or restart where we left off.
There are several pipeline stages:
Packaging
Produce a thumbnail and metadata, allowing us to fail projects early before spending on production.
Production
Holds the bulk of the work — pulling data, organizing it, generating audio, illustration images, waveforms, and related assets.
Render
The data is now final. This stage goes to Docker. We progress a project out of this step when it is fully rendered.
Distribution
Manages everything related to downloading and uploading the output. We try to complete this during render while the job is still on Docker, so it doesn't need to be done locally. If anything fails, it can be finalized here. If it completes on Docker, this stage flags and progresses.
Complete
Archiving and cleanup — clearing data off R2. We store the chunks because we can later strip intro/outro, make new interstitials, and re-release content (for example, 8-hour compilation videos).
Docker Renderers
The pipeline produces a data structure (JSON) that is uploaded to Cloudflare R2. Renderers are built into Docker containers and run on Vast.ai instances.
The container pulls its data, sees what chunks remain, and begins spawning rendering workers — Node, FFmpeg, and Puppeteer. For each frame number, the renderer dynamically choreographs the output, adjusts content and animation steps, loads the frame, snaps an image, and moves on to the next.
When finished, it uploads the frames, merges them, muxes video and audio, uploads the final file, and publishes to YouTube.
Case Study: Learn American English
I created an all-new channel concept — Learn American English — featuring read-along text designed for English B1 learners who want to learn while being exposed to American ideas.
I queued all 30 projects in a single session. The platform produced 8 hours and 51 minutes of finished media within 24 hours, averaging 17 minutes and 42 seconds per video. The completed videos were scheduled for publication between July 2 and August 1.
The run required approximately 12 minutes of hands-on operation: the initial queueing session and one brief recovery session. No editor manually recorded narration, synchronized text, or keyframed the videos.
- Videos produced
- 30
- Finished media
- 8h 51m
- Production time
- Within 24 hours
- Metered spend
- $21.47
- Cost per video
- $0.72
- Hands-on operation
- ≈12 minutes
Midway Mud — production output
A finished read-along excerpt from the 30-video production run. Narration timing is converted into a frame-deterministic contract that drives synchronized highlighting and passage progression without manual editing.
What the Stress Test Revealed
Running so many videos through at once was the first time this concept was stress-tested at that scale.
A subset of projects did not complete delivery on their first remote instance and required a later restart. Because project state and completed artifacts were persisted, the affected jobs could continue without rebuilding the entire project. I did not retain enough run-level telemetry to report an exact retry count, which exposed an observability gap I would address in the next version.
- Durable orchestration telemetry — Persist per-project attempts, host failures, recovery time, and spend so reliability can be analyzed after a run rather than reconstructed from transient logs.
- Push more processing to Docker — We normalize audio locally today. That isn't intensive for a few projects, but with a half-dozen running at once it jams up. Uploading earlier and letting Docker handle normalization alongside everything else would have removed most of the local background processing time.
Cost
Measured provider costs for the 30-video run:
- OpenAI — $9.66 batch · $0.32 / video
- Illustration (Replicate) — $4.80 batch · $0.16 / video
- Inworld TTS — $4.92 batch · $0.16 / video
- Vast.ai remote compute — $2.09 batch · $0.07 / video
- Total — ~$21.47 batch · ~$0.72 / video
Total metered API and remote-compute spend was $21.47—approximately $0.72 per video or $2.43 per finished hour. The figure includes the measured OpenAI, image-generation, TTS, and Vast.ai charges associated with the batch.
Distribution Outcome
As of August 24, the original 30 videos had generated 287 views, 13.6 watch hours, and 10,509 impressions. The catalog continued receiving approximately 10–20 views every 48 hours, but it did not achieve commercially meaningful traction. The experiment validated production throughput and economics; it did not establish product-market fit.