How a script becomes a finished video

The current method, start to finish. Solid arrows are the path forward. Dashed arrows are what happens when something fails.

Don Vicente · 2026-08-19

STEP 1 · BEFORE ANYTHING RENDERSYOUR APPROVED SCRIPTThe words. Locked.Nothing rewrites a line.A checker compares the finalcut list back to your source.THE ROOMOne backdrop per video.Single use, from a ledger.Once shot in, it is burnedand never used again.CUT INTO 20s CLIPSA free render is fixed 20s.Clips are balanced so none istoo long OR too thin.Thin = the model drags.build-beats.py --fillMAKE THE VOICE FIRSTElevenLabs reads YOUR wordsfrom TEXT, before any picture.So the accent is decided bythe voice, never by therenderer. American, always.voice-first.py --makeMEASURE ITHow long each read runs.Does it fit a 20s clip?Is the whole video onyour locked pace of3.20 words a second?IF A READ DOES NOT FIT → RE-CUT THE CLIPS, NEVER SPEED THE AUDIOSTEP 2 · LOCK THE PICTUREONE OPENING FRAMEEvery clip starts from theSAME photo, copied insidethis video's own folder,checked by fingerprint.lock-frame.pyTHE DIRECTIONSWhat his hands do, perSECTION of your script,not per clip number.So a re-cut cannot move them.directions.json + clip-mapTHE GATE · NOTHING SPENDS UNTIL ALL FIVE PASS1 the words match your script AND the files on disk2 every clip has a read that fits, video on cadence3 the opening photo is unchanged4 prompts obey every rule, the set is locked5 directions resolve to the right wordsprefire-gate.py · 9-case proof suiteANY FAIL → NOTHING RENDERS. FIX IT AND COME BACK.STEP 3 · RENDER, ONE CLIP AT A TIMEFIRE ONE CLIPThe button must read"Generate Unlimited" withNO digits, checked everysingle time, or it refuses.About 28 minutes per clip.queue-run.sh · zero creditsCOLLECT ITTranscribe what came backand match it to your line.A clip is claimed by theWORDS IT SPEAKS, never byan id the tool reports.harvest-by-words.pyJUDGE WHAT CAME BACK, NOT WHAT WE ASKED FORDid he say every approved word?Is the pace right? (measured against your locked 3.81 of speech)Is the accent American?Did the room change? How many hands?A failure is renamed with the reason and re-fired automatically.BAD CLIP → RE-FIRE THAT ONE CLIP ONLYSTEP 4 · YOUR VOICE, THEN THE EDITPUT YOUR VOICE ON ITSpeech to speech: keeps theclip's own timing exactly andswaps the timbre to yourlocked voice. Nothing isstretched, so the lips match.voice-lock.pyJOIN THE CLIPSEach clip is trimmed to itsspeech and joined in order.Trimming drops frames.It never changes speed:that is banned outright.assemble-cuts.pyGRADE THE MASTERLip sync scored.Accent measured again.Set continuity across cuts.Vertical, right length,right resolution.finish-gate.pyYOU WATCH ITEnd to end.Nothing reaches youthat a human has notwatched.WHAT NO MACHINE CHECKS · THESE TWO ARE ALWAYS A HUMAN1. Is it ON MODEL? His face, beard, hairline, finger count. That needs eyes on a crop across three or more frames.2. Is it GOOD? That is you. Your ear and your eye outrank every gate on this page.ONE RENDERER. ONE CLIP AT A TIME. ~28 MINUTES EACH. THAT IS THE ONLY REAL BOTTLENECK.
a step that produces something a check that can refuse the loop back when something fails a hard stop, nothing renders an input, or you

The four rules the whole thing is built on

rulewhy it exists
The voice is made BEFORE the picture If the picture is made first, the renderer chooses the accent and it changes clip to clip. Making the read first means the accent is decided by your locked voice, and the clips are cut to fit a length we already measured. Nothing gets stretched, because nothing needs to be.
Fill every clip A free render is a fixed 20 seconds whatever you put in it. Put 33 words in and the model spreads them across the whole 20 and he sounds like he is in slow motion. Put ~55 to 60 in and he speaks at your normal pace.
Judge what came back, never what we asked for Every check reads the finished file: the words it actually speaks, its pace, its accent, its set. A prompt only proves what we requested.
An approved clip is never re-rendered If a later clip is wrong, only the remainder is re-cut. The approved clip is locked in place and the tooling refuses to touch it.
The cut between two clips is measured, not left to chance added Aug 19 Every clip can be perfect and the video still sounds broken where they meet. There must be at least 0.45 seconds of silence at each cut. Below that the last word of one clip collides with the first word of the next and the line sounds chopped off.

