This workflow corresponds to n8n.io template #5307 — we link there as the canonical source.
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 →
{
"meta": {
"templateId": "3905",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "2175eca1-4842-4601-b0ac-84264cdc48ca",
"name": "\ud83c\udf99\ufe0f Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
720
],
"parameters": {
"color": 7,
"width": 460,
"height": 720,
"content": "## \ud83c\udf99\ufe0f AI Audio Transcription with VLM Run\n\n**Overview:**\nAutomatically transcribes audio files from Gmail and generates formatted transcription reports in Google Docs.\n\n**Workflow:**\n1. \ud83d\udce7 Monitor Gmail for audio attachments\n2. \ud83c\udfb5 Extract and process audio files\n3. \ud83e\udd16 Transcribe using VLM Run AI\n4. \ud83d\udd17 Receive results via webhook\n5. \ud83d\udcc4 Generate formatted Google Doc\n\n\n**Perfect for:**\n- Meeting recordings\n- Voice memos\n- Interview transcriptions\n- Podcast notes\n- Audio journalism\n- Accessibility documentation\n\n\n**Requirements:**\n- VLM Run API access\n- Gmail OAuth2\n- Google Docs OAuth2\n- Webhook endpoint"
},
"typeVersion": 1
},
{
"id": "3d1b367c-226c-4d9c-bc9e-0643ff3896bc",
"name": "\ud83d\udce7 Email Monitoring",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
720
],
"parameters": {
"color": 7,
"width": 360,
"height": 720,
"content": "## \ud83d\udce7 Gmail Audio Detection\n\n**Monitors incoming emails and automatically downloads audio attachments.**\n\n**Process:**\n1. Polls Gmail every minute\n2. Detects new emails with attachments\n3. Downloads audio files automatically\n4. Triggers transcription workflow\n\n\n**Supported Formats:**\n- MP3, WAV, M4A\n- AAC, OGG, FLAC\n- Various bitrates\n- Mobile recordings\n\n\n**Configuration:**\n- Enable attachment downloads\n- Automatic file extraction"
},
"typeVersion": 1
},
{
"id": "4c2744d9-c35d-4629-ac54-b3f299cf16e3",
"name": "\ud83e\udd16 AI Transcription",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
720
],
"parameters": {
"color": 2,
"width": 360,
"height": 720,
"content": "## \ud83e\udd16 Audio AI Processing\n\n**VLM Run transcribes audio with high accuracy**\n\n**Features:**\n- Advanced speech recognition\n- Automatic punctuation\n- Timestamp generation\n\n\n**Output:**\n- Complete transcription\n- Time-segmented text\n- Metadata extraction\n- Duration information\n\n\n**Benefits:**\n- Human-level accuracy\n- Fast processing\n- Consistent formatting\n- Professional quality"
},
"typeVersion": 1
},
{
"id": "52c19808-27ae-4ccd-af4d-a977bd44f18a",
"name": "\ud83d\udd17 Async Processing",
"type": "n8n-nodes-base.stickyNote",
"position": [
980,
720
],
"parameters": {
"color": 5,
"width": 320,
"height": 720,
"content": "## \ud83d\udd17 Webhook Processing Flow\n\n**How asynchronous transcription works:**\n\n**Step 1:** Audio sent to VLM Run with callback URL\n**Step 2:** Transcription starts in background\n**Step 3:** Webhook receives completion\n**Step 4:** Results formatted for Google Docs\n\n\n**Why Async?**\n- Handles long audio files\n- Prevents workflow timeouts\n- Better resource management\n- Reliable processing\n\n\n**Callback Data:**\n- Complete transcript\n- Segment timestamps\n- Processing metadata\n- Error handling"
},
"typeVersion": 1
},
{
"id": "7046634c-3534-4f62-9df9-7ece42a4b969",
"name": "\ud83d\udcc4 Document Generation",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
720
],
"parameters": {
"color": 7,
"width": 320,
"height": 720,
"content": "## \ud83d\udcc4 Professional Reports\n\n**Creates beautifully formatted Google Docs with transcription results.**\n\n**Report includes:**\n- Date and timestamp\n- Total audio duration\n- Segmented transcription\n- Time markers for each segment\n- Professional formatting\n\n\n**Output Location:**\n- Specified Google Doc\n- Appends new transcriptions\n- Maintains formatting"
},
"typeVersion": 1
},
{
"id": "31d1f0c3-73e7-4e1a-bc08-72c5694e7153",
"name": "Monitor Email Attachments",
"type": "n8n-nodes-base.gmailTrigger",
"notes": "Continuously monitors Gmail for new emails with audio attachments. Automatically downloads all attachments and triggers the transcription workflow.",
"position": [
320,
1260
],
"parameters": {
"simple": false,
"filters": {},
"options": {
"downloadAttachments": true
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "d2c14402-db05-4bf4-a8a5-402587d69ee8",
"name": "VLM Run Audio Transcriber",
"type": "@vlm-run/n8n-nodes-vlmrun.vlmRun",
"notes": "Processes audio files using VLM AI to generate accurate transcriptions with timestamps. Runs asynchronously for large audio files.",
"position": [
720,
1260
],
"parameters": {
"file": "attachment_0",
"domain": "audio.transcription",
"operation": "audio",
"callbackUrl": "https://playground.vlm.run/webhook/audio-transcription",
"processAsynchronously": true
},
"credentials": {
"vlmRunApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "98e98532-dc44-4b15-a75d-24b3d7823c84",
"name": "Receive Transcription Results",
"type": "n8n-nodes-base.webhook",
"notes": "Receives the completed transcription from VLM AI when asynchronous processing is finished. Contains full transcript with timestamps.",
"position": [
1080,
1260
],
"parameters": {
"path": "audio-transcription",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "c9468f04-42da-4725-a462-97cdcf6c40ac",
"name": "Generate Transcription Report",
"type": "n8n-nodes-base.googleDocs",
"notes": "Creates a professionally formatted Google Doc with the transcription results, including timestamps and metadata.",
"position": [
1420,
1260
],
"parameters": {
"simple": false,
"actionsUi": {
"actionFields": [
{
"text": "=\ud83d\udcc4 Audio Transcription Report\n\n\ud83d\uddd3\ufe0f Date: {{ new Date($json.body.completed_at).toLocaleString('en-US', { dateStyle: 'medium', timeStyle: 'short' }) }} \n\u23f1\ufe0f Total Duration: {{ $json.body.response.metadata.duration }} seconds \n{{ \n$json.body.response.segments.map((segment, index) => \n `\\n` +\n `\ud83d\udd39 Segment ${index + 1}\\n` +\n `\u23f0 Time: ${segment.start_time.toFixed(2)}s \u2192 ${segment.end_time.toFixed(2)}s\\n` +\n `\ud83d\udcdd Transcript: \"${segment.content.trim()}\"\\n`\n).join('\\n')\n}}\n",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "https://docs.google.com/document/d/1QFHvOgEYKMLVpIRv6Mc7lXfDXhtoozgEK7O-wuNLzl0/edit?tab=t.0",
"authentication": "oAuth2"
},
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"connections": {
"Monitor Email Attachments": {
"main": [
[
{
"node": "VLM Run Audio Transcriber",
"type": "main",
"index": 0
}
]
]
},
"Receive Transcription Results": {
"main": [
[
{
"node": "Generate Transcription Report",
"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.
gmailOAuth2googleDocsOAuth2ApivlmRunApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically transform audio files into professional transcription reports with AI-powered speech recognition, timestamp generation, and formatted Google Docs output. Monitors Gmail for incoming audio attachments Downloads and processes audio files using VLM Run AI…
Source: https://n8n.io/workflows/5307/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Automatically transform resume submissions into comprehensive candidate profiles with AI-powered parsing, GitHub analysis, and instant team notifications. Monitors Gmail for incoming resume attachment
Client Form → Draft → Approve → Sign → Deliver, fully automated
This workflow automates the full offer letter lifecycle, from generation to final candidate response tracking. When a new row with a Pending status is added to Google Sheets, it creates a personalized
ResultAnalyser. Uses gmailTrigger, executeCommand, httpRequest, gmail. Event-driven trigger; 23 nodes.
An automated n8n workflow that monitors your Gmail inbox, classifies job application emails using a local AI (Ollama), and logs every application — with company, role, and status — to a Google Sheet i