AutomationFlowsAI & RAG › Automated Meeting Minutes From Audio Using Openai Transcription and Google Docs

Automated Meeting Minutes From Audio Using Openai Transcription and Google Docs

ByYusei Miyakoshi @yusei on n8n.io

Teams and operators who record meetings/interviews and want fast, standardized, action-oriented minutes—without writing code. New n8n users welcome.

Event trigger★★★★☆ complexityAI-powered9 nodesForm TriggerOpenAIGoogle Docs
AI & RAG Trigger: Event Nodes: 9 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Form Trigger → Google Docs 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": "ec9kpivmcQCvL0Xp",
  "name": "[\u5b8c]Meeting-Minutes Assistant",
  "tags": [],
  "nodes": [
    {
      "id": "91e6563e-447f-45a9-bb4c-236c3e248531",
      "name": "Meeting Intake",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        480,
        512
      ],
      "parameters": {
        "options": {},
        "formTitle": "Meeting-Minutes Assistant",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Audio File",
              "requiredField": true,
              "acceptFileTypes": "m4a,mp3,wav,webm,m4b,mpeg"
            },
            {
              "fieldLabel": "Manager",
              "requiredField": true
            },
            {
              "fieldLabel": "Partner",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Situation",
              "fieldOptions": {
                "values": [
                  {
                    "option": "First meeting"
                  },
                  {
                    "option": "Estimate/Proposal"
                  },
                  {
                    "option": "Support"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "a1fd7470-3190-4a64-96a8-b0096fd9674a",
      "name": "Generate Meeting Minutes",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        912,
        512
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=You are a meeting-minutes assistant. From the following audio transcript, please produce:\n\n1. Key points (3\u20136 lines)\n2. Next actions (clearly specify owner and deadline)\n3. The other party\u2019s concerns/requests\n\nWrite concise bullet points in English, keeping the total length around 300\u2013600 characters.\n\n#\u5165\u529b\u60c5\u5831 : \n - {{ $json.text }}\n - {{ $('Meeting Intake').item.json.Manager }}\n - {{ $('Meeting Intake').item.json.Partner }}\n - {{ $('Meeting Intake').item.json.Situation }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "27cf545e-2ea6-4a54-bdeb-fc0cd10f5582",
      "name": "Create Minutes Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1264,
        512
      ],
      "parameters": {
        "title": "={{ $('Meeting Intake').item.json.Partner }}_{{ $('Meeting Intake').item.json.Situation }}",
        "folderId": "1c-iyrAch6AQOxOV8Gvlm6fe4M8s-0D5P"
      },
      "typeVersion": 2
    },
    {
      "id": "451d7d3a-6775-4fe1-ba60-8973d43522d2",
      "name": "Insert Minutes Content",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1472,
        512
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Generate Meeting Minutes').item.json.message.content }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "typeVersion": 2
    },
    {
      "id": "2c792edc-14af-47b7-aba4-44d25618386a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        176
      ],
      "parameters": {
        "height": 416,
        "content": "## Meeting Minutes Assistant \u2014 Overview\nForm \u2192 Transcribe (OpenAI) \u2192 Summarize \u2192 Google Docs (Create/Append)\nResult: Clean minutes + Doc URL.\n\nSetup: Connect OpenAI & Google (OAuth2). No hardcoded keys.\nTip: Test with <2 min audio; then tune the prompt.\nNext: See Description page for full setup & troubleshooting.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8a2f4a6c-76b3-416b-87ae-f1db67fe917b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        704
      ],
      "parameters": {
        "color": 7,
        "height": 240,
        "content": "## Meeting Intake (Trigger)\n\nPurpose: Collect audio + meta.\nFields: Audio (m4a/mp3/wav), Manager, Partner, Situation.\nNotes: Keep file <50MB; pass binary to next node; normalize timezone."
      },
      "typeVersion": 1
    },
    {
      "id": "8964593c-61b2-4e22-920a-296c199121de",
      "name": "Transcribe  recording",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        704,
        512
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe",
        "binaryPropertyName": "={{ Object.keys($binary)[0] }}"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5c21c95e-864f-412d-bbb4-16fd053fa156",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        224
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 224,
        "content": "## Generate Meeting Minutes\n\nPurpose: Summarize transcript \u2192 action-oriented minutes.\nStructure: Key Points / Next Actions (OWNER, DUE) / Concerns.\nInput: {{ $json.text }} + form fields. Keep ~300\u2013600 chars (edit as needed).\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d66d46e0-701b-4cab-b2db-c6b3a27d0ab5",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        688
      ],
      "parameters": {
        "color": 7,
        "height": 176,
        "content": "## Insert Minutes Content\n\nTemplate: Timestamp + sections (Key Points / Next Actions / Concerns).\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e7c735ae-209e-4c20-8b1e-faef8d3958df",
  "connections": {
    "Meeting Intake": {
      "main": [
        [
          {
            "node": "Transcribe  recording",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Minutes Doc": {
      "main": [
        [
          {
            "node": "Insert Minutes Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe  recording": {
      "main": [
        [
          {
            "node": "Generate Meeting Minutes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Meeting Minutes": {
      "main": [
        [
          {
            "node": "Create Minutes Doc",
            "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

Teams and operators who record meetings/interviews and want fast, standardized, action-oriented minutes—without writing code. New n8n users welcome.

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

Turn any web page into a compelling LinkedIn post — complete with an AI-generated image. This automation is ideal for sharing content like blog posts, case studies, or product updates in a polished an

Form Trigger, OpenAI Chat, OpenAI +3
AI & RAG

Sending a plain PDF resume doesn’t stand out anymore. This workflow allows candidates to convert their resume and photo into a personalized video resume. Recruiters get a more engaging first impressio

OpenAI Chat, HTTP Request, Information Extractor +3
AI & RAG

This workflow automates the end-to-end process of extracting and summarizing information from PDFs stored in a specific Google Drive folder. When a new PDF or any binary data is added, the workflow is

Google Drive Trigger, Information Extractor, OpenAI Chat +4
AI & RAG

Turn any web page into a compelling LinkedIn post — complete with an AI-generated image. This automation is ideal for sharing content like blog posts, case studies, or product updates in a polished an

Form Trigger, OpenAI Chat, Text Classifier +3
AI & RAG

Automates PDF data extraction using OpenAI GPT, saves to Google Sheets, sends email confirmations. Reduces manual entry by 90%. Receives PDF uploads via form Splits & loops through files AI extracts s

OpenAI, OpenAI Chat, Google Sheets +3