Free n8n flow

Link to video

Paste a YouTube URL. This workflow pulls the transcript, writes a short script, asks Gemini Veo for b-roll, and sends the pieces to Creatomate for a vertical render. The Gemini key stays inside n8n. It is not placed in the clip URL Creatomate receives. It is free. There is no form on this page. You import it into your own n8n and run it there.

The flow file and setup help are in #freebies on our Discord.

How it works

The trigger is When clicked, so each video starts when you run it. There is no schedule in the file.

Transcript, then a script

Input holds the YouTube URL (https://www.youtube.com/watch?v=VIDEO_ID until you replace it) and an aspect ratio of 9:16. Get Transcript calls Supadata with $env.SUPADATA_API_KEY. Claude: Write Script posts to Anthropic with $env.ANTHROPIC_API_KEY. Parse Script reads the JSON: hook, voiceover, and the first visual prompt.

Veo makes the clip

Gemini Veo: Generate starts veo-3.0-fast-generate-001. The key goes on that request as a query param to Google, from $env.GEMINI_API_KEY. Wait for Veo pauses, then Gemini Veo: Poll checks the operation. Veo is often still working after one wait. If the next node says it is not ready, raise the wait or loop back until done is true.

Creatomate never sees the key

Extract Video URL reads the file URI from the Veo response. It then asks Gemini for that file with the key in the x-goog-api-key header, and keeps the redirect URL. That redirect is what Creatomate gets as Video-1. The API key is not concatenated onto the URL.

Creatomate: Render posts to the renders API with $env.CREATOMATE_API_KEY in the Authorization header. The template id is YOUR_CREATOMATE_TEMPLATE_ID. Modifications fill elements named Hook, Voiceover, and Video-1. Get Render ID and Wait for Render lead to Creatomate: Get Video, which fetches the finished render.

What you need

  • Supadata. SUPADATA_API_KEY for the transcript call. The note in the file says you can swap this HTTP node for another transcript API.
  • Anthropic. ANTHROPIC_API_KEY.
  • Gemini. GEMINI_API_KEY. The generate and poll calls send it to Google. The clip step sends it as a header, not inside the URL passed to Creatomate.
  • Creatomate. CREATOMATE_API_KEY and a 9:16 template whose elements are named Hook, Voiceover, and Video-1. Paste the template id over YOUR_CREATOMATE_TEMPLATE_ID.

This file reads secrets with $env. n8n 2.x blocks that by default. If a node stops with an env access error, use the n8n env access fix.

How to use it

Four steps. The file in #freebies is rup-link-to-video.json.

1

Get the file

Join Discord and open #freebies. The flow file and setup help are there.

2

Import into n8n

In n8n, use Import from File and pick the JSON from #freebies.

3

Connect what it asks for

Set the four env keys, paste a real YouTube URL, and paste your Creatomate template id.

4

Run it

Run When clicked. If Veo is not done after the wait, lengthen Wait for Veo and run from the poll again. Creatomate: Get Video should return the render when it finishes.

Questions

Does Creatomate receive my Gemini API key?

No. The key is sent on the download request inside n8n, in the x-goog-api-key header. Creatomate receives the redirect URL for the clip, without that key.

What aspect ratio does the file use?

Input sets 9:16. The Creatomate template should be a vertical layout with elements named Hook, Voiceover, and Video-1.

How long does Veo take?

Often one to three minutes. Wait for Veo is a pause, not a loop. If the extract node says Veo is not ready, increase the wait.

Can I use a different transcript service?

Yes. Get Transcript is an HTTP node aimed at Supadata. Point it at another API that returns the transcript text, and keep the fields Parse Script expects.

A small note

Goat O Mate is a community of builders shipping marketing and AI automations together.

Join Discord