Uniquement soumission de formulaire _ Transcription audio double source --> Résumé IA et analyse de sentiment --> Livraison Gmail
Ceci est unDocument Extraction, AI Summarizationworkflow d'automatisation du domainecontenant 22 nœuds.Utilise principalement des nœuds comme If, Code, Wait, Gmail, FormTrigger. Audio en briefing exécutif : transcription et analyse avec AssemblyAI et GPT-4
- •Compte Google et informations d'identification Gmail API
- •Informations d'identification Google Drive API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (22)
Catégorie
{
"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": "Attente",
"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": "Note adhésive1",
"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": "Note adhésive2",
"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": "Note adhésive3",
"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": "Note adhésive4",
"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": "Note adhésive6",
"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": "Obtenir la transcription",
"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": "Analyse de transcription (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": "Envoyer l'analyse par email",
"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": "Note adhésive7",
"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": "Note adhésive8",
"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": "Fin",
"type": "n8n-nodes-base.noOp",
"position": [
704,
-256
],
"parameters": {},
"typeVersion": 1
},
{
"id": "00ade2c9-7a3e-4e92-abff-342c71c0bc8f",
"name": "Extraire l'ID du fichier depuis le lien",
"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": "Récupérer le fichier depuis 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": "Téléverser le fichier vers 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": "Téléverser le fichier audio vers 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": "Demander la transcription à 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": "Demander la transcription à 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 lors de la soumission du formulaire",
"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 lors de la soumission du formulaire1",
"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": "Note adhésive",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Extraction de documents, Résumé IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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
Partager ce workflow