
In this step-by-step tutorial, you'll learn how to automatically generate videos using a simple n8n workflow and Creatomate's video generation API.
Looking to create videos on autopilot? Imagine each new product, property listing, or customer record triggering a video made for it.
In this tutorial, you'll build a simple n8n workflow with Creatomate to generate videos from a reusable template. Once you know the basics, you can connect the apps and content sources you already use.
We'll begin with a simple video: new text, new footage, and a reusable template. From there, you can adapt the workflow to your own ideas, including Shorts, generative AI, and publishing to YouTube.
Want a different look? Creatomate's visual editor lets you customize the template or design your own, from the layout and fonts to the colors and animations. Whether you're making personalized videos or social media content, you can give them a style that fits your brand.
Looking for a more specific n8n video workflow?
Check out one of these tutorials:
n8n video automation means turning content from your apps into videos without editing each one by hand. A trigger starts the workflow in n8n, which collects the text, images, or footage you want to use. Creatomate adds that content to a reusable video template and renders the finished video. n8n can then download, store, or publish the result.
What kinds of videos can you automate?
Any repeatable format whose content changes from one video to the next is a good candidate. For example:
We'll use sample content and a simple promotional template in this tutorial. Once you've seen how it works, you can connect your own data source, choose a different template, and decide what happens to each finished video.
We'll start in Creatomate by importing a ready-made template. The template defines the design and contains three dynamic elements: one video and two text fields. These elements act as placeholders that n8n can replace on every workflow run.
In n8n, a Manual Trigger starts the workflow and an Edit Fields node provides the sample content. We'll select the imported template in the Creatomate node and map each input to its dynamic element. The node then returns the finished video's URL.
Finally, an HTTP Request node downloads the MP4 as binary data. You can preview or download that file in n8n, or pass it to another node that uploads or stores videos.
The finished workflow contains only four nodes:

Let's get started!
Log in to your Creatomate account or sign up for free if you don't have one yet.
For this tutorial, we'll use the Quick Promo template. Click the banner below to add a copy directly to your Creatomate project:

Once imported, the template opens in the editor. On the left, you'll see the elements that make up the video. Three of them are dynamic, meaning n8n can provide a different value for each new video:

You don't need to change anything in the editor to follow this tutorial. For now, keep the dynamic element names as shown; we'll map n8n data to them in step 3. You can still customize the design later, and future videos will use the updated template.
The template is ready. Let's build the n8n workflow.
If you're new to n8n, set up an n8n workspace first. You can use n8n Cloud or a self-hosted instance. In your n8n dashboard, click Create workflow.
Click Add first step... and choose Trigger manually. The trigger appears on the canvas as When clicking 'Execute workflow':
Next, click the + on the right of the trigger and add the Edit Fields (Set) node.
Set Mode to JSON, select the example content already shown in the field, and replace it with the following:
{
"video": "https://cdn.creatomate.com/demo/video5.mp4",
"text-1": "Hello n8n users 👋",
"text-2": "It's easy to create videos with your own workflows!"
}

These three fields provide a video URL and two pieces of text. We'll connect them to the template's dynamic elements in the next step.
You can replace the text or video URL with your own content. Make sure the media file is available from a publicly accessible URL so Creatomate can retrieve it during rendering.
Click Execute step. The output should show the three fields and their values:

Now we'll connect this content to Creatomate.
Click the + after the Edit Fields node and search for Creatomate. If you haven't used the node before, click Install node; n8n installs it automatically:

Then choose Create a render under Render actions:

Connect your Creatomate account
Under Credential, click Connect to Creatomate:

In a separate browser tab, return to Creatomate. Click your project in the top-left corner and choose Project Settings. Open the API section and copy the key for this project:
Back in n8n, paste the key into the Creatomate credential and save it:

An API key belongs to one Creatomate project. If you work with multiple projects, create a separate n8n credential for each one.
Select the imported template
Return to the Creatomate node. Under Template, leave From list selected and choose the Quick Promo template you imported in step 1.
The node retrieves the templates from the project connected through your credential. After you select one, it loads that template's dynamic elements:

Map the dynamic fields
Under Mapping Column Mode, leave the default Map Each Column Manually selected. The template's dynamic elements appear under Values to Send. Fill each field with the corresponding value from the Edit Fields output:
{{ $json.video }}{{ $json['text-1'] }}{{ $json['text-2'] }}You can drag each value from the input panel into its corresponding field. n8n will create the expression for you. Or paste the expressions above, switch the field to Expression if needed, and check its preview. It should show the sample video URL or text rather than the expression itself:

