AutomationFlowsSocial Media › Telegram to Instagram, Facebook & TikTok AI Carousel Posts

Telegram to Instagram, Facebook & TikTok AI Carousel Posts

Original n8n title: Create and Publish AI Carousel Posts From Telegram to Instagram, Facebook and Tiktok with Openai, Apitemplate.io and Blotato

ByFeras Dabour @ferasdabour on n8n.io

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

Event trigger★★★★★ complexityAI-powered52 nodesOpenAI ChatOpenAITelegramMemory Buffer WindowTelegram TriggerAgentOutput Parser StructuredGoogle Sheets
Social Media Trigger: Event Nodes: 52 Complexity: ★★★★★ AI nodes: yes Added:
Telegram to Instagram, Facebook & TikTok AI Carousel Posts — n8n workflow card showing OpenAI Chat, OpenAI, Telegram integration

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

This workflow follows the Agent → 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 →

Download .json
{
  "id": "Ua6wxwPquCKavRWr",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Create and publish AI carousel posts to Instagram, Facebook, and TikTok",
  "tags": [],
  "nodes": [
    {
      "id": "22e610ed-104a-47fa-949b-8c4a90e3e53c",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -5552,
        3024
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5.1",
          "cachedResultName": "gpt-5.1"
        },
        "options": {
          "responseFormat": "json_object"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b48dedf7-551e-40a2-b074-d43e62c350d0",
      "name": "Speech to Text",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -5776,
        2720
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "typeVersion": 1.3
    },
    {
      "id": "70d9afe4-a23e-4297-a4dd-b6f37fdc32f9",
      "name": "Get Voice File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -6000,
        2720
      ],
      "parameters": {
        "fileId": "={{ $('Start: Telegram Message').item.json.message.voice.file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "1d580db9-8cbe-4792-b154-e8fcdb7929eb",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -5424,
        3024
      ],
      "parameters": {
        "sessionKey": "={{ $('Start: Telegram Message').first().json.message.from.id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "03e8afd0-5e24-41d9-b5ee-3cf2d04827cc",
      "name": "Start: Telegram Message",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -6672,
        2800
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "12c2bfb6-85da-452e-849a-c543cfaff289",
      "name": "Extract text from Telegram message",
      "type": "n8n-nodes-base.set",
      "position": [
        -6448,
        2800
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "text",
              "stringValue": "={{ $json?.message?.text || \"\" }}"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "f169a74d-a416-4b86-bc1f-fdf6284c5a4d",
      "name": "Check if input is a voice message",
      "type": "n8n-nodes-base.if",
      "position": [
        -6224,
        2800
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a0bf9719-4272-46f6-ab3b-eda6f7b44fd8",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.message.text }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d65b5ce3-5faf-49c5-a076-4241a9569b02",
      "name": "AI: Draft & Revise Post",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -5488,
        2800
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are a Script & Quote Writer Agent for Telegram.\n\nYour behavior:\n\nUnderstand the user\u2019s input without asking unnecessary questions.\n\nImmediately create:\n\na short script\n\n5 quotes\n\none Social Media Text in English with hashtags\n\nPresent these normally in chat first.\n\nWhen structured output is required (JSON):\n\nOnly fill quotes + socialMediaText after explicit approval.\n\nBefore approval, all suggestions must be placed inside followUpQuestion only.\n\n1. Drafting (normal response)\n\nFor each user message, internally identify:\n\nTopic\n\nGoal\n\nTarget audience\n\nTonality\n\nKey message\n\nThen produce:\n\nProposed Script:\n\n[text]\n\nProposed Quotes:\n\n\"\u2026\"\n\n\"\u2026\"\n\n\"\u2026\"\n\n\"\u2026\"\n\n\"\u2026\"\n\nProposed Social Media Text:\n\n[text + hashtags]\n\nThen ask:\n\u201cAny changes?\u201d\n\n(Still normal text, not JSON.)\n\n2. Feedback Handling (normal response)\n\nIf the user requests adjustments:\n\nModify only what they mention.\n\nReturn updated script + quotes + SocialMediaText.\n\nAsk again: \u201cAnything else to adjust?\u201d\n\n3. JSON Output Logic (STRICT)\nYou only output JSON if the user or system requests structured output.\n\nWhen JSON is required:\n\nBefore approval:\n\n\"approved\": false\n\n\"quotes\": []\n\n\"socialMediaText\": \"\"\n\n\"followUpQuestion\" = the entire new draft suggestion\n(script + quotes + socialMediaText compressed as one message, or a focused question \u2014 your choice)\n\n\u27a1\ufe0f All proposals must live inside followUpQuestion until approval.\n\u27a1\ufe0f No quotes, no socialMediaText may be filled before approval.\n\nAfter approval (user says \u201capproved\u201d, \u201cok\u201d, \u201clooks good\u201d, \u201cship it\u201d, etc.):\n\nOutput ONLY JSON:\n{\n  \"type\": \"object\",\n  \"properties\": {\n    \"approved\": {\n      \"type\": \"boolean\",\n      \"description\": \"True if the user has explicitly approved the final quotes.\"\n    },\n    \"quotes\": {\n      \"type\": \"array\",\n      \"description\": \"Exactly 5 final quotes as strings.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"minItems\": 0,\n      \"maxItems\": 5\n    },\n    \"followUpQuestion\": {\n      \"type\": \"string\",\n      \"description\": \"Optional follow-up question or clarification for the user. Use an empty string if no follow-up is needed.\"\n    },\n    \"SocialMediaText\": {\n      \"type\": \"string\",\n      \"description\": \"The text for the social media post inclusive all possibly relevant hashtags in english\"\n    }\n  },\n  \"required\": [\"approved\", \"quotes\", \"followUpQuestion\"]\n}\n\n\nRules after approval:\n\nNo script in JSON\n\nNo explanation\n\nNo extra text outside JSON\n\n4. Critical Rule Set (your new requirement included)\n\nQuotes + socialMediaText are ONLY filled when approved.\n\nBefore approval:\n\nquotes = []\n\nsocialMediaText = \"\"\n\nALL suggestions go into followUpQuestion.\n\nWhen drafting in JSON mode, the model MUST place script + quotes + SocialMediaText suggestions inside followUpQuestion.\n\nAfter approval:\n\nfollowUpQuestion = \"\""
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "16df2f24-7143-4bda-bde9-dfb96b528915",
      "name": "Send draft to Telegram for review",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -4704,
        2896
      ],
      "parameters": {
        "text": "={{ $('AI: Draft & Revise Post').item.json.output.quotes[0] }}\n{{ $('AI: Draft & Revise Post').item.json.output.quotes[1] }}\n{{ $('AI: Draft & Revise Post').item.json.output.quotes[2] }}\n{{ $('AI: Draft & Revise Post').item.json.output.quotes[3] }}\n{{ $('AI: Draft & Revise Post').item.json.output.quotes[4] }}\n{{ $('AI: Draft & Revise Post').item.json.output.SocialMediaText }}\n\n{{ $('AI: Draft & Revise Post').item.json.output.followUpQuestion }}",
        "chatId": "={{ $('Start: Telegram Message').first().json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "93a4edf8-2c03-4d61-bf7f-5d4585c0b86d",
      "name": "Check if Approved",
      "type": "n8n-nodes-base.if",
      "position": [
        -4928,
        2800
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.output.approved }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "9359c1ad-8244-4b24-ae67-bbde59a77c1c",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -5136,
        3232
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"approved\": {\n      \"type\": \"boolean\",\n      \"description\": \"True if the user has explicitly approved the final quotes.\"\n    },\n    \"quotes\": {\n      \"type\": \"array\",\n      \"description\": \"Exactly 5 final quotes as strings.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"minItems\": 0,\n      \"maxItems\": 5\n    },\n    \"followUpQuestion\": {\n      \"type\": \"string\",\n      \"description\": \"Optional follow-up question or clarification for the user. Use an empty string if no follow-up is needed.\"\n    },\n    \"SocialMediaText\": {\n      \"type\": \"string\",\n      \"description\": \"The text for the social media post inclusive all possibly relevant hashtags in english\"\n    }\n  },\n  \"required\": [\"approved\", \"quotes\", \"followUpQuestion\"]\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "b928edd2-1028-43dc-a32c-0e7cd4c23b42",
      "name": "Log approved quotes in Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -4480,
        2896
      ],
      "parameters": {
        "columns": {
          "value": {
            "quote1": "={{ $json.output.quotes[0].replace(/^\"|\"$/g, '') }}",
            "quote2": "={{ $json.output.quotes[1].replace(/^\"|\"$/g, '') }}",
            "quote3": "={{ $json.output.quotes[2].replace(/^\"|\"$/g, '') }}",
            "quote4": "={{ $json.output.quotes[3].replace(/^\"|\"$/g, '') }}",
            "quote5": "={{ $json.output.quotes[4].replace(/^\"|\"$/g, '') }}",
            "run_id": "={{ $now.toISO() }}",
            "social_media_text": "={{ $json.output.SocialMediaText.replace(/^\"|\"$/g, '') }}"
          },
          "schema": [
            {
              "id": "run_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "run_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quote1",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "quote1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quote2",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "quote2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quote3",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "quote3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quote4",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "quote4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quote5",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "quote5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "social_media_text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "social_media_text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GSHEET_TAB_GID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_ID/edit#gid=961872354",
          "cachedResultName": "Your_Sheet_Tab"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEETS_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_ID/edit?usp=drivesdk",
          "cachedResultName": "Your_Spreadsheet"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "00a6db42-815f-40b5-ada8-5cf095201928",
      "name": "Notify user: preparing post",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -4480,
        2288
      ],
      "parameters": {
        "text": "=Your post is being prepared.",
        "chatId": "={{ $('Start: Telegram Message').first().json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "2394fc8d-fab2-4342-9b23-edea6a34c4b1",
      "name": "Generate carousel slide 1",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        -4256,
        2416
      ],
      "parameters": {
        "options": {},
        "download": true,
        "overridesUi": {
          "overrideValues": [
            {
              "propertiesUi": {
                "propertyValues": [
                  {
                    "key": "text_1_1_1.text",
                    "value": "={{ $json.quote1 }}"
                  }
                ]
              }
            }
          ]
        },
        "imageTemplateId": "YOUR_APITEMPLATE_TEMPLATE_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "c6d0e011-4311-4386-ab4b-a4648ca2da50",
      "name": "Generate carousel slide 5",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        -4256,
        3184
      ],
      "parameters": {
        "options": {},
        "download": true,
        "overridesUi": {
          "overrideValues": [
            {
              "propertiesUi": {
                "propertyValues": [
                  {
                    "key": "text_1_1_1.text",
                    "value": "={{ $('Append row in sheet').item.json.quote5 }}"
                  }
                ]
              }
            }
          ]
        },
        "imageTemplateId": "YOUR_APITEMPLATE_TEMPLATE_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "b18b8a2b-902a-4777-bb60-615ef063a3e9",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        -5296,
        3024
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "1152c829-4f41-497b-b08c-88074abcd60a",
      "name": "OpenAI Chat Model (parser)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -5296,
        3232
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5",
          "cachedResultName": "gpt-5"
        },
        "options": {
          "textFormat": {
            "textOptions": {
              "type": "json_schema",
              "schema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"approved\": {\n      \"type\": \"boolean\",\n      \"description\": \"True if the user has explicitly approved the final quotes.\"\n    },\n    \"quotes\": {\n      \"type\": \"array\",\n      \"description\": \"Exactly 5 final quotes as strings.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"minItems\": 0,\n      \"maxItems\": 5\n    },\n    \"followUpQuestion\": {\n      \"type\": \"string\",\n      \"description\": \"Optional follow-up question or clarification for the user. Use an empty string if no follow-up is needed.\"\n    },\n    \"SocialMediaText\": {\n      \"type\": \"string\",\n      \"description\": \"The text for the social media post inclusive all possibly relevant hashtags in english\"\n    }\n  },\n  \"required\": [\"approved\", \"quotes\", \"followUpQuestion\"]\n}\n"
            }
          }
        },
        "builtInTools": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "b5a117f9-4c77-4399-b9f8-f86439443085",
      "name": "Collect all image URLs for publishing",
      "type": "n8n-nodes-base.set",
      "maxTries": 5,
      "position": [
        -3744,
        2768
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "23643299-532f-4c17-9b7e-40fd7a35a742",
              "name": "img_url_1",
              "type": "string",
              "value": "={{ $('Create an image1').first().json.download_url }}"
            },
            {
              "id": "4d115064-c594-4dee-b1e5-acb10e7a6a5e",
              "name": "img_url_2",
              "type": "string",
              "value": "={{ $('Create an image2').first().json.download_url }}"
            },
            {
              "id": "7f557ef5-c50f-4f41-acbc-a14b35286c87",
              "name": "=img_url_3",
              "type": "string",
              "value": "={{ $('Create an image3').first().json.download_url }}"
            },
            {
              "id": "a0d4b0b6-5252-4d19-b7b0-f1b515c88a8e",
              "name": "img_url_4",
              "type": "string",
              "value": "={{ $('Create an image4').first().json.download_url }}"
            },
            {
              "id": "85ee18ff-0b61-4422-b387-8b2602dff3b8",
              "name": "img_url_5",
              "type": "string",
              "value": "={{ $('Create an image5').first().json.download_url }}"
            },
            {
              "id": "3f7fce5f-e694-4722-be42-ed22dc23d1af",
              "name": "post_ext",
              "type": "string",
              "value": "={{ $('Append row in sheet').item.json.social_media_text }}"
            }
          ]
        }
      },
      "executeOnce": true,
      "retryOnFail": true,
      "typeVersion": 3.4,
      "waitBetweenTries": 5000
    },
    {
      "id": "b7a76bd4-015e-49aa-b663-4510eac05aa8",
      "name": "Generate carousel slide 2",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        -4256,
        2608
      ],
      "parameters": {
        "options": {},
        "download": true,
        "overridesUi": {
          "overrideValues": [
            {
              "propertiesUi": {
                "propertyValues": [
                  {
                    "key": "text_1_1_1.text",
                    "value": "={{ $('Append row in sheet').item.json.quote2 }}"
                  }
                ]
              }
            }
          ]
        },
        "imageTemplateId": "YOUR_APITEMPLATE_TEMPLATE_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "67301488-0910-4262-9400-8f6a0939c72b",
      "name": "Generate carousel slide 3",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        -4256,
        2800
      ],
      "parameters": {
        "options": {},
        "download": true,
        "overridesUi": {
          "overrideValues": [
            {
              "propertiesUi": {
                "propertyValues": [
                  {
                    "key": "text_1_1_1.text",
                    "value": "={{ $('Append row in sheet').item.json.quote3 }}"
                  }
                ]
              }
            }
          ]
        },
        "imageTemplateId": "YOUR_APITEMPLATE_TEMPLATE_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "76534331-f9f3-485a-aacd-84c90968af70",
      "name": "Generate carousel slide 4",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        -4256,
        2992
      ],
      "parameters": {
        "options": {},
        "download": true,
        "overridesUi": {
          "overrideValues": [
            {
              "propertiesUi": {
                "propertyValues": [
                  {
                    "key": "text_1_1_1.text",
                    "value": "={{ $('Append row in sheet').item.json.quote4 }}"
                  }
                ]
              }
            }
          ]
        },
        "imageTemplateId": "YOUR_APITEMPLATE_TEMPLATE_ID"
      },
      "typeVersion": 1
    },
    {
      "id": "8d666f69-a3ea-4c8d-ae9c-b153fef67e56",
      "name": "Merge all carousel slides",
      "type": "n8n-nodes-base.merge",
      "position": [
        -3920,
        2720
      ],
      "parameters": {
        "numberInputs": 5
      },
      "typeVersion": 3.2
    },
    {
      "id": "e8361bd7-722c-4618-96e4-b18920e10c1a",
      "name": "Extract approved quotes",
      "type": "n8n-nodes-base.set",
      "position": [
        -4704,
        2384
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ca543bb3-1d2b-4d28-bcf2-4a4a0246360e",
              "name": "output.quotes[0]",
              "type": "string",
              "value": "={{ $json.output.quotes[0] }}"
            },
            {
              "id": "86847c52-e51a-4338-9540-05122b7b8e61",
              "name": "output.quotes[1]",
              "type": "string",
              "value": "={{ $json.output.quotes[1] }}"
            },
            {
              "id": "5b753188-7e6c-4f2f-bc83-c458bedda199",
              "name": "output.quotes[2]",
              "type": "string",
              "value": "={{ $json.output.quotes[2] }}"
            },
            {
              "id": "fdf03dd4-c257-46e9-a48b-3eb4f9641f9f",
              "name": "output.quotes[3]",
              "type": "string",
              "value": "={{ $json.output.quotes[3] }}"
            },
            {
              "id": "3e245ef4-3aca-496c-946d-57ce20ac5604",
              "name": "output.quotes[4]",
              "type": "string",
              "value": "={{ $json.output.quotes[4] }}"
            },
            {
              "id": "3a37daaa-7de8-4fa8-98d5-5518c4ab4eb9",
              "name": "output.SocialMediaText",
              "type": "string",
              "value": "={{ $json.output.SocialMediaText }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e06a0ea3-5881-449f-82bc-34c68b8e3d8b",
      "name": "Create Instagram Post",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3504,
        2304
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_INSTAGRAM_ACCOUNT_ID",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/YOUR_INSTAGRAM_ACCOUNT_ID",
          "cachedResultName": "Your Instagram Account"
        },
        "postContentText": "={{ $json.post_ext }}",
        "postContentMediaUrls": "={{ $json.img_url_1 }},{{ $json.img_url_2 }},{{ $json.img_url_3 }},{{ $json.img_url_4 }},{{ $json.img_url_5 }}"
      },
      "typeVersion": 2
    },
    {
      "id": "1234dd01-22c2-4f49-b3a3-a68062516777",
      "name": "Create Facebook Post",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3504,
        2832
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_FACEBOOK_ACCOUNT_ID",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/YOUR_FACEBOOK_ACCOUNT_ID",
          "cachedResultName": "Your Facebook Account"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_FACEBOOK_PAGE_ID",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/YOUR_FACEBOOK_ACCOUNT_ID/subaccounts/YOUR_FACEBOOK_PAGE_ID",
          "cachedResultName": "Your Facebook Page"
        },
        "postContentText": "={{ $json.post_ext }}",
        "postContentMediaUrls": "={{ $json.img_url_1 }},{{ $json.img_url_2 }},{{ $json.img_url_3 }},{{ $json.img_url_4 }},{{ $json.img_url_5 }}"
      },
      "typeVersion": 2
    },
    {
      "id": "b3b8abe1-fe37-4ad1-a0e9-0b3c327d32a1",
      "name": "Create TikTok Post",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3504,
        3264
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_TIKTOK_ACCOUNT_ID",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/YOUR_TIKTOK_ACCOUNT_ID",
          "cachedResultName": "Your TikTok Account"
        },
        "postContentText": "={{ $json.post_ext }}",
        "postContentMediaUrls": "={{ $json.img_url_1 }},{{ $json.img_url_2 }},{{ $json.img_url_3 }},{{ $json.img_url_4 }},{{ $json.img_url_5 }}",
        "postCreateTiktokOptionTitle": "Follow for more",
        "postCreateTiktokOptionAutoAddMusic": true,
        "postCreateTiktokOptionPrivacyLevel": "SELF_ONLY",
        "postCreateTiktokOptionIsAiGenerated": true
      },
      "typeVersion": 2
    },
    {
      "id": "a8bf7fe1-112e-475d-b947-d483f68f1f53",
      "name": "Wait 25s before checking Instagram",
      "type": "n8n-nodes-base.wait",
      "position": [
        -3280,
        2304
      ],
      "parameters": {
        "amount": 25
      },
      "typeVersion": 1.1
    },
    {
      "id": "8b117806-58e6-4fd9-9a8e-b37f0630dbf5",
      "name": "Instagram still processing?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2608,
        2336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e6c403be-3a03-4365-ac18-69d9ffc1770b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "in-progress"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "19f0bac4-8a21-440f-b3c3-74048284aeaa",
      "name": "Retry: wait 5s for Instagram",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2384,
        2496
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "d4b9198e-cf71-40bf-896d-e5ecc342c856",
      "name": "Instagram post published?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2832,
        2240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1bc619f0-b64a-4487-bbc7-21be7c30f1f1",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "published"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e66da340-18e1-4441-a696-cb5200445f89",
      "name": "Send Instagram error notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2384,
        2288
      ],
      "parameters": {
        "text": "Error while uploading your post to Instagram",
        "chatId": "={{ $('Start: Telegram Message').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "c3966bf1-229e-477b-b85c-6112187817e8",
      "name": "Instagram Check Post Status",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3056,
        2304
      ],
      "parameters": {
        "operation": "get",
        "postSubmissionId": "={{ $('Create Instagram Post').item.json.postSubmissionId }}"
      },
      "typeVersion": 2
    },
    {
      "id": "fba4548c-cb72-4516-9c3d-ccf2d379bb13",
      "name": "Send Instagram success notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2608,
        2144
      ],
      "parameters": {
        "text": "=Post successfully published: \n{{ $json.publicUrl }}",
        "chatId": "={{ $('Start: Telegram Message').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "a29642bc-26ea-475b-bce6-e42c0ba8c3c9",
      "name": "Facebook still processing?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2608,
        2768
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e6c403be-3a03-4365-ac18-69d9ffc1770b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "in-progress"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c10f676f-3474-4b49-b81b-c5eaae0433ee",
      "name": "Retry: wait 5s for Facebook",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2384,
        2928
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "e82113e4-4368-4db3-ae84-4effd6564eb8",
      "name": "Facebook post published?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2832,
        2768
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1bc619f0-b64a-4487-bbc7-21be7c30f1f1",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "published"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0b2992ba-1aa4-4b16-8a02-3df17ba5e89a",
      "name": "Send Facebook error notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2384,
        2720
      ],
      "parameters": {
        "text": "Error while uploading your post to Instagram",
        "chatId": "={{ $('Start: Telegram Message').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "cc788e16-1afc-4075-a1ca-0ace7d74af61",
      "name": "TikTok still processing?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2608,
        3200
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e6c403be-3a03-4365-ac18-69d9ffc1770b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "in-progress"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ac0a56b3-e193-4822-a625-9d8a91db3bb5",
      "name": "Retry: wait 5s for TikTok",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2384,
        3360
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "2af19ecc-8ef3-4ce3-8702-e982508eb99b",
      "name": "TikTok post published?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2832,
        3200
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1bc619f0-b64a-4487-bbc7-21be7c30f1f1",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "published"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "030b1958-97d0-4023-b41d-668b19626b5d",
      "name": "Send TikTok error notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2384,
        3152
      ],
      "parameters": {
        "text": "Error while uploading your post to Instagram",
        "chatId": "={{ $('Start: Telegram Message').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "a776b802-7e7c-44ef-ace1-b66d0ed7a37d",
      "name": "Wait 10s before checking Facebook",
      "type": "n8n-nodes-base.wait",
      "position": [
        -3280,
        2832
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "eba583ed-7313-4148-864b-9b19baa09996",
      "name": "Wait 10s before checking TikTok",
      "type": "n8n-nodes-base.wait",
      "position": [
        -3280,
        3264
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "907773ac-4e99-4a96-b7d1-9e6dc39e0cb2",
      "name": "TikTok Check Post Status",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3056,
        3264
      ],
      "parameters": {
        "operation": "get",
        "postSubmissionId": "={{ $('Create TikTok Post').item.json.postSubmissionId }}"
      },
      "typeVersion": 2
    },
    {
      "id": "a7915d0d-1189-4385-b9f2-00b0772ab03e",
      "name": "Facebook Check Post Status",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        -3056,
        2832
      ],
      "parameters": {
        "operation": "get",
        "postSubmissionId": "={{ $('Create Facebook Post').item.json.postSubmissionId }}"
      },
      "typeVersion": 2
    },
    {
      "id": "058fc0ab-ea73-41a0-a8ba-82dc1a2f161e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -7392,
        2496
      ],
      "parameters": {
        "width": 520,
        "height": 880,
        "content": "## Create and publish AI carousel posts to Instagram, Facebook, and TikTok\n\nTurn a **Telegram message or voice note** into polished carousel posts published simultaneously to **Instagram, Facebook, and TikTok** via Blotato.\n\n## How it works\n\n1. Send a topic to the Telegram bot (text or voice note).\n2. Voice notes are transcribed via OpenAI Whisper.\n3. An AI Agent (GPT with conversation memory) drafts a script, 5 carousel quotes, and a social media caption with hashtags.\n4. You review and iterate via Telegram chat until you approve.\n5. Approved quotes are logged in Google Sheets.\n6. APITemplate.io generates 5 styled carousel slide images from your template.\n7. The carousel is published to Instagram, Facebook, and TikTok via Blotato.\n8. Each platform's publish status is monitored -- you get a Telegram confirmation or error.\n\n## Setup steps\n\n1. **Telegram Bot** -- Create via @BotFather, add the API token as credential.\n2. **OpenAI** -- Add your API key (used for the AI Agent and Whisper transcription).\n3. **Google Sheets** -- Create OAuth2 credentials. Set up a spreadsheet with columns: run_id, quote1-5, social_media_text. Update the Sheet ID in the Google Sheets node.\n4. **APITemplate.io** -- Create an account, design a carousel slide template, and set the template ID in the image generation nodes.\n5. **Blotato** -- Connect your Instagram, Facebook, and TikTok accounts. Add the Blotato API credential and update account/page IDs in the publishing nodes.\n\n> **Community node required:** `@blotato/n8n-nodes-blotato` -- this template works on **self-hosted n8n only**."
      },
      "typeVersion": 1
    },
    {
      "id": "dd88eef1-5ace-4a93-a148-8b4312201c45",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -6752,
        2512
      ],
      "parameters": {
        "color": 7,
        "width": 1164,
        "height": 860,
        "content": "### Step 1: Telegram Input & Voice Transcription\nUser sends a text message or voice note. Voice notes are transcribed via OpenAI Whisper before being passed to the AI agent."
      },
      "typeVersion": 1
    },
    {
      "id": "11dcf35c-f262-4ff7-9a35-2c7191d36348",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5568,
        2512
      ],
      "parameters": {
        "color": 7,
        "width": 752,
        "height": 848,
        "content": "### Step 2: AI Script Writer & Approval\nAn OpenAI-powered AI Agent with conversation memory drafts a script, 5 carousel quotes, and a social media caption. The user iterates via Telegram until approving. Approved quotes are logged in Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "823cc350-9559-4f4a-82fe-647d57e8b015",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4800,
        2080
      ],
      "parameters": {
        "color": 7,
        "width": 1196,
        "height": 1292,
        "content": "### Step 3: Image Generation\nAll 5 quotes are sent to APITemplate.io to generate styled carousel slide images using your pre-designed template. Images are then merged and the public urls are collected for the publishing step."
      },
      "typeVersion": 1
    },
    {
      "id": "d07d7345-b7d3-431c-8ac7-2b9a75ee36ea",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3568,
        2064
      ],
      "parameters": {
        "color": 7,
        "width": 1364,
        "height": 640,
        "content": "### Step 4.a: Instagram Publishing\nCreate Instagram post with status monitoring loop that retries while in-progress and sends a Telegram confirmation or error message."
      },
      "typeVersion": 1
    },
    {
      "id": "68f7349d-cba2-4e2c-9551-9a91b5abbc7b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3568,
        2672
      ],
      "parameters": {
        "color": 7,
        "width": 1364,
        "height": 448,
        "content": "### Step 4.b: Facebook Publishing\nCreate Facebook post with status monitoring loop that retries while in-progress and sends a Telegram confirmation or error message."
      },
      "typeVersion": 1
    },
    {
      "id": "3bdc03ff-e36a-461b-9570-6a4ce834904a",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3568,
        3136
      ],
      "parameters": {
        "color": 7,
        "width": 1364,
        "height": 416,
        "content": "### Step 4.c: TikTok Publishing\nCreate TikTok post with status monitoring loop that retries while in-progress and sends a Telegram confirmation or error message."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "d4e05737-58e6-4382-aad7-8b5d69fcf293",
  "connections": {
    "Get Voice File": {
      "main": [
        [
          {
            "node": "Speech to Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Speech to Text": {
      "main": [
        [
          {
            "node": "AI: Draft & Revise Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Approved": {
      "main": [
        [
          {
            "node": "Extract approved quotes",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send draft to Telegram for review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI: Draft & Revise Post",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Create TikTok Post": {
      "main": [
        [
          {
            "node": "Wait 10s before checking TikTok",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Facebook Post": {
      "main": [
        [
          {
            "node": "Wait 10s before checking Facebook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "AI: Draft & Revise Post",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Create Instagram Post": {
      "main": [
        [
          {
            "node": "Wait 25s before checking Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TikTok post published?": {
      "main": [
        [],
        [
          {
            "node": "TikTok still processing?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Draft & Revise Post": {
      "main": [
        [
          {
            "node": "Check if Approved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract approved quotes": {
      "main": [
        [
          {
            "node": "Log approved quotes in Google Sheets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Notify user: preparing post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start: Telegram Message": {
      "main": [
        [
          {
            "node": "Extract text from Telegram message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Facebook post published?": {
      "main": [
        [],
        [
          {
            "node": "Facebook still processing?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "TikTok Check Post Status": {
      "main": [
        [
          {
            "node": "TikTok post published?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TikTok still processing?": {
      "main": [
        [
          {
            "node": "Retry: wait 5s for TikTok",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send TikTok error notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI: Draft & Revise Post",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Generate carousel slide 1": {
      "main": [
        [
          {
            "node": "Merge all carousel slides",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate carousel slide 2": {
      "main": [
        [
          {
            "node": "Merge all carousel slides",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Generate carousel slide 3": {
      "main": [
        [
          {
            "node": "Merge all carousel slides",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Generate carousel slide 4": {
      "main": [
        [
          {
            "node": "Merge all carousel slides",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Generate carousel slide 5": {
      "main": [
        [
          {
            "node": "Merge all carousel slides",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Instagram post published?": {
      "main": [
        [
          {
            "node": "Send Instagram success notification",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Instagram still processing?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge all carousel slides": {
      "main": [
        [
          {
            "node": "Collect all image URLs for publishing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retry: wait 5s for TikTok": {
      "main": [
        [
          {
            "node": "TikTok Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Facebook Check Post Status": {
      "main": [
        [
          {
            "node": "Facebook post published?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Facebook still processing?": {
      "main": [
        [
          {
            "node": "Retry: wait 5s for Facebook",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Facebook error notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model (parser)": {
      "ai_languageModel": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Check Post Status": {
      "main": [
        [
          {
            "node": "Instagram post published?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram still processing?": {
      "main": [
        [
          {
            "node": "Retry: wait 5s for Instagram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Instagram error notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retry: wait 5s for Facebook": {
      "main": [
        [
          {
            "node": "Facebook Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retry: wait 5s for Instagram": {
      "main": [
        [
          {
            "node": "Instagram Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 10s before checking TikTok": {
      "main": [
        [
          {
            "node": "TikTok Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if input is a voice message": {
      "main": [
        [
          {
            "node": "Get Voice File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI: Draft & Revise Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 10s before checking Facebook": {
      "main": [
        [
          {
            "node": "Facebook Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract text from Telegram message": {
      "main": [
        [
          {
            "node": "Check if input is a voice message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 25s before checking Instagram": {
      "main": [
        [
          {
            "node": "Instagram Check Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log approved quotes in Google Sheets": {
      "main": [
        [
          {
            "node": "Generate carousel slide 1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate carousel slide 2",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate carousel slide 3",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate carousel slide 4",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate carousel slide 5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect all image URLs for publishing": {
      "main": [
        [
          {
            "node": "Create Instagram Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create Facebook Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create TikTok Post",
            "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

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

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

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

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

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

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

OpenAI Chat, Tool Workflow, Agent +15
Social Media

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

Agent, OpenAI Chat, Telegram Trigger +7
Social Media

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

Google Gemini, Agent, OpenAI Chat +7
Social Media

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

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8