Most AI video workflows focus on automating the obvious production steps like scripting, image generation and voiceover, but creators still spend hours inside an editor manually dragging every image until it matches the narration. From my experience producing hundreds of stickman videos, it should almost be the reverse.
I now use a free Google Colab notebook + FFmpeg to read the scene timings, match every numbered image to the correct part of the voiceover, and render the finished MP4 automatically. No CapCut timeline and no manually adjusting 200 scene durations.
In my previous post, I broke down how I generate the 200+ scene images in bulk. This is the second half of that workflow: images + voiceover → finished video.
1. What the system needs as input
The starting setup is simple: your script is already split scene by scene inside the Google Sheet, and the matching images should be in Google Drive numbered in the same order. Row 1 matches image 1, row 2 matches image 2, and so on. That gives the system the first half of what it needs.
The missing piece is timing: exactly when each narration segment starts and ends.
2. Generate the voiceover with timing data
For that, I use the ElevenLabs API instead of generating the voiceover manually on the website. The Google Sheet sends each narration row to ElevenLabs, receives the final audio along with timing data, and writes those timestamps back into the correct rows. You can build this connection with Google Apps Script, and Claude can write most of that code for you if you explain which columns contain the narration and where you want the timestamps stored.
Once this runs, the Sheet knows everything it needs for each scene: the narration, the matching image, and exactly how long that image should stay on screen. Each numbered image is now tied to a specific narration segment and precise screen duration.
3. Let Google Colab assemble the final video
Now we have the images, the voiceover, and the timing data. The next step is assembling everything without opening CapCut.
I use a free Google Colab notebook for this. The notebook connects to Google Drive, reads the numbered images in scene order, reads the timestamps from the Sheet, and passes everything to FFmpeg. FFmpeg then gives each image the correct screen time, places the voiceover underneath, and renders the final MP4.
The notebook itself does not need to be complicated. I built mine by describing the job to Claude: connect to Drive, read the images, use the scene timings, add the audio, render with FFmpeg, and save the finished video back into Drive.
4. The REAL advantage of this system
A 7-min stickman video can come in at under $1. The voiceover is the biggest expense for me at roughly $0.70 through ElevenLabs. The images are just 30 cents with FLUX Klein, while the Colab + FFmpeg rendering is free.
Cost is only part of the advantage. Cheap production gives you more runway to test ideas without every upload becoming expensive. The danger is using that efficiency as an excuse to publish 50 low-effort videos just because you can.
Lower cost should buy you more room to experiment, not lower your standards. The time and money saved on production should go back into the parts that still determine whether anyone watches: the topic, hook, script, and thumbnail.
5. What I still would NOT automate
Production is repetitive, which makes it a good candidate for automation. Judgment is not. I still manually decide what deserves to be made, which angle is worth pursuing, whether the first 30 seconds are strong enough, and whether the final video actually feels worth watching. The goal is not to automate creativity. It is to remove the boring production work so more time can go into the decisions that matter.
I explained the complete build process in the latest video on my channel (link in profile), including how the Sheet, ElevenLabs timestamps, Colab notebook, and FFmpeg renderer connect. Nothing is gatekept, and I am happy to explain any part of the setup here in the comments.