AutomationFlowsAI & RAG › Convert Telegram Voice Notes Into Markdown Journals with Groq Whisper and Gemini

Convert Telegram Voice Notes Into Markdown Journals with Groq Whisper and Gemini

ByAtha Ahsan Xavier Haris @athaahsan on n8n.io

This workflow transforms Telegram voice notes and audio files into clean markdown journal entries using Groq Whisper, CloudConvert, and Google Gemini.

Event trigger★★★★☆ complexityAI-powered24 nodesGoogle Gemini ChatTelegram TriggerTelegramHTTP RequestChain LlmGoogle Drive@Cloudconvert/N8N Nodes Cloudconvert
AI & RAG Trigger: Event Nodes: 24 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → Google Drive 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": "WmM16akb6211zNWK",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Telegram Voice Notes to Markdown Journal with Groq Whisper and Gemini",
  "tags": [],
  "nodes": [
    {
      "id": "fde6094b-6e48-4420-bba3-603d025db64b",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -416,
        320
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "1a102f84-923a-4abb-a3ec-37fa30faae28",
      "name": "Telegram Voice Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1792,
        112
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {
          "download": true
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1e99575c-93ab-47a9-9ef7-930f4e5fa644",
      "name": "Download Telegram Audio File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -1568,
        112
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice?.file_id || $json.message.audio?.file_id || $json.message.document?.file_id }}",
        "resource": "file",
        "additionalFields": {
          "mimeType": "={{ $json.message.voice?.mime_type || $json.message.audio?.mime_type || $json.message.document?.mime_type }}"
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "226a5b21-cb64-4298-a361-c3a6a043d405",
      "name": "Transcribe Audio with Groq Whisper",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        -1344,
        112
      ],
      "parameters": {
        "url": "https://api.groq.com/openai/v1/audio/transcriptions",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "whisper-large-v3"
            },
            {
              "name": "temperature",
              "value": "0"
            },
            {
              "name": "response_format",
              "value": "verbose_json"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "={{ $('Download Telegram Audio File').item.binary.data }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer YOUR_GROQ_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "b6765435-f871-48c9-b0d7-5334f03a6274",
      "name": "Format Timestamped Transcript",
      "type": "n8n-nodes-base.code",
      "position": [
        -640,
        96
      ],
      "parameters": {
        "jsCode": "function fmtTime(seconds) {\n  const m = Math.floor(seconds / 60);\n  const s = Math.floor(seconds % 60).toString().padStart(2, '0');\n  return `${m}:${s}`;\n}\n\nconst transcript = $json.text || '';\n\nconst timestampedTranscript = ($json.segments || [])\n  .map(seg => `[${fmtTime(seg.start)}\u2013${fmtTime(seg.end)}] ${seg.text.trim()}`)\n  .join('\\n');\n\nreturn [\n  {\n    json: {\n      transcript,\n      timestampedTranscript,\n      duration: $json.duration,\n      language: $json.language\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "f5a586a6-074f-49cf-bf0e-89136411488c",
      "name": "Clean Transcript with Gemini",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -416,
        96
      ],
      "parameters": {
        "text": "=Transcript:\n{{ $json.timestampedTranscript }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=You turn messy spoken thoughts in raw speech transcripts into polished written monologues.\n\nRewrite the transcript into a neat, readable version while preserving the speaker\u2019s original meaning, point of view, tone, and flow.\n\nReturn only raw JSON. Do not wrap it in markdown code fences.\n\nThe JSON must have exactly this shape:\n{\n  \"markdown\": \"cleaned text here\"\n}\n\nRules:\n- Do not summarize.\n- Do not add new ideas, events, emotions, or conclusions.\n- Keep it in the speaker\u2019s point of view.\n- Keep it natural, like a cleaned-up journal/monologue.\n- Remove filler words, repeated false starts, and transcription artifacts only when they do not change the meaning.\n- Fix punctuation, casing, grammar, and paragraph flow.\n- If the speaker rambles, make it readable but still preserve the rambling style.\n- Preserve the original language."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "ca1d3c54-c509-4a92-9c80-c82b0e45f417",
      "name": "Parse AI Response JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        -64,
        96
      ],
      "parameters": {
        "jsCode": "const raw = $json.text || $json.output || $json.response || '';\n\nconst cleaned = raw\n  .replace(/^```json\\s*/i, '')\n  .replace(/^```\\s*/i, '')\n  .replace(/```$/i, '')\n  .trim();\n\nconst parsed = JSON.parse(cleaned);\n\nreturn [\n  {\n    json: {\n      markdown: parsed.markdown\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "4a38323a-fe48-48b8-bb95-ff82fdaa218f",
      "name": "Convert Journal to Markdown File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        160,
        96
      ],
      "parameters": {
        "options": {
          "fileName": "=journal-{{ $now.format('yyyy-MM-dd(HH:mm)') }}.md"
        },
        "operation": "toText",
        "sourceProperty": "markdown"
      },
      "typeVersion": 1.1
    },
    {
      "id": "65c7e1fe-dc1d-4d61-acde-cda08d534fb9",
      "name": "Send Markdown Journal to Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        384,
        96
      ],
      "parameters": {
        "chatId": "={{ $('Telegram Voice Trigger').item.json.message.from.id }}",
        "operation": "sendDocument",
        "binaryData": true,
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e804997f-0f6b-4fca-96a2-1e7bd51deb7c",
      "name": "Check if Journal Folder Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        1104,
        96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a8d18561-cdbc-4afc-b78e-9d37614dcd99",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "b1c48fc0-c871-4fc7-addb-acb5bb8d8dfd",
      "name": "Upload Journal to New Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1552,
        192
      ],
      "parameters": {
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "inputDataFieldName": "={{ $('Convert Journal to Markdown File').item.binary.data }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "ef3b3d15-99f5-44b8-8523-bf7901d1dc4b",
      "name": "Upload Journal to Existing Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1328,
        0
      ],
      "parameters": {
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "inputDataFieldName": "={{ $('Convert Journal to Markdown File').item.binary.data }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "68aee772-96fa-4bb5-9331-70f76c964253",
      "name": "Find \u201cPersonal Journal (n8n)\u201d Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        880,
        96
      ],
      "parameters": {
        "limit": 1,
        "filter": {},
        "options": {},
        "resource": "fileFolder",
        "queryString": "Personal Journal (n8n)"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "3841c77b-2769-463a-98e3-a6efbe7f0d8b",
      "name": "Create \u201cPersonal Journal (n8n)\u201d Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1328,
        192
      ],
      "parameters": {
        "name": "Personal Journal (n8n)",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultUrl": "https://drive.google.com/drive",
          "cachedResultName": "/ (Root folder)"
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "93040a7d-f841-4aeb-95c3-c6b13490509c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -272
      ],
      "parameters": {
        "width": 416,
        "height": 576,
        "content": "# Telegram Input\n\nSend a voice note, audio file, or recording to your Telegram bot.\n\nThis workflow automatically:\n- Detects incoming audio messages\n- Downloads the audio file from Telegram\n- Passes it into the transcription pipeline\n\nSupported:\n- Voice notes\n- Audio files\n- Uploaded recordings"
      },
      "typeVersion": 1
    },
    {
      "id": "ed076cec-f90c-4187-9efc-6b52bf9870bd",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1392,
        -288
      ],
      "parameters": {
        "width": 896,
        "height": 592,
        "content": "# Audio Transcription\n\nThe audio is transcribed using Groq Whisper (`whisper-large-v3`).\n\nBefore activating the workflow:\n1. Open the `Transcribe Audio with Groq Whisper` node\n2. Replace the placeholder Authorization header with your Groq API key\n\nGet your API key from:\nhttps://console.groq.com/keys\n\nThis step:\n- Converts speech into text\n- Preserves timestamps\n- Detects language automatically\n- Creates a timestamped transcript for AI cleanup"
      },
      "typeVersion": 1
    },
    {
      "id": "f657f55c-4e64-4b31-b30e-fc711faae89b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -224
      ],
      "parameters": {
        "width": 544,
        "height": 704,
        "content": "# AI Journal Cleanup\n\nGemini rewrites the raw speech transcript into a clean, readable journal entry.\n\nThe prompt is designed to:\n- Preserve the speaker's original meaning\n- Keep the natural monologue style\n- Remove filler words and transcription artifacts\n- Improve punctuation and readability\n- Avoid summarization or adding new ideas\n\nThe output is returned as structured JSON."
      },
      "typeVersion": 1
    },
    {
      "id": "18aaddf7-db91-4d43-a438-125963e4b5f4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        -160
      ],
      "parameters": {
        "width": 416,
        "height": 464,
        "content": "# Markdown Delivery\n\nThe cleaned journal entry is converted into a `.md` markdown file.\n\nThe workflow then:\n- Generates a timestamped filename\n- Sends the markdown journal back to Telegram\n- Makes the journal easy to archive or edit later"
      },
      "typeVersion": 1
    },
    {
      "id": "a19a1191-17e6-49d6-96c8-dd4406ec221b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -288
      ],
      "parameters": {
        "width": 944,
        "height": 688,
        "content": "# Optional Google Drive Backup\n\nThis section automatically uploads journal files to Google Drive.\n\nFeatures:\n- Searches for the journal folder\n- Creates the folder if it does not exist\n- Uploads the markdown journal automatically\n\nDisconnect this section if you do not want cloud backups."
      },
      "typeVersion": 1
    },
    {
      "id": "5585b120-151b-4cc0-aa5d-01c400d2af03",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        -16
      ],
      "parameters": {
        "width": 224,
        "height": 208,
        "content": "Optional: **Disconnect** this section if you don't want journals saved to Google Drive. \n\n\n\n\ud83d\udc47\n\n\n\ud83d\udc46"
      },
      "typeVersion": 1
    },
    {
      "id": "1b73661c-f473-4e9d-bbd7-7effa3f65ed5",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2960,
        -784
      ],
      "parameters": {
        "width": 1088,
        "height": 1888,
        "content": "# Telegram Voice Notes to Markdown Journal with Groq Whisper and Gemini\n\nThis workflow transforms Telegram voice notes and audio files into clean markdown journal entries using Groq Whisper, CloudConvert, and Google Gemini.\n\nIt automatically downloads incoming Telegram audio messages, transcribes them with Groq Whisper, cleans the transcript into a readable reflective journal using Gemini, converts the result into a markdown file, and sends the journal back to Telegram.\n\nFor better audio compatibility, the workflow also includes a CloudConvert fallback path. If Groq Whisper rejects the original audio file because of container or codec issues, the workflow converts the audio to MP3 with CloudConvert and retries transcription automatically.\n\nAn optional Google Drive section can also archive all generated journals automatically.\n\nThis workflow is useful for journaling, voice-based note-taking, personal reflection, idea capture, daily logging, and building a lightweight AI-assisted second brain.\n\n---\n\n## Common use cases\n\n- Convert Telegram voice notes into readable journal entries\n- Convert uploaded audio files into markdown journals\n- Create markdown journals automatically using AI\n- Capture thoughts, reflections, and ideas on the go\n- Build a voice-based personal knowledge system\n- Handle more audio formats by converting failed files to MP3\n- Archive AI-cleaned journals to Google Drive\n- Learn how to combine Telegram, Groq Whisper, CloudConvert, Gemini, markdown generation, and Google Drive in n8n\n\n---\n\n## How it works\n\n- Starts from a Telegram Trigger\n- Detects incoming voice notes or audio files\n- Downloads the Telegram audio file\n- Sends the original audio to Groq Whisper for transcription\n- If Groq rejects the file, converts the audio to MP3 with CloudConvert\n- Retries transcription with Groq Whisper using the converted MP3 file\n- Formats the transcript with timestamps\n- Sends the transcript to Google Gemini for cleanup and readability improvements\n- Preserves the original tone and meaning while removing filler words and transcription artifacts\n- Parses the AI response into structured JSON\n- Converts the final journal into a markdown (`.md`) file\n- Sends the markdown journal back to Telegram\n- Optionally uploads the journal to Google Drive\n\n---\n\n## Setup steps\n\n- Connect your Telegram credentials\n- Open the `Transcribe Audio with Groq Whisper` node\n- Replace the placeholder Authorization header with your Groq API key\n- Install the verified CloudConvert community node if it is not already installed\n- Connect your CloudConvert credentials for the MP3 fallback path\n- Connect your Google Gemini credentials\n- (Optional) Connect your Google Drive credentials\n- Test the workflow manually with a Telegram voice note or audio file\n- Activate the workflow\n- Send a voice note or audio file to your Telegram bot\n\n---\n\n## CloudConvert Audio Compatibility Fallback\n\nThe CloudConvert path is included to improve reliability with different audio uploads.\n\nGroq Whisper supports common audio formats, but some files may still fail because of unusual containers, codecs, MIME types, or metadata. When that happens, this workflow converts the failed audio file to MP3 with CloudConvert, then sends the MP3 back to Groq Whisper for transcription.\n\nThis fallback is especially useful for some uploaded M4A, OGG, OPUS, or recording files that may not be accepted directly.\n\nIf you only want to support files that Groq accepts directly, you can disconnect the CloudConvert fallback path.\n\n---\n\n## Optional Google Drive Backup\n\nThe Google Drive section is fully optional.\n\nIf connected:\n- The workflow searches for a `Personal Journal (n8n)` folder\n- Creates the folder automatically if it does not exist\n- Uploads generated markdown journals automatically\n\nIf you do not want cloud backups, simply disconnect the Google Drive section.\n\n---\n\n## Notes\n\nThis workflow uses:\n- Groq Whisper (`whisper-large-v3`) for transcription\n- CloudConvert for optional audio-to-MP3 fallback conversion\n- Google Gemini for transcript cleanup and journal formatting\n- Telegram Bot API for message delivery\n- Markdown file generation for portable journaling\n\nThe AI prompt is designed to:\n- Preserve the speaker\u2019s original meaning\n- Keep the natural reflective monologue style\n- Improve punctuation and readability\n- Avoid summarization or hallucinated content\n\nThe generated markdown journals can easily be imported into note-taking tools such as Obsidian, Logseq, Notion, or any markdown-based system.\n\n---\n\n## Need Help?\n\nHave questions or want to connect? Reach me on [LinkedIn](https://www.linkedin.com/in/athaahsan/)."
      },
      "typeVersion": 1
    },
    {
      "id": "6f8f0535-803e-4ba8-b3a7-113d5432157d",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1392,
        336
      ],
      "parameters": {
        "width": 896,
        "height": 576,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n# Audio Compatibility Fallback\n\nIf Groq Whisper rejects the original audio file, this fallback path converts the file to MP3 using CloudConvert, then retries transcription with Groq.\n\nThis helps with audio files that may have unsupported or unusual containers/codecs, such as some M4A, OGG, OPUS, or uploaded recordings.\n\nSetup:\n- Install the verified CloudConvert community node\n- Create or log in to your CloudConvert account\n- Get your CloudConvert API key from:\n  https://cloudconvert.com/dashboard/api/v2/keys\n- Connect your CloudConvert API credentials in n8n\n- Keep this fallback branch connected for wider audio compatibility"
      },
      "typeVersion": 1
    },
    {
      "id": "d7ee9555-05c1-409d-9fcb-f5e1b5cc23bb",
      "name": "Convert Audio to MP3 with CloudConvert",
      "type": "@cloudconvert/n8n-nodes-cloudconvert.cloudConvert",
      "position": [
        -1104,
        368
      ],
      "parameters": {
        "outputFormat": "mp3",
        "authentication": "apiKey",
        "inputBinaryPropertyName": "={{ $('Download Telegram Audio File').item.binary.data }}"
      },
      "credentials": {
        "cloudConvertApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "be8eb806-2acc-4117-839a-ede9a355859a",
      "name": "Transcribe Converted MP3 with Groq Whisper",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -896,
        368
      ],
      "parameters": {
        "url": "https://api.groq.com/openai/v1/audio/transcriptions",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "whisper-large-v3"
            },
            {
              "name": "temperature",
              "value": "0"
            },
            {
              "name": "response_format",
              "value": "verbose_json"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "={{ $('Convert Audio to MP3 with CloudConvert').item.binary.data }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer YOUR_GROQ_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": false
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "c453556c-759f-4149-b710-2f701c3d8993",
  "connections": {
    "Parse AI Response JSON": {
      "main": [
        [
          {
            "node": "Convert Journal to Markdown File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Voice Trigger": {
      "main": [
        [
          {
            "node": "Download Telegram Audio File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Clean Transcript with Gemini",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Clean Transcript with Gemini": {
      "main": [
        [
          {
            "node": "Parse AI Response JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Telegram Audio File": {
      "main": [
        [
          {
            "node": "Transcribe Audio with Groq Whisper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Timestamped Transcript": {
      "main": [
        [
          {
            "node": "Clean Transcript with Gemini",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Journal Folder Exists": {
      "main": [
        [
          {
            "node": "Upload Journal to Existing Folder",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create \u201cPersonal Journal (n8n)\u201d Folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Journal to Markdown File": {
      "main": [
        [
          {
            "node": "Send Markdown Journal to Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Markdown Journal to Telegram": {
      "main": [
        [
          {
            "node": "Find \u201cPersonal Journal (n8n)\u201d Folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe Audio with Groq Whisper": {
      "main": [
        [
          {
            "node": "Format Timestamped Transcript",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Convert Audio to MP3 with CloudConvert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Audio to MP3 with CloudConvert": {
      "main": [
        [
          {
            "node": "Transcribe Converted MP3 with Groq Whisper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find \u201cPersonal Journal (n8n)\u201d Folder": {
      "main": [
        [
          {
            "node": "Check if Journal Folder Exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create \u201cPersonal Journal (n8n)\u201d Folder": {
      "main": [
        [
          {
            "node": "Upload Journal to New Folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe Converted MP3 with Groq Whisper": {
      "main": [
        [
          {
            "node": "Format Timestamped Transcript",
            "type": "main",
            "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

This workflow transforms Telegram voice notes and audio files into clean markdown journal entries using Groq Whisper, CloudConvert, and Google Gemini.

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

Generate AI images using Pollinations API, or Generate blog articles using Gemini AI

Google Gemini Chat, Telegram Trigger, Telegram +4
AI & RAG

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11
AI & RAG

A Telegram bot that converts natural-language work descriptions into detailed cost estimates using AI parsing, vector search, and the open-source DDC CWICR database with 55,000+ construction work item

HTTP Request, Telegram, Telegram Trigger +6
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
AI & RAG

LinkedIn URL → Scrape → Match → Screen → Decide, all automated

Google Drive, Agent, Google Drive Tool +6