How I turn a YouTube video into a short with n8n and AI
To turn a YouTube video into a short, you run one n8n flow. You paste a YouTube URL, it pulls the transcript, sends the text to an AI model that writes an original hook, voiceover and scene prompts, makes a vertical b-roll clip with Gemini Veo, then builds a 9:16 short with Creatomate. One URL goes into the Input node and a ready-to-post short comes out.
I built this because I was tired of turning my own long videos into Shorts and Reels by hand. That meant watching the video back, writing a script, hunting for footage, recording a voiceover and editing for about an hour per clip. This is a real template I run. Here is the whole thing: why it matters, the usual ways people do it, how mine works, and how to point it at your own videos.
The problem
A good YouTube video is already a good script for a short. Getting from the long video to a posted short by hand is the slow part.
Say you want a short vertical clip from a YouTube video you already made. You watch it back, write a hook, cut it down to a tight voiceover, find footage that fits, record the audio, then edit it all into a 9:16 clip. That is close to an hour for one short. Do it every week across a few videos and it becomes a real job. So most videos never get turned into shorts, and the ones that do come out slow and expensive.
Demand is real. In HubSpot's 2024 survey short-form video was the top format for ROI and was used by 83 percent of marketers. The catch is cost: Wistia found 57 percent of teams spend more time making videos than promoting them.
How most people turn a video into shorts today
There are three common ways to get a short out of a YouTube video. Each has a catch.
Clip and edit it by hand
You scrub the long video, pull the best moments, add captions and cut it into a vertical clip in an editor. The result is yours and it is free. But it is about an hour per short, and that time is the reason most videos never get repurposed.
Hire a video editor
Hand the video to a freelancer or an agency and get polished shorts back. The quality is high, but you pay per clip, you wait a day or two for each round, and every small tweak means another back and forth.
A paid repurposing tool
Tools like Opus Clip or Vizard chop a long video into shorts in one click. They are fast. They also charge every month, the clips often look like everyone else's, and your footage and captions live inside their app instead of a flow you own and can change.
The fix
You own it, it costs cents per short to run, and you can change any part of it.
A single n8n flow does the whole chain for you. You paste one YouTube URL, and it pulls the transcript, writes an original script, makes a b-roll clip, and assembles the short. No manual scripting, footage hunting or editing in between. Here is what it does, in three parts.
Pulls the transcript
It sends the YouTube URL to a transcript API and gets back the plain text of what was said in the video. That text is what the script is written from, so the video needs a transcript or captions for this step to work.
Writes a fresh original script with AI
The transcript goes to an AI model that writes an original hook, a tight 90 to 110 word voiceover, on-screen captions and one visual prompt per scene. The prompt asks for fresh wording, so the short is your own writing based on the video, not a copy of it.
Generates b-roll and renders the short
The first visual prompt goes to Gemini Veo, which renders a short vertical clip. Then Creatomate drops the hook, voiceover and clip into a 9:16 template and renders the final video. That video URL is the file you post.
Want this running for you?
Take the file and set it up yourself, or book a free call and we wire it into your stack with your own API keys and brand template.
Build it step by step
Every node in the flow, in the order the data runs through it, and how to set each one up.
- 1When clicked · Manual Trigger
Starts the run by hand while you test a video.
Set it up: Add a Manual Trigger. When you want it to run on its own later, swap this for a Schedule Trigger or a Webhook.
- 2Input · Set
Holds the YouTube URL and the shape of the video.
Set it up: Add a Set node with two fields: url (the YouTube video you want to turn into a short) and aspectRatio (9:16). Every later node reads these two values.
- 3Get Transcript · HTTP Request
Pulls the video's transcript from the Supadata API.
Set it up: Add an HTTP Request that points at the Supadata transcript API and passes the YouTube URL, with your SUPADATA_API_KEY in the x-api-key header. It returns the transcript text in the content field.
- 4Claude: Write Script · HTTP Request
Sends the transcript to an AI model that writes the script.
Set it up: POST to the model's messages endpoint with your API key. Pass the first 6000 characters of the transcript and ask for hook, voiceover, captions and visual prompts back as JSON. This flow calls the claude-opus-4-8 model.
- 5Parse Script · Code
Reads the reply and pulls out the first scene prompt.
Set it up: Add a Code node that parses the JSON and returns hook, voiceover, captions, and the first visual prompt as named fields the later nodes can use.
- 6Gemini Veo: Generate · HTTP Request
Starts the b-roll clip.
Set it up: POST the first visual prompt and the aspect ratio to the veo-3.0-fast generate endpoint with your Gemini key. It returns an operation name, which is a job ticket, not a finished clip.
- 7Wait for Veo · Wait
Gives Veo time to render the clip.
Set it up: Add a Wait node set to 60 seconds. Veo can take one to three minutes, so raise this number if the clip is often not ready in time.
- 8Gemini Veo: Poll · HTTP Request
Checks whether the clip is done.
Set it up: Add an HTTP Request to the operation name from the generate step, with your Gemini key, to read the job's status.
- 9Extract Video URL · Code
Grabs the clip link, or stops if it is not ready.
Set it up: Add a Code node that checks the done flag. If it is not done, it throws an error on purpose. If it is done, it pulls the clip link and adds your API key to the end so the file can be downloaded.
- 10Creatomate: Render · HTTP Request
Builds the final short.
Set it up: POST to Creatomate with your template id and your key. Map the hook, voiceover and clip link into the template elements named Hook, Voiceover and Video-1.
- 11Get Render ID · Code
Grabs the render job id.
Set it up: Add a Code node that reads the first render id from the reply, so the next steps can check on that exact job.
- 12Wait for Render · Wait
Gives Creatomate time to assemble the short.
Set it up: Add a Wait node set to 40 seconds. Creatomate renders in the background, so this pause lets it finish before you read the result.
- 13Creatomate: Get Video · HTTP Request
Reads back the finished video link.
Set it up: Add an HTTP Request to the render id with your Creatomate key. It returns the final video URL, which is the file you post.
What made it tricky?
Three things ate most of the build time. If you rebuild this, they are where it goes wrong first.
It needs a video with a transcript
The whole flow is written from the transcript, so the video has to have a transcript or captions. The Get Transcript step reads the caption text for the YouTube URL. If a video has captions turned off and no transcript, that step comes back empty and the script model has nothing to write from. Pick a video with captions, and check the content field has text before the run moves on.
Veo runs in the background
Gemini Veo does not hand back a video. It hands back an operation name, so the flow generates, waits 60 seconds, then checks the job. Veo can take one to three minutes, and if 60 seconds is not enough the Extract Video URL node throws on purpose. The fix is a longer wait, or an If node that loops back to the wait until done is true.
Downloading the Veo clip
The clip link that Veo returns will not download on its own. Veo file links need the API key added to the end as a query parameter, so the Extract Video URL Code node bakes the key onto the URL before it passes the link to Creatomate. Miss that and the render engine gets a link it cannot open.
How do I adapt it to my own setup?
The template runs end to end once you set a few things. Here are the pipeline stages and exactly what you change in each.
| Stage | Node | What you set |
|---|---|---|
| Pull the transcript | Input, Get Transcript | Paste the YouTube URL you want to turn into a short, pick the aspect ratio, and add your SUPADATA_API_KEY. |
| Write the script | Claude: Write Script | Add your model API key and, if you want, tweak the system prompt to match your voice and length. |
| Make the b-roll | Gemini Veo: Generate | Add your Gemini API key. Veo turns the visual prompt into a short vertical clip. |
| Assemble the short | Creatomate: Render | Build a 9:16 template with elements named Hook, Voiceover and Video-1, then paste its template id. |
The transcript step is swappable. This flow uses Supadata, but you can point it at Apify or any endpoint that returns the transcript text, as long as it hands back the words in a field the next node can read. The four environment keys the workflow expects are SUPADATA_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY and CREATOMATE_API_KEY. Set those, drop your YouTube URL into the Input node, and point Video-1 at a template that matches your chosen aspect ratio. If you would rather not wire up four APIs and a background render loop yourself, this is exactly the kind of build you can hire an n8n expert to finish.
Wondering what that costs? See what an n8n expert costs in 2026.
n8n AI video questions, straight answers.
How do I turn a YouTube video into a short with n8n and AI?
Build an n8n workflow that pulls the video's transcript with an HTTP Request node, sends it to an AI model that writes an original hook, voiceover and scene prompts, generates vertical b-roll with Gemini Veo, then assembles a 9:16 short with Creatomate. You paste one YouTube URL into the Input node and a ready-to-post short comes out the other end.
Which AI models does the workflow use?
Two. The Claude: Write Script node calls the claude-opus-4-8 model to turn the transcript into an original hook, voiceover and visual prompts as structured JSON. Gemini Veo, the veo-3.0-fast model, turns the first visual prompt into a short vertical clip. Creatomate is the render engine, not an AI model. It stitches the caption, voiceover and clip into the final short.
Does it work with any YouTube video?
It works with any YouTube video that has a transcript or captions. The Get Transcript step reads the caption text for the video, and the whole script is written from that text. If a video has captions turned off and no transcript, there is nothing for the AI to read, so pick a video that has one. Check the content field comes back with text before you trust the rest of the run.
Does the short copy the original video?
No, and that is on purpose. The Write Script system prompt tells the model to write original, legally clean copy in its own words and never copy the source. It reads the first 6000 characters of the transcript for context, then writes a fresh hook, a 90 to 110 word voiceover and its own scene prompts. The short is your own writing based on the video, not a re-upload or a copy of it.
Why does the workflow need two Wait nodes?
Because two steps run in the background. Gemini Veo returns an operation name, not a finished clip, so Wait for Veo pauses 60 seconds before Gemini Veo: Poll checks it. Creatomate also renders in the background, so Wait for Render pauses 40 seconds before Creatomate: Get Video reads the finished URL. Skip the waits and you check for files that do not exist yet.
What happens if Veo is not finished after the wait?
The Extract Video URL Code node checks the done flag. If the clip is not ready it throws an error on purpose so you notice, instead of passing an empty video forward. The fix is to raise the Wait for Veo amount above 60 seconds, or add an If node that loops back to the wait and keeps checking until done comes back true.
How much does it cost to run this workflow?
n8n itself can be free and self-hosted. The running cost is API usage: the transcript call, the model call for the script, one Gemini Veo generation per video, and one Creatomate render. Veo is the biggest line item because video generation is priced per clip. A single short is cents to a couple of dollars depending on clip length and the model you choose.
Want this running on your own videos?
30 minutes, free. Bring the YouTube videos you want turned into shorts and your brand template. You leave with a plan to go from a YouTube URL to a ready-to-post short on autopilot, whether you build it or we do.
Keep reading.
Get fresh job matches every morning
It pulls jobs from many free sites into one pool and emails each person their best matches daily.
Let your inbox answer the easy emails
It reads new replies, writes safe answers, and takes people off the list the moment they ask.
Reply to ad comments while you sleep
It sorts every comment, answers the simple ones, and sends the tricky ones to a person.
Rather have it built for you?
Skip the build. A free 30-minute call and we set this up in your stack, live in a week or two.