n8n Workflow
Expert

AI Audio Transcription & Summarization with OpenAI and Google Drive

Automate your audio workflow. Use OpenAI to transcribe audio files, generate AI-powered summaries in JSON and Markdown, and save everything neatly to Google Drive.

Overview

Automates transcribing audio files from Google Drive with OpenAI, generates structured summaries, and sends notifications with report links via email and Telegram.

🧠 Description & Use Case

This workflow automates the entire process of converting audio files into actionable, summarized content. It listens for new audio files in Google Drive, transcribes them using OpenAI's Whisper model, generates two types of AI-powered summaries (structured JSON and detailed Markdown), saves all reports back to Google Drive, and notifies you via Gmail and Telegram with direct links to the documents.

🔄 How It Works:

  1. Trigger & Approval

    • The workflow can be initiated manually or automatically when a new file is created in a specified Google Drive folder.
    • An optional Human-in-the-Loop step is included (disabled by default), where an approval email is sent via Gmail before the transcription process begins.
  2. Fetch and Prepare Audio

    • The Search Google Drive node finds files in your designated 'Audio Recordings' folder.
    • It then filters for files ending with the .m4a extension and uses the Limit node to select only the most recent one.
    • The Download audio file node fetches the audio data, making it ready for transcription.
  3. Transcribe with AI

    • The Transcribe with OpenAI node sends the audio file to OpenAI's API, which returns a complete text transcript.
    • For archival purposes, the raw text transcript is immediately saved to Google Drive.
  4. AI-Powered Summarization The raw transcript is sent down two parallel paths for different types of summaries using OpenAI's gpt-4o-mini model:

    • Structured JSON Report: The Summarize to Structured JSON node prompts the AI to extract key information like a title, main points, action items, and sentiment, returning a clean JSON object.
    • Detailed Markdown Report: The Summarize to JSON and Convert JSON to Markdown nodes work together to create a comprehensive, well-organized summary in Markdown format, perfect for documentation or reports.
  5. Store and Organize Reports

    • Both the JSON and Markdown summaries are saved to the same Google Drive folder as the original audio file. The files are dynamically named using the original file ID and a timestamp for easy tracking.
  6. Notify & Deliver

    • The workflow retrieves the webViewLink for the newly created JSON and Markdown files.
    • An Email Content Formatter node uses OpenAI to generate a clean HTML email body with links to the reports.
    • Finally, notifications are sent via both Gmail and Telegram, providing you with instant access to your transcribed and summarized content.

✅ Real-World Use Cases:

  • Meeting Recaps: Automatically transcribe and summarize Zoom or Teams meetings to capture decisions and action items without manual note-taking.
  • Content Creation: Convert podcasts, interviews, or voice notes into blog posts, show notes, or social media content.
  • Academic & Market Research: Quickly process and analyze audio from interviews, focus groups, or lectures to identify key themes and insights.
  • Personal Productivity: Turn voice memos into organized to-do lists, journal entries, or structured notes.
  • Customer Support Analysis: Transcribe and analyze support calls to identify recurring issues, customer sentiment, and agent performance.

Instructions

Basic steps

  1. Download workflow JSON
  2. Import into n8n
  3. Configure node parameters as needed
  4. Test and enable the workflow

💡 Tips

After importing, verify all connectors and credentials match your environment.

Preview

Workflow Visualization

33 nodes
100%
Gmail User for ApprovalgmailSticky NotestickyNoteSet ConfigsetTranscribe with OpenAI@n8n/langchain.openAiSticky Note1stickyNoteSticky Note2stickyNoteSticky Note3stickyNoteSticky Note4stickyNoteSticky Note5stickyNoteSticky Note6stickyNoteFilter by .m4a extensionfilterLimit to last filelimitDownload audio filegoogleDriveSearch Google DrivegoogleDriveSticky Note7stickyNoteSend Telegram MessagetelegramSend Gmail MessagegmailEmail Content Formatter@n8n/langchain.openAiSummarize to Structured JSON@n8n/langchain.openAiSummarize to JSON@n8n/langchain.openAiConvert JSON to Markdown@n8n/langchain.openAiGet Filename for JSONsetGet Filename for MarkdownsetSave JSON file to Google DrivegoogleDriveSave Markdown file to Google DrivegoogleDriveGet JSON File MetagoogleDriveGet Markdown File MetagoogleDrivePrepare Response JSONsetPrepare Response MarkdownsetMerge All PathsmergeSave Raw Transcript to Google DrivegoogleDriveStart WorkflowmanualTriggerOn File Created TriggergoogleDriveTrigger

