AutomationFlowsAI & RAG › Telegram to AI Content Agent with Gemini and Blotato

Telegram to AI Content Agent with Gemini and Blotato

Original n8n title: Create an AI Content Agent with Telegram, Gemini, and Blotato (no-code)

Bygiangxai @giangxai on n8n.io

Automatically turn a simple Telegram message into fully researched, AI-generated visual content and publish it to multiple social platforms using Blotato — with async processing control and built-in status validation.

Event trigger★★★★☆ complexityAI-powered19 nodesTelegram TriggerAgentTelegramGoogle Gemini ChatMemory Buffer Window@Blotato/N8N Nodes Blotato
AI & RAG Trigger: Event Nodes: 19 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Google Gemini Chat 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": "LSEq9VUgIq4RlBCV",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI Agent Content",
  "tags": [],
  "nodes": [
    {
      "id": "dcbb2f08-d7fe-46b7-85a0-58712417c36a",
      "name": "Telegram Bot Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -688,
        -2608
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "117327ca-5c8c-49d5-b745-32a8a7672350",
      "name": "AI Content Orchestrator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -272,
        -2608
      ],
      "parameters": {
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "You are a helpful assistant"
        },
        "promptType": "define"
      },
      "typeVersion": 3
    },
    {
      "id": "32d228f1-958b-4108-b5ad-ab541832038a",
      "name": "Telegram Response Sender",
      "type": "n8n-nodes-base.telegram",
      "position": [
        256,
        -2608
      ],
      "parameters": {
        "text": "={{ $json.output.replace(/([_*\\[\\]()~`>#+=|{}.!-])/g, '\\\\$1') }}",
        "chatId": "={{ $('Telegram Bot Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "parse_mode": "MarkdownV2"
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "21aa84a9-190f-4307-8ae0-c4d4d05b92da",
      "name": "Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -272,
        -2768
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dfcf199d-1ee2-4395-9f7d-c5d80c1294e6",
      "name": "Conversation Memory Store",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -80,
        -2768
      ],
      "parameters": {
        "sessionKey": "={{ $json.message.chat.id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 30
      },
      "typeVersion": 1.3
    },
    {
      "id": "ca8d5a3f-0cd9-452b-aaa8-65f3ae0b5817",
      "name": "Instagram Publisher",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        272,
        -2016
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "25299",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/25299",
          "cachedResultName": "giangxai.aff"
        },
        "postContentText": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
        "postContentMediaUrls": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Media_URLs', ``, 'string') }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f9948000-5445-4c0a-8ab8-955a16de56b0",
      "name": "LinkedIn Publisher",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        480,
        -2016
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "10190",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/10190",
          "cachedResultName": "Giang Vuong Thi"
        },
        "postContentText": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
        "postContentMediaUrls": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Media_URLs', ``, 'string') }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5744b33a-9439-4d47-9a83-845a1f918646",
      "name": "Source Collector",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        -784,
        -2016
      ],
      "parameters": {
        "resource": "source",
        "sourceUrl": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "67203f65-a186-415e-a688-c6e4f37999f3",
      "name": "Source Retriever",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        -576,
        -2016
      ],
      "parameters": {
        "resource": "source",
        "sourceId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Source_ID', ``, 'string') }}",
        "operation": "get"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a1defa02-368a-443e-bf3d-bde27b09b902",
      "name": "Infographic Generator",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        -336,
        -2016
      ],
      "parameters": {
        "prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
        "resource": "video",
        "templateId": {
          "__rl": true,
          "mode": "list",
          "value": "29ebb2bd-02b7-4317-8bb8-c30eb938e47c",
          "cachedResultName": "Generate an infographic carved into a wooden trail marker in a serene nature setting using AI image generation."
        },
        "templateInputs": {
          "value": {
            "footerText": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Footer_CTA_Text', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Infographic_Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Infographic Description",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "footerText",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Footer CTA Text",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2b9b8c49-e04a-49dd-ba6a-22ef1c4c997f",
      "name": "Slideshow Video Generator",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        -144,
        -2016
      ],
      "parameters": {
        "prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
        "resource": "video",
        "templateId": {
          "__rl": true,
          "mode": "list",
          "value": "/base/v2/image-slideshow/5903b592-1255-43b4-b9ac-f8ed7cbf6a5f/v1",
          "cachedResultName": "Image Slideshow with Text Overlays"
        },
        "templateInputs": {
          "value": {
            "slides": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Slides__e_g_____key____value____', ``, 'string') }}",
            "textColor": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text_Color', ``, 'string') }}",
            "slideDuration": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Slide_Duration__seconds_', ``, 'string') }}",
            "customTextPositionPercent": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Custom_Text_Position______', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "customTextPositionPercent",
              "type": "string",
              "display": true,
              "required": true,
              "displayName": "Custom Text Position (%) *",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "slides",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Slides (e.g. [{\"key\": \"value\"}])",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "aiImageModel",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Replicate/black-forest-labs/flux-schnell",
                  "value": "replicate/black-forest-labs/flux-schnell"
                },
                {
                  "name": "Replicate/black-forest-labs/flux-dev",
                  "value": "replicate/black-forest-labs/flux-dev"
                },
                {
                  "name": "Replicate/black-forest-labs/flux-1.1-pro",
                  "value": "replicate/black-forest-labs/flux-1.1-pro"
                },
                {
                  "name": "Replicate/black-forest-labs/flux-1.1-pro-ultra",
                  "value": "replicate/black-forest-labs/flux-1.1-pro-ultra"
                },
                {
                  "name": "Replicate/recraft-ai/recraft-v3",
                  "value": "replicate/recraft-ai/recraft-v3"
                },
                {
                  "name": "Replicate/ideogram-ai/ideogram-v2",
                  "value": "replicate/ideogram-ai/ideogram-v2"
                },
                {
                  "name": "Replicate/luma/photon",
                  "value": "replicate/luma/photon"
                },
                {
                  "name": "Openai/gpt-image-1",
                  "value": "openai/gpt-image-1"
                },
                {
                  "name": "Fal-ai/nano-banana",
                  "value": "fal-ai/nano-banana"
                },
                {
                  "name": "Fal-ai/nano-banana-pro",
                  "value": "fal-ai/nano-banana-pro"
                },
                {
                  "name": "Fal-ai/imagen4/preview/fast",
                  "value": "fal-ai/imagen4/preview/fast"
                }
              ],
              "required": false,
              "displayName": "AI Image Model",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "textPosition",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Top",
                  "value": "top"
                },
                {
                  "name": "Center",
                  "value": "center"
                },
                {
                  "name": "Bottom",
                  "value": "bottom"
                }
              ],
              "required": false,
              "displayName": "Text Position",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "textStyle",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Minimal",
                  "value": "minimal"
                },
                {
                  "name": "Elegant",
                  "value": "elegant"
                },
                {
                  "name": "Modern",
                  "value": "modern"
                }
              ],
              "required": false,
              "displayName": "Text Style",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "textColor",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Text Color",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "aspectRatio",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "16:9",
                  "value": "16:9"
                },
                {
                  "name": "1:1",
                  "value": "1:1"
                },
                {
                  "name": "4:5",
                  "value": "4:5"
                },
                {
                  "name": "9:16",
                  "value": "9:16"
                }
              ],
              "required": false,
              "displayName": "Aspect Ratio",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "slideDuration",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Slide Duration (seconds)",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "transition",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "None",
                  "value": "none"
                },
                {
                  "name": "Fade",
                  "value": "fade"
                },
                {
                  "name": "Slide",
                  "value": "slide"
                },
                {
                  "name": "Zoom",
                  "value": "zoom"
                }
              ],
              "required": false,
              "displayName": "Transition Effect",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f9257792-a129-490c-a9ec-66edfa732241",
      "name": "Visual Asset Retriever",
      "type": "@blotato/n8n-nodes-blotato.blotatoTool",
      "position": [
        64,
        -2016
      ],
      "parameters": {
        "videoId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Video_ID', ``, 'string') }}",
        "resource": "video",
        "operation": "get"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a28ad321-5f5e-4f25-a4be-0ce8c743bad8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        -2912
      ],
      "parameters": {
        "color": 6,
        "width": 592,
        "height": 576,
        "content": "## AI CORE\nThe brain of the system. Understands user intent, decides whether to research or generate visuals, writes captions/scripts, and routes tasks to Blotato nodes. "
      },
      "typeVersion": 1
    },
    {
      "id": "c0457cb1-8c99-4919-a39c-6be8fc879c5a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -2336
      ],
      "parameters": {
        "color": 6,
        "width": 432,
        "height": 608,
        "content": "## RESEARCH ENGINE (Blotato)\nCreates a research task in Blotato, extracts structured insights, and returns clean data ready for content generation. "
      },
      "typeVersion": 1
    },
    {
      "id": "97d1956b-4b1c-460a-9d86-4fb9aa5f737f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        -2336
      ],
      "parameters": {
        "color": 6,
        "width": 592,
        "height": 608,
        "content": "## MEDIA ENGINE (Blotato)\nGenerates visual assets.Creates infographics or slideshow videos based on structured content."
      },
      "typeVersion": 1
    },
    {
      "id": "0e50df13-9861-4588-955b-f0b34b75ceb8",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -2336
      ],
      "parameters": {
        "color": 6,
        "width": 464,
        "height": 608,
        "content": "## DISTRIBUTION (Blotato)\nPublishes generated content directly to Instagram and LinkedIn.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "93753ccb-6b23-457d-ab59-5bcbf12373d0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -2912
      ],
      "parameters": {
        "color": 6,
        "width": 464,
        "height": 576,
        "content": "## RESPONSE\nSends confirmation back to Telegram.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d90b1637-dff3-495c-a618-a6f69c23fa81",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -2912
      ],
      "parameters": {
        "color": 6,
        "width": 432,
        "height": 576,
        "content": "## TRIGGER\nReceives content requests from Telegram and starts the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "79ad2152-e321-400b-b70e-5fa4e0b4beb1",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1680,
        -2912
      ],
      "parameters": {
        "width": 832,
        "height": 1184,
        "content": "# \ud83d\udee0\ufe0f Workflow Setup Guide  \n\nAuthor: [GiangxAI](https://www.youtube.com/@giangxai.official)\n\n---\n\n## How it works\n\n- A user sends a topic or content request directly to your Telegram Bot to trigger the workflow  \n- The AI Core analyzes user intent, references conversation memory, and decides which automation steps to activate  \n- A Source job is created to collect and structure real-world information  \n- The workflow waits for processing and validates extracted data  \n- Structured content is sent to Blotato to generate visuals (infographic or slideshow video)  \n- The workflow waits for media rendering to complete  \n- The final visual asset is retrieved and verified  \n- The generated content is automatically published to:\n  - Instagram  \n  - LinkedIn  \n- A confirmation message is sent back to Telegram once publishing is successful  \n\nThe entire pipeline runs using an async orchestration pattern:\n\nTrigger \u2192 Analyze \u2192 Create \u2192 Wait \u2192 Retrieve \u2192 Publish \u2192 Confirm  \n\nOnce configured, the system turns Telegram messages into fully automated multi-platform content \u2014 from research to publishing \u2014 without manual editing or uploading.\n\n---\n\n## Setup guide [n8n](https://n8n.partnerlinks.io/giangxai)\n\n- Configure the **Telegram Bot Trigger** node with your bot token  \n- Connect Gemini (or AI model) credentials for intent analysis  \n- Add conversation memory storage for contextual responses  \n- Connect ** [Blotato](https://blotato.com/?ref=giang9s) API credentials** for research, media generation, and publishing  \n- Configure Instagram and LinkedIn credentials for auto publishing  \n- Review status routing logic (processing / completed / failed)  \n- Adjust wait timing based on AI and rendering speed  \n\nAfter setup, the entire workflow runs automatically from a single Telegram interface \u2014 no manual research, design work, or cross-platform posting required.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4690c062-db3a-40a3-b4fe-70177df261a5",
  "connections": {
    "Source Collector": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Source Retriever": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn Publisher": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Publisher": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Bot Trigger": {
      "main": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Infographic Generator": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Visual Asset Retriever": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "AI Content Orchestrator": {
      "main": [
        [
          {
            "node": "Telegram Response Sender",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Conversation Memory Store": {
      "ai_memory": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Slideshow Video Generator": {
      "ai_tool": [
        [
          {
            "node": "AI Content Orchestrator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Automatically turn a simple Telegram message into fully researched, AI-generated visual content and publish it to multiple social platforms using Blotato — with async processing control and built-in status validation.

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

Telegram Trigger receives incoming messages (text, voice, photo, document). Switch routes by message type to appropriate processors: Text → forwarded as-is. Voice → downloaded and sent to Transcribe a

Memory Buffer Window, Telegram Trigger, Telegram +12
AI & RAG

Transform your Telegram messenger into a powerful, multi-modal personal or team assistant. This n8n workflow creates an intelligent agent that can understand text, voice, images, and documents, and ta

Memory Buffer Window, Telegram Trigger, Telegram +10
AI & RAG

A comprehensive n8n workflow demonstrating advanced AI agent orchestration, stateful conversation management, and multi-modal input processing for nutrition tracking applications.

Telegram, Memory Buffer Window, Google Gemini Chat +6
AI & RAG

&gt; AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration.

Telegram, Google Gemini, Google Gemini Chat +7
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11