🎙️ VoiceScribe AI: Automatische Transkription von Telegram-Audio-Nachrichten mit OpenAI Whisper
Dies ist ein Document Extraction, Multimodal AI-Bereich Automatisierungsworkflow mit 19 Nodes. Hauptsächlich werden If, Code, Merge, Telegram, GoogleDrive und andere Nodes verwendet. Automatische Transkription von Sprachnachrichten in Telegram mit OpenAI Whisper und Google Workspace
- •Telegram Bot Token
- •Google Drive API-Anmeldedaten
- •Google Sheets API-Anmeldedaten
- •OpenAI API Key
Verwendete Nodes (19)
Kategorie
{
"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": "Unterstützter Nachrichtentyp",
"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": "Haftnotiz",
"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": "Haftnotiz 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2608,
2080
],
"parameters": {
"width": 752,
"height": 288,
"content": ""
},
"typeVersion": 1
},
{
"id": "3eacc0c8-6f65-47a9-9eaf-559d5c3c273d",
"name": "Haftnotiz 5",
"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": "Haftnotiz 6",
"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": "Haftnotiz 7",
"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": "Haftnotiz 8",
"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": "Haftnotiz 9",
"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": "Ist Sprachnachricht?",
"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": "Sprachnachricht herunterladen",
"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": "Aufnahme transkribieren",
"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": "Datei hochladen",
"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": "Zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
1760,
2288
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "af081dde-eb7d-4a4f-ad6c-d28ffd1a81ab",
"name": "Telegram Sprachnachrichten-Auslöser",
"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": "Haftnotiz 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2464,
2400
],
"parameters": {
"width": 1072,
"height": 272,
"content": ""
},
"typeVersion": 1
},
{
"id": "e8a585eb-1ed0-41c9-a2d8-25d62c12d387",
"name": "Benutzer via Telegram informieren",
"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": "Sprachaufnahme in google Tabelle protokollieren",
"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": "Ausgabe der Sprachaufnahme transformieren",
"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": "Haftnotiz 10",
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Dokumentenextraktion, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Trung Tran
@trungtranEmpowering small and medium businesses with smart automation and practical AI, no big tech team required. Reach out: lets@automatewith.me
Diesen Workflow teilen