Nodes

1

Gmail User for Approval

禁用

gmail

v2.1
2

Sticky Note

stickyNote

v1
3

Set Config

set

v3.4
4

Transcribe with OpenAI

@n8n/langchain.openAi

v1
5

Sticky Note1

stickyNote

v1
6

Sticky Note2

stickyNote

v1
7

Sticky Note3

stickyNote

v1
8

Sticky Note4

stickyNote

v1
9

Sticky Note5

stickyNote

v1
10

Sticky Note6

stickyNote

v1
11

Filter by .m4a extension

filter

v2.2
12

Limit to last file

limit

v1
13

Download audio file

googleDrive

v3
14

Search Google Drive

googleDrive

v3
15

Sticky Note7

stickyNote

v1
16

Send Telegram Message

telegram

v1.2
17

Send Gmail Message

gmail

v2.1
18

Email Content Formatter

@n8n/langchain.openAi

v1
19

Summarize to Structured JSON

@n8n/langchain.openAi

v1
20

Summarize to JSON

@n8n/langchain.openAi

v1
21

Convert JSON to Markdown

@n8n/langchain.openAi

v1
22

Get Filename for JSON

set

v3.4
23

Get Filename for Markdown

set

v3.4
24

Save JSON file to Google Drive

googleDrive

v3
25

Save Markdown file to Google Drive

googleDrive

v3
26

Get JSON File Meta

googleDrive

v3
27

Get Markdown File Meta

googleDrive

v3
28

Prepare Response JSON

set

v3.4
29

Prepare Response Markdown

set

v3.4
30

Merge All Paths

merge

v3
31

Save Raw Transcript to Google Drive

googleDrive

v3
32

Start Workflow

manualTrigger

v1
33

On File Created Trigger

禁用

googleDriveTrigger

v1

Statistics

