{
  "id": "mO2AMBYVNqAsz-AnsnEHA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Translate Videos Using ElevenLabs Dubbing",
  "tags": [],
  "nodes": [
    {
      "id": "7335daa4-06e2-4e84-811c-901c9e968c55",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -272,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b1634e6d-c155-4bd0-9e78-2c9966a67f65",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -48,
        336
      ],
      "parameters": {
        "amount": "={{ $json.expected_duration_sec + 120 }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "95caf70f-364c-4135-8181-306e462a11c2",
      "name": "Get video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        256,
        0
      ],
      "parameters": {
        "url": "={{ $json.video_url }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "d01ad394-803c-49af-a0ab-303730a5d7a7",
      "name": "Elevenlabs Dubbing",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        0
      ],
      "parameters": {
        "url": "https://api.elevenlabs.io/v1/dubbing",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            },
            {
              "name": "target_lang",
              "value": "={{ $json.target_audio }}"
            }
          ]
        },
        "nodeCredentialType": "elevenLabsApi"
      },
      "credentials": {
        "elevenLabsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "776c7493-b049-4068-b666-69fd71c56c25",
      "name": "Get Dubbing ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        256,
        336
      ],
      "parameters": {
        "url": "=https://api.elevenlabs.io/v1/dubbing/{{ $('Elevenlabs Dubbing').item.json.dubbing_id }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "elevenLabsApi"
      },
      "credentials": {
        "elevenLabsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "f442e339-3146-4f59-aab9-70804995638a",
      "name": "Download final Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        336
      ],
      "parameters": {
        "url": "=https://api.elevenlabs.io/v1/dubbing/{{ $json.dubbing_id }}/audio/{{ $json.target_languages[0] }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "elevenLabsApi"
      },
      "credentials": {
        "elevenLabsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "6c6a6d96-55e4-4cb5-93de-8cc285a2565e",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        928,
        368
      ],
      "parameters": {
        "name": "={{ $binary.data.fileName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ",
          "cachedResultName": "n8n"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "fea17573-7dff-49f2-b299-8fdb2a48c95c",
      "name": "Upload Video to Postiz",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        928,
        560
      ],
      "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": "f62f9132-b703-41f1-b325-f29b6f6b0bf7",
      "name": "Youtube Upload-Post",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        944,
        768
      ],
      "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": "=YOUR_CONTENT"
            },
            {
              "name": "user",
              "value": "YOUR_USERNAME"
            },
            {
              "name": "platform[]",
              "value": "youtube"
            },
            {
              "name": "video",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a7dedbc2-fdcf-4577-b212-c52f9473ad52",
      "name": "Set params",
      "type": "n8n-nodes-base.set",
      "position": [
        -48,
        0
      ],
      "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": "ccfd28ad-559c-4347-bf93-f08eb93ac6f6",
      "name": "Youtube Postiz",
      "type": "n8n-nodes-postiz.postiz",
      "position": [
        1136,
        560
      ],
      "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": "=YOUR_CONTENT"
                  }
                ]
              },
              "integrationId": "XXX"
            }
          ]
        },
        "shortLink": true
      },
      "credentials": {
        "postizApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "eb59ef51-df2d-4662-a03d-9cc5f8541fca",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -1008
      ],
      "parameters": {
        "width": 832,
        "height": 768,
        "content": "## Automatically Translate and Upload YouTube Videos Using ElevenLabs AI Dubbing\n\nThis workflow automates the end-to-end process of **video dubbing** using **ElevenLabs**, storage on Google Drive, and publishing on **Youtube**.\n\nThis workflow is ideal for creators, agencies, and media teams that need to **TRANSLATE process** and publish large volumes of video content consistently.\n\nFor this workflow, I started from my [Italian YouTube Short](https://iframe.mediadelivery.net/play/580928/c445daec-e3fe-4019-b035-58ac3bf386dd), and by applying the same workflow, the result was this [English version](https://iframe.mediadelivery.net/play/580928/2179db44-e7e2-43e6-82a1-13b12e18ba8b).\n\n### **How it works:**\n\nThis workflow automates the entire video dubbing and publishing process using AI. It starts by receiving input parameters (video URL and target language), then downloads the source video via HTTP request. The file is sent to the ElevenLabs Dubbing API for language dubbing, and the workflow waits dynamically based on video length. Once dubbing is complete, it retrieves the dubbed file and uploads it simultaneously to Google Drive, Postiz, and Upload-Post for YouTube publishing. Finally, the Postiz node schedules or posts the localized video with the correct metadata.\n\n\n### **Setup steps:**\n\n1. **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`, `fr`) for dubbing.\n\n2. **Set Up Credentials**  \n   Ensure the following credentials are configured in n8n:\n   - **[ElevenLabs API](https://try.elevenlabs.io/ahkbf00hocnu)** (for dubbing)\n   - **Google Drive OAuth2** (for file upload)\n   - **[Postiz API](https://affiliate.postiz.com/n3witalia)** (for social media scheduling)\n   - **[Upload-Post.com API](https://www.upload-post.com/?linkId=lp_144414&sourceId=n3witalia&tenantId=upload-post-app)** (for YouTube upload)\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bc2e7428-696d-4e00-9b0a-b3ed3e247234",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -192
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 352,
        "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": "66dabaa7-a6e4-4552-a734-7ffbdcd5ce0a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -192
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 352,
        "content": "## STEP 2- Elevenlabs Dubbing\nThe video file is sent to the **ElevenLabs Dubbing API**, which initiates audio dubbing in the specified target language."
      },
      "typeVersion": 1
    },
    {
      "id": "cefc4662-6aa9-4b4c-979e-052fd8310e5f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        192
      ],
      "parameters": {
        "color": 7,
        "width": 832,
        "height": 352,
        "content": "## STEP 3- Download video\nAfter the wait, it checks the dubbing status using the dubbing_id and retrieves the final dubbed audio file."
      },
      "typeVersion": 1
    },
    {
      "id": "c6f9338b-1118-4f21-b8bc-fd90ae70bd84",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        192
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 768,
        "content": "## STEP 4- Upload to Google Drive & Youtube\nAfter the wait, it checks the dubbing status using the dubbing_id and retrieves the final dubbed audio file.\n\nRemember to set the video description parameters in these nodes, choose one of the two platforms for uploading the YouTube video, and disconnect the other from the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "af5922b9-0c3b-44f1-9d2a-ed4c15ef95e9",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        -976
      ],
      "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[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "1b985a74-ee8b-400d-85c9-ee3cd9cb3dd7",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Dubbing ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video": {
      "main": [
        [
          {
            "node": "Elevenlabs Dubbing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set params": {
      "main": [
        [
          {
            "node": "Get video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Dubbing ID": {
      "main": [
        [
          {
            "node": "Download final Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Elevenlabs Dubbing": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download final Video": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          },
          {
            "node": "Upload Video to Postiz",
            "type": "main",
            "index": 0
          },
          {
            "node": "Youtube Upload-Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Video to Postiz": {
      "main": [
        [
          {
            "node": "Youtube Postiz",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Set params",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}