AutomationFlowsAI & RAG › Generate & Publish AI News Avatar Videos with Heygen and Blotato

Generate & Publish AI News Avatar Videos with Heygen and Blotato

ByIvan Maksiuta @zodiac on n8n.io

How it works

Cron / scheduled trigger★★★★☆ complexityAI-powered27 nodesHTTP RequestAgentOpenAI ChatOpenAIRss Feed Read Tool
AI & RAG Trigger: Cron / scheduled Nodes: 27 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → 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
{
  "name": "My workflow",
  "tags": [],
  "nodes": [
    {
      "id": "6e799e02-5ccf-469d-bd95-c8df41137314",
      "name": "Sticky \u2022 README (EN)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -176
      ],
      "parameters": {
        "width": 780,
        "height": 632,
        "content": "What this template does\n\nThis workflow creates vertical AI avatar videos based on trending AI/LLM news and prepares them for distribution via Blotato to TikTok, Instagram, YouTube Shorts, and more.\nIt automates the full cycle: news curation \u2192 script writing \u2192 avatar video generation \u2192 publishing.\nInstead of spending hours manually editing, this template gives you a \u2018newsroom in a box.\u2019\n\nHow it works\n\nSchedule Trigger \u2014 runs daily at 10:00 (adjustable).\n\nRSS Feed Read \u2014 collects fresh AI/LLM news from multiple feeds.\n\nAI Agent \u2014 analyzes news, picks the most viral story, and drafts a 30-second script.\n\nOpenAI nodes \u2014 create:\n\na short, catchy video title\n\na short caption for social media\n\na long caption with hashtags\n\nHeyGen API \u2014 generates a vertical avatar video (9:16) using your selected avatar_id, voice_id, and optional background video.\n\nWait node \u2014 checks the processing status of the video.\n\nBlotato API \u2014 uploads the video and captions for publishing.\n\nOptional publish nodes \u2014 preconfigured for TikTok, Instagram, YouTube, Facebook, etc. (disabled by default).\n\nRequirements\n\nn8n v1.105.4+ (cloud or self-hosted)\n\nHeyGen account with API key + avatar_id + voice_id\n\nBlotato account with API key and platform IDs\n\nSetup steps\n\nImport the workflow into n8n.\n\nCreate credentials in n8n (\u26a0 do not hardcode keys):\n\nHeyGen API Key\n\nBlotato API Key\n\nOpen the Setup Heygen node:\n\nPaste your heygen_api_key\n\nAdd your avatar_id and voice_id\n\nOptionally change background_video_url\n\nOpen the Prepare for Publish node:\n\nPaste your blotato_api_key\n\nAdd IDs for TikTok, YouTube, Instagram, etc.\n\nAdjust the Schedule Trigger to your preferred time/frequency.\n\n(Optional) Enable the publish nodes if you want direct uploads to your platforms.\n\nCustomization\n\nTopic \u2014 edit the AI Agent\u2019s prompt to switch from AI/LLM news to any topic (crypto, marketing, tech, etc.).\n\nLanguage \u2014 update prompts for different output languages.\n\nVisuals \u2014 replace the HeyGen avatar, voice, or background video for a different look.\n\nPublishing \u2014 connect only the social platforms you actually use."
      },
      "typeVersion": 1
    },
    {
      "id": "05514645-c6bf-46b3-8f6b-0313fd150d73",
      "name": "Sticky \u2022 Setup (EN)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        464
      ],
      "parameters": {
        "width": 784,
        "height": 360,
        "content": "## Credentials to create (after import)\n- **Heygen**: X-Api-Key (use in HTTP Request headers via expression)\n- **Blotato**: blotato-api-key (use in HTTP Request headers via expression)\n\n## Environment variables (optional)\n- HEYGEN_API_KEY, BLOTATO_API_KEY \u2014 if you prefer to read from env vars in Set nodes.\n\n## Customization\n- Change the schedule in **Schedule Trigger**.\n- Edit the prompt in **AI Agent** to switch topic or language.\n- Replace the background video URL in **Setup Heygen**.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0cdd98b8-981d-418b-9859-9419ccd137de",
      "name": "Sticky \u2022 Troubleshooting (EN)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        832
      ],
      "parameters": {
        "width": 784,
        "height": 260,
        "content": "## Troubleshooting\n- If Heygen status stays \"processing\", increase the **Wait** time.\n- 401/403 from Heygen or Blotato \u2192 check credentials on the HTTP Request nodes.\n- If AI Agent can\u2019t fetch news, reduce scope or plug your own RSS/API before the script step.\n- Publishing nodes are **disabled** by default \u2014 enable only what you need.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "65e29b55-64e0-425f-9780-aad0a0e827b1",
      "name": "Upload to Blotato1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2752,
        384
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $('Get Avatar Video1').item.json.data.video_url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish1').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "41815d9c-55c0-4a1c-9f6a-7359cc38877c",
      "name": "Schedule Trigger1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1040,
        144
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 10
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "74e05cdf-1f15-4b87-ab02-bf84c09ac0cc",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1216,
        144
      ],
      "parameters": {
        "text": "=# INSTRUCTIONS\n\nPerform the following tasks in order:\n\n1. Fetch the top 10 stories from News in the past 24 hours related to AI or LLMs.\n\n2. Select the story that is most likely to go viral on social media.\n\n3. Fetch the article and comments from Hacker News.\n\n4. Create a 30-second script for an AI avatar monologue, following these guidelines:\n   - The script should last approximately 30 seconds when spoken aloud.\n   - Include plenty of details and statistics from the article.\n   - Use a 6th-grade reading level.\n   - A balanced viewpoint.\n   - All text must be written in Russian.\n\n5. Update the first 2 sentences of the script with sensational viral hooks that grab the viewer's attention and spark curiosity. The 3rd sentence should start diving into the details of the article.\n\n6. Add an emotional element to make the viewer feel excitement or amazement, especially when discussing how AI can impact their life or work.\n\n7. Replace the last sentence with: \"Hit follow to stay ahead in AI! And don't forget to comment on how this AI will help you!\"\n\n# OUTPUT FORMAT:\nONLY output the exact video script. Do not output anything else. NEVER include intermediate thoughts, notes, or formatting.\n",
        "options": {
          "returnIntermediateSteps": true
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "46cc139e-7429-47a6-9a73-6ad9f251bee7",
      "name": "Wait6",
      "type": "n8n-nodes-base.wait",
      "position": [
        2272,
        384
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 8
      },
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "7380c78f-7975-4902-b6b8-eec94a645b5d",
      "name": "Write Script1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1152,
        528
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "o3-mini",
          "cachedResultName": "o3-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "be71890b-fbc9-4c2f-b854-f177aa5771c3",
      "name": "Setup Heygen1",
      "type": "n8n-nodes-base.set",
      "position": [
        1936,
        384
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "{\n  \"heygen_api_key\": \"\",\n  \"avatar_id\": \"\",\n  \"voice_id\": \"\",\n  \"background_video_url\": \"https://example.com/background.mp4\"\n}\n"
      },
      "typeVersion": 3.4
    },
    {
      "id": "a66f5856-e50c-449b-908c-e8c22e8816a9",
      "name": "Get Avatar Video1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2432,
        384
      ],
      "parameters": {
        "url": "https://api.heygen.com/v1/video_status.get",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "video_id",
              "value": "={{ $('Create Avatar Video1').item.json.data.video_id }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Api-Key",
              "value": "={{ $('Setup Heygen1').item.json.heygen_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1b66031b-f81d-492d-a08e-9596c4b152c7",
      "name": "Prepare for Publish1",
      "type": "n8n-nodes-base.set",
      "position": [
        2592,
        384
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={\n  \"blotato_api_key\": \"\",\n  \"instagram_id\": \"\",\n  \"youtube_id\": \"\",\n  \"tiktok_id\": \"\",\n  \"facebook_id\": \"\",\n  \"facebook_page_id\": \"\",\n  \"threads_id\": \"\",\n  \"twitter_id\": \"\",\n  \"linkedin_id\": \"\",\n  \"pinterest_id\": \"\",\n  \"pinterest_board_id\": \"\",\n  \"bluesky_id\": \"\",\n  \"final_text_long\": {{ $('Write Long Caption1').item.json.message.content.toJsonString() }},\n  \"final_text_short\": {{ $('Write Short Caption1').item.json.message.content.toJsonString() }}\n}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "86873913-f3eb-4892-8112-644d42b1d4dc",
      "name": "Write Long Caption1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1552,
        144
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=# EXAMPLE\n\n<example>\nHello, my name is  In this video, we will talk about how search engine optimization (SEO) works in the age of artificial intelligence.\n\nMany people have recently asked me how to improve their website visibility in search engines, especially with the emergence of new generative AI tools. This is an important topic because AI is changing the ways we process information and interact with users.\n\nNow, SEO should focus not only on keywords but also on how information is presented in AI systems like ChatGPT. These are the new realities of digital marketing.\n</example>\n\n# CONTEXT\n\nInfer the topic from the sources provided.\n\n# WRITING STYLE\n\nHere\u2019s how you always write:\n\n<writing_style>\n\n- Your writing style is spartan and informative.\n- Use clear, simple language.\n- Employ short, impactful sentences.\n- Use active voice; avoid passive voice.\n- Focus on practical, actionable insights.\n- Incorporate data or statistics to support claims when possible.\n- Use \"you\" and \"your\" to directly address the reader.\n- Avoid metaphors and clich\u00e9s.\n- Avoid generalizations.\n- Do not include common setup language in any sentence, including: in conclusion, in closing, etc.\n- Do not output warnings or notes\u2014just the output requested.\n- Do not use hashtags in the text.\n- Do not use semicolons.\n- Do not use emojis.\n- Do not use asterisks.\n- Do not use adjectives and adverbs.\n- All texts must be written in Russian.\n- DO NOT use these words:\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"can, may, just, that, very, really, literally, actually, certainly, probably, basically, could, maybe, delve, embark, enlightening, esteemed, shed light, craft, crafting, imagine, realm, game-changer, unlock, discover, skyrocket, abyss, you're not alone, in a world where, revolutionize, disruptive, utilize, utilizing, dive deep, tapestry, illuminate, unveil, pivotal, enrich, intricate, elucidate, hence, furthermore, realm, however, harness, exciting, groundbreaking, cutting-edge, remarkable, it. remains to be seen, glimpse into, navigating, landscape, stark, testament, in summary, in conclusion, moreover, boost, bustling, opened up, powerful, inquiries, ever-evolving\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n</writing_style>\n\n# PLANNING\n\nYour goal is to write a 50-word video caption based on the provided source.\n\n1. Thoroughly analyze the provided sources.\n2. Carefully study the <example> post. You need to replicate:\n    - Overall structure.\n    - Tone and voice.\n    - Formatting (including line breaks and spacing).\n    - Length (aim for a similarly detailed post).\n    - Absence of emojis.\n    - Use of hashtags.\n    - Emotional resonance.\n\n# OUTPUT\nFollow the GUIDELINES below to write the post. Use your analysis from step 1 and step 2. Use the provided sources as the foundation for your post, expanding on it significantly while maintaining the style and structure of the examples provided in step 2. YOU MUST use information from the provided sources. Make sure you adhere to your <writing_style>.\n\n<guidelines>\nThe description should be structured as follows:\n1. Start with the greeting: \"Hello, this is Ivan Maksiuta.\"\n2. In the first paragraph, briefly summarize the source.\n3. Each subsequent paragraph should be split every 2-3 sentences, depending on the content.\n4. At the end of each paragraph, add corresponding hashtags, automatically generated based on the content of the post. For example:\n   - If the paragraph discusses AI, automatically add hashtags #ai #artificialintelligence.\n   - If the paragraph discusses SEO, add hashtags #seo #digitalmarketing.\n5. Finally, add no more than 7 hashtags that match the content of the post. The hashtags should be generated automatically based on the content, such as #ai #seo #digitalmarketing #ainews, and others relevant to the topic. Do not add more than 7 hashtags.\n</guidelines>\n\nTake a deep breath and take it step-by-step!\n\n# INPUT\nUse the following information from the sources:\n<sources>\n{{ $json.output }}\n</sources>"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "98e8f290-7f5c-4042-9384-742b77a46578",
      "name": "Write Short Caption1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1568,
        496
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Write a brief 2-sentence caption summarizing the video content. Use 6th grade language, a balanced neutral perspective, and all text must be written in english, without emojis. The text should not include the name \"Ivan Maksiuta\"\n\n<content>\n{{ $('Write Long Caption1').item.json.message.content }}\n</content>\n"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "65bb856b-8871-48f1-a6cc-a742bebc6c4e",
      "name": "Create Avatar Video1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2112,
        384
      ],
      "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.avatar_id }}\",\n        \"avatar_style\": \"normal\",\n        \"scale\": 1.0,\n        \"offset\": {\n          \"x\": 0.0,\n          \"y\": 0.0\n        },\n        \"matting\": false\n      },\n      \"voice\": {\n        \"type\": \"text\",\n        \"input_text\": \"{{ $('AI Agent1').item.json.output }}\",\n        \"voice_id\": \"{{ $json.voice_id }}\",\n        \"speed\": 1.1,\n        \"pitch\": 50,\n        \"emotion\": \"Excited\"\n      },\n      \"background\": {\n        \"type\": \"video\",\n        \"url\": \"{{ $json.background_video_url }}\",\n        \"play_style\": \"loop\",\n        \"fit\": \"cover\"\n      }\n    }\n  ],\n  \"dimension\": {\n    \"width\": 720,\n    \"height\": 1280\n  },\n  \"aspect_ratio\": \"9:16\",\n  \"caption\": false,\n  \"title\": \"{{ $('Write Title1').item.json.message.content }}\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Api-Key",
              "value": "={{ $json.heygen_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4f84451a-d19a-47c2-805d-98a3c96bbb75",
      "name": "Sticky \u2022 Fill: Setup Heygen (EN)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        640
      ],
      "parameters": {
        "color": 6,
        "width": 710,
        "height": 180,
        "content": "## Fill \"Setup Heygen\"\n\nProvide `heygen_api_key`, `avatar_id`, `voice_id`, and an optional `background_video_url`.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8539a6a5-3494-4e7e-9342-b8c9775c47b3",
      "name": "Sticky \u2022 Fill: Prepare for Publish (EN)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2512,
        112
      ],
      "parameters": {
        "color": 6,
        "width": 232,
        "height": 184,
        "content": "## Fill \"Prepare for Publish\"\n\nProvide your Blotato API key and platform IDs you want to target.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5d963a42-113e-4fab-8b5f-be6276105a64",
      "name": "Write Title1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1552,
        336
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Come up with a file title based on the video text. The title should consist of 2-3 words, reflect the main idea and essence of the video, and be short and clear. All text must be written in Russian.\n\n<content>\n{{ $json.message.content }}\n</content>\n"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "2eea03ed-6fcc-48d0-bc2f-5b0996c1c995",
      "name": "[TikTOK] Publish via Blotato1",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3008,
        224
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8c8d6bb5-28d1-40c1-934f-db2136e76e76",
      "name": "[TikTOK] Publish via Blotato",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3024,
        688
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1cffb0d3-02ad-49d0-b666-5ebf46b1b64b",
      "name": "[TikTOK] Publish via Blotato2",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3216,
        224
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "82ff1ffd-304d-443a-a365-5c4ff1aaf111",
      "name": "[TikTOK] Publish via Blotato3",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3008,
        432
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5708d1a1-ba0a-49ae-be93-1ad5561856f9",
      "name": "[TikTOK] Publish via Blotato4",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        2688,
        672
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "91284302-756a-42bb-b057-babe1e9c3779",
      "name": "[TikTOK] Publish via Blotato5",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        2864,
        672
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "03e44f85-52a3-409c-85d4-aed30cd12206",
      "name": "[TikTOK] Publish via Blotato6",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3200,
        432
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "acc6caaf-a2a6-4675-92b8-c4d966feffdd",
      "name": "[TikTOK] Publish via Blotato7",
      "type": "n8n-nodes-base.httpRequest",
      "disabled": true,
      "position": [
        3216,
        656
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Prepare for Publish').item.json.facebook_page_id }}\"\n    },\n    \"content\": {\n      \"text\": {{ $('Prepare for Publish').item.json.final_text_long.toJsonString() }},\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ $('Prepare for Publish').item.json.facebook_id }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "={{ $('Prepare for Publish').item.json.blotato_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "66fe44cb-edd8-4f43-8781-72b37cc83be2",
      "name": "Read AI News Feed",
      "type": "n8n-nodes-base.rssFeedReadTool",
      "position": [
        1264,
        528
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "6845c4c3-0a80-422c-a5a6-75601355af05",
      "name": "Read AI News Feed1",
      "type": "n8n-nodes-base.rssFeedReadTool",
      "position": [
        1408,
        512
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "",
  "connections": {
    "Wait6": {
      "main": [
        [
          {
            "node": "Get Avatar Video1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Write Long Caption1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Title1": {
      "main": [
        [
          {
            "node": "Write Short Caption1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup Heygen1": {
      "main": [
        [
          {
            "node": "Create Avatar Video1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Script1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get Avatar Video1": {
      "main": [
        [
          {
            "node": "Prepare for Publish1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read AI News Feed": {
      "ai_tool": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read AI News Feed1": {
      "ai_tool": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Blotato1": {
      "main": [
        [
          {
            "node": "[TikTOK] Publish via Blotato1",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato2",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato3",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato4",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato5",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato6",
            "type": "main",
            "index": 0
          },
          {
            "node": "[TikTOK] Publish via Blotato7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Long Caption1": {
      "main": [
        [
          {
            "node": "Write Title1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Avatar Video1": {
      "main": [
        [
          {
            "node": "Wait6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare for Publish1": {
      "main": [
        [
          {
            "node": "Upload to Blotato1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Short Caption1": {
      "main": [
        [
          {
            "node": "Setup Heygen1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

How it works

Source: https://n8n.io/workflows/8050/ — 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

Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing

WordPress, OpenAI, Perplexity +8
AI & RAG

We’ve released Version 4 of our AI Powered Blog Automation workflow. We heard your complains and made a complete redesign built for serious content creators.

RSS Feed Read, OpenAI Chat, Text Classifier +6
AI & RAG

This workflow is designed for: Content creators and marketers E-commerce and product-based businesses Agencies producing social media visuals and videos Automation builders looking for AI-powered crea

HTTP Request, Edit Image, Google Drive +7
AI & RAG

This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty

Telegram, Google Sheets Trigger, Agent +26
AI & RAG

This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p

OpenAI Chat, Output Parser Item List, HTTP Request +10