AutomationFlowsAI & RAG › Create AI Image and Video Posts From Telegram with Gpt-4o, Atlascloud and…

Create AI Image and Video Posts From Telegram with Gpt-4o, Atlascloud and…

Original n8n title: Create AI Image and Video Posts From Telegram with Gpt-4o, Atlascloud and Blotato

ByDr. Firas @drfiras on n8n.io

This workflow receives a post idea via Telegram, uses OpenAI (GPT-4o mini) to generate platform-specific copy plus image/video prompts, creates media through AtlasCloud (GPT Image 2 and Seedance 2.0), requests approvals in Telegram, and publishes the approved content to seven…

Event trigger★★★★★ complexityAI-powered36 nodesTelegram TriggerAgentOpenAI ChatOutput Parser StructuredHTTP RequestTelegram@Blotato/N8N Nodes Blotato
AI & RAG Trigger: Event Nodes: 36 Complexity: ★★★★★ AI nodes: yes Added:

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

This workflow follows the Agent → Blotaton8N Nodes Blotato 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": "kWHnLZF4hto1aDdM",
  "name": "Create AI image and video posts from Telegram and publish to 7 platforms",
  "tags": [],
  "nodes": [
    {
      "id": "9575006b-9541-49dc-b60b-ac1146ecd117",
      "name": "Receive post description from Telegram",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        720,
        624
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "b2b2a46d-c84b-455a-8438-02b88efa778d",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        944,
        624
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cfg-01",
              "name": "post_description",
              "type": "string",
              "value": "={{ $('Receive post description from Telegram').item.json.message.text }}"
            },
            {
              "id": "cfg-02",
              "name": "telegram_chat_id",
              "type": "string",
              "value": "={{ $('Receive post description from Telegram').item.json.message.chat.id }}"
            },
            {
              "id": "cfg-03",
              "name": "image_model",
              "type": "string",
              "value": "openai/gpt-image-2/text-to-image"
            },
            {
              "id": "cfg-04",
              "name": "image_size",
              "type": "string",
              "value": "1024x1024"
            },
            {
              "id": "cfg-05",
              "name": "image_quality",
              "type": "string",
              "value": "high"
            },
            {
              "id": "cfg-06",
              "name": "video_model",
              "type": "string",
              "value": "bytedance/seedance-2.0/text-to-video"
            },
            {
              "id": "cfg-07",
              "name": "video_duration",
              "type": "number",
              "value": 5
            },
            {
              "id": "cfg-08",
              "name": "video_aspect_ratio",
              "type": "string",
              "value": "9:16"
            },
            {
              "id": "cfg-09",
              "name": "video_resolution",
              "type": "string",
              "value": "720p"
            },
            {
              "id": "cfg-10",
              "name": "output_language",
              "type": "string",
              "value": "French"
            },
            {
              "id": "cfg-11",
              "name": "brand_name",
              "type": "string",
              "value": "Your brand"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1df22fca-ef67-4c85-90a2-f84d0d1f13be",
      "name": "Generate platform posts",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1184,
        624
      ],
      "parameters": {
        "text": "=Create the social media content package for this post description:\n\n{{ $('Configuration').item.json.post_description }}\n\nBrand: {{ $('Configuration').item.json.brand_name }}\nOutput language for all posts and captions: {{ $('Configuration').item.json.output_language }}\n(The image_prompt and video_prompt must always be written in English.)",
        "options": {
          "systemMessage": "You are a senior social media content creator. From a single content description, you produce a complete multi-platform content package.\n\nReturn ONLY the structured output. Rules per field:\n\n- x_post: max 280 characters, punchy hook, 2-3 hashtags, no links unless provided.\n- linkedin_post: professional and insightful, 4-8 short paragraphs with line breaks, one strong idea, 3-5 hashtags at the end, clear CTA.\n- facebook_post: friendly and conversational, 2-4 sentences, 2-3 hashtags, engagement CTA (like/comment/share).\n- threads_post: casual and conversational, max 500 characters, 1-2 hashtags.\n- instagram_caption: engaging caption for a Reel, 2-3 sentences with emojis, strong first line hook, 5-8 hashtags at the end.\n- tiktok_caption: short punchy caption for a TikTok video, with emojis, 3-5 trending hashtags.\n- youtube_title: catchy YouTube Shorts title, max 90 characters, no clickbait lies.\n- youtube_description: 2-3 sentences describing the Short, 3-5 hashtags.\n- image_prompt: detailed English prompt for a text-to-image model (GPT Image 2). Describe subject, composition, style, lighting, colors. Square format. Avoid any text or lettering in the image.\n- video_prompt: detailed English prompt for a text-to-video model (Seedance 2.0) generating a 5-second VERTICAL 9:16 short video with native audio. Describe the scene, camera movement, motion, mood, and sound/audio cues. One single continuous shot, dynamic and eye-catching for Reels/TikTok/Shorts."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "53623f67-691a-4999-bb1b-1cc94b3070e1",
      "name": "GPT-4o mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1104,
        848
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "3cc5e8cd-3563-4156-acce-40795e42c20d",
      "name": "Platform posts schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1312,
        848
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"x_post\": { \"type\": \"string\" },\n    \"linkedin_post\": { \"type\": \"string\" },\n    \"facebook_post\": { \"type\": \"string\" },\n    \"threads_post\": { \"type\": \"string\" },\n    \"instagram_caption\": { \"type\": \"string\" },\n    \"tiktok_caption\": { \"type\": \"string\" },\n    \"youtube_title\": { \"type\": \"string\" },\n    \"youtube_description\": { \"type\": \"string\" },\n    \"image_prompt\": { \"type\": \"string\" },\n    \"video_prompt\": { \"type\": \"string\" }\n  },\n  \"required\": [\"x_post\", \"linkedin_post\", \"facebook_post\", \"threads_post\", \"instagram_caption\", \"tiktok_caption\", \"youtube_title\", \"youtube_description\", \"image_prompt\", \"video_prompt\"]\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3d83896b-5c2b-423a-bf05-cd5f78ddc9ca",
      "name": "Create image with GPT Image 2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1520,
        320
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateImage",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"{{ $('Configuration').item.json.image_model }}\",\n  \"prompt\": {{ JSON.stringify($('Generate platform posts').item.json.output.image_prompt) }},\n  \"size\": \"{{ $('Configuration').item.json.image_size }}\",\n  \"quality\": \"{{ $('Configuration').item.json.image_quality }}\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9a19c970-b257-4c61-9e70-d0a297795c16",
      "name": "Wait 10s for image",
      "type": "n8n-nodes-base.wait",
      "position": [
        1744,
        320
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "f1dc117e-05a5-4ca7-a24b-32c17be9a5b4",
      "name": "Get image status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1952,
        320
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $('Create image with GPT Image 2').item.json.data.id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "3744f6c5-3b9b-4a14-a8c0-4ebe0a1be8ad",
      "name": "Image ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        2160,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "img-ready-1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ ['completed','succeeded'].includes($json.data.status) }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0c8ac460-1dc7-42f6-8492-26886543f161",
      "name": "Send image preview on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2384,
        320
      ],
      "parameters": {
        "file": "={{ $json.data.outputs[0] }}",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "operation": "sendPhoto",
        "additionalFields": {
          "caption": "=\ud83d\uddbc\ufe0f Image g\u00e9n\u00e9r\u00e9e pour ton post :\n\n{{ $('Generate platform posts').item.json.output.x_post }}"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a7b55136-15db-4f15-9662-da291e35d7d6",
      "name": "Ask image approval on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2608,
        320
      ],
      "parameters": {
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "message": "\u2705 Approuves-tu cette image ? (Refuser = r\u00e9g\u00e9n\u00e9ration automatique)",
        "options": {},
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a9a4eec7-d4dd-4048-8bf4-2fa5b13c8491",
      "name": "Image approved?",
      "type": "n8n-nodes-base.if",
      "position": [
        2832,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "img-approved-1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "66a6ddbc-6d3d-4280-8fe3-f256e1e4e945",
      "name": "Publish image to X",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        112
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.x_post }}",
        "postContentMediaUrls": "={{ $('Get image status').item.json.data.outputs[0] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "3a2d0018-74dc-4bc8-bfb2-68551f39036b",
      "name": "Publish image to LinkedIn",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        272
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.linkedin_post }}",
        "postContentMediaUrls": "={{ $('Get image status').item.json.data.outputs[0] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "11fc1f1e-49ba-4752-b36b-4b3d7b0c62c2",
      "name": "Publish image to Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        432
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.facebook_post }}",
        "postContentMediaUrls": "={{ $('Get image status').item.json.data.outputs[0] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "b6853bd8-dd1b-4b6f-a62d-dc773d6eb28a",
      "name": "Publish image to Threads",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        592
      ],
      "parameters": {
        "options": {},
        "platform": "threads",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.threads_post }}",
        "postContentMediaUrls": "={{ $('Get image status').item.json.data.outputs[0] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "54d86bb6-d07d-4458-b02e-89f5c5df77f9",
      "name": "Merge image publications",
      "type": "n8n-nodes-base.merge",
      "position": [
        3360,
        320
      ],
      "parameters": {
        "numberInputs": 4
      },
      "typeVersion": 3
    },
    {
      "id": "73035cbe-2af3-46f0-9b07-1f3ce0ec27f4",
      "name": "Notify image published",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3584,
        320
      ],
      "parameters": {
        "text": "\u2705 Image publi\u00e9e sur X, LinkedIn, Facebook et Threads !",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "bbd50764-bd69-466b-bf42-266de3bb10d3",
      "name": "Create video with Seedance 2.0",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1520,
        1024
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateVideo",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"{{ $('Configuration').item.json.video_model }}\",\n  \"prompt\": {{ JSON.stringify($('Generate platform posts').item.json.output.video_prompt) }},\n  \"duration\": {{ $('Configuration').item.json.video_duration }},\n  \"aspect_ratio\": \"{{ $('Configuration').item.json.video_aspect_ratio }}\",\n  \"resolution\": \"{{ $('Configuration').item.json.video_resolution }}\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "08324def-482a-4332-be1c-a9b6744ed7c7",
      "name": "Wait 30s for video",
      "type": "n8n-nodes-base.wait",
      "position": [
        1744,
        1024
      ],
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "a6e374c0-d70a-4487-a451-0edfd1eae133",
      "name": "Get video status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1952,
        1024
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $('Create video with Seedance 2.0').item.json.data.id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "a8c9be31-fc24-45ca-ae88-eb5d37e26fa1",
      "name": "Video ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        2160,
        1024
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "vid-ready-1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ ['completed','succeeded'].includes($json.data.status) }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "695b024f-0209-4e93-be66-9137b106e4b0",
      "name": "Send video preview on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2384,
        1024
      ],
      "parameters": {
        "file": "={{ $json.data.outputs[0] }}",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "operation": "sendVideo",
        "additionalFields": {
          "caption": "=\ud83c\udfac Vid\u00e9o verticale g\u00e9n\u00e9r\u00e9e pour ton post :\n\n{{ $('Generate platform posts').item.json.output.instagram_caption }}"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7431879d-a62b-4aab-b448-51a6a319f98d",
      "name": "Ask video approval on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2608,
        1024
      ],
      "parameters": {
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "message": "\u2705 Approuves-tu cette vid\u00e9o ? (Refuser = r\u00e9g\u00e9n\u00e9ration automatique)",
        "options": {},
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3c700399-4114-46da-b14a-59756fac15ed",
      "name": "Video approved?",
      "type": "n8n-nodes-base.if",
      "position": [
        2832,
        1024
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "vid-approved-1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "89cddf51-8211-4f89-9b8c-a8219f94ae95",
      "name": "Publish video to Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        912
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.instagram_caption }}",
        "postContentMediaUrls": "={{ $('Get video status').item.json.data.outputs[0] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "b89ce698-d82b-43b8-8057-69291735fa7d",
      "name": "Publish video to TikTok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        1072
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.tiktok_caption }}",
        "postContentMediaUrls": "={{ $('Get video status').item.json.data.outputs[0] }}",
        "postCreateTiktokOptionIsAiGenerated": true
      },
      "typeVersion": 2
    },
    {
      "id": "59d5603a-ae14-4472-bb1f-fde35d8459de",
      "name": "Publish video to YouTube Shorts",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3104,
        1232
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Generate platform posts').item.json.output.youtube_description }}",
        "postContentMediaUrls": "={{ $('Get video status').item.json.data.outputs[0] }}",
        "postCreateYoutubeOptionTitle": "={{ $('Generate platform posts').item.json.output.youtube_title }}",
        "postCreateYoutubeOptionContainsSyntheticMedia": true,
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "typeVersion": 2
    },
    {
      "id": "d979d530-b165-49a8-a554-f48da14f0364",
      "name": "Merge video publications",
      "type": "n8n-nodes-base.merge",
      "position": [
        3360,
        1072
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3
    },
    {
      "id": "017cc8a4-05d3-47d3-a184-cb528fb95235",
      "name": "Notify video published",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3584,
        1072
      ],
      "parameters": {
        "text": "\u2705 Vid\u00e9o publi\u00e9e sur Instagram Reels, TikTok et YouTube Shorts !",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "7caeac05-f39a-4132-bb2f-c57abe450f35",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 660,
        "height": 1240,
        "content": "# Create AI image and video posts from Telegram and publish to 7 platforms\n\n# \ud83d\udce5  [Open full documentation on Notion](https://automatisation.notion.site/Create-AI-image-and-video-posts-from-Telegram-and-publish-to-7-platforms-Course-support-3963d6550fd9814686ddfb15b306a876?source=copy_link)\n\n## How it works\n1. Send your post description to your Telegram bot \u2014 that message is the only input.\n2. GPT-4o mini writes platform-specific posts for X, LinkedIn, Facebook, Threads, Instagram, TikTok and YouTube Shorts, plus one image prompt and one video prompt.\n3. [AtlasCloud](https://www.atlascloud.ai/?ref=8QKPJE) generates in parallel a square image (GPT Image 2, \u2248$0.01/image) and a 5-second vertical 9:16 video with native audio (Seedance 2.0, \u2248$0.24/second in 720p).\n4. Each media is sent back to you on Telegram with Approve / Decline buttons. Declining regenerates that media automatically with the same prompt \u2014 the other media is not affected.\n5. Once approved, [Blotato](https://blotato.com/?ref=firas) publishes the image to X, LinkedIn, Facebook and Threads, and the video to Instagram Reels, TikTok and YouTube Shorts. You get a Telegram confirmation for each batch.\n\n## Setup\n1. Create a Telegram bot with @BotFather and add the token as a Telegram credential, used by the trigger and all Telegram nodes.\n2. Select your OpenAI credential on the GPT-4o mini node.\n3. Create an HTTP Header Auth credential (Name: `Authorization`, Value: `Bearer YOUR_ATLASCLOUD_KEY`) and select it on the 4 AtlasCloud HTTP nodes.\n4. Add your [Blotato](https://blotato.com/?ref=firas) API key as a Blotato credential and pick your connected account in each of the 7 publish nodes (plus the Facebook page).\n5. Open the Configuration node and adjust the variables (video duration, image size, output language...).\n\n## Requirements\n- Telegram bot token\n- OpenAI API key (GPT-4o mini)\n- [AtlasCloud](https://www.atlascloud.ai/?ref=8QKPJE) API key\n- Blotato account with your 7 social accounts connected\n- Self-hosted n8n or n8n Cloud with verified community nodes enabled (Blotato is a community node)\n\n## Customization\n- All adjustable variables live in the Configuration node: models, video duration, aspect ratio, resolution, image size and quality, output language, brand name.\n- Edit the system prompt in the Generate platform posts node to match your brand voice.\n- Add or remove platforms by duplicating or deleting Blotato nodes (update the Merge node input count accordingly).\n- Increase video duration for longer shorts \u2014 pricing scales per second."
      },
      "typeVersion": 1
    },
    {
      "id": "df84b1bf-7273-4e78-9432-24499cda9919",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        432
      ],
      "parameters": {
        "color": 7,
        "width": 752,
        "height": 568,
        "content": "## 1. Trigger, configuration & AI content\nSend your post description to the Telegram bot. Set every adjustable variable in **Configuration** (models, duration, sizes, language). GPT-4o mini then generates all platform posts + image & video prompts in one structured output."
      },
      "typeVersion": 1
    },
    {
      "id": "8ed269e6-abea-4239-9fde-2d3c95ef9955",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 1480,
        "height": 736,
        "content": "## 2. Image \u2014 generate, review, regenerate\nGPT Image 2 on [AtlasCloud](https://www.atlascloud.ai/?ref=8QKPJE) creates the post image (poll until ready). The image is sent to Telegram for approval: \u2705 publish \u00b7 \u274c regenerate automatically with the same prompt."
      },
      "typeVersion": 1
    },
    {
      "id": "a34fa0cd-6234-498a-9538-fd017e722568",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        752
      ],
      "parameters": {
        "color": 7,
        "width": 1480,
        "height": 636,
        "content": "## 3. Video \u2014 generate, review, regenerate\nSeedance 2.0 creates a 5s vertical 9:16 short with native audio (poll until ready). Sent to Telegram for approval: \u2705 publish \u00b7 \u274c regenerate automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "66af62db-bf9a-4757-8084-8e2782078367",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2992,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 732,
        "content": "## 4. Publish image via [Blotato](https://blotato.com/?ref=firas)\nThe approved image goes to X, LinkedIn, Facebook and Threads with platform-specific texts. Select your accounts in each node."
      },
      "typeVersion": 1
    },
    {
      "id": "7362a35f-14b0-4fe7-a1a6-fc6c0564068e",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2992,
        752
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 636,
        "content": "## 5. Publish video via Blotato\nThe approved vertical video goes to Instagram Reels, TikTok and YouTube Shorts. AI-generated content flags are enabled for TikTok and YouTube."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "4a4a4081-dc19-4e79-b27b-f4846d5cace8",
  "nodeGroups": [],
  "connections": {
    "GPT-4o mini": {
      "ai_languageModel": [
        [
          {
            "node": "Generate platform posts",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Image ready?": {
      "main": [
        [
          {
            "node": "Send image preview on Telegram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 10s for image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video ready?": {
      "main": [
        [
          {
            "node": "Send video preview on Telegram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 30s for video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "Generate platform posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image approved?": {
      "main": [
        [
          {
            "node": "Publish image to X",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish image to LinkedIn",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish image to Facebook",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish image to Threads",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create image with GPT Image 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video approved?": {
      "main": [
        [
          {
            "node": "Publish video to Instagram",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish video to TikTok",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish video to YouTube Shorts",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create video with Seedance 2.0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get image status": {
      "main": [
        [
          {
            "node": "Image ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video status": {
      "main": [
        [
          {
            "node": "Video ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish image to X": {
      "main": [
        [
          {
            "node": "Merge image publications",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 10s for image": {
      "main": [
        [
          {
            "node": "Get image status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30s for video": {
      "main": [
        [
          {
            "node": "Get video status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Platform posts schema": {
      "ai_outputParser": [
        [
          {
            "node": "Generate platform posts",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Generate platform posts": {
      "main": [
        [
          {
            "node": "Create image with GPT Image 2",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create video with Seedance 2.0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish video to TikTok": {
      "main": [
        [
          {
            "node": "Merge video publications",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge image publications": {
      "main": [
        [
          {
            "node": "Notify image published",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge video publications": {
      "main": [
        [
          {
            "node": "Notify video published",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish image to Threads": {
      "main": [
        [
          {
            "node": "Merge image publications",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Publish image to Facebook": {
      "main": [
        [
          {
            "node": "Merge image publications",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Publish image to LinkedIn": {
      "main": [
        [
          {
            "node": "Merge image publications",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Publish video to Instagram": {
      "main": [
        [
          {
            "node": "Merge video publications",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create image with GPT Image 2": {
      "main": [
        [
          {
            "node": "Wait 10s for image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ask image approval on Telegram": {
      "main": [
        [
          {
            "node": "Image approved?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ask video approval on Telegram": {
      "main": [
        [
          {
            "node": "Video approved?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create video with Seedance 2.0": {
      "main": [
        [
          {
            "node": "Wait 30s for video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send image preview on Telegram": {
      "main": [
        [
          {
            "node": "Ask image approval on Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send video preview on Telegram": {
      "main": [
        [
          {
            "node": "Ask video approval on Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish video to YouTube Shorts": {
      "main": [
        [
          {
            "node": "Merge video publications",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Receive post description from Telegram": {
      "main": [
        [
          {
            "node": "Configuration",
            "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

This workflow receives a post idea via Telegram, uses OpenAI (GPT-4o mini) to generate platform-specific copy plus image/video prompts, creates media through AtlasCloud (GPT Image 2 and Seedance 2.0), requests approvals in Telegram, and publishes the approved content to seven…

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

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.

Telegram, Telegram Trigger, OpenAI Chat +8
AI & RAG

Digital marketers, content creators, social media managers, and businesses who want to use AI marketing automation for YouTube Shorts without spending hours on production. This AI workflow helps anyon

OpenAI, HTTP Request, OpenAI Chat +7
AI & RAG

This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8
AI & RAG

💥 Automate video ads with NanoBanana, Seedream 4, ChatGPT Image and Veo 3 - VIDE. Uses telegram, telegramTrigger, googleDrive, agent. Event-driven trigger; 63 nodes.

Telegram, Telegram Trigger, Google Drive +8