🎙️ VoiceScribe AI: Transcribir automáticamente mensajes de audio de Telegram con OpenAI Whisper
Este es unDocument Extraction, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como If, Code, Merge, Telegram, GoogleDrive. Transcribir automáticamente mensajes de voz de Telegram usando OpenAI Whisper y Google Workspace
- •Bot Token de Telegram
- •Credenciales de API de Google Drive
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (19)
{
"id": "Jd7X52ywyO4xTZoE",
"meta": {
"instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
"templateId": "2465",
"templateCredsSetupCompleted": true
},
"name": "🎙️ VoiceScribe AI: Telegram Audio Message Auto Transcription with OpenAI Whisper",
"tags": [
{
"id": "84SlSTthTSHRbFGM",
"name": "Telegram",
"createdAt": "2025-08-05T06:23:21.764Z",
"updatedAt": "2025-08-05T06:23:21.764Z"
},
{
"id": "nyc9wEV6N1lqPyOk",
"name": "Operations",
"createdAt": "2025-08-07T05:47:09.931Z",
"updatedAt": "2025-08-07T05:47:09.931Z"
},
{
"id": "ow6eIe95VK6fRkyw",
"name": "Chatbot",
"createdAt": "2025-08-05T06:23:11.231Z",
"updatedAt": "2025-08-05T06:23:11.231Z"
}
],
"nodes": [
{
"id": "638b4ba9-c381-44d4-9245-c5d4964371f7",
"name": "Tipo de mensaje no compatible",
"type": "n8n-nodes-base.telegram",
"position": [
1312,
2480
],
"webhookId": "344e09e1-f90a-4181-b88d-eba8a1729454",
"parameters": {
"text": "=Sorry, I can’t read your input right now.\nPlease send me a voice message, and I’ll help you transcribe and track it! 🎙️💬",
"chatId": "={{ $('Telegram Voice Message Trigger').item.json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "paNoPvnV5Wzt4Lhv",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "779f89de-cf46-467c-829e-48ef902f2e88",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
1648
],
"parameters": {
"width": 1232,
"height": 2032,
"content": "# 🎙️ VoiceScribe AI: Telegram Audio Message Auto Transcription with OpenAI Whisper\n> Automatically transcribe Telegram voice messages and store them as structured logs in Google Sheets, while backing up the audio in Google Drive.\n\n## 🧑💼 Who’s it for\n\n- Journalists, content creators, or busy professionals who often record voice memos or short interviews on the go.\n- Anyone who wants to turn voice recordings into searchable, structured notes.\n\n## ⚙️ How it works / What it does\n\n1. User sends a voice message to a Telegram bot.\n2. n8n checks if the message is an audio voice note.\n3. If valid, it downloads the audio file and:\n - Transcribes it using OpenAI Whisper (or your LLM of choice).\n - Uploads the original audio to Google Drive for safekeeping.\n4. The transcript and audio metadata are merged.\n5. The workflow:\n - Logs the data into a Google Sheet.\n - Sends a formatted confirmation message to the user via Telegram.\n\nIf the input is not audio, the bot politely informs the user that only voice messages are accepted.\n\n## ✅ Features\n\n- Accepts only Telegram voice messages.\n- Transcribes via OpenAI Whisper.\n- Logs DateTime, Duration, Transcript, and Audio URL to Google Sheets.\n- Sends user feedback message via Telegram with download + transcript link.\n\n## 🚀 How to set up\n### Prerequisites\n\n- Telegram Bot connected to n8n (via Telegram Trigger)\n- Google Drive & Google Sheets credentials configured\n- OpenAI or Whisper API credentials (for transcription)\n\n### Steps\n\n1. **Telegram Trigger** \n Start the flow when a new message is sent to your bot.\n2. **Check Message Type** \n Use a conditional node to confirm it's a voice message.\n3. **Download Voice Message** \n Download the `.oga` file from Telegram.\n4. **Transcribe Audio** \n Send the binary audio to OpenAI Whisper or your transcription service.\n5. **Upload to Google Drive** \n Backup the original audio file.\n6. **Merge Outputs** \n Combine transcription with Drive metadata.\n7. **Transform to Row Format** \n Prepare structured JSON for Google Sheets.\n8. **Append to Google Sheet** \n Store the transcript log (DateTime, Duration, Transcript, AudioURL).\n9. **Send Confirmation to User** \n Inform the user via Telegram with their transcript and download link.\n10. **Unsupported Message Handler** \n Reply to users who send non-audio messages.\n\n## 📄 Example Output in Google Sheet\n\n| DateTime | Duration | Transcript | AudioURL |\n|-----------------------|----------|--------------------------------------------|------------------------------------------------------------|\n| 2025-08-07T13:12:19Z | 27 | Dự án Outlet Activation là... | https://drive.google.com/uc?id=xxxx&export=download |\n\n## 🧠 How to customize the workflow\n\n- Swap Whisper with Deepgram, AssemblyAI, or other providers.\n- Add speaker name detection or prompt-based tagging via GPT.\n- Route transcripts into Notion, Airtable, or CRM systems.\n- Add multi-language support or summarization steps.\n\n## 📦 Requirements\n\n| Component | Required |\n|---------------------|----------|\n| Telegram API | ✅ |\n| Google Drive API | ✅ |\n| Google Sheets API | ✅ |\n| OpenAI Whisper API | ✅ |\n| n8n Cloud or Self-hosted | ✅ |\n\nCreated with ❤️ using [n8n](https://n8n.io)"
},
"typeVersion": 1
},
{
"id": "505c0e4a-11e2-4a81-ac38-518af4cd3bf6",
"name": "Nota adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2608,
2080
],
"parameters": {
"width": 752,
"height": 288,
"content": ""
},
"typeVersion": 1
},
{
"id": "3eacc0c8-6f65-47a9-9eaf-559d5c3c273d",
"name": "Nota adhesiva5",
"type": "n8n-nodes-base.stickyNote",
"position": [
496,
2400
],
"parameters": {
"width": 304,
"height": 128,
"content": "### 1. 📩 Telegram Trigger \n**Description**: Listens for incoming messages from the user via the connected Telegram bot. This is the entry point of the workflow."
},
"typeVersion": 1
},
{
"id": "b0d947b0-e970-43ea-8cc9-f3fc3b4f2d02",
"name": "Nota adhesiva6",
"type": "n8n-nodes-base.stickyNote",
"position": [
992,
2544
],
"parameters": {
"width": 272,
"height": 144,
"content": "### 2. Is Audio Message? \n**Description**: Checks whether the incoming Telegram message is a audio message. If not, the workflow routes to an \"unsupported message type\" handler."
},
"typeVersion": 1
},
{
"id": "447bc7be-707d-4eed-b3c3-1c3bc48bb103",
"name": "Nota adhesiva7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
2096
],
"parameters": {
"width": 544,
"height": 80,
"content": "### 3.1. Download audio message and transcript with OpenAI\n Send the binary audio to OpenAI Whisper or your transcription service."
},
"typeVersion": 1
},
{
"id": "938080c1-2503-4eb5-be21-32f732017869",
"name": "Nota adhesiva8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2048,
2080
],
"parameters": {
"width": 400,
"height": 80,
"content": "### 4.1. Inform user via telegram\nSend friendly message to user with audio download URL\n"
},
"typeVersion": 1
},
{
"id": "297f8859-a2bf-4a71-82f9-161841669418",
"name": "Nota adhesiva9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
2560
],
"parameters": {
"width": 304,
"height": 96,
"content": "### 4.2 Transform & log expense\n- Transform the Output to Audio Record \n- Log Audio Record to Google Sheet \n\n"
},
"typeVersion": 1
},
{
"id": "53031e0c-a427-4023-b1f6-c0aae9b6ad4f",
"name": "¿Es mensaje de audio?",
"type": "n8n-nodes-base.if",
"position": [
1088,
2384
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "069b1c3b-d683-46f2-b7d6-9dbcdde41445",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.message.toJsonString() }}",
"rightValue": "audio/ogg"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1ecf333c-3dd2-44a9-b301-547391695613",
"name": "Descargar mensaje de audio",
"type": "n8n-nodes-base.telegram",
"position": [
1312,
2288
],
"webhookId": "b7eb04dc-b5db-4fbd-8ea6-7692282d9469",
"parameters": {
"fileId": "={{ $json.message.voice.file_id }}",
"resource": "file"
},
"credentials": {
"telegramApi": {
"id": "paNoPvnV5Wzt4Lhv",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "d61a14e8-9541-48be-95a0-5d4e5df85ff3",
"name": "Transcribir grabación",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1536,
2192
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "564864d4-4a40-4f1a-b99e-fd0c6981ef7c",
"name": "Subir archivo",
"type": "n8n-nodes-base.googleDrive",
"position": [
1536,
2384
],
"parameters": {
"name": "=audio-{{ $now.toFormat(\"yyyyLLdd-HHmmss\") }}-{{$binary.data.fileName}}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1ObNNVJFR2vcKqP8p-ZnX_eaZy4gBHgha",
"cachedResultUrl": "https://drive.google.com/drive/folders/1ObNNVJFR2vcKqP8p-ZnX_eaZy4gBHgha",
"cachedResultName": "SmartIT"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "59241354-ef2f-43aa-bf2a-bf394ace5907",
"name": "Combinar",
"type": "n8n-nodes-base.merge",
"position": [
1760,
2288
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "af081dde-eb7d-4a4f-ad6c-d28ffd1a81ab",
"name": "Activador de mensaje de voz Telegram",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
864,
2384
],
"webhookId": "5cdd7f36-b2e3-4c8d-ab5f-1f2763eb5c75",
"parameters": {
"updates": [
"message"
],
"additionalFields": {
"download": true
}
},
"credentials": {
"telegramApi": {
"id": "paNoPvnV5Wzt4Lhv",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "348897c4-3baf-4564-ae4c-f956d98936b9",
"name": "Nota adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2464,
2400
],
"parameters": {
"width": 1072,
"height": 272,
"content": ""
},
"typeVersion": 1
},
{
"id": "e8a585eb-1ed0-41c9-a2d8-25d62c12d387",
"name": "Informar al usuario vía Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
2208,
2192
],
"webhookId": "e7e7cab6-27c6-4604-bab4-901873f55e24",
"parameters": {
"text": "=✅ Voice Transcription Complete\n\nYour voice recording (⏱️ {{ $json.Duration }} seconds, recorded at {{ $json.DateTime }}) has been successfully transcribed and securely stored.\n\n📎 Original audio stored here: {{ $json.AudioURL }}\n\nThank you for using VoiceScribe AI! 🎙️",
"chatId": "={{ $json.ChatID }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "paNoPvnV5Wzt4Lhv",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "1ecbac8a-2451-4856-8a96-f7d5b3dbcef5",
"name": "Registrar grabación en hoja google",
"type": "n8n-nodes-base.googleSheets",
"position": [
2208,
2384
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI/edit?usp=drivesdk",
"cachedResultName": "Audio Notes"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "L670Nly6gZGo71br",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.6
},
{
"id": "ef75b354-3db8-4536-afc9-4268395dff0a",
"name": "Transformar salida de grabación de voz",
"type": "n8n-nodes-base.code",
"position": [
1984,
2288
],
"parameters": {
"jsCode": "const inputs = $input.all();\n\n// Assumes: \n// inputs[0] = transcript\n// inputs[1] = drive metadata\n\nconst transcriptData = inputs[0].json;\nconst driveData = inputs[1].json;\n\nconst result = {\n DateTime: driveData.createdTime || '',\n Duration: transcriptData.usage?.seconds || '',\n Transcript: transcriptData.text || '',\n AudioURL: driveData.webContentLink || '',\n ChatID: $('Telegram Voice Message Trigger').first().json.message.chat.id\n};\n\nreturn [{ json: result }];"
},
"typeVersion": 2
},
{
"id": "7996b57e-fffb-4707-a338-8bf390ecd134",
"name": "Nota adhesiva10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
2544
],
"parameters": {
"width": 544,
"height": 80,
"content": "### 3.2. Upload the original audio to drive for later usage\nBackup the original audio file."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c8c05b3a-a276-4324-88ef-7a55779d4e2f",
"connections": {
"59241354-ef2f-43aa-bf2a-bf394ace5907": {
"main": [
[
{
"node": "ef75b354-3db8-4536-afc9-4268395dff0a",
"type": "main",
"index": 0
}
]
]
},
"564864d4-4a40-4f1a-b99e-fd0c6981ef7c": {
"main": [
[
{
"node": "59241354-ef2f-43aa-bf2a-bf394ace5907",
"type": "main",
"index": 1
}
]
]
},
"53031e0c-a427-4023-b1f6-c0aae9b6ad4f": {
"main": [
[
{
"node": "1ecf333c-3dd2-44a9-b301-547391695613",
"type": "main",
"index": 0
}
],
[
{
"node": "638b4ba9-c381-44d4-9245-c5d4964371f7",
"type": "main",
"index": 0
}
]
]
},
"1ecf333c-3dd2-44a9-b301-547391695613": {
"main": [
[
{
"node": "d61a14e8-9541-48be-95a0-5d4e5df85ff3",
"type": "main",
"index": 0
},
{
"node": "564864d4-4a40-4f1a-b99e-fd0c6981ef7c",
"type": "main",
"index": 0
}
]
]
},
"d61a14e8-9541-48be-95a0-5d4e5df85ff3": {
"main": [
[
{
"node": "59241354-ef2f-43aa-bf2a-bf394ace5907",
"type": "main",
"index": 0
}
]
]
},
"af081dde-eb7d-4a4f-ad6c-d28ffd1a81ab": {
"main": [
[
{
"node": "53031e0c-a427-4023-b1f6-c0aae9b6ad4f",
"type": "main",
"index": 0
}
]
]
},
"ef75b354-3db8-4536-afc9-4268395dff0a": {
"main": [
[
{
"node": "1ecbac8a-2451-4856-8a96-f7d5b3dbcef5",
"type": "main",
"index": 0
},
{
"node": "e8a585eb-1ed0-41c9-a2d8-25d62c12d387",
"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 - Extracción de documentos, IA Multimodal
¿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
Trung Tran
@trungtranEmpowering small and medium businesses with smart automation and practical AI, no big tech team required. Reach out: lets@automatewith.me
Compartir este flujo de trabajo