AutomationFlowsAI & RAG › Auto-create TikTok Videos with Veed.io AI Avatars

Auto-create TikTok Videos with Veed.io AI Avatars

Original n8n title: Auto-create Tiktok Videos with Veed.io AI Avatars, Elevenlabs & Gpt-4

ByDr. Firas @drfiras on n8n.io

This workflow is for content creators, marketers, and agencies who want to use Veed.io’s AI avatar technology to produce short, engaging TikTok videos automatically. It’s ideal for creators who want to appear on camera without recording themselves, and for teams managing…

Event trigger★★★★★ complexityAI-powered35 nodesTelegram TriggerPerplexityOpenAIHTTP RequestGoogle SheetsTelegram@Blotato/N8N Nodes Blotato
AI & RAG Trigger: Event Nodes: 35 Complexity: ★★★★★ AI nodes: yes Added:
Auto-create TikTok Videos with Veed.io AI Avatars — n8n workflow card showing Telegram Trigger, Perplexity, OpenAI integration

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

This workflow follows the Blotaton8N Nodes Blotato → HTTP Request 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": "PpVBvs5fecatpTbx",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "\ud83d\udca5 Viral TikTok Video Machine: Auto-Create UGC with VEED Avatars -vide",
  "tags": [],
  "nodes": [
    {
      "id": "2870c87e-82a6-4a24-a86a-a4c55a9225d9",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -2832,
        -304
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "41a44991-a52f-4186-8dec-16f6ccc4faa8",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -2560,
        -304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "elevenLabsApiKey",
              "type": "string",
              "value": "YOUR_ELEVENLABS_API_KEY"
            },
            {
              "id": "id-2",
              "name": "elevenLabsVoiceId",
              "type": "string",
              "value": "YOUR_VOICE_ID"
            },
            {
              "id": "id-3",
              "name": "falApiKey",
              "type": "string",
              "value": "YOUR_FAL_API_KEY"
            },
            {
              "id": "id-5",
              "name": "scriptMaxDuration",
              "type": "number",
              "value": 30
            },
            {
              "id": "id-6",
              "name": "perplexityModel",
              "type": "string",
              "value": "sonar"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "985914cd-27e0-4a14-8f51-3da7b4e7a35b",
      "name": "Extract Photo and Theme",
      "type": "n8n-nodes-base.set",
      "position": [
        -2160,
        -304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "photoUrl",
              "type": "string",
              "value": "={{ $json.message.photo ? $json.message.photo[$json.message.photo.length - 1].file_id : '' }}"
            },
            {
              "id": "id-2",
              "name": "theme",
              "type": "string",
              "value": "={{ $json.message.caption || $json.message.text || 'viral content' }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "dd85cdf3-6acc-4758-b9d3-1bab26125361",
      "name": "Search Trends with Perplexity",
      "type": "n8n-nodes-base.perplexity",
      "position": [
        -2816,
        128
      ],
      "parameters": {
        "model": "={{ $('Workflow Configuration').first().json.perplexityModel }}",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ \n  \"Find the top 3 current viral trends related to: \" + $('Extract Photo and Theme').item.json.message.caption + \n  \". Focus on trending topics, hashtags, and content styles that are performing well on TikTok right now. \" + \n  \"Be specific and actionable. Limit your response strictly to 3 results only \u2014 no more.\" \n}}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "610387e3-8f6c-4ceb-b66c-f2311a216259",
      "name": "Generate Script with GPT-4",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2560,
        128
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Based on these trends: {{ $json.choices[0].message.content }}\n\nCreate a viral 30-second maximum TikTok script about: {{ $('Extract Photo and Theme').first().json.theme }}\n\nRequirements:\n- Maximum 30 seconds when spoken\n- Hook in first 2 seconds\n- Engaging and conversational\n- Optimized for voice synthesis\n- No special characters or formatting\n- Return ONLY the script text, nothing else"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "a2b3c398-d8d8-429a-9a74-dfc4234798dc",
      "name": "ElevenLabs Voice Synthesis",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2160,
        128
      ],
      "parameters": {
        "url": "={{ 'https://api.elevenlabs.io/v1/text-to-speech/' + $('Workflow Configuration').first().json.elevenLabsVoiceId }}",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "audio"
            }
          }
        },
        "jsonBody": "={{ \n  {\n    \"text\": $json.message.content,\n    \"model_id\": \"eleven_multilingual_v2\",\n    \"voice_settings\": {\n      \"stability\": 0.5,\n      \"similarity_boost\": 0.75\n    }\n  } \n}}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "xi-api-key",
              "value": "={{ $('Workflow Configuration').first().json.elevenLabsApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "audio/mpeg"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "02e11c5b-d6b9-4c4e-aee5-f68c9fd216d4",
      "name": "FAL.ai Video Generation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2816,
        384
      ],
      "parameters": {
        "url": "https://queue.fal.run/veed/fabric-1.0",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ { \"image_url\": $('Build Public Image URL').first().json.data.url.replace(/^http:\\/\\/tmpfiles\\.org\\/(\\d+)\\/(.*)$/i, 'https://tmpfiles.org/dl/$1/$2'), \"audio_url\": $json.data.url.replace(/^http:\\/\\/tmpfiles\\.org\\/(\\d+)\\/(.*)$/i, 'https://tmpfiles.org/dl/$1/$2'), \"resolution\": \"480p\" } }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ $('Workflow Configuration').first().json.falApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "572053f5-c2e2-4454-b2f8-c31bcceb986e",
      "name": "Generate Caption with GPT-4",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2160,
        384
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Create an engaging TikTok caption for a video about: {{ $('Extract Photo and Theme').first().json.theme }}\n\nBased on these trends: {{ $('Search Trends with Perplexity').first().json.choices[0].message.content }}\n\nRequirements:\n- Catchy hook in first line\n- Include 5-8 relevant trending hashtags\n- Keep it concise and engaging\n- Optimize for TikTok algorithm\n- Return ONLY the caption text with hashtags, nothing else"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "929570cc-74b8-4a7d-aaff-3b303dab0348",
      "name": "Save to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1696,
        384
      ],
      "parameters": {
        "columns": {
          "value": {
            "IDEA": "={{ $('Extract Photo and Theme').first().json.message.caption }}",
            "CAPTION": "={{ $json.message.content }}",
            "URL AUDIO": "={{ $('Upload Audio to Public URL').first().json.data.url }}",
            "URL IMAGE": "={{ $('Build Public Image URL').first().json.data.url }}",
            "URL VIDEO": "={{ $('Download VEED Video').item.json.video.url }}"
          },
          "schema": [
            {
              "id": "IDEA",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "IDEA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL AUDIO",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL AUDIO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CAPTION",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "CAPTION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "IDEA"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c8a19f42-7bc9-4b1b-a5e3-0baea7b9c499",
      "name": "Setup Guide - Start Here",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3696,
        -432
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1038,
        "content": "# \ud83d\ude80 VIRAL TIKTOK CREATOR - SETUP GUIDE\n\n### \ud83c\udfa5 Watch This Tutorial\n\n@[youtube](YykmUeGVb9U)\n\n\nThis workflow transforms a photo + theme into viral TikTok content automatically.\n\n\ud83d\udccb WHAT YOU NEED:\n\u2713 Telegram Bot Token\n\u2713 ElevenLabs API Key + Voice ID\n\u2713 veed.io API Key with FAL.ai \n\u2713 Blotato API Key\n\u2713 Google Sheets Document\n\u2713 OpenAI API Key\n\u2713 Perplexity API Key\n\n## \u26a1 Setup\n1. Import this workflow into your n8n instance.  \n2. Connect your Google Sheets, Gmail, and Google Calendar credentials. Tutorial: [Configure Your Google Sheets, Gmail, Calendar Credentials](https://youtu.be/fDzVmdw7bNU)  \n3. Connect Your Data in Google Sheets. Data must follow this format: [Sample Sheets Data](https://docs.google.com/spreadsheets/d/1G1hS5pEJb4PdPYuChl_ZLNCQNH8CaG6iSa-Ip9W1cTI/edit?usp=sharing/copy)  \n\n---\n## \ud83d\udcec Need Help or Want to Customize This?\n**Contact me for consulting and support:** [LinkedIn](https://www.linkedin.com/in/dr-firas/) / [YouTube](https://www.youtube.com/@DRFIRASS)  "
      },
      "typeVersion": 1
    },
    {
      "id": "efd1b243-20b1-4fb0-8bb4-9e4abab3a748",
      "name": "Step 1 - Telegram Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3264,
        -432
      ],
      "parameters": {
        "color": 4,
        "width": 1836,
        "height": 524,
        "content": "# \ud83d\udcf1 STEP 1: TELEGRAM BOT SETUP\n\n1. Create a Telegram Bot:\n   \u2022 Message @BotFather on Telegram\n   \u2022 Send /newbot command\n   \u2022 Follow prompts to name your bot\n   \u2022 Copy the API token provided\n\n2. Configure Telegram Trigger Node:\n   \u2022 Click the \"Telegram Trigger\" node\n   \u2022 Add Telegram credentials with your token\n   \u2022 Select \"Updates\" to trigger on: Message, Photo\n   \u2022 Save the node\n\n3. Test:\n   \u2022 Activate the workflow\n   \u2022 Send a photo with caption to your bot\n   \u2022 Caption = theme (e.g., \"fitness motivation\")\n\n\u2705 Ready when: Bot responds to messages"
      },
      "typeVersion": 1
    },
    {
      "id": "a36cf612-4574-46ae-93ab-9d716bc47fe6",
      "name": "Step 2 - API Keys Configuration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -432
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 484,
        "content": "# \ud83d\udd11 STEP 2: API KEYS CONFIGURATION\n\nConfigure the \"Workflow Configuration\" node with:\n\n1. ElevenLabs (Voice Synthesis):\n   \u2022 Sign up at elevenlabs.io\n   \u2022 Get API key from profile settings : https://fal.ai/models/fal-ai/elevenlabs/tts/eleven-v3/api\n   \u2022 Create/clone a voice, copy Voice ID\n   \u2022 Replace: elevenLabsApiKey, elevenLabsVoiceId\n\n2. FAL.ai (Video Generation):\n   \u2022 Sign up at fal.ai\n   \u2022 Get API key from dashboard : https://fal.ai/models/veed/fabric-1.0/playground\n   \u2022 Replace: falApiKey\n\n\u2705 All keys added to Workflow Configuration node"
      },
      "typeVersion": 1
    },
    {
      "id": "b1b44c15-0110-4455-8564-28072151003a",
      "name": "Step 3 - AI Processing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3264,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 1836,
        "height": 484,
        "content": "# \ud83e\udd16 STEP 3: AI PROCESSING SETUP\n\n1. Perplexity API (Trend Research):\n   \u2022 Sign up at perplexity.ai\n   \u2022 Get API key from settings\n   \u2022 Add credentials to \"Search Trends\" node\n   \u2022 Model: llama-3.1-sonar-large-128k-online\n\n2. OpenAI API (Script & Caption):\n   \u2022 Sign up at platform.openai.com\n   \u2022 Create API key\n   \u2022 Add credentials to both GPT-4 nodes:\n     - \"Generate Script with GPT-4\"\n     - \"Generate Caption with GPT-4\"\n   \u2022 Model: gpt-4o\n\n3. Use VEED : https://fal.ai/models/veed/fabric-1.0/api\n   \u2022 Sign up at https://fal.ai/\n   \u2022 Create fal API key"
      },
      "typeVersion": 1
    },
    {
      "id": "e4bffba4-af5b-4f5c-a62d-9f3d81e60f9e",
      "name": "Step 4 - Voice & Video Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 1136,
        "content": "# \ud83c\udfac STEP 4: VOICE & VIDEO GENERATION\n\nThese nodes are pre-configured and work automatically:\n\n1. ElevenLabs Voice Synthesis: https://fal.ai/models/fal-ai/elevenlabs/tts/eleven-v3/api\n   \u2022 Converts script to natural speech\n   \u2022 Uses your cloned voice\n   \u2022 Outputs MP3 audio file\n\n2. FAL.ai Video Generation:\n   \u2022 Takes your photo + audio\n   \u2022 Creates talking video (lip-sync)\n   \u2022 Uses VEED Fabric 1.0 model\n   \u2022 Syncs mouth movements to audio\n\n3. Download Generated Video:\n   \u2022 Retrieves final video file\n   \u2022 Prepares for publishing\n\n\ud83d\udca1 NO CONFIGURATION NEEDED\n   Just ensure API keys are set in Step 2\n\n\u2705 Automatic processing - no action required"
      },
      "typeVersion": 1
    },
    {
      "id": "13bcba21-2e94-4d66-9ebe-68f616c483f7",
      "name": "Step 5 - Publishing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3264,
        528
      ],
      "parameters": {
        "color": 5,
        "width": 2124,
        "height": 660,
        "content": "\n\n\n\n\n# \ud83d\udce4 STEP 5: PUBLISHING & TRACKING\n\n### Install the Blotato [Blotato](https://blotato.com/?ref=firas) Node in n8n (Community Nodes)\n1. In n8n, open **Settings \u2192 Community Nodes**.  \n2. Click **Install**, then add: `@blotato/n8n-nodes-blotato`.  \n3. Log in to **Blotato**.  \n4. Go to **Settings \u2192 API Keys**.  \n5. In n8n \u2192 **Credentials \u2192 New**.  \n6. Choose **Blotato API** \n(provided by the community node you installed).  \n\n2. TikTok Publishing (Blotato):\n   \u2022 Pre-configured to auto-publish\n   \u2022 Uses caption from GPT-4\n   \u2022 Privacy: Public\n   \u2022 Requires Blotato API key from Step 2"
      },
      "typeVersion": 1
    },
    {
      "id": "81b09147-e1dc-48dc-a8a1-f66e4babd1dd",
      "name": "How It Works",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3696,
        640
      ],
      "parameters": {
        "color": 4,
        "width": 396,
        "height": 546,
        "content": "# \u26a1 HOW IT WORKS - WORKFLOW FLOW\n\n1\ufe0f\u20e3 You send: Photo + Theme via Telegram\n   \u2193\n2\ufe0f\u20e3 Perplexity finds: Current viral trends\n   \u2193\n3\ufe0f\u20e3 GPT-4 creates: 10-second viral script\n   \u2193\n4\ufe0f\u20e3 ElevenLabs generates: Voice audio (MP3)\n   \u2193\n5\ufe0f\u20e3 FAL.ai creates: Talking video from photo\n   \u2193\n6\ufe0f\u20e3 GPT-4 writes: Optimized caption + hashtags\n   \u2193\n7\ufe0f\u20e3 Saves to: Google Sheets (tracking)\n   \u2193\n8\ufe0f\u20e3 Publishes to: TikTok automatically\n\n\u23f1\ufe0f TOTAL TIME: ~2-3 minutes\n\ud83c\udfaf RESULT: Viral TikTok video published!\n\n\ud83d\udca1 USAGE:\n   Send photo with caption \"fitness tips\"\n   \u2192 Get viral fitness video on TikTok"
      },
      "typeVersion": 1
    },
    {
      "id": "5ecbd4f1-d8b5-44a7-b671-7ef29b612955",
      "name": "Get Photo File from Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -1920,
        -304
      ],
      "parameters": {
        "fileId": "={{ $json.photoUrl }}",
        "resource": "file",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0d06342a-4973-4096-acd4-f8deaa4d3360",
      "name": "Upload Audio to Public URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1696,
        128
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "audio_mp3"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8babaa0f-2c5e-40bb-804d-508138bff8a4",
      "name": "Convert .mpga to .mp3",
      "type": "n8n-nodes-base.code",
      "position": [
        -1920,
        128
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const b = item.binary?.audio;            // <-- ta propri\u00e9t\u00e9 binaire actuelle\n  if (!b) return item;\n\n  // clone sous un nouveau nom de propri\u00e9t\u00e9\n  item.binary.audio_mp3 = {\n    ...b,\n    fileName: (b.fileName || 'audio.mp3').replace(/\\.mpga$/i, '.mp3'),\n    mimeType: 'audio/mpeg'\n  };\n\n  // (optionnel) garder l\u2019original:\n  // delete item.binary.audio;\n\n  return item;\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8bd012a0-1e03-4d69-bca4-350c0065bca2",
      "name": "Build Public Image URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1696,
        -304
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "11873626-3cbc-441f-bc72-d5e1fa2f65a7",
      "name": "Wait for VEED",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2576,
        384
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "73fc87ac-459c-4d7f-8874-bbad44c8c1e8",
      "name": "Download VEED Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2352,
        384
      ],
      "parameters": {
        "url": "=https://queue.fal.run/veed/fabric-1.0/requests/{{ $json.request_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ $('Workflow Configuration').first().json.falApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "035b243a-cc2d-4194-b3f2-e45822ecbf8a",
      "name": "Send a video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2816,
        784
      ],
      "parameters": {
        "file": "={{ $json['URL VIDEO'] }}",
        "chatId": "={{ $('Telegram Trigger').first().json.message.chat.id }}",
        "operation": "sendVideo",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "44cfbfd3-9a62-406e-bdc4-a88ab4ef082c",
      "name": "Upload Video to BLOTATO",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2624,
        784
      ],
      "parameters": {
        "mediaUrl": "={{ $('Save to Google Sheets').item.json['URL VIDEO'] }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "63e349be-9306-4295-b522-66fa70219197",
      "name": "Youtube",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2048,
        784
      ],
      "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": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}",
        "postCreateYoutubeOptionTitle": "={{ $('Save to Google Sheets').item.json.IDEA }}",
        "postCreateYoutubeOptionPrivacyStatus": "private",
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "44cc333c-b20b-43ea-81ac-c324117d6737",
      "name": "Tiktok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2416,
        608
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "2079",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/2079",
          "cachedResultName": "elitecybzcs"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b2cb12fb-ae11-4d82-9d0f-7afbb6b66ed9",
      "name": "Update Status to \"DONE\"",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1680,
        784
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATUS": "DONE",
            "URL VIDEO": "={{ $('Save to Google Sheets').item.json['URL VIDEO'] }}"
          },
          "schema": [
            {
              "id": "IDEA",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "IDEA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL AUDIO",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL AUDIO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CAPTION",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "CAPTION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "URL VIDEO"
          ],
          "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": "15a31ec9-915f-40f9-bd2c-66eee50074a8",
      "name": "Linkedin",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2224,
        608
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1446",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1446",
          "cachedResultName": "Samuel Amalric"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4bcf429e-fe53-41bd-be77-3f4d212b6270",
      "name": "Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2048,
        608
      ],
      "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": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "cf2ccc40-f8c0-4d44-8797-4b63594e95e7",
      "name": "Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2416,
        784
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1687",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1687",
          "cachedResultName": "acces.a.vie"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "727e0958-20b4-40a5-82ce-b7a88b04fb0a",
      "name": "Threads",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2416,
        992
      ],
      "parameters": {
        "options": {},
        "platform": "threads",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "2280",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/2280",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "6ce39e15-6c7b-4068-9f4f-3609d8ca5048",
      "name": "Bluesky",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2224,
        992
      ],
      "parameters": {
        "options": {},
        "platform": "bluesky",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "6012",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/6012",
          "cachedResultName": "formationinternet.bsky.social"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3a9f4622-1dbd-49c2-8b3b-7c079f67f7ea",
      "name": "Pinterest",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2048,
        992
      ],
      "parameters": {
        "options": {},
        "platform": "pinterest",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "363",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/363",
          "cachedResultName": "formationinternet2022"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "pinterestBoardId": {
          "__rl": true,
          "mode": "id",
          "value": "1146658823815436667"
        },
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5d871caf-8d9e-48c8-8dcf-e4cced811ec4",
      "name": "Twitter (X)",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -2224,
        784
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1289",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1289",
          "cachedResultName": "Docteur_Firas"
        },
        "postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a9d80b89-54af-4006-b137-f1353d8dfb56",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1840,
        672
      ],
      "parameters": {
        "mode": "chooseBranch",
        "numberInputs": 9
      },
      "typeVersion": 3.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "fe4ea433-4bce-4955-ba43-d5a74ef835a9",
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "Update Status to \"DONE\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tiktok": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bluesky": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 7
          }
        ]
      ]
    },
    "Threads": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 6
          }
        ]
      ]
    },
    "Youtube": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Facebook": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Linkedin": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Instagram": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Pinterest": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 8
          }
        ]
      ]
    },
    "Twitter (X)": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Send a video": {
      "main": [
        [
          {
            "node": "Upload Video to BLOTATO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for VEED": {
      "main": [
        [
          {
            "node": "Download VEED Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download VEED Video": {
      "main": [
        [
          {
            "node": "Generate Caption with GPT-4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert .mpga to .mp3": {
      "main": [
        [
          {
            "node": "Upload Audio to Public URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save to Google Sheets": {
      "main": [
        [
          {
            "node": "Send a video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Public Image URL": {
      "main": [
        [
          {
            "node": "Search Trends with Perplexity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Extract Photo and Theme",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Photo and Theme": {
      "main": [
        [
          {
            "node": "Get Photo File from Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FAL.ai Video Generation": {
      "main": [
        [
          {
            "node": "Wait for VEED",
            "type": "main",
            "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
          }
        ]
      ]
    },
    "ElevenLabs Voice Synthesis": {
      "main": [
        [
          {
            "node": "Convert .mpga to .mp3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Script with GPT-4": {
      "main": [
        [
          {
            "node": "ElevenLabs Voice Synthesis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Audio to Public URL": {
      "main": [
        [
          {
            "node": "FAL.ai Video Generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Caption with GPT-4": {
      "main": [
        [
          {
            "node": "Save to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Photo File from Telegram": {
      "main": [
        [
          {
            "node": "Build Public Image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Trends with Perplexity": {
      "main": [
        [
          {
            "node": "Generate Script with GPT-4",
            "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 is for content creators, marketers, and agencies who want to use Veed.io’s AI avatar technology to produce short, engaging TikTok videos automatically. It’s ideal for creators who want to appear on camera without recording themselves, and for teams managing…

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

💥Clone a viral TikTok and auto-post it to 9 platforms using Perplexity & Blotato vide. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 41 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

💥Clone a viral TikTok and auto-post it to 9 platforms using Perplexity & Blotato vide. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 41 nodes.

HTTP Request, Telegram Trigger, OpenAI +2