Asistente de voz para manejar tareas de Notion a través de Telegram
Este es unautomatización que contiene 25 nodos.Utiliza principalmente nodos como If, Set, Notion, Switch, Telegram. Extraer y aprobar tareas de Telegram a Notion con Gemini AI y soporte de voz
- •Clave de API de Notion
- •Bot Token de Telegram
- •Clave de API de Google Gemini
Nodos utilizados (25)
Categoría
{
"id": "UMVskHQcryGFC3sW",
"meta": {
"instanceId": "733e9abfd67f4f2666a76557fe5d7598ae7705aa1e6ff21081cb972137b3c8b4",
"templateCredsSetupCompleted": true
},
"name": "Voice agent for the notion tasks through the telegram",
"tags": [
{
"id": "JUK6Xu1Fz0PWwGzI",
"name": "active",
"createdAt": "2025-10-04T12:29:09.131Z",
"updatedAt": "2025-10-04T12:29:09.131Z"
}
],
"nodes": [
{
"id": "34b3273c-721e-488b-9bce-14ee704185ab",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-64,
128
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-lite"
},
"credentials": {
"googlePalmApi": {
"id": "leqZBEL1m8HX7yLq",
"name": "skcet (Mooku) - Gemini"
}
},
"typeVersion": 1
},
{
"id": "e7d20742-834e-496f-9dda-9789035e7355",
"name": "Verificación de Aprobación (¿Aprobado?)",
"type": "n8n-nodes-base.if",
"position": [
1232,
-48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9d302e0c-44e2-4b9e-a3ed-8d21e67945ed",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.approved }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e8a10ffe-b0ca-4fac-b995-b81675799620",
"name": "Telegram: Recibir Mensaje",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1472,
-32
],
"webhookId": "3d067e88-c55e-46c7-b4cf-5d0cc9c3d540",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "a396c59a-f7b1-43aa-a8d8-572761967c2a",
"name": "Switch: Texto o Voz",
"type": "n8n-nodes-base.switch",
"position": [
-1168,
-32
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3fb72ce4-35b2-4997-a369-6a7fd723b36c",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.text }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "voice",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "667e13a9-4518-4abb-983d-3b6171f35e4f",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "=",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "a2dde0cd-d68b-4545-820d-6d2c410ebd40",
"name": "Set: Preparar Texto",
"type": "n8n-nodes-base.set",
"position": [
-608,
-176
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "db72eea6-0517-4e77-a8db-dfe433d65fc8",
"name": "text",
"type": "string",
"value": "={{ $json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "17e32a68-39e4-406a-8a98-0e57d8a06ca4",
"name": "Telegram: Descargar Archivo de Voz",
"type": "n8n-nodes-base.telegram",
"position": [
-832,
224
],
"webhookId": "c0f4fc71-53b9-4118-a868-0bb40db89a54",
"parameters": {
"fileId": "={{ $json.message.voice.file_id }}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "7225d6e4-e632-4957-96b3-17ee4a7008c3",
"name": "Gemini: Transcribir Voz",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
-576,
224
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"resource": "audio",
"inputType": "binary"
},
"credentials": {
"googlePalmApi": {
"id": "leqZBEL1m8HX7yLq",
"name": "skcet (Mooku) - Gemini"
}
},
"typeVersion": 1
},
{
"id": "54ee3516-9e72-4b28-9cbe-e82b0c37547a",
"name": "Set: Poner Transcripción en Texto",
"type": "n8n-nodes-base.set",
"position": [
-336,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "db72eea6-0517-4e77-a8db-dfe433d65fc8",
"name": "text",
"type": "string",
"value": "={{ $json.content.parts[0].text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "bf58028e-5018-4105-86c9-5d7495fd22b4",
"name": "AI Extractor: NombreTarea y FechaLímite",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-64,
-32
],
"parameters": {
"text": "={{ $json.text }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "TaskName",
"description": "The title of the task. Only return a value if it clearly exists; otherwise, leave empty."
},
{
"name": "TaskDue",
"type": "date",
"description": "The due date of the task. Only return a value if clearly present; otherwise, leave empty."
}
]
}
},
"notesInFlow": false,
"typeVersion": 1.2
},
{
"id": "95ed4be7-aa98-4f72-bd87-dd96ed105f2e",
"name": "If: ¿Extracción Válida?",
"type": "n8n-nodes-base.if",
"position": [
416,
-32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "54e99978-984e-479b-a8cd-678ac9dee81f",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.output.TaskName }}",
"rightValue": ""
},
{
"id": "f50a2ef0-990d-4740-a0eb-3c2452f8e0d5",
"operator": {
"type": "dateTime",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.output.TaskDue }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1e2f1750-1704-42fe-82c6-7c25a47dd39a",
"name": "Telegram: Preguntar Aprobar/Rechazar",
"type": "n8n-nodes-base.telegram",
"position": [
832,
-48
],
"webhookId": "d3b32ce4-957d-4d3f-b4f0-4d944edbcbcd",
"parameters": {
"chatId": "={{ $('Telegram: Receive Message').item.json.message.chat.id }}",
"message": "=Task Name: {{ $json.output.TaskName }}\nDue Date: {{ new Date($json.output.TaskDue).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }) }}",
"options": {
"appendAttribution": false
},
"operation": "sendAndWait",
"approvalOptions": {
"values": {
"approvalType": "double",
"approveLabel": "Approve",
"disapproveLabel": "Decline"
}
}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "fe396f08-c258-462d-bf61-1f50c3922510",
"name": "Notion: Crear Página de Tarea",
"type": "n8n-nodes-base.notion",
"position": [
1616,
-64
],
"parameters": {
"title": "={{ $('AI Extractor: TaskName & TaskDue').item.json.output.TaskName }}",
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "id",
"value": "YOUR_DATABASE_ID_HERE",
"__regex": "^([0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12})"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Date|date",
"date": "={{ $('AI Extractor: TaskName & TaskDue').item.json.output.TaskDue }}",
"includeTime": false
}
]
}
},
"credentials": {
"notionApi": {
"id": "lrP3yNJ79AutF43p",
"name": "ABHIMAN HQ - Notion"
}
},
"typeVersion": 2.2
},
{
"id": "273da7c6-1dfe-4b70-a9ba-0f66d238d6c6",
"name": "Telegram: Notificar - Tarea Creada",
"type": "n8n-nodes-base.telegram",
"position": [
1824,
-64
],
"webhookId": "96ffe0c6-2a63-4e49-b1eb-93b6be4056fc",
"parameters": {
"text": "=✅ Task created in Notion.",
"chatId": "={{ $('Telegram: Receive Message').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "f8d85ba2-217b-4d76-8954-c539ed472b9a",
"name": "Telegram: Notificar - Tarea No Creada",
"type": "n8n-nodes-base.telegram",
"position": [
1248,
208
],
"webhookId": "97700570-d6ac-4566-a047-751b3a1b5835",
"parameters": {
"text": "=❌ Task not created in Notion.",
"chatId": "={{ $('Telegram: Receive Message').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "5a32830d-f766-45d3-a330-d058d8ff0d2b",
"name": "Telegram: Notificar - Extracción Fallida",
"type": "n8n-nodes-base.telegram",
"position": [
416,
224
],
"webhookId": "97700570-d6ac-4566-a047-751b3a1b5835",
"parameters": {
"text": "=Title or due date cannot be extracted. Please try again.",
"chatId": "={{ $('Telegram: Receive Message').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "s9JmQ5AGImJ32oBQ",
"name": "abhiman1bot - Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "772bab86-fb65-490e-a369-0e6c621fb7d0",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1536,
-208
],
"parameters": {
"color": 5,
"height": 352,
"content": "## 💬 Telegram: Receive Message \nTriggers when a new Telegram message arrives either text or voice and sends the data forward for processing."
},
"typeVersion": 1
},
{
"id": "515140eb-2d20-44e3-9350-5c8fd044b02f",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-208
],
"parameters": {
"color": 5,
"height": 352,
"content": "## 🔀 Switch: Text or Voice \nChecks if the message is text or voice and routes it to the matching branch."
},
"typeVersion": 1
},
{
"id": "1d535e73-7312-4a03-b186-d92642568b3b",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
-304
],
"parameters": {
"color": 5,
"width": 256,
"height": 288,
"content": "## ✏️ Set: Prepare Text \nExtracts the text message from Telegram and stores it for later processing."
},
"typeVersion": 1
},
{
"id": "89c4d4ca-548c-4708-93f9-dc24cbb5cb5a",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-896,
32
],
"parameters": {
"color": 5,
"width": 720,
"height": 368,
"content": "## 🎙️ Voice Processing Chain \n1. **Telegram: Download Voice File:** Downloads the user's voice message from Telegram. \n2. **Gemini: Transcribe Voice:** Sends the downloaded audio to Google Gemini and transcribes it into text.\n3. **Set: Put Transcript into Text:** Stores the transcribed text for further use in the workflow. \n\n🔄 Together, these nodes convert voice messages into usable text for automation."
},
"typeVersion": 1
},
{
"id": "5592afdf-aa6b-4cca-86aa-ad53c15ce6bd",
"name": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-288
],
"parameters": {
"color": 5,
"width": 352,
"height": 560,
"content": "## 🧠 Task Information Extraction \n1. **Google Gemini Chat Model** – Powers the AI extraction with Gemini 2.5 Flash Lite. \n2. **AI Extractor: TaskName & TaskDue** – Identifies and extracts the *task title* and *due date* from the provided text. \n\n✅ Converts user text into structured task data for Notion or any task system."
},
"typeVersion": 1
},
{
"id": "30861b16-0e27-40a2-9273-cf4ca47de3b4",
"name": "Nota Adhesiva5",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
-288
],
"parameters": {
"color": 5,
"width": 352,
"height": 720,
"content": "## ✅ Validate Task Extraction\n1. **If: Extraction Valid?** – Checks if both `TaskName` and `TaskDue` exist from the AI-extracted output. \n2. **Telegram: Notify - Extraction Failed** – Sends a Telegram message to the user if extraction fails: \"Title or due date cannot be extracted. Please try again.\" \n\n💡 Ensures only valid tasks proceed and notifies users when extraction is incomplete."
},
"typeVersion": 1
},
{
"id": "de731a57-c922-4e9b-bf3a-eb797f71180d",
"name": "Nota Adhesiva6",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-288
],
"parameters": {
"color": 5,
"width": 352,
"height": 448,
"content": "## 📩 Ask for Task Approval\n- **Telegram: Ask Approve / Decline** – Sends a message with the extracted `TaskName` and `TaskDue` to the user. \n- Provides **Approve** and **Decline** buttons for double approval. \n\n💡 Lets users quickly confirm or reject tasks directly via Telegram."
},
"typeVersion": 1
},
{
"id": "b1332d50-95e4-4dc7-9923-078ecd4e7ad2",
"name": "Nota Adhesiva7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
-208
],
"parameters": {
"color": 5,
"width": 352,
"height": 608,
"content": "## ✅ Check Task Approval\n- **Approval Check (If Approved?)** – Checks if the user approved the task in Telegram.\n- **Telegram: Notify - Task Not Created** – Notifies the user if the task was declined."
},
"typeVersion": 1
},
{
"id": "67ff91ca-9c5f-4cff-a253-cebafa5d0cdf",
"name": "Nota Adhesiva8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1536,
-208
],
"parameters": {
"color": 5,
"width": 496,
"height": 336,
"content": "## 📝 Create Task in Notion\n- **Notion: Create Task Page** – Adds a new page in Notion with the extracted task name and due date.\n- **Telegram: Notify - Task Created** – Confirms to the user that the task was successfully created."
},
"typeVersion": 1
},
{
"id": "b990b59b-76c1-44e8-95e5-a9daf9e08f8e",
"name": "Nota Adhesiva9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2528,
-608
],
"parameters": {
"color": 3,
"width": 896,
"height": 1312,
"content": "# Quick Setup Checklist — Telegram → Transcribe → Extract → Notion\n\n## 1) Telegram (BotFather)\n- Create a bot with **BotFather** → `/newbot` → copy the **Bot Token**.\n- Start the bot in your Telegram app (send any message to it).\n- **Get your chat ID**:\n - Easiest: send a message to the bot, open the **Telegram Trigger** in n8n and check the incoming `chat.id`.\n - Or use `getUpdates` with your bot token to read the latest `chat.id`.\n- Keep the Bot Token and one example `chat.id` handy for n8n credentials/testing.\n\n## 2) Google Gemini (transcription)\n- Create a Google Cloud project and enable the **GenAI / PaLM (Gemini)** API.\n- Note: use trial credits or free tier for testing if available.\n- In n8n: add Gemini (Google Palm) credentials under **Credentials**.\n\n## 3) Notion (integration + database)\n- Create a Notion integration and copy its **Integration Token**.\n- Create a **Notion database** for tasks with at least:\n - **Title** — (Title) — for the task name\n - **Date** — (Date) — for the due date\n- Share the database with your integration (Share → invite integration).\n- Copy the **Database ID** from the database URL.\n\n## 4) Map extracted values to Notion (simple instruction — no code)\n- In the **Notion: Create Task Page** node, map the extractor output using the UI:\n - **Title** → map the extracted **TaskName** to the Notion Title.\n - **Date** → map the extracted **TaskDue** to the Notion Date property.\n- Use the node's right-side input panel to pick values from `AI Extractor: TaskName & TaskDue`.\n\n## 5) Audio / Transcription notes (Gemini handles transcription)\n- Set **Telegram Get File** node to **Download = true** so the node provides binary.\n- Pass the downloaded binary into the **Gemini: Transcribe Voice** node (inputType = binary).\n- Gemini will transcribe the audio (no external converter required with this setup).\n- If you ever see format issues, confirm the Telegram binary is passed to Gemini (download=true).\n\n## 6) n8n required credentials (add these in n8n)\n- Telegram API (Bot Token) \n- Google Gemini (Google Palm) API credentials \n- Notion Integration Token\n\n## 7) Final quick tests\n- **Text test:** send a plain text task to the bot → extractor → approval → create Notion page.\n- **Voice test:** send a voice note → Gemini transcribes → extractor → approval → create Notion page.\n- If extraction fails, check the **If: Extraction Valid?** node and confirm the Notion mapping.\n\n---\n\n**Done.** Map TaskName → Title and TaskDue → Date in the Notion node using the UI (drag/select). If Notion shows the date wrong, tell me and I’ll give a one-line fix."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bc34a6fe-47fe-4146-a529-6b7ad32b9ac2",
"connections": {
"a2dde0cd-d68b-4545-820d-6d2c410ebd40": {
"main": [
[
{
"node": "bf58028e-5018-4105-86c9-5d7495fd22b4",
"type": "main",
"index": 0
}
]
]
},
"95ed4be7-aa98-4f72-bd87-dd96ed105f2e": {
"main": [
[
{
"node": "1e2f1750-1704-42fe-82c6-7c25a47dd39a",
"type": "main",
"index": 0
}
],
[
{
"node": "5a32830d-f766-45d3-a330-d058d8ff0d2b",
"type": "main",
"index": 0
}
]
]
},
"a396c59a-f7b1-43aa-a8d8-572761967c2a": {
"main": [
[
{
"node": "a2dde0cd-d68b-4545-820d-6d2c410ebd40",
"type": "main",
"index": 0
}
],
[
{
"node": "17e32a68-39e4-406a-8a98-0e57d8a06ca4",
"type": "main",
"index": 0
}
]
]
},
"7225d6e4-e632-4957-96b3-17ee4a7008c3": {
"main": [
[
{
"node": "54ee3516-9e72-4b28-9cbe-e82b0c37547a",
"type": "main",
"index": 0
}
]
]
},
"34b3273c-721e-488b-9bce-14ee704185ab": {
"ai_languageModel": [
[
{
"node": "bf58028e-5018-4105-86c9-5d7495fd22b4",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"fe396f08-c258-462d-bf61-1f50c3922510": {
"main": [
[
{
"node": "273da7c6-1dfe-4b70-a9ba-0f66d238d6c6",
"type": "main",
"index": 0
}
]
]
},
"e8a10ffe-b0ca-4fac-b995-b81675799620": {
"main": [
[
{
"node": "a396c59a-f7b1-43aa-a8d8-572761967c2a",
"type": "main",
"index": 0
}
]
]
},
"e7d20742-834e-496f-9dda-9789035e7355": {
"main": [
[
{
"node": "fe396f08-c258-462d-bf61-1f50c3922510",
"type": "main",
"index": 0
}
],
[
{
"node": "f8d85ba2-217b-4d76-8954-c539ed472b9a",
"type": "main",
"index": 0
}
]
]
},
"54ee3516-9e72-4b28-9cbe-e82b0c37547a": {
"main": [
[
{
"node": "bf58028e-5018-4105-86c9-5d7495fd22b4",
"type": "main",
"index": 0
}
]
]
},
"17e32a68-39e4-406a-8a98-0e57d8a06ca4": {
"main": [
[
{
"node": "7225d6e4-e632-4957-96b3-17ee4a7008c3",
"type": "main",
"index": 0
}
]
]
},
"1e2f1750-1704-42fe-82c6-7c25a47dd39a": {
"main": [
[
{
"node": "e7d20742-834e-496f-9dda-9789035e7355",
"type": "main",
"index": 0
}
]
]
},
"bf58028e-5018-4105-86c9-5d7495fd22b4": {
"main": [
[
{
"node": "95ed4be7-aa98-4f72-bd87-dd96ed105f2e",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Abhiman G S
@abhimangsAutomation consultant helping creators and small teams streamline their workflows using Notion and n8n. I build systems that save time, boost productivity, and keep everything running smoothly. Check my LinkedIn to connect or collaborate on custom automations.
Compartir este flujo de trabajo