This workflow corresponds to n8n.io template #10000 — we link there as the canonical source.
This workflow follows the Error Trigger → Google Sheets 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 →
{
"name": "Anubis TikTok Videos with VEED.io AI Avatars, ElevenLabs & GPT-4",
"nodes": [
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"id": "2870c87e-82a6-4a24-a86a-a4c55a9225d9",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
1248,
368
],
"typeVersion": 1.2,
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "elevenLabsApiKey",
"type": "string",
"value": "YOUR_ELEVENLABS_API_KEY"
},
{
"id": "id-2",
"name": "elevenLabsVoiceId",
"type": "string",
"value": "YOUR_ELEVENLABS_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,
"options": {}
},
"id": "41a44991-a52f-4186-8dec-16f6ccc4faa8",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
1472,
368
],
"typeVersion": 3.4
},
{
"parameters": {
"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,
"options": {}
},
"id": "985914cd-27e0-4a14-8f51-3da7b4e7a35b",
"name": "Extract Photo and Theme",
"type": "n8n-nodes-base.set",
"position": [
1696,
368
],
"typeVersion": 3.4
},
{
"parameters": {
"model": "={{ $('Workflow Configuration').first().json.perplexityModel }}",
"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}}"
}
]
},
"options": {},
"requestOptions": {}
},
"id": "dd85cdf3-6acc-4758-b9d3-1bab26125361",
"name": "Search Trends with Perplexity",
"type": "n8n-nodes-base.perplexity",
"position": [
2368,
368
],
"typeVersion": 1,
"credentials": {
"perplexityApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "gpt-4o-mini"
},
"messages": {
"values": [
{
"content": "=Based on these market trends: {{ $json.choices[0].message.content }}\n\nCreate a viral TikTok script in the POV of Anubis, the Egyptian God of the Dead.\nThe specific subject is: {{ $('Extract Photo and Theme').first().json.theme }}\n\nDirectives:\n- ROLE: You are Anubis. You are timeless, authoritative, and deep-voiced. You judge souls.\n- TONE: Ominous but wise. Speak of \"Mortals,\" \"The Scales,\" \"Eternity,\" and \"The Weight of the Heart.\"\n- CONTENT: Interpret the \"Subject\" not as a modern trend, but as a test of the soul or a lesson for the afterlife.\n- HOOK: You must stop the user from scrolling immediately. Address them directly.\n\nTechnical Constraints:\n- Maximum 30 seconds when spoken (approx 60-75 words).\n- Write for Text-to-Speech: Do NOT include asterisks, emojis, hashtags, scene descriptions, or visual cues (like *sighs* or [intro music]).\n- Output ONLY the spoken words."
}
]
},
"options": {}
},
"id": "610387e3-8f6c-4ceb-b66c-f2311a216259",
"name": "Generate Script with GPT-4",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2592,
368
],
"typeVersion": 1.8,
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ 'https://api.elevenlabs.io/v1/text-to-speech/' + $('Workflow Configuration').first().json.elevenLabsVoiceId }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "xi-api-key",
"value": "={{ $('Workflow Configuration').first().json.elevenLabsApiKey }}"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "audio/mpeg"
}
]
},
"sendBody": true,
"specifyBody": "json",
"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}}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "audio"
}
}
}
},
"id": "a2b3c398-d8d8-429a-9a74-dfc4234798dc",
"name": "ElevenLabs Voice Synthesis",
"type": "n8n-nodes-base.httpRequest",
"position": [
2944,
368
],
"typeVersion": 4.2
},
{
"parameters": {
"method": "POST",
"url": "https://queue.fal.run/veed/fabric-1.0",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Key {{ $('Workflow Configuration').first().json.falApiKey }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"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\" } }}",
"options": {}
},
"id": "02e11c5b-d6b9-4c4e-aee5-f68c9fd216d4",
"name": "FAL.ai Video Generation",
"type": "n8n-nodes-base.httpRequest",
"position": [
3616,
368
],
"typeVersion": 4.2
},
{
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "gpt-4o-mini"
},
"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"
}
]
},
"options": {}
},
"id": "572053f5-c2e2-4454-b2f8-c31bcceb986e",
"name": "Generate Caption with GPT-4",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
4512,
240
],
"typeVersion": 1.8,
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "list",
"cachedResultName": "Anubis_Videos",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Videos",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"IDEA": "={{ $('Generate Script with GPT-4').item.json.message.content }}",
"URL AUDIO": "={{ $('Upload Audio to Public URL').item.json.data.url }}",
"URL VIDEO": "={{ $('Download VEED Video').item.json.video.url }}",
"CAPTION": "={{ $json.message.content }}",
"URL_IMAGE": "={{ $('Build Public Image URL').item.json.data.url }}",
"STATUS": "READY"
},
"matchingColumns": [],
"schema": [
{
"id": "IDEA",
"displayName": "IDEA",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "URL_IMAGE",
"displayName": "URL_IMAGE",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "URL AUDIO",
"displayName": "URL AUDIO",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "URL VIDEO",
"displayName": "URL VIDEO",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "CAPTION",
"displayName": "CAPTION",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "STATUS",
"displayName": "STATUS",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"id": "929570cc-74b8-4a7d-aaff-3b303dab0348",
"name": "Save to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
4864,
240
],
"typeVersion": 4.7,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"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) ",
"height": 1038,
"width": 400,
"color": 4
},
"id": "c8a19f42-7bc9-4b1b-a5e3-0baea7b9c499",
"name": "Setup Guide - Start Here",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
240
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 524,
"width": 1836,
"color": 4
},
"id": "efd1b243-20b1-4fb0-8bb4-9e4abab3a748",
"name": "Step 1 - Telegram Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
0
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 484,
"width": 380,
"color": 4
},
"id": "a36cf612-4574-46ae-93ab-9d716bc47fe6",
"name": "Step 2 - API Keys Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
2528,
48
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 484,
"width": 1836,
"color": 5
},
"id": "b1b44c15-0110-4455-8564-28072151003a",
"name": "Step 3 - AI Processing",
"type": "n8n-nodes-base.stickyNote",
"position": [
2752,
48
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 1136,
"width": 380,
"color": 5
},
"id": "e4bffba4-af5b-4f5c-a62d-9f3d81e60f9e",
"name": "Step 4 - Voice & Video Generation",
"type": "n8n-nodes-base.stickyNote",
"position": [
5408,
-736
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 660,
"width": 2124,
"color": 5
},
"id": "13bcba21-2e94-4d66-9ebe-68f616c483f7",
"name": "Step 5 - Publishing",
"type": "n8n-nodes-base.stickyNote",
"position": [
3904,
-208
],
"typeVersion": 1
},
{
"parameters": {
"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",
"height": 546,
"width": 396,
"color": 4
},
"id": "81b09147-e1dc-48dc-a8a1-f66e4babd1dd",
"name": "How It Works",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
1312
],
"typeVersion": 1
},
{
"parameters": {
"resource": "file",
"fileId": "={{ $json.photoUrl }}",
"additionalFields": {}
},
"id": "5ecbd4f1-d8b5-44a7-b671-7ef29b612955",
"name": "Get Photo File from Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
1920,
368
],
"typeVersion": 1.2,
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://tmpfiles.org/api/v1/upload",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"parameterType": "formBinaryData",
"name": "file",
"inputDataFieldName": "audio_mp3"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "0d06342a-4973-4096-acd4-f8deaa4d3360",
"name": "Upload Audio to Public URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
3392,
368
],
"typeVersion": 4.2
},
{
"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"
},
"id": "8babaa0f-2c5e-40bb-804d-508138bff8a4",
"name": "Convert .mpga to .mp3",
"type": "n8n-nodes-base.code",
"position": [
3168,
368
],
"typeVersion": 2
},
{
"parameters": {
"method": "POST",
"url": "https://tmpfiles.org/api/v1/upload",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"parameterType": "formBinaryData",
"name": "file",
"inputDataFieldName": "data"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "8bd012a0-1e03-4d69-bca4-350c0065bca2",
"name": "Build Public Image URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
2144,
368
],
"typeVersion": 4.2
},
{
"parameters": {
"amount": 30
},
"id": "11873626-3cbc-441f-bc72-d5e1fa2f65a7",
"name": "Wait for VEED",
"type": "n8n-nodes-base.wait",
"position": [
4288,
464
],
"typeVersion": 1.1
},
{
"parameters": {
"url": "=https://queue.fal.run/veed/fabric-1.0/requests/{{ $json.request_id }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ $('Workflow Configuration').first().json.falApiKey }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"options": {}
},
"id": "73fc87ac-459c-4d7f-8874-bbad44c8c1e8",
"name": "Download VEED Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
4288,
240
],
"typeVersion": 4.2
},
{
"parameters": {
"operation": "sendVideo",
"chatId": "={{ $('Telegram Trigger').first().json.message.chat.id }}",
"file": "={{ $json['URL VIDEO'] }}",
"additionalFields": {}
},
"id": "035b243a-cc2d-4194-b3f2-e45822ecbf8a",
"name": "Send a video",
"type": "n8n-nodes-base.telegram",
"position": [
5088,
240
],
"typeVersion": 1.2,
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "list",
"cachedResultName": "Anubis_Videos",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Videos",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"STATUS": "DONE"
},
"matchingColumns": [
"STATUS"
],
"schema": [
{
"id": "IDEA",
"displayName": "IDEA",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "URL_IMAGE",
"displayName": "URL_IMAGE",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "URL AUDIO",
"displayName": "URL AUDIO",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "URL VIDEO",
"displayName": "URL VIDEO",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "CAPTION",
"displayName": "CAPTION",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "STATUS",
"displayName": "STATUS",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"id": "b2cb12fb-ae11-4d82-9d0f-7afbb6b66ed9",
"name": "Update Status to \"DONE\"",
"type": "n8n-nodes-base.googleSheets",
"position": [
5536,
240
],
"typeVersion": 4.5,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "={{ $('Download VEED Video').item.json.video.url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
5312,
240
],
"id": "9e0281ba-267e-4eed-92ff-97005a8c2925",
"name": "Download Video File"
},
{
"parameters": {
"url": "=https://queue.fal.run/veed/fabric-1.0/requests/{{ $('FAL.ai Video Generation').item.json.request_id }}/status",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Key {{ $('Workflow Configuration').first().json.falApiKey }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
3840,
368
],
"id": "fd71a638-35fd-4576-a8cc-983f7d651a68",
"name": "Check Status"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "5b3c82dc-ddd6-4506-9c57-24989015ab8a",
"leftValue": "={{ $json.status }}",
"rightValue": "COMPLETED",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
4064,
288
],
"id": "bec1b4d1-3aed-4795-91e1-4b59e906903c",
"name": "Check Status1"
},
{
"parameters": {
"url": "={{ $('Download VEED Video').item.json.video.url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
5760,
240
],
"id": "f3613029-ab06-4990-944e-561632f6bf0b",
"name": "HTTP Request"
},
{
"parameters": {
"name": "={{ $('Generate Caption with GPT-4').item.json.message.content }}",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "YOUR_GOOGLE_DRIVE_FOLDER_ID",
"mode": "list",
"cachedResultName": "Anubis_Videos",
"cachedResultUrl": "https://drive.google.com/drive/folders/YOUR_GOOGLE_DRIVE_FOLDER_ID"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
5984,
240
],
"id": "e9dde50d-4816-4f1c-86aa-4d2bf689d2f3",
"name": "Upload file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.errorTrigger",
"typeVersion": 1,
"position": [
1248,
688
],
"id": "ac77a9b1-da7c-46c6-8fa8-ad1e16f0b37d",
"name": "Error Trigger"
},
{
"parameters": {
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"text": "=Your video did not post: {{ $json.execution.error.message }}",
"additionalFields": {}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1472,
688
],
"id": "123b6073-abaf-419d-aab3-af2df286b924",
"name": "Send a text message",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Send a video": {
"main": [
[
{
"node": "Download Video File",
"type": "main",
"index": 0
}
]
]
},
"Wait for VEED": {
"main": [
[
{
"node": "Check Status",
"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": "Check Status",
"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": [
[]
]
},
"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
}
]
]
},
"Download Video File": {
"main": [
[
{
"node": "Update Status to \"DONE\"",
"type": "main",
"index": 0
}
]
]
},
"Update Status to \"DONE\"": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Check Status": {
"main": [
[
{
"node": "Check Status1",
"type": "main",
"index": 0
}
]
]
},
"Check Status1": {
"main": [
[
{
"node": "Download VEED Video",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait for VEED",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[]
]
},
"Error Trigger": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"availableInMCP": false
},
"versionId": "de6f92ae-c0f0-458c-96c5-c123c74efc7f",
"meta": {
"templateId": "10000",
"templateCredsSetupCompleted": true
},
"id": "lyibqUrydg6HQVRm",
"tags": []
}
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.
googleDriveOAuth2ApigoogleSheetsOAuth2ApiopenAiApiperplexityApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Create engaging TikTok videos featuring the mythical Anubis avatar effortlessly, saving hours of manual editing while producing high-quality, trend-aligned content that boosts your social media presence. This workflow suits content creators, marketers, or educators focused on mythology or ancient history who want to automate video production without design skills. It starts with a Telegram message containing a photo and theme, then searches TikTok trends via Perplexity, generates a script using GPT-4, synthesises voiceover with ElevenLabs, and assembles the video through VEED.io AI avatars.
Use this when you need quick, themed videos for viral TikTok campaigns, especially for recurring series on specific topics like Egyptian lore. Avoid it for highly custom visuals requiring manual tweaks or non-event-driven schedules, as it's optimised for on-demand triggers. Common variations include swapping ElevenLabs for other voice tools or integrating Google Sheets to log generated videos for analytics.
About this workflow
Anubis TikTok Videos with VEED.io AI Avatars, ElevenLabs & GPT-4. Uses telegramTrigger, perplexity, openAi, httpRequest. Event-driven trigger; 31 nodes.
Source: https://github.com/Markus864/markus-portfolio/blob/main/n8n-automations/anubis-tiktok-ai-avatar-pipeline.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
AI Automation Mentor TikTok Pipeline. Uses telegramTrigger, perplexity, openAi, httpRequest. Event-driven trigger; 32 nodes.
This automation template is designed for content creators, social media managers, and influencers who want to streamline their video publishing workflow. It automatically detects new videos uploaded t
This automation template is designed for content creators, digital marketers, and social media managers looking to simplify their video posting workflow. It automates the process of generating engagin
template in store. Uses googleDriveTrigger, googleDrive, errorTrigger, telegram. Event-driven trigger; 13 nodes.