AutomationFlowsAI & RAG › Capture and Organize Ideas via Telegram with Gpt-4 & Google Sheets

Capture and Organize Ideas via Telegram with Gpt-4 & Google Sheets

ByOussama @oussama on n8n.io

This n8n template creates an intelligent Ideation Agent 🤖 that captures your ideas from text and voice notes sent via Telegram. The assistant automatically transcribes your voice memos, analyzes the content with a powerful AI, and organizes it into a structured Google Sheet…

Event trigger★★★★☆ complexityAI-powered17 nodesAgentTelegram TriggerMcp Client ToolMcp TriggerTelegramHTTP RequestLm Chat Azure Open AiGoogle Sheets Tool
AI & RAG Trigger: Event Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Google Sheets Tool 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
{
  "nodes": [
    {
      "id": "a1a3b5eb-88c4-4c96-8410-0737c3cdb65d",
      "name": "Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        752,
        768
      ],
      "parameters": {
        "text": "={{ $json.Prompt }}",
        "options": {
          "maxIterations": 50,
          "systemMessage": "=You are an expert Ideation AI Agent specialized in capturing, analyzing, and organizing ideas into my Google Sheet database. Every time I send you an idea, you must:\n\n**PRIMARY TASK:**\nUse the add_row_tool to insert a comprehensive entry into my Notion database with the following fields:\n\n**REQUIRED FIELDS:**\n\n**Idea:** \nWrite a catchy, one-sentence title/name for the idea\nExample: \"Social Media Content Repurposing Agent\"\n\n**Idea Description:** \nWrite 2-3 sentences describing what the idea does, how it works, and its benefits\nExample: \"This AI agent automatically converts long-form blog posts into various social media formats such as Twitter threads, LinkedIn posts, Instagram carousels, and YouTube video outlines. It optimizes the content for each platform's specific audience and best practices, streamlining content distribution for creators and businesses.\"\n\n**Idea Type:** \nChoose EXACTLY one of these 4 options:\n- \"AI Agent\" - for autonomous AI assistants/bots\n- \"Web App\" - for website/browser applications  \n- \"SaaS Platform\" - for paid software services\n- \"Integration/Workflow\" - for tools that connect/automate between systems\n\n**Idea Score:** \nWrite one number as text: \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", or \"10\"\n\n**Category/Domain:** \nChoose EXACTLY one:\n- \"Business & Entrepreneurship\"\n- \"Technology & Software\" \n- \"Personal Productivity\"\n- \"Creative & Design\"\n- \"Health & Wellness\"\n- \"Education & Learning\"\n- \"Finance & Investment\"\n- \"Social & Communication\"\n- \"Entertainment & Media\"\n- \"Automation & Optimization\"\n\n**Priority Level:** \nChoose EXACTLY one: \"High\", \"Medium\", or \"Low\"\n\n**Status:** \nChoose EXACTLY one: \"New\", \"In Progress\", \"Researching\", or \"Implemented\"\n\n**Complexity Level:** \nChoose EXACTLY one: \"Simple\", \"Moderate\", or \"Complex\"\n\n**CRITICAL:** Use the exact text from the options above. Do NOT create variations.\n\n**RESPONSE FORMAT:**\nAfter inserting to database, confirm with: \"\u2705 Idea captured: [Brief title] - [Type] - Score: [X/10] - Priority: [Level]\""
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "c4e5e515-0a3a-412b-b23e-acf5184f5b96",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        32,
        752
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "c6dd5ab6-1f9a-4693-b223-782ca6f318f7",
      "name": "MCP Client",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        896,
        1008
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6680f1db-fc75-4070-b4d1-7abdafa4fbfc",
      "name": "MCP Server Trigger",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        1392,
        784
      ],
      "parameters": {
        "path": "17bd0cba-5dcd-4d8b-abef-c2ba2f7cca87"
      },
      "typeVersion": 1
    },
    {
      "id": "f12815e8-c7e1-4ae0-ba1f-629df23f1835",
      "name": "Telegram1",
      "type": "n8n-nodes-base.telegram",
      "position": [
        272,
        1008
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "8208dceb-6f7e-4eeb-8ba9-4baa5edd9d9c",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        400,
        1008
      ],
      "parameters": {
        "url": "https://api.elevenlabs.io/v1/speech-to-text",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "model_id",
              "value": "scribe_v1"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "728a4b8f-2e92-4864-86b1-8e041496424c",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        96,
        944
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "ee163b36-d8ec-4ffb-b302-5360099a424b",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.message.toJsonString() }}",
                    "rightValue": "text"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0c4fcbc4-c2ab-414b-b666-30c6cf9a54b3",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.message.toJsonString() }}",
                    "rightValue": "audio"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "60ae5549-bf5b-4395-96fd-ff411e5b3ea2",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1040,
        768
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a7cd2622-12f0-48ef-8859-b65df9b240ff",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        544,
        768
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cdfce35f-fc3d-4762-8cdd-8d1dc0646064",
              "name": "Prompt",
              "type": "string",
              "value": "={{ $json.text }}{{ $('Telegram Trigger').item.json.message.text }}{{ $json.candidates[0].content.parts[0].text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "df24f41b-badd-435e-94f1-5fab711e9585",
      "name": "Azure OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        752,
        1008
      ],
      "parameters": {
        "model": "gpt-4.1-2",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "aa44faf0-4b0e-4c3d-9389-0fd93db7e45b",
      "name": "add_row_tool1",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1424,
        944
      ],
      "parameters": {
        "columns": {
          "value": {
            "Idea ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Idea_', ``, 'string') }}",
            "Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
            "Idea Type": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Idea_Type', ``, 'string') }}",
            "Idea Score": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Idea_Score', ``, 'string') }}",
            "Complexity ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Complexity_', ``, 'string') }}",
            "Priority Level": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Priority_Level', ``, 'string') }}",
            "Category/Domain": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Category_Domain', ``, 'string') }}",
            "Idea Description ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Idea_Description_', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Idea ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Idea ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Idea Description ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Idea Description ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Idea Type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Idea Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Idea Score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Idea Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category/Domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Category/Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Priority Level",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Priority Level",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Complexity ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Complexity ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xMuQ0-fT9M3_-LFyvyvuCJnXTrqZsfLKqEeUU9u1v7U/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xMuQ0-fT9M3_-LFyvyvuCJnXTrqZsfLKqEeUU9u1v7U",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xMuQ0-fT9M3_-LFyvyvuCJnXTrqZsfLKqEeUU9u1v7U/edit?usp=drivesdk",
          "cachedResultName": "Ideation AI Agent - DB"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "97d0a954-cc10-4e4a-bc55-92730ee9e4a3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 368,
        "height": 640,
        "content": "## \ud83e\udd16 AI Idea Capture Agent\n\nThis n8n template creates an intelligent **Ideation Agent** \ud83e\udd16 that captures your ideas from text and voice notes sent via Telegram. The assistant automatically transcribes your voice memos, analyzes the content, and organizes it into a structured Google Sheet database. It's the perfect workflow for capturing inspiration whenever it strikes, just by talking or typing \ud83d\udca1.\n\n### **Use Cases:**\n*   \ud83d\udde3\ufe0f **Text-Based Capture:** Send any idea as a simple text message to your Telegram bot for instant processing.\n*   \ud83c\udf99\ufe0f **Voice-to-Idea:** Record voice notes on the go. The workflow transcribes them into text and categorizes them automatically.\n*   \ud83d\udcc2 **Automated Organization:** The AI agent intelligently structures each idea with a title, description, score, category, and priority level without any manual effort.\n*   \ud83d\udcca **Centralized Database:** Build a comprehensive and well-organized library of all your ideas in Google Sheets, making it easy to search, review, and act upon them.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b05013bf-abe4-40b0-a39a-493d68f21447",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        672
      ],
      "parameters": {
        "color": 3,
        "width": 656,
        "height": 496,
        "content": "## \u2705 Listening for Ideas"
      },
      "typeVersion": 1
    },
    {
      "id": "874a4c1b-a2f9-4a95-bd64-e33fd33e219e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        672
      ],
      "parameters": {
        "color": 4,
        "width": 544,
        "height": 496,
        "content": "## \u2705 Prepare the Idea"
      },
      "typeVersion": 1
    },
    {
      "id": "003d1a3c-823a-4b8f-8397-3de18354ae64",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        672
      ],
      "parameters": {
        "color": 5,
        "width": 544,
        "height": 496,
        "content": "## \u2705 Save the Idea"
      },
      "typeVersion": 1
    },
    {
      "id": "d00880ee-c86a-46b0-9140-5eab3782ff37",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        0
      ],
      "parameters": {
        "width": 400,
        "height": 640,
        "content": "### **How it works:**\n1.  **Multi-Modal Input:** The workflow starts with a `Telegram Trigger` that listens for incoming text messages and voice notes.\n2.  **Content-Based Routing:** A `Switch` node detects the message type. Text messages are sent directly for processing, while audio files are routed for transcription.\n3.  **Voice Transcription:** Voice messages are sent to the **ElevenLabs API**, which accurately converts the speech into text.\n4.  **Unified Input:** Both the original text and the transcribed audio are passed to the AI Agent in a consistent format.\n5.  **AI Analysis & Structuring:** An `AI Agent`, powered by a large language model, receives the text. It follows a detailed system prompt to analyze the idea and structure it into predefined fields: Idea, Idea Description, Idea Type, Score, Category, Priority, Status, and Complexity.\n6.  **Data Storage:** The agent uses the **Google Sheets Tool** (`add_row_tool`) to seamlessly add the fully structured idea as a new row in your designated spreadsheet.\n7.  **Instant Confirmation:** Once the idea is saved, the workflow sends a confirmation message back to you on Telegram, summarizing the captured idea.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8597d455-3580-41bc-8c26-44f0bb4a3736",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        0
      ],
      "parameters": {
        "width": 400,
        "height": 640,
        "content": "### **Requirements:**\n*   \ud83c\udf10 A **Telegram Bot API** token.\n*   \ud83e\udd16 An **AI provider** with API access (the template uses Azure OpenAI, but can be adapted).\n*   \ud83d\udde3\ufe0f An **ElevenLabs API** key for voice-to-text transcription.\n*   \ud83d\udcdd **Google Sheets API** credentials to connect to your database.\n\n### **Customizing this workflow:**\n*   \u270f\ufe0f **Modify Categories:** To change the available `Idea Type`, `Category/Domain`, or `Priority Level` options, simply edit the list within the `Agent` node's system prompt.\n*   \ud83d\udd04 **Swap LLM:** You can easily change the AI model by replacing the `Azure OpenAI Chat Model` node with another one, such as the standard OpenAI node or a local AI model.\n*   \ud83d\udd17 **Change Database:** To save ideas to a different platform, just replace the `add_row_tool1` (Google Sheets Tool) with a tool for another service like Notion, Airtable, or a database.\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Agent": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram1": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client": {
      "ai_tool": [
        [
          {
            "node": "Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "add_row_tool1": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Azure OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This n8n template creates an intelligent Ideation Agent 🤖 that captures your ideas from text and voice notes sent via Telegram. The assistant automatically transcribes your voice memos, analyzes the content with a powerful AI, and organizes it into a structured Google Sheet…

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

This template is designed for anyone who wants to use Telegram as a personal AI assistant hub. If you often juggle tasks, emails, calendars, and expenses across multiple tools, this workflow consolida

OpenAI Chat, Memory Buffer Window, Mcp Client Tool +11
AI & RAG

Awesome N8N Templates. Uses agent, telegramTrigger, mcpClientTool, mcpTrigger. Event-driven trigger; 33 nodes.

Agent, Telegram Trigger, Mcp Client Tool +9
AI & RAG

> This n8n template builds Stacey, an AI assistant that runs inside Telegram. Stacey listens to your messages, understands what you want using AI, and intelligently routes commands to MCP-connected

Tool Workflow, Tool Http Request, Telegram +11
AI & RAG

An AI assistant that NEVER forgets using MemMachine for persistent cross-session memory, with voice transcription support and productivity tools.

Telegram Trigger, Telegram, OpenAI +8
AI & RAG

Template Overview This workflow demonstrates how to build a simple Telegram bot that can schedule events, check service prices, and query company documents using AI integrated with MCP and RAG. It’s d

Mcp Trigger, Google Sheets Tool, Google Docs Tool +8