Solo envío de formulario_ Transcripción de audio de doble fuente --> Resumen y análisis de sentimiento de IA --> Entrega por Gmail
Este es unDocument Extraction, AI Summarizationflujo de automatización del dominio deautomatización que contiene 22 nodos.Utiliza principalmente nodos como If, Code, Wait, Gmail, FormTrigger. Audio a ejecutivo de briefing: transcripción y análisis con AssemblyAI y GPT-4
- •Cuenta de Google y credenciales de API de Gmail
- •Credenciales de API de Google Drive
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Clave de API de OpenAI
Nodos utilizados (22)
{
"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": "Esperar",
"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": "Si",
"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": "Nota adhesiva1",
"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": "Nota adhesiva2",
"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": "Nota adhesiva3",
"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": "Nota adhesiva4",
"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": "Nota adhesiva6",
"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": "Obtener transcripción",
"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": "Análisis de transcripción (IA)",
"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": "Enviar correo de análisis",
"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": "Nota adhesiva7",
"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": "Nota adhesiva8",
"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": "El fin",
"type": "n8n-nodes-base.noOp",
"position": [
704,
-256
],
"parameters": {},
"typeVersion": 1
},
{
"id": "00ade2c9-7a3e-4e92-abff-342c71c0bc8f",
"name": "Extraer ID de archivo desde enlace",
"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": "Obtener archivo de 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": "Subir archivo a 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": "Subir archivo de audio a Assembly AI1",
"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": "Solicitar transcripción a 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": "Solicitar transcripción a AssemblyAI1",
"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": "Audio_on form submission",
"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": "Audio_on form submission1",
"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": "Nota adhesiva",
"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
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Extracción de documentos, Resumen de IA
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
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
Compartir este flujo de trabajo