Tip: If the incoming field names exactly match the template's dynamic elements, you can switch Mapping Column Mode to Map Automatically. Matching is case-sensitive, so the capitalization must be identical.
Wait for the render to finish
Make sure Wait for Completion is enabled. It is on by default.
With this option enabled, the Creatomate node waits until the video has finished rendering. Only then does n8n run the next node, which can use the completed video’s URL.
Render time depends on the duration and resolution of the video, the complexity of the template, and any third-party services used by its elements. A simple video may finish in seconds, while longer or AI-generated videos can take several minutes.
Click Execute step to generate the video.
Once it is ready, the node output should show a successful render and include a public url for the finished MP4:

You can open this URL in your browser to watch the finished video. Here’s the video generated by this workflow:
In the next step, we’ll download the same video file into n8n, where you can preview it or pass it to other nodes.
You can also find this render on the API Log page in your Creatomate dashboard. It shows whether the render succeeded, how long it took, and any error details. If the render fails, the n8n workflow stops by default; check the API Log to see what went wrong before running it again.

Some n8n nodes accept a public video URL, while others require the actual file as binary data. We'll download the MP4 so the workflow works as a useful starting point for either case.
Click the + after the Creatomate node, add an HTTP Request node, and configure it as follows:
{{ $json.url }}dataNo authentication is needed because the completed video is served from its public output URL.

Before running the node, check that the URL preview resolves to the actual MP4 URL returned by Creatomate.
Click Execute step. The output now contains the MP4 in the binary field data. Click View to preview it, or Download to save it:

That's it! The workflow has taken dynamic content, applied it to a reusable template, waited for the render to finish, and returned the completed video file.
Our example uses a Manual Trigger and fixed sample content so it is easy to test. In a real automation, replace those parts with the apps and data you already use.
Choose what starts the workflow
For example, you could start the workflow:
The fields from that source can be mapped directly to the template. If their names match the dynamic element names, the Creatomate node can map them automatically. Otherwise, map each incoming field manually.
Choose what happens to the video
The Creatomate node returns the finished video’s URL, while the HTTP Request node downloads the actual MP4 file. Which one you use depends on the next app in your workflow.
You could:
If the next node accepts a public URL, use {{ $json.url }} from the Creatomate output and skip the download. If it requires a file, pass it the data binary field from the HTTP Request node.
You now know the basic pattern for creating videos automatically with n8n and Creatomate: collect dynamic content, map it to a reusable template, wait for the video to finish, and send the result wherever it needs to go.
From here, you can explore a more specific workflow:
👉 Automatically create and upload YouTube Shorts with n8n
👉 Turn a topic into a faceless Short with ChatGPT and n8n
👉 Create AI-generated Shorts with GPT Image and n8n
👉 Create videos with AI voiceovers using ElevenLabs and n8n
👉 Automatically add animated subtitles to videos with n8n
👉 Turn a variable number of images into a slideshow video with n8n
Once you've chosen your input and destination, activate the workflow to let it run automatically.
n8n manages the workflow but doesn't render the video itself. It collects and transforms the content, then sends it to a video-rendering service such as Creatomate. Creatomate applies that content to a template and returns the finished video to n8n.
Yes. The verified Creatomate node is available from n8n's node panel. Install it, connect your Creatomate project with its API key, and choose "Create a render" to generate videos from your template using data from earlier workflow steps.
Yes. You can customize the provided template or create a new one in Creatomate. Mark the elements that should receive workflow data as dynamic, then select the template in the Creatomate node. Its modification fields appear under Values to Send. You can fill each field with data from earlier n8n steps.
Yes. n8n can connect AI models and services that generate scripts, voiceovers, images, or individual video clips. Creatomate can then combine those assets into a consistent branded video with transitions, subtitles, and other design elements. See our faceless Shorts tutorial and GPT Image tutorial for complete examples.
Yes. Download the MP4 as binary data and pass the data field to n8n's YouTube upload node. You can supply the title and description from your data source or generate them earlier in the workflow. See our YouTube Shorts tutorial for a full example.
Start with a full-featured trial with 50 credits, no credit card required.
Get started for free →