Free guide

The Free AI Video Stack

How to make a 9-minute YouTube video for $0 in tools — voice, images, editing, captions, music and mastering, in the exact order it's run.

How I made a 9 minute YouTube video for $0 in tools. Voice, 55 images, 61 cuts, captions, music, sound effects and mastering.

This is the full setup, in the order I actually run it. Two of the eight tools need no code at all. Five run from a command line. I've marked each one, and I've been honest about where each breaks.


What you'll end up with

A finished video 9:18, 1920x1080, 30fps
Narration One voice, sounds human, no recording
Pictures 55 AI images, each tied to a sentence
Editing Motion on every image, captions on the word
Sound Music bed, whooshes on cuts, mastered to −14.3 LUFS
Tool cost $0

The one thing I pay for: Claude Pro, $20 a month. It writes the code and glues the tools together. So the honest maths is $80.98 of subscriptions replaced for $20, a net saving of $60.98, not a free lunch.


1. edge-tts — the voiceover

Needs code. Replaces ElevenLabs Creator, $22/mo.

Microsoft's neural voices, called from one command.

pip install edge-tts
edge-tts --list-voices | grep en-US
edge-tts --voice en-US-AndrewMultilingualNeural --rate=-4% --pitch=-10Hz \
  --file script.txt --write-media voice.mp3

2. Cloudflare Workers AI — the images

Needs code. Replaces Midjourney Basic, $10/mo.

A free daily allowance of 10,000 "neurons" runs real image models. I got 46 images in one day from it.

  1. Create a free Cloudflare account.
  2. AI → Workers AI → Use REST API. Copy your Account ID and create an API token.
  3. Call the model, one prompt at a time:
curl -s https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai/run/@cf/leonardo/lucid-origin \
  -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
  -d '{"prompt":"your prompt here","width":1344,"height":768}' > out.json

3. Gemini app — the shots the API gets wrong

No code. Free with a Google account.

Google's free API allows zero image generations, which surprised me mid-build. The Gemini app is free and made the 11 shots the other model kept failing: a treadmill, a lamp with real light.

4. faster-whisper — timing and captions

Needs code. Replaces Descript's transcription, $16/mo.

pip install faster-whisper

Transcribe your own voiceover with word-level timestamps, then map your script onto those timings. The transcript is not the script: speech-to-text normalises things like "nineteen hundred" into "1900", which silently shifts everything after it. Match your script words onto the audio instead, and keep that file as the single source of timing.

In my build, 98.3% of 1,618 words anchored to real audio; the rest were interpolated from their neighbours. Captions and picture cuts both read from that one file, so they can never drift apart.

5. Remotion — editing, in code

Needs code. Replaces Premiere Pro, $22.99/mo. Free licence for individuals and teams up to three people.

Remotion builds video with React. Every design decision becomes a value you can change once and apply everywhere:

Why it beats a timeline for this kind of video: restyling all 61 cuts is one edit, not a day of dragging clips.

Watch out for: rendering is the slow part. 9 minutes at 1080p took hours on an 8 GB laptop. Render a single still first and look at it before starting a long run.

6. FFmpeg — finishing

Needs code. Replaces the export and mastering step.

One pass does the colour grade, the subscribe-button overlay and the audio mux:

ffmpeg -i picture.mp4 -i audio.m4a -filter_complex "<your grade>" \
  -c:v libx264 -crf 18 -preset veryfast -pix_fmt yuv420p -c:a copy out.mp4

7. Python and NumPy — music and sound effects

Needs code. Replaces Epidemic Sound, $9.99/mo.

Generated sound has no licence to track and can't trigger a copyright claim. For this video I generated a music bed, 60 whooshes and 17 low hits. A hit is just a sine wave falling in pitch with a short noise transient, written to a WAV file.

Mix the effects in before the loudness master, so mastering measures everything together. Adding them afterwards pushes your peaks past where you set them.

8. yt-dlp — deciding what to make

Needs code. Replaces guessing.

Before writing anything, I scanned 27 channels in the niche and found 36 videos that beat their own channel's average. The topic, the title shape and the thumbnail direction came from that, not from a hunch.

yt-dlp --flat-playlist --playlist-end 40 --print "%(id)s|%(duration)s|%(view_count)s|%(title)s" \
  "https://www.youtube.com/@CHANNEL/videos"

The order that matters

  1. Research first (8), so the topic is chosen by evidence.
  2. Script, written for the ear.
  3. Voice (1), because everything downstream is timed to it.
  4. Timing (4).
  5. Images (2 and 3), one per idea, cut on the sentence.
  6. Edit (5).
  7. Sound (7), then finish and master (6).

Three honest warnings

  1. Five of the eight need a command line. If that's not you, the no-code path is Gemini for images plus a normal editor. The savings shrink, but the workflow still works.
  2. Free quotas run out mid-job. Build every script so it can stop and resume the next day.
  3. Rendering takes hours on a modest laptop. Plan it overnight and check a single frame first.

Get the toolkit

The compiled commands and a README for every tool above, in one file. I'll also email you when I publish the next one — no spam, unsubscribe any time.