Total nodes:33
Disabled nodes:2
Node types:11
Connections:23
View full JSON structure
{
  "nodes": [
    {
      "id": "3918995a-a587-40c1-828c-97e75b988a9f",
      "name": "Gmail User for Approval",
      "type": "n8n-nodes-base.gmail",
      "disabled": true,
      "position": [
        360,
        -20
      ],
      "webhookId": "c46cf421-ddb6-45a8-b83b-80b381666f0e",
      "parameters": {
        "sendTo": "={{ $env.EMAIL_ADDRESS_JOE }} ",
        "message": "=A new was just created in the Audio Recordings folder on Google Drive.  Would you like to continue the workflow and Transcribe the audio file and generate reports.",
        "options": {
          "limitWaitTime": {
            "values": {
              "resumeUnit": "minutes",
              "resumeAmount": 45
            }
          }
        },
        "subject": "=💡New Audio File Created - Approve Transcription Service",
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "1xpVDEQ1yx8gV022",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "44aa6e99-9b4a-4af4-93e3-4b1a50fc7628",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        680
      ],
      "parameters": {
        "color": 3,
        "width": 260,
        "height": 280,
        "content": "## 3️⃣ Transcribe Audio"
      },
      "typeVersion": 1
    },
    {
      "id": "cbf765b5-b888-4e22-b4a2-1d430b557109",
      "name": "Set Config",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        780
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2f5cef95-a26b-46ff-ab9a-501187ce4211",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            },
            {
              "id": "ac623698-1263-4b83-8c59-159863d950b9",
              "name": "datetime",
              "type": "string",
              "value": "={{ $now }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bd9cd4aa-6afc-4875-a487-df4f0d3a4a29",
      "name": "Transcribe with OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -240,
        780
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "id": "jEMSvKmtYfzAkhe6",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4d91f6f7-a89e-44d9-9433-4d9a1df368a2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        580
      ],
      "parameters": {
        "color": 5,
        "width": 1560,
        "height": 280,
        "content": "## 4️⃣ Process Transcript and Generate Structured JSON Report"
      },
      "typeVersion": 1
    },
    {
      "id": "64421d13-0aff-46f8-bf3e-5fac89ec9c46",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        900
      ],
      "parameters": {
        "color": 6,
        "width": 1560,
        "height": 280,
        "content": "## 5️⃣ Process Transcript and Generate Structured JSON -> Markdown Report"
      },
      "typeVersion": 1
    },
    {
      "id": "769ca5a4-2a54-4ed8-85af-4359b97755bc",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1000,
        1220
      ],
      "parameters": {
        "color": 2,
        "width": 460,
        "height": 280,
        "content": "## 6️⃣ Save Raw Transcript to Google Drive"
      },
      "typeVersion": 1
    },
    {
      "id": "aa612f37-f7cd-4cf7-919c-87564f03eef1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 300,
        "content": "## 1️⃣ Start Transcription Service"
      },
      "typeVersion": 1
    },
    {
      "id": "1e520267-6275-4d07-bba8-9ebaf0afbc68",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        -140
      ],
      "parameters": {
        "width": 700,
        "height": 340,
        "content": "## Wait for Google Drive Trigger and Send for User Approval to Proceed (Human in the Loop)\n(optional)"
      },
      "typeVersion": 1
    },
    {
      "id": "1f07fa9c-ecfc-4534-a0b2-569eca1a3092",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        240
      ],
      "parameters": {
        "color": 2,
        "width": 880,
        "height": 300,
        "content": "## 2️⃣ Search and Download Audio File from Google Drive\n💡Note:  Adjust Filter and Limit settings for your needs"
      },
      "typeVersion": 1
    },
    {
      "id": "b769d523-6b1f-45f2-98b1-4d0f8eb2d7f4",
      "name": "Filter by .m4a extension",
      "type": "n8n-nodes-base.filter",
      "position": [
        980,
        340
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "420e1a9c-2145-4845-b4b0-31a82855a78c",
              "operator": {
                "type": "string",
                "operation": "endsWith"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": ".m4a"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "5a67182e-4f13-4b6f-a3e2-863e18af31b0",
      "name": "Limit to last file",
      "type": "n8n-nodes-base.limit",
      "position": [
        1180,
        340
      ],
      "parameters": {
        "keep": "lastItems"
      },
      "typeVersion": 1
    },
    {
      "id": "f42b4efc-6e04-49a1-8bd8-252ebd3dbf42",
      "name": "Download audio file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1380,
        340
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "4313e19f-ca7a-4982-b3b4-1680c674e696",
      "name": "Search Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        780,
        340
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "list",
            "value": "1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
            "cachedResultName": "Audio Recordings"
          },
          "whatToSearch": "files"
        },
        "options": {},
        "resource": "fileFolder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e25655b0-9d30-40d4-9051-bffe38fb41e0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2020,
        700
      ],
      "parameters": {
        "width": 660,
        "height": 480,
        "content": "## 7️⃣ Send Transcription Report Links to User"
      },
      "typeVersion": 1
    },
    {
      "id": "38ff9906-41af-430a-9de9-0500577826a5",
      "name": "Send Telegram Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2460,
        980
      ],
      "webhookId": "bb40ede7-03cf-493d-b051-196b96725925",
      "parameters": {
        "text": "=Audio Transcribed and Reports Generated\n{{ $json.id_json.webViewLink }}\n{{ $json.id_markdown.webViewLink }}",
        "chatId": "={{ $env.TELEGRAM_CHAT_ID }}",
        "additionalFields": {
          "parse_mode": "HTML",
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "pAIFhguJlkO3c7aQ",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5b6aedaa-897f-4b76-84d8-3ca18d06cc5c",
      "name": "Send Gmail Message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2460,
        800
      ],
      "webhookId": "0a81b95a-cd82-465d-8450-cf38518a4cbb",
      "parameters": {
        "sendTo": "={{ $env.EMAIL_ADDRESS_JOE }} ",
        "message": "={{ $json.message.content }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "Audio Transcribed and Reports Generated"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "1xpVDEQ1yx8gV022",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "4500efdb-7a70-40da-97b6-e4668af21a19",
      "name": "Email Content Formatter",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2100,
        800
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Prapare this HTML template using the following: \n{{ $json.id_json.toJsonString() }}\n{{ $json.id_markdown.toJsonString() }}\n\nEnsure that the 'webViewLink' is always provided.\n\nRespond only with HTML and avoid any preamble or further explanation.  Remove all ``` or ```html from final response.\n\n<style type=\"text/css\">\n    /* Reset styles */\n    body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }\n    .wrapper { max-width: 600px; margin: 0 auto; }\n    .content { padding: 30px; line-height: 1.6; color: #333333; }\n    .divider { border-top: 1px solid #eeeeee; margin: 25px 0; }\n    .button { display: inline-block; padding: 12px 24px; background-color: #2563eb; color: white; text-decoration: none; border-radius: 6px; }\n</style>\n</head>\n<body>\n    <div class=\"wrapper\">\n        <div class=\"content\">\n            <h2 style=\"color: #1f2937; margin-bottom: 20px;\">Your Documents</h2>\n            \n            <div style=\"margin-bottom: 30px;\">\n                <h3 style=\"color: #374151; margin-bottom: 12px;\">[name]</h3>\n                <a href=\"[webViewLink]\" class=\"button\" style=\"color: white;\">View Document</a>\n            </div>\n\n            <div class=\"divider\"></div>\n\n            [continue the pattern ...]\n\n        </div>\n    </div>\n</body>"
            },
            {
              "role": "system"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "jEMSvKmtYfzAkhe6",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "287fcc26-69be-43d8-a855-c57658e92ac4",
      "name": "Summarize to Structured JSON",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        240,
        660
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=\"Today is \" {{ $now }}  \"Transcript: \" {{  $json.text }}"
            },
            {
              "role": "system",
              "content": "## ROLE\nYou are an expert at summarizing long transcripts.\n\n## TASK\nSummarize the provided transcript into a structured JSON format.\n\n## RULES\nReturn only valid JSON in this example format:\n\"transcript_report\": {\n\"title\": \"Notion Buttons\",\n\"summary\": \"A collection of buttons for Notion\",\n\"main_points\": [\"item 1\", \"item 2\", \"item 3\"],\n\"action_items\": [\"item 1\", \"item 2\", \"item 3\"],\n\"follow_up\": [\"item 1\", \"item 2\", \"item 3\"],\n\"stories\": [\"item 1\", \"item 2\", \"item 3\"],\n\"references\": [\"item 1\", \"item 2\", \"item 3\"],\n\"arguments\": [\"item 1\", \"item 2\", \"item 3\"],\n\"related_topics\": [\"item 1\", \"item 2\", \"item 3\"],\n\"sentiment\": \"positive\"\n}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "jEMSvKmtYfzAkhe6",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7b5b751f-a7fa-4983-a0e4-1a79e5c4286c",
      "name": "Summarize to JSON",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        240,
        980
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Transcript: {{  $json.text }}"
            },
            {
              "role": "system",
              "content": "=## ROLE: Expert Transcript Analyst\n**Current Date:** {{ $now }}\n**Specialization:** Technical documentation, executive reporting, and information architecture\n\n\n## TASK: Create Structured Transcript Summary\nTransform verbose transcripts into well-organized technical documents using this 3-step process:\n1. Extract key information\n2. Identify natural thematic groupings\n3. Structure for optimal scannability\n\n\n## FORMAT REQUIREMENTS\n[Document Title] - {{ $now }}\n\nExecutive Summary (3-5 sentences)\n- Core purpose of discussion\n- Key decision points\n- Actionable outcomes\n\nDetailed Analysis\n[Topic 1: Clear Section Name]\n- Key statements\n- Supporting data points\n- Action items\n\n[Topic 2: Specific Category]\n-Decision rationale\n-Contradictions/agreements\n-Follow-up requirements\n\n(...continue pattern...)\n\nAdditional Observations\n- Unresolved questions\n- Technical terminology glossary\n- Participant sentiment trends\n\n\n## RULES\n1. **Content Fidelity**\n   - Never add external knowledge\n   - Preserve quantitative data exactly\n   - Maintain speaker intent through paraphrasing\n\n2. **Structural Requirements**\n   - Use H2/H3 headers only\n   - Apply consistent tense (prefer present)\n   - Include timestamps for critical points [00:00]\n\n3. **Style Guidelines**\n   - Technical > conversational tone\n   - Active voice required\n   - Bullet points for lists\n   - **Bold** key decisions\n\n4. **Validation**\n   - Self-check for topic overlap\n   - Verify chronological accuracy\n   - Confirm all action items are highlighted"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "jEMSvKmtYfzAkhe6",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e92d8de3-8287-4ecd-9ca6-6f8d18b8942e",
      "name": "Convert JSON to Markdown",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        620,
        980
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Today is: {{ $now }}\nTranscript: {{ $json.message.content.toJsonString() }}"
            },
            {
              "role": "system",
              "content": "Convert this transcript summary to a markdown document.  Only respond with text and remove all ``` or ```markdown."
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "jEMSvKmtYfzAkhe6",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "419e050f-3a9b-4fc0-99f2-2e478f080e06",
      "name": "Get Filename for JSON",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        660
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a0c31c80-87c9-41e5-ae07-8639bf52870c",
              "name": "filename",
              "type": "string",
              "value": "={{ $('Download audio file').item.json.id }}-{{ $('Download audio file').item.json.name }}-{{ $('Set Config').item.json.datetime }}.json"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1307431e-80ea-404c-925f-d3ad5bdaa27c",
      "name": "Get Filename for Markdown",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        980
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a0c31c80-87c9-41e5-ae07-8639bf52870c",
              "name": "filename",
              "type": "string",
              "value": "={{ $('Download audio file').item.json.id }} - {{ $('Download audio file').item.json.name }}- {{ $('Set Config').item.json.datetime }}.md"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c87a9dcb-3edb-47ba-a059-6e7a6c63c287",
      "name": "Save JSON file to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1180,
        660
      ],
      "parameters": {
        "name": "={{ $json.filename }}",
        "content": "={{ $('Summarize to Structured JSON').item.json.message.content.toJsonString() }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultName": "Audio Recordings"
        },
        "operation": "createFromText"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "2f0c30b5-1c99-4c06-9c1b-8a18033e6921",
      "name": "Save Markdown file to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1180,
        980
      ],
      "parameters": {
        "name": "={{ $json.filename }}",
        "content": "={{ $('Convert JSON to Markdown').item.json.message.content }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultName": "Audio Recordings"
        },
        "operation": "createFromText"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "abc070ee-c276-410b-a3cf-a8504bf992a1",
      "name": "Get JSON File Meta",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1380,
        660
      ],
      "parameters": {
        "filter": {
          "whatToSearch": "files"
        },
        "options": {
          "fields": [
            "id",
            "webViewLink",
            "name"
          ]
        },
        "resource": "fileFolder",
        "queryString": "={{ $('Get Filename for JSON').item.json.filename }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0961424a-f3a3-4469-962b-6b2a7affd66d",
      "name": "Get Markdown File Meta",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1380,
        980
      ],
      "parameters": {
        "filter": {
          "whatToSearch": "files"
        },
        "options": {
          "fields": [
            "id",
            "webViewLink",
            "name"
          ]
        },
        "resource": "fileFolder",
        "queryString": "={{ $('Get Filename for Markdown').item.json.filename }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "bddd4298-7570-48df-a16b-5352909f6530",
      "name": "Prepare Response JSON",
      "type": "n8n-nodes-base.set",
      "position": [
        1580,
        660
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c89d0613-9b1e-4906-a4d2-ecc5fe585f5b",
              "name": "id_json",
              "type": "object",
              "value": "={{ $json }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d3a77222-96ac-4d2e-a98c-b185524bebe0",
      "name": "Prepare Response Markdown",
      "type": "n8n-nodes-base.set",
      "position": [
        1580,
        980
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9e23ce26-bdf5-46c8-9099-02179cd29fc5",
              "name": "id_markdown",
              "type": "object",
              "value": "={{ $json }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "41e6a279-426e-4fcd-ad6d-182fbc111d28",
      "name": "Merge All Paths",
      "type": "n8n-nodes-base.merge",
      "position": [
        1840,
        980
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition",
        "numberInputs": 3
      },
      "typeVersion": 3
    },
    {
      "id": "e2bb4ed5-f9cd-4807-950c-8f9a4bef1a24",
      "name": "Save Raw Transcript to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1180,
        1300
      ],
      "parameters": {
        "name": "={{ $('Download audio file').item.json.id }} - {{ $('Download audio file').item.json.name }}- {{ $('Set Config').item.json.datetime }}.txt",
        "content": "={{  $('Transcribe with OpenAI').item.json.text }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultName": "Audio Recordings"
        },
        "operation": "createFromText"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "fb2cced9-8c42-43de-b4a3-5dd66ddd24b3",
      "name": "Start Workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        340
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c2ef200f-4e45-42ba-a5f2-f7eb47df8f2f",
      "name": "On File Created Trigger",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "disabled": true,
      "position": [
        0,
        -20
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {
          "fileType": "application/vnd.google-apps.audio"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "list",
          "value": "1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1Wqd4zEEb847gFYKoDBbNnXsWEc-kCAm2",
          "cachedResultName": "Audio Recordings"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "UhdXGYLTAJbsa0xX",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Set Config": {
      "main": [
        [
          {
            "node": "Summarize to JSON",
            "type": "main",
            "index": 0
          },
          {
            "node": "Summarize to Structured JSON",
            "type": "main",
            "index": 0
          },
          {
            "node": "Save Raw Transcript to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Workflow": {
      "main": [
        [
          {
            "node": "Search Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge All Paths": {
      "main": [
        [
          {
            "node": "Send Telegram Message",
            "type": "main",
            "index": 0
          },
          {
            "node": "Email Content Formatter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize to JSON": {
      "main": [
        [
          {
            "node": "Convert JSON to Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get JSON File Meta": {
      "main": [
        [
          {
            "node": "Prepare Response JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit to last file": {
      "main": [
        [
          {
            "node": "Download audio file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download audio file": {
      "main": [
        [
          {
            "node": "Transcribe with OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google Drive": {
      "main": [
        [
          {
            "node": "Filter by .m4a extension",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Filename for JSON": {
      "main": [
        [
          {
            "node": "Save JSON file to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Response JSON": {
      "main": [
        [
          {
            "node": "Merge All Paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Markdown File Meta": {
      "main": [
        [
          {
            "node": "Prepare Response Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe with OpenAI": {
      "main": [
        [
          {
            "node": "Set Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Content Formatter": {
      "main": [
        [
          {
            "node": "Send Gmail Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail User for Approval": {
      "main": [
        [
          {
            "node": "Search Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On File Created Trigger": {
      "main": [
        [
          {
            "node": "Gmail User for Approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert JSON to Markdown": {
      "main": [
        [
          {
            "node": "Get Filename for Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter by .m4a extension": {
      "main": [
        [
          {
            "node": "Limit to last file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Filename for Markdown": {
      "main": [
        [
          {
            "node": "Save Markdown file to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Response Markdown": {
      "main": [
        [
          {
            "node": "Merge All Paths",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Summarize to Structured JSON": {
      "main": [
        [
          {
            "node": "Get Filename for JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save JSON file to Google Drive": {
      "main": [
        [
          {
            "node": "Get JSON File Meta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Markdown file to Google Drive": {
      "main": [
        [
          {
            "node": "Get Markdown File Meta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Raw Transcript to Google Drive": {
      "main": [
        [
          {
            "node": "Merge All Paths",
            "type": "main",
            "index": 2
          }
        ]
      ]
    }
  }
}

Actions

Share
Categories:
Tags:
manualtriggersetgmailmergetelegramstickynotegoogledrivefilterlimitgoogledrivetrigger

Technical Specs

Complexity:
Expert
Node Count:
33 nodes
Published:11 months ago
Updated:22 days ago

Compatibility

Platform:
N8N Cloud & Self-hosted
Min Version:
N8N v1.0.0+
Supports cloud and self-hosted deployment

License

This workflow template follows MIT license, you can freely use, modify and distribute.

Please comply with relevant third-party service terms when using.

Related Workflows