5 min readMarkdown
Join short clips into one continuous film
Join clips concatenates up to twenty of your own clips into one MP4, optionally under music and a voice-over. Free, agent-driven, and it appends nothing.
Join clips takes several clips from your library, in the order you give them, and returns one MP4. Optionally under a music bed and a voice-over.
It is what turns a run of short takes into a film. And it is the one tool here you cannot press: it lives on the API and the MCP endpoint, because the studio’s composer is a single dropzone and cannot express an ordered list.
The loop it completes
Every video model has a ceiling on how long one generation can be. The way past it is a chain, and this tool is its last link:
- Generate a clip.
- Extract its last frame.
- Start the next clip from that frame.
- Repeat until the piece is told.
- Join the run.
Because each clip begins on the exact frame the previous one ended on, the joins land where cuts land in an edit rather than where a model ran out of seconds.
A clip may appear twice in the same list, and that is not a mistake the system will save you from, because using a shot again is an edit.
The bounds
There is no price, so the limits are the cost control. All three are refusals rather than fallbacks: exceed one and the call fails, plainly, rather than quietly doing something else.
- Two to twenty clips. One is not a join; twenty is where a concatenation becomes a project that wants a storyboard.
- Ten minutes of finished cut, measured on the output rather than estimated from the inputs.
- One join at a time, per account. A join is minutes of real encoding, and queueing five of them behind each other is how the next person’s frame extraction waits twenty minutes for its turn.
It is free because the bill is a minute of a renderer we already run rather than a provider invoice. A half-credit line item at the end of a sequence that cost several hundred would be a meter on the last step of your own work.
Shape, sound and what is not added
Aspect ratio. Set it, or leave it and the cut takes the shape of the first clip, which is the answer that wastes least on a run of shots one model produced, since they already agree. Anything that does not match is letterboxed into that box, never stretched. A portrait clip in a landscape cut gets bars; it does not get squeezed.
Audio. Every clip keeps its own sound. On top of that you can lay:
- A music bed, looped past the end of the cut, trimmed to it, faded over the last second and a half, and set to the level you ask for.
- A voice-over, under which the bed is automatically ducked, so narration sits over music without either being mixed by hand.
A join of clips that were all silent gets a soundtrack built from nothing rather than an error, so a music-only cut works exactly as a spoken one does.
Nothing is appended. No end card, no logo, no watermark. A film the studio made from a storyboard signs itself; a cut you assembled out of your own shots is yours, and finishes on your last frame.
Ordering a sequence that reads
The tool concatenates. Everything about whether the result plays as a film is decided before you call it.
Cut on motion, not on stillness. A shot that ends mid-gesture and one that begins mid-gesture join invisibly. Two shots that each settle to a hold before the cut read as two clips shown one after the other.
Keep the grade consistent. Nothing is colour-matched across the join. If one shot came out warmer, it will be warmer in the cut, so fix it in the source, or choose an order where the shift falls on a hard cut rather than inside a continuous action.
Watch the audio seams. Each clip’s own sound is preserved, which means a room tone that changes at every cut is audible. A music bed across the whole piece is the cheapest fix, because a continuous bed papers over discontinuous ambience.
Put the establishing shot first anyway. The aspect ratio comes from clip one unless you set it, so the first item decides the shape of the whole piece.
After the join
The result is an ordinary clip in your library: it lands on the Shorts pill, gets a poster, can be shared, and can be a source again. Two things worth doing with that:
- Caption the cut, not the parts. Running Add subtitles on the joined file gives one continuous set of captions timed against the finished piece, where captioning each clip first gives you seams in the type as well as in the picture. Mind the five-minute cap.
- Join a join. A finished cut is a valid source for another one, which is how a piece longer than twenty shots gets built.
When it goes wrong
It refused the call
One of the three bounds: fewer than two or more than twenty sources, a cut over ten minutes, or a join already running on the account.
Fix: the ceilings are hard, so the answer is to split the piece: join in sections, then join the sections.
Half the film is letterboxed
The clips disagree about shape and the first one set the box.
Fix: state the aspect ratio on the call rather than inheriting it, and generate the run at one ratio. Deciding the shape at the start of a sequence costs nothing; discovering it at the end costs the shots.
The cut jumps at every join
The shots were not made to follow each other. Nothing in a concatenation can recover continuity that was never generated.
Fix: go back to the chain at the top of this page. A clip that starts on the previous clip’s final frame joins seamlessly by construction, and it is the only thing that does.
Every tool is one press inside the studio.
No prompt, no model to choose. Pick the tool, drop the file in, and the finished version lands in your library beside everything else.
Start picturing