AutomationFlowsSocial Media › Generate AI Avatar Videos with Gpt-5 & Publish to Social Media Platforms

Generate AI Avatar Videos with Gpt-5 & Publish to Social Media Platforms

ByDr. Firas @drfiras on n8n.io

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Event trigger★★★★★ complexityAI-powered41 nodes@Blotato/N8N Nodes BlotatoGoogle SheetsOpenAIAgentOpenAI ChatTool ThinkGoogle Sheets ToolTelegram Trigger
Social Media Trigger: Event Nodes: 41 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7715 — we link there as the canonical source.

This workflow follows the Agent → Google Drive recipe pattern — see all workflows that pair these two integrations.

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 →

Download .json
{
  "id": "U6YpMk689YxKedre",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "\ud83d\udca5 HeyGen - From Idea to Post: GPT-5 Video Automation for YouTube, TikTok & Instagram - vide",
  "tags": [],
  "nodes": [
    {
      "id": "2db3bc49-9f08-4d3c-909f-eed7e09abbc1",
      "name": "ID Avatar",
      "type": "n8n-nodes-base.set",
      "position": [
        -2000,
        32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2e9ea966-70fc-4477-b859-92c783610c6a",
              "name": "id_avatar",
              "type": "string",
              "value": "={{ $json['ID AVATAR'] }}"
            },
            {
              "id": "ea14b33c-a1cf-4000-bb1b-7bae0bad74ac",
              "name": "voice_url",
              "type": "string",
              "value": "={{ $('TmpFiles: Upload Voice (Public URL)').item.json.data.url.replace('org/', 'org/dl/') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "440c3c87-ca02-464c-abe7-1c7d868b20a6",
      "name": "Upload Video to BLOTATO",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2368,
        752
      ],
      "parameters": {
        "mediaUrl": "=https://drive.google.com/uc?export=download&id={{ $json.final_google_drive_url }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "15274c58-baf4-485a-84e1-150e29d2c70f",
      "name": "Youtube",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1360,
        528
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "8047",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/8047",
          "cachedResultName": "DR FIRASS (Dr. Firas)"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}",
        "postCreateYoutubeOptionTitle": "={{ $('Google Sheets - Read Post Data').item.json.Title }}",
        "postCreateYoutubeOptionPrivacyStatus": "private",
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b82db960-143b-415b-845c-067681020db9",
      "name": "Tiktok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1936,
        352
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "9332",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/9332",
          "cachedResultName": "docteur.firas"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9aa4aea3-b286-45b9-a18d-b279d78230fa",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -976,
        432
      ],
      "parameters": {
        "mode": "chooseBranch",
        "numberInputs": 9
      },
      "typeVersion": 3.2
    },
    {
      "id": "b4f8f770-1372-403e-88a0-32a855f6196b",
      "name": "Linkedin",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1664,
        352
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1446",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1446",
          "cachedResultName": "Samuel Amalric"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3bdc5eb3-bf09-44b3-8a61-facaf90bac2f",
      "name": "Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1360,
        352
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1759",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
          "cachedResultName": "Firass Ben"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "101603614680195",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
          "cachedResultName": "Dr. Firas"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "62a23925-dd2e-4290-8f14-044630963873",
      "name": "Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1936,
        528
      ],
      "parameters": {
        "options": {
          "instagramMediaType": "reel"
        },
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "7341",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/7341",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c83c16b9-2611-4400-a405-0ab01e399195",
      "name": "Threads",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1936,
        720
      ],
      "parameters": {
        "options": {},
        "platform": "threads",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "2280",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/2280",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2ae7d7ea-e809-4c07-8147-34c8ff532270",
      "name": "Bluesky",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1664,
        720
      ],
      "parameters": {
        "options": {},
        "platform": "bluesky",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "6012",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/6012",
          "cachedResultName": "formationinternet.bsky.social"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1d7e7c2c-fea3-4dda-9b47-9cbc47e0bead",
      "name": "Pinterest",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1360,
        720
      ],
      "parameters": {
        "options": {},
        "platform": "pinterest",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "363",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/363",
          "cachedResultName": "formationinternet2022"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "pinterestBoardId": {
          "__rl": true,
          "mode": "id",
          "value": "1146658823815436667"
        },
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5f79c2a7-aa12-494d-91d1-ab2abc0aceef",
      "name": "Twitter (X)",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -1664,
        528
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1289",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1289",
          "cachedResultName": "Docteur_Firas"
        },
        "postContentText": "={{ $('Google Sheets - Read Post Data').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "be45a4af-f217-43c0-a82a-b8833c25b169",
      "name": "Get Google Drive ID",
      "type": "n8n-nodes-base.set",
      "position": [
        -2368,
        544
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1750d20-2f6e-4826-80b8-654d0985120d",
              "name": "final_google_drive_url",
              "type": "string",
              "value": "={{ $json['URL VIDEO FINAL'].match(/https:\\/\\/drive\\.google\\.com\\/file\\/d\\/([A-Za-z0-9_-]+)/i)[1] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "be173270-8167-4dab-b04d-f9ef1f8f0a69",
      "name": "Google Sheets - Update Status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -752,
        352
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Posted",
            "ID VOICE": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}"
          },
          "schema": [
            {
              "id": "ID VOICE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VOICE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Caption",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO FINAL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO FINAL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID VOICE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "3642fb52-da0a-4036-9f31-ca7a4c755933",
      "name": "OpenAI - Transcribe Video to Text",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -1888,
        -528
      ],
      "parameters": {
        "options": {
          "language": "fr",
          "temperature": 0
        },
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "f5671039-1376-4edc-86bd-dd5dce7462ca",
      "name": "AI Agent - Generate Title & Caption",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1072,
        -528
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "=You will create a concise Title and a short Caption using ONLY the TRANSCRIPTION below. Do not invent new content. Detect the language from the TRANSCRIPTION and write in that same language. No emojis. No hashtags.\n\nRULES\n- Title: clear, compelling, faithful to the content. Aim \u2264 70 characters. No clickbait. No emojis/hashtags.\n- Caption: \u2264 200 characters (characters, not words). Crisp, adds context or a takeaway. No emojis/hashtags.\n- Keep facts aligned with the TRANSCRIPTION. No external info.\n- Output JSON only on a single line. No markdown, no explanations.\n\nFINAL OUTPUT (single line JSON):\n{\"title\":\"<TITLE>\", \"caption\":\"<CAPTION>\"}\n\nTRANSCRIPTION:\n{{ $json.text }}\n\nUse the Google Sheets tool to save the generated title and caption for this video.\n\n\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "9487e768-6352-4135-9bf8-392a3363b594",
      "name": "OpenAI Model GPT-5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1168,
        -288
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "359022f8-0f97-4b14-8c53-80b40a962d14",
      "name": "LangChain - Think Tool",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        -992,
        -288
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "523dab0e-f7a1-4fa5-b37c-6f97101f8747",
      "name": "Google Sheets - Update Title & Caption",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -768,
        -288
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
            "Caption": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Caption', ``, 'string') }}",
            "ID VOICE": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}"
          },
          "schema": [
            {
              "id": "ID VOICE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VOICE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Caption",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO FINAL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO FINAL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID VOICE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "1fb99f4c-f380-4458-a380-1cc6144c8cef",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2496,
        -624
      ],
      "parameters": {
        "width": 1040,
        "height": 512,
        "content": "# Step 1 \u2014 Capture & Transcribe Voice Input"
      },
      "typeVersion": 1
    },
    {
      "id": "16a947a8-f7e0-4c3d-b0c7-529736ba613a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        -624
      ],
      "parameters": {
        "width": 912,
        "height": 512,
        "content": "# Step 2 \u2014 Generate Title & Caption with GPT\u20115\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3fa62cb8-37cb-4e3e-8d1a-6ba90ef72ac3",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        -80
      ],
      "parameters": {
        "color": 4,
        "width": 1984,
        "height": 320,
        "content": "# Step 3 \u2014 Create AI Avatar Video (HeyGen)"
      },
      "typeVersion": 1
    },
    {
      "id": "a4b71152-9149-4e23-9617-679c735ae5e0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2496,
        272
      ],
      "parameters": {
        "width": 1976,
        "height": 664,
        "content": "# \ud83d\ude80 Step 4 \u2014 Auto-Publish to 9 Social Platforms"
      },
      "typeVersion": 1
    },
    {
      "id": "d9a4a1d4-7003-4224-aeaf-14c51424e708",
      "name": "Telegram Trigger: Receive Voice Message",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -2416,
        -304
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "19af066c-70cb-4b08-8d19-379fa55e3155",
      "name": "Telegram: Download Voice",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2096,
        -304
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "207d7876-9643-402f-987c-34a7ee23bebf",
      "name": "Google Drive: Upload Voice",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -1888,
        -304
      ],
      "parameters": {
        "name": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "bedd5e5d-9640-4a68-88d3-4d7f73d0105f",
      "name": "Google Sheets: Log Voice Metadata",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1680,
        -304
      ],
      "parameters": {
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "77b47473-dd1c-40cd-8dde-a5026bfa2aa1",
      "name": "HeyGen: List Avatars",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2400,
        -528
      ],
      "parameters": {
        "url": "https://api.heygen.com/v2/avatars",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "333173a3-b228-408a-879a-68bf77e9e405",
      "name": "Google Sheets: Read Avatar Config",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2208,
        32
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d7e161d5-24f8-4edf-9b58-4e8f76b29a9f",
      "name": "HeyGen: Generate Avatar Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1792,
        32
      ],
      "parameters": {
        "url": "https://api.heygen.com/v2/video/generate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"video_inputs\": [\n    {\n      \"character\": {\n        \"type\": \"avatar\",\n        \"avatar_id\": \"{{ $json.id_avatar }}\",\n        \"avatar_style\": \"normal\"\n      },\n      \"voice\": {\n        \"type\": \"audio\",\n        \"audio_url\": \"{{ $json.voice_url }}\"\n      }\n    }\n  ],\n  \"dimension\": {\n    \"width\": 1280,\n    \"height\": 720\n  }\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1748dcb8-1d0e-4a6e-a0b7-1acae000354d",
      "name": "Wait for Rendering",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1568,
        32
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "f51b59d0-ba68-4ecf-913f-dc149aa681c5",
      "name": "HeyGen: Check Video Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1376,
        32
      ],
      "parameters": {
        "url": "=https://api.heygen.com/v1/video_status.get?video_id={{ $('HeyGen: Generate Avatar Video').item.json.data.video_id }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3e22c59e-9d6d-43c3-ad61-f87bfdf066c3",
      "name": "If: Video Completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1152,
        32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d5963870-0093-4333-b2a6-39ddd9803a6a",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "completed"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "fe79be96-12a0-48c5-99ea-f8ae6b80f689",
      "name": "TmpFiles: Upload Voice (Public URL)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2416,
        32
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e0034420-7318-427a-9751-46014bbcb64f",
      "name": "HTTP: Download Final Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -912,
        32
      ],
      "parameters": {
        "url": "={{ $json.data.video_url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "4ac46b2e-c880-4f9b-a321-2e17c2adc3c6",
      "name": "Google Drive: Upload Final Video",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -672,
        32
      ],
      "parameters": {
        "name": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7c598e65-3a06-4865-959c-31315105801e",
      "name": "Google Sheets: Save Final Video URL",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2368,
        352
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID VOICE": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}",
            "row_number": 0,
            "URL VIDEO FINAL": "={{ $json.webViewLink }}"
          },
          "schema": [
            {
              "id": "ID VOICE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VOICE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VOICE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO FINAL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL VIDEO FINAL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID VOICE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "080a32d5-3f2a-4875-a1fa-1d896e29e026",
      "name": "Telegram: Send Post Confirmation",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -752,
        560
      ],
      "parameters": {
        "text": "Posted",
        "chatId": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "bdd96b94-5b10-4443-a6d9-e8d39e2d0584",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -624
      ],
      "parameters": {
        "color": 6,
        "width": 508,
        "height": 1556,
        "content": "# \ud83c\udfac From Idea to Post: GPT-5 Video Automation for YouTube, TikTok & Instagram  \n\nTurn a simple idea into a **viral video** and auto-publish it across platforms using  \n**GPT-5**, **HeyGen**, **Blotato**, **Google Sheets**, and **n8n**.  \n\n---\n\n### \ud83c\udfa5 Full Tutorial  \n[![Watch on YouTube](https://img.youtube.com/vi/J13Mvv_qGd0/hqdefault.jpg)](https://youtu.be/J13Mvv_qGd0)  \n\ud83d\udc49 [Click here to watch the full YouTube tutorial](https://youtu.be/J13Mvv_qGd0)\n\n---\n\n### \ud83d\udcd8 Documentation  \nAccess detailed setup instructions, API config, platform connection guides, and workflow customization tips:\n\n\ud83d\udcce [Open the full documentation on Notion](https://automatisation.notion.site/Blotato-2473d6550fd980e19983f69611a80a0d?source=copy_link)\n\n---\n\n## \u2699\ufe0f Requirements\n\n1. \u2705 **Create a [Blotato](https://blotato.com/?ref=firas) account** (Pro plan required for API access)  \n2. \ud83d\udd11 **Generate your Blotato API Key** via: `Settings > API > Generate API Key`  \n3. \ud83d\udce6 **Enable \u201cVerified Community Nodes\u201d** in the n8n admin settings  \n4. \ud83e\udde9 **Install the Blotato** verified community node in n8n  \n5. \ud83d\udee0 **Create a Blotato API credential** inside your n8n credentials tab  \n6. \ud83d\udcc4 **Duplicate this [Google Sheet template](https://docs.google.com/spreadsheets/d/1hZd1fuKeP8MnD7yZmWKzdmnUinZOl85E2PjoCFUaawE/edit?usp=sharing)**  \n7. \u2601\ufe0f **Make sure your Google Drive folder is PUBLIC** (anyone with the link can access)  \n8. \ud83d\udccc **Complete the 3 brown sticky note steps** inside the workflow editor\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "57733350-dbf6-44a2-8585-5391496c5ce7",
      "name": "Google Sheets - Read Post Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2160,
        352
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.voice.file_unique_id }}",
              "lookupColumn": "ID VOICE"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ae564e1f-4081-4047-9524-4e609a2ca53e",
      "name": "Telegram: Send Final Video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -752,
        768
      ],
      "parameters": {
        "file": "={{ $('Upload Video to BLOTATO').item.json.url }}",
        "chatId": "={{ $('Telegram Trigger: Receive Voice Message').item.json.message.chat.id }}",
        "operation": "sendVideo",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "04b35049-afd3-4f4e-b056-a3012a4a03f0",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Google Sheets - Update Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tiktok": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bluesky": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 7
          }
        ]
      ]
    },
    "Threads": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 6
          }
        ]
      ]
    },
    "Youtube": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Facebook": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Linkedin": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "ID Avatar": {
      "main": [
        [
          {
            "node": "HeyGen: Generate Avatar Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Pinterest": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 8
          }
        ]
      ]
    },
    "Twitter (X)": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "OpenAI Model GPT-5": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - Generate Title & Caption",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Rendering": {
      "main": [
        [
          {
            "node": "HeyGen: Check Video Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Google Drive ID": {
      "main": [
        [
          {
            "node": "Upload Video to BLOTATO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If: Video Completed?": {
      "main": [
        [
          {
            "node": "HTTP: Download Final Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for Rendering",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LangChain - Think Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Agent - Generate Title & Caption",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Upload Video to BLOTATO": {
      "main": [
        [
          {
            "node": "Tiktok",
            "type": "main",
            "index": 0
          },
          {
            "node": "Linkedin",
            "type": "main",
            "index": 0
          },
          {
            "node": "Facebook",
            "type": "main",
            "index": 0
          },
          {
            "node": "Instagram",
            "type": "main",
            "index": 0
          },
          {
            "node": "Twitter (X)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Youtube",
            "type": "main",
            "index": 0
          },
          {
            "node": "Threads",
            "type": "main",
            "index": 0
          },
          {
            "node": "Bluesky",
            "type": "main",
            "index": 0
          },
          {
            "node": "Pinterest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram: Download Voice": {
      "main": [
        [
          {
            "node": "Google Drive: Upload Voice",
            "type": "main",
            "index": 0
          },
          {
            "node": "TmpFiles: Upload Voice (Public URL)",
            "type": "main",
            "index": 0
          },
          {
            "node": "OpenAI - Transcribe Video to Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive: Upload Voice": {
      "main": [
        [
          {
            "node": "Google Sheets: Log Voice Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP: Download Final Video": {
      "main": [
        [
          {
            "node": "Google Drive: Upload Final Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HeyGen: Check Video Status": {
      "main": [
        [
          {
            "node": "If: Video Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets - Update Status": {
      "main": [
        [
          {
            "node": "Telegram: Send Post Confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HeyGen: Generate Avatar Video": {
      "main": [
        [
          {
            "node": "Wait for Rendering",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets - Read Post Data": {
      "main": [
        [
          {
            "node": "Get Google Drive ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive: Upload Final Video": {
      "main": [
        [
          {
            "node": "Google Sheets: Save Final Video URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram: Send Post Confirmation": {
      "main": [
        [
          {
            "node": "Telegram: Send Final Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets: Log Voice Metadata": {
      "main": [
        []
      ]
    },
    "Google Sheets: Read Avatar Config": {
      "main": [
        [
          {
            "node": "ID Avatar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI - Transcribe Video to Text": {
      "main": [
        [
          {
            "node": "AI Agent - Generate Title & Caption",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - Generate Title & Caption": {
      "main": [
        []
      ]
    },
    "Google Sheets: Save Final Video URL": {
      "main": [
        [
          {
            "node": "Google Sheets - Read Post Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TmpFiles: Upload Voice (Public URL)": {
      "main": [
        [
          {
            "node": "Google Sheets: Read Avatar Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets - Update Title & Caption": {
      "ai_tool": [
        [
          {
            "node": "AI Agent - Generate Title & Caption",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger: Receive Voice Message": {
      "main": [
        [
          {
            "node": "Telegram: Download Voice",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Source: https://n8n.io/workflows/7715/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Social Media

This workflow is ideal for individuals, marketers, agencies, and brands who want to effortlessly automate the entire blogging and social media process—from idea generation to promotion. Its primary go

Execute Workflow Trigger, Notion, OpenAI Chat +13
Social Media

This workflow is built for creators, solopreneurs, SaaS founders, and agencies looking to automate their social media content process from idea to publication. It combines the power of OpenAI, Google

OpenAI Chat, Tool Workflow, Agent +15
Social Media

Content creators, social media managers, and solopreneurs who want to automate carousel post creation and multi-platform publishing from a single Telegram message.

OpenAI Chat, OpenAI, Telegram +8
Social Media

Create & Share AI Photos with Telegram, Gemini & Post to Facebook, Instagram & X

Agent, OpenAI Chat, Telegram Trigger +7
Social Media

Video Generation with Telegram Bot and Gemini API – Auto-Post to TikTok, Instagram & Facebook

Google Gemini, Agent, OpenAI Chat +7