What changed on Aug 19, and why

Clip 3 of this video sounded cut off where it met clip 2. Here is exactly what was wrong and exactly what is different now.

The words were never wrong. Clip 2 ends on "...paying for the outcome." and clip 3 starts on "Reasons invite opinions..." That is your script, verbatim, in order. All five clips were checked against your approved script and they tile it exactly: nothing added, nothing missing, nothing out of order.

What was wrong was the silence at the cut. Measured on the file you watched:

cutsilenceresult
clip 1 to clip 20.680ssounded right
clip 2 to clip 30.238scollided

Every real pause between sentences inside that video runs 0.36 to 1.08 seconds. A 0.238 second gap is a mid-sentence breath, not a sentence break, so the ear hears one line running into the next.

The cause is the part worth knowing. Every clip's instructions say, in capitals, that he must already be talking on the first frame with no pause and no breath. That rule exists so a fixed 20 second render is not wasted on a man sitting still. Clips 1 and 2 ignored it and opened with about 0.4 seconds of silence, and that is the only reason their cuts sounded right. Clip 3 followed the instruction exactly, so it had no breath to give, and the cut collapsed. The clip that obeyed us is the one that broke.

Nothing could have caught it, because a cut does not exist in the script, in a prompt, or in any single clip. It only exists once two clips are placed next to each other, and every check we had ran on one clip at a time.

What is different now, in the tooling, not in a note:

One separate problem found on the way. A planning tool had been re-run at 5:05 AM and rewrote the word split for clips that were already rendered. The files on disk then described lines no clip had ever spoken, which is what sent the other terminal looking for a "lost" prompt that had been sitting there untouched the whole time. The prompts we actually sent are the honest record, the files have been restored from them, and a new check now refuses to let those two disagree again.

The same thing as a list

Twelve steps. Anything marked REFUSES can stop the run on its own.

stepwhat it doeswhat it refuses
1Take the approved script Reads your words exactly as written. No tool rewrites a line. REFUSES if the words on disk differ from your source, even by one word.
2Cut it into clips A free render is a fixed 20 seconds, so a 70 second script becomes 4 clips. Clips are balanced so none is too long or too thin. REFUSES to merge or drop any part of the script, or to split anywhere except the end of a sentence.
3Claim the room One backdrop per video, taken from a single list. Once a video is shot in a room, that room is burned forever. REFUSES any room already used, or any picture that is not on the list.
4Make your voice, before any picture ElevenLabs reads your written words. The accent is decided by your locked voice, not by the video renderer. REFUSES if a read was made from different words than the clip now holds.
5Measure the voice and fit the clips to it Each read is timed. If a read is too long for a 20 second clip, the clips are re-cut. REFUSES to speed up or slow down audio, ever. The words move, the audio never warps.
6Lock the opening picture Every clip in the video starts from the same photo, copied inside that video's own folder and fingerprinted. REFUSES if the photo is missing or has been swapped for a different file.
7Write the directions What his hands do, written against a SECTION of your script rather than a clip number, so a re-cut cannot slide them onto the wrong words. REFUSES if any section has no direction, or if the character's standing body rules are missing.
8The gate, before anything is spent One command runs all five checks and prints what it did NOT check. REFUSES the whole run. Nothing renders until all five pass.
9Render one clip About 28 minutes. The button is read before every click and must say Unlimited with no digits. REFUSES to press a button showing a price, and refuses to fire without the right reference attached.
10Collect it and prove it is ours The finished clip is transcribed and matched to the line it should be speaking. REFUSES a clip whose words do not match, rather than guessing which one it is.
11Judge what came back Every approved word spoken, the pace, the accent, the set holding still, the hands. REFUSES a bad clip and re-fires that ONE clip. Never the whole video.
12Your voice on, clips joined, master graded Timbre swapped with the timing untouched, each clip trimmed to its speech, joined in order, then the finished file is graded. REFUSES to hand over a master that has not been graded, and nothing reaches you that a human has not watched end to end.

Where a video can still go wrong

Honest list. These are the parts a machine cannot settle.

riskwho catches it
He is off model. Beard length, hairline, brows, finger count. A human, on a crop across three or more frames. No gate reads a face.
The performance is flat or wrong. You. Your ear and eye outrank every check on this page.
The renderer is slow or busy. One clip at a time, ~28 min. Nothing fixes this but waiting or paying.
Two people driving the same renderer. One owner at a time, or fires get silently dropped.

Time and money

CreditsZero. The render button is read before every click and refuses if it shows a price.
TimeAbout 28 minutes per clip, one at a time. A four clip video is roughly two hours of rendering. Everything else takes minutes.
Re-runsA failed clip re-fires by itself. Only that clip, never the video.