폼 제출만_이중 소스 오디오 전사 --> AI 요약 및 감정 분석 --> Gmail 전달
고급
이것은Document Extraction, AI Summarization분야의자동화 워크플로우로, 22개의 노드를 포함합니다.주로 If, Code, Wait, Gmail, FormTrigger 등의 노드를 사용하며. 오디오를 실행 브리핑으로: AssemblyAI 및 GPT-4를 사용한 트랜스크립션 및 분석
사전 요구사항
- •Google 계정 및 Gmail API 인증 정보
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "wtRwIBJPAbnyUbe9",
"meta": {
"instanceId": "c6db2bbd15df605c52b03ec6457f801cfcd738d259ddbb148b61be2fb93e4e29",
"templateCredsSetupCompleted": true
},
"name": "Only Onform submission_Two-Source Audio Transcription--> AI summary & Sentiment Analysis--> Gmail delivery",
"tags": [],
"nodes": [
{
"id": "45c9716a-3d65-4fdc-bdc1-8feb130ecf38",
"name": "대기",
"type": "n8n-nodes-base.wait",
"position": [
-304,
-240
],
"webhookId": "8796adc6-5f2b-4859-a62e-925c59adf474",
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "b1163157-dc8c-4573-a967-93a9dea55dcf",
"name": "조건문",
"type": "n8n-nodes-base.if",
"position": [
64,
-240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d49d90fa-7138-48b8-a149-7dfcc86a1dd9",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "62aec10f-d637-4cbb-b457-f9bd7a086932",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
-144
],
"parameters": {
"color": 4,
"width": 736,
"height": 432,
"content": "### Execution flow Form submission + Local file\n#### Upload an audio file \n"
},
"typeVersion": 1
},
{
"id": "8b93808e-44cb-4f86-aac7-c8ead6cca669",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
-368
],
"parameters": {
"color": 2,
"width": 608,
"height": 352,
"content": "### Generate Transcript from Voice to text"
},
"typeVersion": 1
},
{
"id": "bb2672af-35a4-4e59-8654-baba7b97d624",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
-368
],
"parameters": {
"color": 6,
"width": 608,
"height": 352,
"content": "### Generate summary, Sentiment Analysis and send E-mail"
},
"typeVersion": 1
},
{
"id": "ea81f226-67de-4a39-92d8-bf315845cd28",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
-96
],
"parameters": {
"color": 5,
"width": 432,
"height": 272,
"content": " ### Assembly AI\n"
},
"typeVersion": 1
},
{
"id": "d9e4b12c-80e2-480d-980d-379c751c9531",
"name": "스티커 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-160,
-304
],
"parameters": {
"color": 5,
"width": 192,
"height": 224,
"content": " ### Assembly AI\n"
},
"typeVersion": 1
},
{
"id": "f0d81a15-4490-47bf-8414-56c6348ec1bd",
"name": "트랜스크립트 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
-96,
-240
],
"parameters": {
"url": "=https://api.assemblyai.com/v2/transcript/{{ $json.id }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<< PROVIDE YOUR ASSEMBLY API KEY >>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1957c1fe-7bc3-4db9-ab6e-f25daf24b5e7",
"name": "트랜스크립트 분석 (AI)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
320,
-256
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "={{ \"gpt-4.1-mini\" }}"
},
"options": {},
"messages": {
"values": [
{
"content": "You are a precise meeting analyst. Output must be valid JSON only."
},
{
"role": "system",
"content": "=Analyze the following transcript and return strict JSON:\n\nTranscript:\n{{ $node[\"Get Transcript\"].json[\"text\"] }}\n\nRequirements:\n- summary: 120–180 words, crisp and neutral\n- sentiment_label: one of [\"Positive\",\"Neutral\",\"Negative\"]\n- sentiment_score: number from -1 to 1\n- key_points: 5–8 bullet points (short phrases)\n- action_items: array of {owner, task, due?} if present, else []\n- notable_quotes: array of short verbatim quotes (<=120 chars)\n- topics: 3–6 tags\n\nReturn JSON with keys in snake_case:\n{\n \"summary\": \"...\",\n \"sentiment_label\": \"Positive\",\n \"sentiment_score\": 0.64,\n \"key_points\": [\"...\"],\n \"action_items\": [{\"owner\":\"Alice\",\"task\":\"...\",\"due\":\"2025-09-30\"}],\n \"notable_quotes\": [\"...\"],\n \"topics\": [\"...\",\"...\"]\n}\nNo preamble or Markdown—JSON only."
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "abJxg6bdFN3Tv87x",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "6c2e15bf-ee10-43b0-befc-49001a41a9e6",
"name": "분석 이메일 전송",
"type": "n8n-nodes-base.gmail",
"position": [
512,
-256
],
"webhookId": "176798ab-298e-4ea9-b5c7-cf72c212fbfa",
"parameters": {
"sendTo": "=<< PROVIDE YOUR GMAIL ID >>",
"message": "={{\n(() => {\n const d = $node[\"Transcript Analysis (AI)\"].json.message.content;\n\n const row = (label, value, i) =>\n `<tr style=\"background-color:${i % 2 === 0 ? '#f9f9f9' : '#ffffff'};\">\n <td style=\"padding:12px 16px;border:1px solid #ccc;font-weight:bold;width:220px;background:#f2f2f2;\">${label}</td>\n <td style=\"padding:12px 16px;border:1px solid #ccc;\">${value || ''}</td>\n </tr>`;\n\n const ul = arr => `<ul style=\"margin:0;padding-left:22px;\">${(arr || []).map(x => `<li>${x}</li>`).join('')}</ul>`;\n\n const actions = (d.action_items || []).length\n ? `<ol style=\"margin:0;padding-left:22px;\">${d.action_items.map(a =>\n `<li><strong>${a.owner || '—'}</strong>: ${a.task || ''}${a.due ? ' (Due: ' + a.due + ')' : ''}</li>`\n ).join('')}</ol>`\n : \"No explicit action items detected.\";\n\n let html = `\n <div style=\"font-family:Arial,sans-serif;font-size:16px;line-height:1.5;\">\n <h2 style=\"color:#2c3e50;border-bottom:2px solid #2c3e50;padding-bottom:6px;margin-bottom:12px;\">Transcript Analysis</h2>\n <table style=\"border-collapse:collapse;border:1px solid #ccc;width:100%;font-size:16px;\">\n <thead>\n <tr style=\"background:#2c3e50;color:#ffffff;\">\n <th style=\"padding:12px 16px;text-align:left;width:220px;\">Section</th>\n <th style=\"padding:12px 16px;text-align:left;\">Details</th>\n </tr>\n </thead>\n <tbody>\n ${row(\"Executive Summary\", d.summary, 0)}\n ${row(\"Sentiment\", `<strong>Label:</strong> ${d.sentiment_label || ''}<br/><strong>Score:</strong> ${d.sentiment_score ?? ''}`, 1)}\n ${row(\"Key Points\", ul(d.key_points), 2)}\n ${row(\"Action Items\", actions, 3)}\n ${row(\"Notable Quotes\", ul(d.notable_quotes), 4)}\n ${row(\"Topics\", (d.topics || []).join(\", \"), 5)}\n </tbody>\n </table>\n </div>\n `;\n\n return html;\n})()\n}}\n",
"options": {},
"subject": "=Transcript summary & sentiment – \n {{ $now.toISO() }} \n"
},
"credentials": {
"gmailOAuth2": {
"id": "Fy5fuwOcFQfLWPg8",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "19968c49-4e8b-41e4-89f6-54460867dbff",
"name": "스티커 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1248,
-720
],
"parameters": {
"color": 3,
"width": 736,
"height": 528,
"content": "### Execution flow Form submission + Google Drive link\n#### Receive Google Drive Link "
},
"typeVersion": 1
},
{
"id": "65a9f81c-f35a-445e-89d4-17388693fbef",
"name": "스티커 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
-448
],
"parameters": {
"color": 5,
"width": 448,
"height": 240,
"content": " ### Assembly AI\n"
},
"typeVersion": 1
},
{
"id": "30f56c7f-ede6-4037-bce3-a5c43227e28f",
"name": "종료",
"type": "n8n-nodes-base.noOp",
"position": [
704,
-256
],
"parameters": {},
"typeVersion": 1
},
{
"id": "00ade2c9-7a3e-4e92-abff-342c71c0bc8f",
"name": "링크에서 파일 ID 추출",
"type": "n8n-nodes-base.code",
"position": [
-1040,
-592
],
"parameters": {
"jsCode": "const link =\n $json['Provide the URL/Link of the audio file'] ||\n $json.drive_link ||\n '';\n\nconst m = link.match(/(?:\\/d\\/|id=)([A-Za-z0-9_-]{20,})/);\nif (!m) {\n throw new Error('Could not extract Google Drive file ID from the form field.');\n}\n\nreturn [{ fileId: m[1] }];\n"
},
"typeVersion": 2
},
{
"id": "9b86268c-57e6-4778-981b-f55d587be75d",
"name": "Google Drive에서 파일 가져오기",
"type": "n8n-nodes-base.googleDrive",
"position": [
-784,
-592
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.fileId }}"
},
"options": {
"binaryPropertyName": "file"
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "RVWXcWPinJDBkS1P",
"name": "<< PROVIDE THE DRIVE NAME >>"
}
},
"typeVersion": 3
},
{
"id": "504cfac0-19d2-4d0a-b7e8-97be9f450212",
"name": "AssemblyAI에 파일 업로드",
"type": "n8n-nodes-base.httpRequest",
"position": [
-928,
-368
],
"parameters": {
"url": "https://api.assemblyai.com/v2/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<< PROVIDE YOUR ASSEMBLY API KEY >>"
}
]
},
"inputDataFieldName": "file"
},
"typeVersion": 4.2
},
{
"id": "2b514d7f-49b2-4e82-aaa9-6ead8b7154bf",
"name": "Assembly AI에 오디오 파일 업로드1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-944,
-64
],
"parameters": {
"url": "https://api.assemblyai.com/v2/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<< PROVIDE YOUR ASSEMBLY API KEY >>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"inputDataFieldName": "Upload_file"
},
"typeVersion": 4.2
},
{
"id": "25c8cc0e-f416-4d3b-b0e6-e96388cff8e8",
"name": "AssemblyAI에서 트랜스크립트 요청",
"type": "n8n-nodes-base.httpRequest",
"position": [
-688,
-368
],
"parameters": {
"url": "https://api.assemblyai.com/v2/transcript",
"method": "POST",
"options": {},
"jsonBody": "={\n \"audio_url\": \"{{$json.upload_url}}\",\n \"speaker_labels\": false,\n \"auto_highlights\": true,\n \"punctuate\": true\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<< PROVIDE YOUR ASSEMBLY API KEY >>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "78b5a8c9-8f58-41c1-bcee-b149a183d1c0",
"name": "AssemblyAI에서 트랜스크립트 요청1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-704,
-64
],
"parameters": {
"url": "https://api.assemblyai.com/v2/transcript",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "audio_url",
"value": "={{ $json.upload_url }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "authorization",
"value": "<< PROVIDE YOUR ASSEMBLY API KEY >>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9fac3888-e100-4d1c-8af7-9764a930177f",
"name": "폼 제출 시 오디오",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1232,
-592
],
"webhookId": "5fcc6c50-5848-4f95-9cac-dc750a25dcc7",
"parameters": {
"options": {},
"formTitle": "Upload your Audio file",
"formFields": {
"values": [
{
"fieldLabel": "Name of the Audio file",
"requiredField": true
},
{
"fieldLabel": "Provide the URL/Link of the audio file",
"requiredField": true
},
{
"fieldType": "email",
"fieldLabel": "E-mail",
"placeholder": "abc@gmail.com",
"requiredField": true
}
]
},
"formDescription": "The audio file will be transcribed, Analysed and summarised. "
},
"typeVersion": 2.3
},
{
"id": "6faa3fbf-269b-4bd3-9ff3-633ba4e88603",
"name": "폼 제출 시 오디오1",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1216,
48
],
"webhookId": "ee0a5a6c-d73e-42e1-8f45-91c56db65f69",
"parameters": {
"options": {},
"formTitle": "Upload your Audio file",
"formFields": {
"values": [
{
"fieldLabel": "Name of the Audio file",
"requiredField": true
},
{
"fieldType": "file",
"fieldLabel": "Upload file",
"requiredField": true,
"acceptFileTypes": "e.g .MP4"
},
{
"fieldType": "email",
"fieldLabel": "E-mail",
"placeholder": "abc@gmail.com",
"requiredField": true
}
]
},
"formDescription": "The audio file will be transcribed, Analysed and summarised. "
},
"typeVersion": 2.3
},
{
"id": "28b5a48c-2a91-4583-bd8a-aae180890768",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2016,
-752
],
"parameters": {
"width": 656,
"height": 1200,
"content": "# Try It Out!\n\nThis n8n template demonstrates how to use AI to transform audio files into **actionable insights**. \nIt supports both **local file uploads** and **Google Drive links**. \n\n## How it works\n\n- Users upload an audio file **via form** or provide a **Google Drive link** \n- Files are passed to **AssemblyAI** for transcription \n- AssemblyAI converts audio → text with punctuation and highlights \n- A loop with **Wait + If** ensures the transcript is ready before moving forward \n- Transcript text is passed to **OpenAI** (via n8n LangChain) \n- OpenAI generates a **structured summary** including: \n - Executive summary \n - Sentiment label + score \n - Key points and highlights \n - Action items (if detected) \n - Notable quotes \n - Topics \n- The AI output is formatted into a **rich HTML email** \n- Gmail node sends the email to the provided recipient \n- The workflow ends with a clean, structured delivery \n\n---\n\n## How to use\n\n- Replace the **manual trigger** with your own (e.g., webhook or form submission) \n- Provide either a **local audio file** or a **Google Drive link** \n- Ensure AssemblyAI and Gmail credentials are set in n8n \n- Run the workflow end-to-end to generate insights \n- Check your email inbox for the **analysis report** \n- Use it for meetings, lectures, or podcasts instantly \n\n---\n\n## Requirements\n\n- n8n instance with HTTP + Gmail integration \n- **AssemblyAI account** for transcription \n- **OpenAI account** (or equivalent LLM integration) for analysis \n- Google Drive (optional, if using Drive links) \n\n---\n\n## Need Help?\n\n- Join the [n8n Forum](https://community.n8n.io) \n- Or connect with the n8n Discord community \n\nHappyAutomating !!! \n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "719df1dc-95af-42bb-9cca-3a83b2f4b6b6",
"connections": {
"b1163157-dc8c-4573-a967-93a9dea55dcf": {
"main": [
[
{
"node": "1957c1fe-7bc3-4db9-ab6e-f25daf24b5e7",
"type": "main",
"index": 0
}
],
[
{
"node": "45c9716a-3d65-4fdc-bdc1-8feb130ecf38",
"type": "main",
"index": 0
}
]
]
},
"45c9716a-3d65-4fdc-bdc1-8feb130ecf38": {
"main": [
[
{
"node": "f0d81a15-4490-47bf-8414-56c6348ec1bd",
"type": "main",
"index": 0
}
]
]
},
"f0d81a15-4490-47bf-8414-56c6348ec1bd": {
"main": [
[
{
"node": "b1163157-dc8c-4573-a967-93a9dea55dcf",
"type": "main",
"index": 0
}
]
]
},
"6c2e15bf-ee10-43b0-befc-49001a41a9e6": {
"main": [
[
{
"node": "30f56c7f-ede6-4037-bce3-a5c43227e28f",
"type": "main",
"index": 0
}
]
]
},
"9fac3888-e100-4d1c-8af7-9764a930177f": {
"main": [
[
{
"node": "00ade2c9-7a3e-4e92-abff-342c71c0bc8f",
"type": "main",
"index": 0
}
]
]
},
"1957c1fe-7bc3-4db9-ab6e-f25daf24b5e7": {
"main": [
[
{
"node": "6c2e15bf-ee10-43b0-befc-49001a41a9e6",
"type": "main",
"index": 0
}
]
]
},
"6faa3fbf-269b-4bd3-9ff3-633ba4e88603": {
"main": [
[
{
"node": "2b514d7f-49b2-4e82-aaa9-6ead8b7154bf",
"type": "main",
"index": 0
}
]
]
},
"00ade2c9-7a3e-4e92-abff-342c71c0bc8f": {
"main": [
[
{
"node": "9b86268c-57e6-4778-981b-f55d587be75d",
"type": "main",
"index": 0
}
]
]
},
"504cfac0-19d2-4d0a-b7e8-97be9f450212": {
"main": [
[
{
"node": "25c8cc0e-f416-4d3b-b0e6-e96388cff8e8",
"type": "main",
"index": 0
}
]
]
},
"9b86268c-57e6-4778-981b-f55d587be75d": {
"main": [
[
{
"node": "504cfac0-19d2-4d0a-b7e8-97be9f450212",
"type": "main",
"index": 0
}
]
]
},
"2b514d7f-49b2-4e82-aaa9-6ead8b7154bf": {
"main": [
[
{
"node": "78b5a8c9-8f58-41c1-bcee-b149a183d1c0",
"type": "main",
"index": 0
}
]
]
},
"25c8cc0e-f416-4d3b-b0e6-e96388cff8e8": {
"main": [
[
{
"node": "45c9716a-3d65-4fdc-bdc1-8feb130ecf38",
"type": "main",
"index": 0
}
]
]
},
"78b5a8c9-8f58-41c1-bcee-b149a183d1c0": {
"main": [
[
{
"node": "45c9716a-3d65-4fdc-bdc1-8feb130ecf38",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 문서 추출, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
지능형 문서 흐름
Foxit과 Diffbot을 사용하여 기관 정보를 추출하고 문서를 요약합니다
If
Code
Wait
+
If
Code
Wait
16 노드Raymond Camden
문서 추출
리드 생성 및 이메일 워크플로
Google 지도, SendGrid 및 AI를 사용한 B2B 잠재 고객 개발 및 이메일 마케팅 자동화
If
Set
Code
+
If
Set
Code
141 노드Ezema Kingsley Chibuzo
리드 생성
Gemini와 Jina AI를 사용한 공급업체 실사 연구 자동화
Gemini 및 Jina AI를 사용한 공급업체 실사 조사 자동화
If
Set
Code
+
If
Set
Code
27 노드Adnan
문서 추출
AI 및 Gmail을 사용하여 YNAB 내 Amazon 거래 메모 자동 업데이트
AI 및 Gmail을 사용하여 YNAB의 Amazon 거래 메모 자동 업데이트
If
Set
Wait
+
If
Set
Wait
30 노드Angel Menendez
문서 추출
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
사진 자동 OCR → AI 요약 → Google 스프레드시트와 Gmail 알림
OCR.space를 사용하여 Google Drive 이미지에서 텍스트를 추출하고 OpenRouter AI를 통해 요약을 테이블과 Gmail 알림으로 생성
Code
Gmail
Google Drive
+
Code
Gmail
Google Drive
15 노드Tsubasa Shukuwa
문서 추출
워크플로우 정보
난이도
고급
노드 수22
카테고리2
노드 유형10
저자
Sridevi Edupuganti
@edupugantiI help customers experience 10x faster ROI through AI Automation. AI Generalist | Pursuing Generative AI & ML(IIT-G) | Google Certified Prompt Engineer | Ex-VP | Ex-Microsoft | ISB Certified CTO & AI Leader | Azure & AI Strategist | 5X Azure | n8n level2 | Wellness Advocate & Cult Ninja
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유