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 →
{
"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.
openAiApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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
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
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
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
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