This workflow corresponds to n8n.io template #12867 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "9a2uQxkkzUnvVC9BJBnoc",
"name": "Instagram & TikTok Video Dubbing Fal AI",
"tags": [],
"nodes": [
{
"id": "dfc77fe2-21f2-493c-9e07-c7230723a2b2",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1360,
944
],
"parameters": {},
"typeVersion": 1
},
{
"id": "67a8a3b6-d58f-4c16-8425-bcdb40807b1e",
"name": "Set params",
"type": "n8n-nodes-base.set",
"position": [
-1072,
944
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eac89c54-5ee2-4366-95cb-657da5967138",
"name": "video_url",
"type": "string",
"value": "VIDEO_URL"
},
{
"id": "1df84f40-4282-4976-888d-1021234880d1",
"name": "target_audio",
"type": "string",
"value": "es"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f845d0f4-529c-4b42-9847-7f47f93ac8f2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
768
],
"parameters": {
"color": 7,
"width": 320,
"height": 464,
"content": "## STEP 1 - Set params\n**Configure Input Parameters** \n In the *Set params* node, define:\n - `video_url`: Direct URL to the source video.\n - `target_audio`: Language code (e.g., `en`, `es`, `it`) for dubbing."
},
"typeVersion": 1
},
{
"id": "e25b681e-8a15-45d4-b508-7e7b09b40b0b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
768
],
"parameters": {
"color": 7,
"width": 480,
"height": 464,
"content": "## STEP 2- AL AI Elevenlabs Dubbing\nThe video file is sent to the Fal AI **ElevenLabs Dubbing API**, which initiates audio dubbing in the specified target language."
},
"typeVersion": 1
},
{
"id": "f3848152-8178-437a-8517-0126bf1ff263",
"name": "Wait 30 sec.",
"type": "n8n-nodes-base.wait",
"position": [
-224,
944
],
"parameters": {
"amount": 30
},
"typeVersion": 1.1
},
{
"id": "a4775ba8-6a7e-4385-837a-9654c72c39fd",
"name": "Get final video url",
"type": "n8n-nodes-base.httpRequest",
"position": [
384,
928
],
"parameters": {
"url": "=https://queue.fal.run/fal-ai/elevenlabs/requests/{{ $json.request_id }}",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "071f6104-e17f-45bd-9b3e-eb9384214e4f",
"name": "Get final video file",
"type": "n8n-nodes-base.httpRequest",
"position": [
624,
928
],
"parameters": {
"url": "={{ $json.video.url }}",
"options": {}
},
"typeVersion": 4.3
},
{
"id": "1981ed11-d79e-475d-8d6f-ee88144c41aa",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
752
],
"parameters": {
"color": 7,
"width": 468,
"height": 200,
"content": "Set YOUR_USERNAME and TITLE for [Upload-Post]((https://www.upload-post.com/?linkId=lp_144414&sourceId=n3witalia&tenantId=upload-post-app))"
},
"typeVersion": 1
},
{
"id": "5d56bad0-af3e-4de0-9971-bcaa9bd0404c",
"name": "Upload to Postiz",
"type": "n8n-nodes-base.httpRequest",
"position": [
992,
1040
],
"parameters": {
"url": "https://api.postiz.com/public/v1/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "4f254b86-fb67-4371-ba62-e14e2d75c56b",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
640
],
"parameters": {
"color": 7,
"width": 576,
"height": 576,
"content": "## STEP 4 - Upload video\nUpload video to TikTok and Instagram"
},
"typeVersion": 1
},
{
"id": "ed85b060-e1e5-43fd-88df-87409b6605a0",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
976
],
"parameters": {
"color": 7,
"width": 468,
"height": 200,
"content": "Set Channel_ID and TITLE for [Postiz](https://affiliate.postiz.com/n3witalia) (TikTok, Instagram, Facebook, X, Youtube)"
},
"typeVersion": 1
},
{
"id": "49b5fd34-a2ff-4b54-9c02-d0091e722644",
"name": "Video Dubbing",
"type": "n8n-nodes-base.httpRequest",
"position": [
-624,
944
],
"parameters": {
"url": "https://queue.fal.run/fal-ai/elevenlabs/dubbing",
"method": "POST",
"options": {},
"jsonBody": "={\n \"video_url\": \"{{ $json.video_url }}\",\n \"target_lang\": \"{{ $json.target_audio }}\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.3
},
{
"id": "98bd1fd0-c433-4040-ba69-64cfd4e3652a",
"name": "Upload to Instagram",
"type": "n8n-nodes-postiz.postiz",
"position": [
1232,
1040
],
"parameters": {
"date": "={{ $now.format('yyyy-LL-dd') }}T{{ $now.format('HH:ii:ss') }}",
"posts": {
"post": [
{
"value": {
"contentItem": [
{
"image": {
"imageItem": [
{
"id": "={{ $json.id }}",
"path": "={{ $json.path }}"
}
]
},
"content": "=XXX"
}
]
},
"settings": {
"setting": [
{
"key": "__type",
"stringValue": "instagram"
},
{
"key": "post_type",
"stringValue": "post"
}
]
},
"integrationId": "XXX"
}
]
},
"shortLink": true
},
"credentials": {
"postizApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0cc52094-69ce-42aa-bdad-c824eba62585",
"name": "Upload to TikTok",
"type": "n8n-nodes-base.httpRequest",
"position": [
976,
816
],
"parameters": {
"url": "https://api.upload-post.com/api/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "=XXX"
},
{
"name": "user",
"value": "YOUR_USERNAME"
},
{
"name": "platform[]",
"value": "tiktok"
},
{
"name": "video",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "3133f4d4-74e0-46b0-b923-82ac2b74dd29",
"name": "Get status",
"type": "n8n-nodes-base.httpRequest",
"position": [
-32,
944
],
"parameters": {
"url": "=https://queue.fal.run/fal-ai/elevenlabs/requests/{{ $('Video Dubbing').item.json.request_id }}/status ",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "f2d73eed-6c78-4e58-aaab-886350864249",
"name": "Completed?",
"type": "n8n-nodes-base.if",
"position": [
144,
944
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "383d112e-2cc6-4dd4-8985-f09ce0bd1781",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "COMPLETED"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "527690be-1fde-4302-bb2e-eab3e1eb1cc6",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
768
],
"parameters": {
"color": 7,
"width": 1152,
"height": 464,
"content": "## STEP 3- Get and Download video\nAfter the wait, it checks the status and retrieves the final dubbed file."
},
"typeVersion": 1
},
{
"id": "1f596355-7f33-47c1-8aa3-1640963330d9",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
160
],
"parameters": {
"width": 1136,
"height": 576,
"content": "## Auto-Dub Viral Videos for Instagram & TikTok with ElevenLabs using Fal AI\nThis workflow automates the process of **dubbing videos** using Fal AI's **ElevenLabs** integration and publishing them directly to **Instagram and TikTok**.\n\nThis workflow is ideal for social media managers, content creators, and marketing teams who need to **quickly localize and publish video content** across multiple social platforms like Instagram and TikTok.\n\nUsing this workflow, you can take a video in one language (e.g., English) and automatically generate a dubbed version in another language (e.g., Spanish) for publishing on Instagram and TikTok.\n\nThe workflow supports multiple target languages through ElevenLabs, including but not limited to: English (en), Spanish (es), Italian (it), French (fr), German (de), and many others.\n\n### **How it works:**\n\nThis workflow automates dubbing and publishing videos across Instagram and TikTok. It starts with a manual trigger where the user provides a video URL and target language. The video is sent to Fal AI\u2019s ElevenLabs API for audio dubbing, with periodic status checks until completion. Once the dubbed version is ready, it\u2019s downloaded and uploaded simultaneously to TikTok via Upload-Post and to Instagram via Postiz. Finally, the workflow triggers Postiz to publish the Instagram post with preconfigured metadata, completing the dubbing-to-publishing automation.\n\n### **Setup steps:**\n\nDefine input parameters (`video_url`, `target_audio`) in the *Set params* node. Configure credentials for Fal AI, Postiz, and Upload-Post APIs in n8n. Customize TikTok username/title and Instagram channel ID/content. Adjust the 30-second wait time based on typical video length. After setup, test the workflow by executing it in n8n to confirm successful dubbing, uploading, and publishing across both platforms.\n"
},
"typeVersion": 1
},
{
"id": "bfb4fa3c-d00c-4f24-b990-4f6b356b3559",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 7,
"width": 736,
"height": 736,
"content": "## MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I\u2019ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[](https://youtube.com/@n3witalia)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "4a89899a-94c3-4a5b-9be9-c3a64afca4df",
"connections": {
"Completed?": {
"main": [
[
{
"node": "Get final video url",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 30 sec.",
"type": "main",
"index": 0
}
]
]
},
"Get status": {
"main": [
[
{
"node": "Completed?",
"type": "main",
"index": 0
}
]
]
},
"Set params": {
"main": [
[
{
"node": "Video Dubbing",
"type": "main",
"index": 0
}
]
]
},
"Wait 30 sec.": {
"main": [
[
{
"node": "Get status",
"type": "main",
"index": 0
}
]
]
},
"Video Dubbing": {
"main": [
[
{
"node": "Wait 30 sec.",
"type": "main",
"index": 0
}
]
]
},
"Upload to Postiz": {
"main": [
[
{
"node": "Upload to Instagram",
"type": "main",
"index": 0
}
]
]
},
"Get final video url": {
"main": [
[
{
"node": "Get final video file",
"type": "main",
"index": 0
}
]
]
},
"Get final video file": {
"main": [
[
{
"node": "Upload to TikTok",
"type": "main",
"index": 0
},
{
"node": "Upload to Postiz",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Set params",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpHeaderAuthpostizApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the process of dubbing videos using Fal AI's ElevenLabs integration and publishing them directly to Instagram and TikTok.
Source: https://n8n.io/workflows/12867/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automates the end-to-end process of video dubbing using ElevenLabs, storage on Google Drive, and publishing on Youtube.
Notion__DriveDropbox_Sync. Uses notionTrigger, googleDrive, dropbox, notion. Event-driven trigger; 47 nodes.
This n8n workflow automates the process of uploading video and image advertisements to Meta Ads Manager via the Meta Graph API (Facebook Ads) directly from Google Sheets and Google Drive. The workflow
This workflow provides an end-to-end automation for discovering, evaluating, and optionally downloading high-quality educational YouTube videos.
Template Description WDF Top Keywords: This workflow is designed to streamline keyword research by automating the process of generating, filtering, and analyzing Google and YouTube keyword data. Ensur