Hey n8n community, if you run an n8n agency or make short videos for clients, here’s a free n8n workflow template for text to video: one line of text in, a 32-second vertical short out, with AI music, an AI voiceover and subtitles all cut to the beat. Claude Opus 5.5 designs every video from scratch, and Shotstack generates the images, video shots, music and voice and renders it, ready for TikTok, Instagram Reels or YouTube Shorts.
Here’s the workflow, ready to import: beat-synced-shorts-from-csv.json (34.7 KB)
How it works
One Shotstack API key gets you Nano Banana, Gemini and ElevenLabs in n8n, with no Google or ElevenLabs account. Claude writes the video, and Shotstack runs those models to make it.
First, n8n downloads Shotstack’s guide for AI agents and reads the CSV. Then it works through the rows one at a time, and each row becomes one short:
- Claude (or any other AI model) reads the guide and a short brief and writes the whole video as one Shotstack edit. That includes
- Generation of 8 images (using Nano Banana 2 in this case)
- Turns 3 of those imgs into video shots
- Voice over copy and music using Elvenlabs
- Subtitles and animated text
- A Code step checks the edit before runnig. Small corrections, like the spacing on the subtitles, it fixes itself. For anything more complex, goes back to Claude with the exact problem for a solution.
- The Shotstack node starts one render, and Shotstack makes every image, video shot and sound inside it before putting the video together.
- If Shotstack rejects the edit or the render fails, Claude reads the error and fixes the edit. It gets two tries. A wrong API key or an empty balance stops the run straight away, with the reason in red.
- The MP4 lands in your shorts folder, and n8n moves on to the next row.
No template: Claude designs every video
Claude reads the row and decides the shots, the words and the timing itself. For the skate shop above, it opened on a kickflip with “YOUR DECK. YOUR DESIGN.”, slammed the three facts in on orange panels, put “CUSTOM DECKS” over a wall of boards halfway through and closed on a black end card. Run the same row again and you get a different video.
It fixes its own mistakes too. The first render of this video failed on one AI shot, and all Shotstack said was “AI generation failed for 1 asset(s)”. Claude changed “a young skater” to “an adult skateboarder in his late twenties”, and the second render went through. The whole video still took under 11 minutes.
Requirements
- A Shotstack Account. You can start your free trial here.
- An API Key from an AI model. Claude Opus 5.5 has worked best for me.
How to set it up
- Install the Shotstack community node: search for Shotstack in the nodes panel, or go to Settings → Community nodes → Install and enter
@shotstack/n8n-nodes-shotstack. - Open a new workflow, click ⋯ → Import from File and pick the attached
beat-synced-shorts-from-csv.json. - Add your Shotstack API key to the two Shotstack steps.
- Add an API key for your AI model to the two Claude steps. (Replace with a different Model if you wish)
- Save your list as
shorts.csvin n8n’s files folder and make an emptyshortsfolder next to it.- In Docker, mount a folder from your computer there, for example
-v ./n8n-files:/home/node/.n8n-files. - On an npm install the folder is
.n8n-filesin your home folder, so change/home/node/.n8n-filesto yours in Read the CSV and Save the short.
- In Docker, mount a folder from your computer there, for example
- Hit Execute workflow.
Each video takes 10 to 25 minutes and lands in your shorts folder as soon as it’s done, so I’d try one row first before running the whole list.
What goes in the CSV
| Column | What to put in it | Example |
|---|---|---|
| About | The business or product and what the video should say. The AI only uses the facts you give it | Kickflip Skate Shop: custom skateboard decks built in 48 hours, 30 deck designs to choose from, free grip tape on every deck this month. |
That one line made the video above. The images, video shots, music, voiceover, subtitles and animated text all came from it, with no stock footage.
What it costs and how long it takes
About $4 a video all in, and 10 to 25 minutes each. Most of that is the AI generation, which costs the same on every plan, so a bigger plan mainly gets you more videos a month.
| What | Cost |
|---|---|
| Per video | About 18 Shotstack credits, which is $3.50 to $3.60 depending on the plan. The 3 video shots are 7.5 credits, the 8 images 6 and the music 3.75. The voiceover and the render together come to under 1 |
| Per month | Pay as you go starts at $10. Starter ($39 a month) covers about 11 of these videos, Pro ($99) about 28 and Scale ($199) about 55, per month. |
| AI model | On top, billed by your AI provider. With Claude, the first video costs the most, because it reads Shotstack’s whole guide. The guide stays cached for an hour, so the videos after it cost less |
| Free trial | 10 credits, valid for 30 days. For a first video that fits, change “8 images” to 4 in the brief and delete the line about the video shots. That comes to about 7.5 credits |
| Time | Claude writes the edit in about 2 minutes. Shotstack spends 4 to 14 minutes generating the pictures and sound, mostly on the video shots, and about 3 rendering |
Ideas for n8n agencies
- A client sends a list of their offers, and you hand back a folder with a short for each one.
- Put the same row in two or three times to get different cuts of one ad, then test which works best.
- A Schedule trigger picks up new rows in a sheet every week and saves the shorts to Google Drive.
Good to know
- It runs on self-hosted n8n, because it reads and saves files on disk. On n8n Cloud, swap the CSV for the n8n Google Sheets node and the save step for Google Drive.
- The brief is plain English in the step called “Claude makes the video”. Change the length, the tempo, the number of images or the style there.
- The check turns away stock media, so every picture in the video is generated.
- If a render fails, Shotstack keeps what it already generated, and the next try reuses it.
- The subtitles are open captions: they’re part of the picture, so they show everywhere the video plays, with the sound off too.
- And remember to read the words before you post a video anywhere.
Links
- Shotstack free trial
- Shotstack plans and prices
- The Shotstack n8n node on npm
- GitHub Repo
- The first workflow in this series, infographic videos from a CSV
If you try it, post your video in the thread, I’d love to see what you make. And what should I build next: translating videos in bulk, or something you need for a client?
