Transcription et résumés automatisés de réunions Fireflies
Ceci est unDocument Extraction, AI Summarizationworkflow d'automatisation du domainecontenant 26 nœuds.Utilise principalement des nœuds comme Set, Code, Gmail, Merge, Webhook. Utiliser Gemini et Gmail pour automatiser le résumé des réunions à partir des transcriptions Fireflies
- •Compte Google et informations d'identification Gmail API
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Clé API OpenAI
Nœuds utilisés (26)
Catégorie
{
"id": "MBDLFA4yk0BfFQcM",
"meta": {
"instanceId": "a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462",
"templateCredsSetupCompleted": true
},
"name": "Fireflies Meeting Transcript & Summary Automation",
"tags": [],
"nodes": [
{
"id": "2e6b7379-7002-48ce-b96e-9ce85802b158",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-784,
112
],
"webhookId": "880cfe0f-5c81-46cd-b717-be89dfa045cf",
"parameters": {
"path": "880cfe0f-5c81-46cd-b717-be89dfa045cf",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "171f9f42-d428-4788-b922-eacdf20ec81a",
"name": "Obtenir une transcription",
"type": "@firefliesai/n8n-nodes-fireflies.fireflies",
"position": [
496,
112
],
"parameters": {
"transcriptId": "={{ $json.body.meetingId }}"
},
"credentials": {
"firefliesApi": {
"id": "86mwg8Qt4yqONbKB",
"name": "Fireflies account"
}
},
"typeVersion": 1
},
{
"id": "ee48206c-8bfc-4dd7-aee4-2ff2d8396b25",
"name": "Lors du clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-784,
-80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e00e737b-7e6a-46d2-8bb4-6c3bdd268c90",
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-784,
304
],
"parameters": {
"filters": {
"q": "subject:Your meeting recap",
"sender": "fred@fireflies.ai"
},
"pollTimes": {
"item": [
{
"mode": "everyHour",
"minute": 1
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "nyuHvSX5HuqfMPlW",
"name": "Gmail account (n3w.it)"
}
},
"typeVersion": 1.2
},
{
"id": "ba732ec4-b1d0-456f-93e1-8697f327207f",
"name": "Obtenir un message",
"type": "n8n-nodes-base.gmail",
"position": [
-512,
304
],
"webhookId": "97c9b3fa-56ea-4a0d-867e-7084579c6701",
"parameters": {
"simple": false,
"options": {},
"messageId": "={{ $json.id }}",
"operation": "get"
},
"credentials": {
"gmailOAuth2": {
"id": "nyuHvSX5HuqfMPlW",
"name": "Gmail account (n3w.it)"
}
},
"typeVersion": 2.1
},
{
"id": "73d609de-1675-488c-9d8c-68adcaf53870",
"name": "Extracteur d'informations",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-96,
304
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
},
"attributes": {
"attributes": [
{
"name": "meeting_notes",
"required": true,
"description": "Estrai il link del meeting"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c4c85559-784b-4b8b-a944-7a78b0266328",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-160,
512
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "TefveNaDaMERl1hY",
"name": "OpenAi account (Eure)"
}
},
"typeVersion": 1.2
},
{
"id": "bd1ec6e4-cbe1-499e-9a72-dfc3c1a8395c",
"name": "Code1",
"type": "n8n-nodes-base.code",
"position": [
256,
304
],
"parameters": {
"jsCode": "// Loop over input items and extract meeting ID from the URL\nfor (const item of $input.all()) {\n const url = item.json.output.meeting_notes;\n \n // Find the position of \"::\" and \"?\"\n const startIndex = url.indexOf(\"::\") + 2;\n const endIndex = url.indexOf(\"?\");\n \n // Extract the meeting ID\n const meetingId = url.substring(startIndex, endIndex);\n \n // Replace the entire item with the desired structure\n item.json = { \n body: { \n meetingId: meetingId \n } \n };\n}\nreturn $input.all();"
},
"typeVersion": 2
},
{
"id": "76cf2b34-d1a4-4a4e-88c9-cae79f7133ee",
"name": "Définir le lien de réunion",
"type": "n8n-nodes-base.set",
"position": [
-304,
304
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "095e5770-57bb-4471-83a6-f83a00887c9d",
"name": "text",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ad53b5f9-7b95-49f3-aca6-cd9b6e5aa8de",
"name": "Définir MeetingId",
"type": "n8n-nodes-base.set",
"position": [
-304,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2b842573-706d-499d-a106-8808f39a9920",
"name": "body.meetingId",
"type": "string",
"value": "01K18TW3MEX4XQ3TBG4RAD88HX"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3da55996-bd1f-43f1-8d10-4294db196b45",
"name": "Envoyer un message1",
"type": "n8n-nodes-base.gmail",
"position": [
2144,
576
],
"webhookId": "a9460f49-968a-412d-8805-9c583f23c52f",
"parameters": {
"sendTo": "YOUR_EMAIL",
"message": "={{ $json.data }}",
"options": {
"appendAttribution": false
},
"subject": "=Short Meeting Recap"
},
"credentials": {
"gmailOAuth2": {
"id": "nyuHvSX5HuqfMPlW",
"name": "Gmail account (n3w.it)"
}
},
"typeVersion": 2.1
},
{
"id": "2aa61dca-63be-4085-a994-0be038738ab3",
"name": "Fusionner",
"type": "n8n-nodes-base.merge",
"position": [
1824,
112
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "d51ab401-514d-4683-9cf6-b9534b634b5e",
"name": "Agréger",
"type": "n8n-nodes-base.aggregate",
"position": [
2144,
112
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "text",
"fieldToAggregate": "content.parts[0].text"
}
]
}
},
"typeVersion": 1
},
{
"id": "4ea0f903-9b61-4c0c-a85d-a084ebf865d1",
"name": "Définir les phrases",
"type": "n8n-nodes-base.set",
"position": [
816,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0065541b-565a-484a-b52f-c89a579392b7",
"name": "sentences",
"type": "array",
"value": "={{ $json.data.sentences }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "df665dab-2ee4-42e6-bd43-0ee3e2349335",
"name": "Définir le résumé",
"type": "n8n-nodes-base.set",
"position": [
816,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3b86bb4c-e4fc-4af7-a644-cbef02675eed",
"name": "short_summary",
"type": "string",
"value": "={{ $json.data.summary.short_summary }}"
},
{
"id": "fc5a137a-a77d-4480-8c82-f7066ba2a9e5",
"name": "short_overview",
"type": "string",
"value": "={{ $json.data.summary.short_overview }}"
},
{
"id": "b84c63d6-2b28-4d0a-bb6e-b3c1b74cd0df",
"name": "overview",
"type": "string",
"value": "={{ $json.data.summary.overview }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "00e4b3cf-5fb0-4818-b361-c5eef944f0e8",
"name": "Transcription complète",
"type": "n8n-nodes-base.code",
"position": [
1072,
-80
],
"parameters": {
"jsCode": "// Accedi all'array sentences dal primo item\nconst transcriptArray = $input.first().json.sentences;\n\n// Verifica che l'array esista\nif (!transcriptArray || !Array.isArray(transcriptArray)) {\n throw new Error('Array sentences non trovato o non è un array');\n}\n\n// Crea la trascrizione combinata\nlet fullTranscript = '';\n\ntranscriptArray.forEach((segment) => {\n // Usa text_cleanup se disponibile, altrimenti fallback su text o raw_text\n const text = segment.ai_filters?.text_cleanup || segment.text || segment.raw_text;\n const speakerName = segment.speaker_name || 'Unknown Speaker';\n \n // Aggiungi il segmento alla trascrizione completa\n fullTranscript += `${speakerName}: ${text}\\n`;\n});\n\n// Rimuovi l'ultimo \\n se presente\nfullTranscript = fullTranscript.trim();\n\n// Loop over input items e aggiungi il campo full_transcript\nfor (const item of $input.all()) {\n item.json.full_transcript = fullTranscript;\n item.json.total_segments = transcriptArray.length;\n}\n\n//return $input.all();\n// Restituisci solo i campi richiesti\nreturn [{\n json: {\n full_transcript: fullTranscript,\n total_segments: transcriptArray.length\n }\n}];"
},
"typeVersion": 2
},
{
"id": "d2de3745-e563-4c52-9b0d-8754ffc45b31",
"name": "Transcription complète en MD",
"type": "n8n-nodes-base.markdown",
"position": [
1808,
-80
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json.content.parts[0].text }}"
},
"typeVersion": 1
},
{
"id": "09926a2c-386d-4da6-9087-5d9bf01a274c",
"name": "Envoyer le résumé complet de la réunion",
"type": "n8n-nodes-base.gmail",
"position": [
2128,
-80
],
"webhookId": "a9460f49-968a-412d-8805-9c583f23c52f",
"parameters": {
"sendTo": "YOUR_EMAIL",
"message": "={{ $json.data }}",
"options": {
"appendAttribution": false
},
"subject": "=Full meeting summary: {{ $('Gmail Trigger').item.json.Subject }}"
},
"credentials": {
"gmailOAuth2": {
"id": "nyuHvSX5HuqfMPlW",
"name": "Gmail account (n3w.it)"
}
},
"typeVersion": 2.1
},
{
"id": "9a46a1ad-72c8-4d36-a35b-fa5ee5fd0a22",
"name": "Expert en transcriptions de réunions",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1312,
-80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-pro",
"cachedResultName": "models/gemini-2.5-pro"
},
"options": {
"systemMessage": "=You're an expert at interpreting meeting transcripts. Summarize the text provided to you in Italian."
},
"messages": {
"values": [
{
"content": "=Full transcript:\n{{ $json.full_transcript }}"
}
]
}
},
"credentials": {
"googlePalmApi": {
"id": "AaNPKXAphyMzRgfA",
"name": "Google Gemini(PaLM) (Eure)"
}
},
"typeVersion": 1
},
{
"id": "fa0b5315-4211-48da-9a37-15e770d2cfd8",
"name": "Convertir en MD",
"type": "n8n-nodes-base.markdown",
"position": [
2528,
352
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json.content.parts[0].text }}"
},
"typeVersion": 1
},
{
"id": "1b18001c-bd1a-4976-b4ab-c39b207d9cc0",
"name": "Rédacteur d'email",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
2128,
352
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-pro",
"cachedResultName": "models/gemini-2.5-pro"
},
"options": {
"systemMessage": "=You must combine the two texts provided to you and make a complete email about what was discussed in the meeting in a single text to send to the client."
},
"messages": {
"values": [
{
"content": "=Summary\n'''\n{{ $json.text }}\n'''"
}
]
}
},
"credentials": {
"googlePalmApi": {
"id": "AaNPKXAphyMzRgfA",
"name": "Google Gemini(PaLM) (Eure)"
}
},
"typeVersion": 1
},
{
"id": "b8e6610b-0e1c-423d-adc7-ca954e9f4c9b",
"name": "Expert en résumé de réunion",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1312,
240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-pro",
"cachedResultName": "models/gemini-2.5-pro"
},
"options": {
"systemMessage": "=You're an expert at interpreting meeting transcripts. You aggregate and summarize the texts provided to you."
},
"messages": {
"values": [
{
"content": "=Short summary:\n{{ $json.short_summary }}\n\nShort overview:\n{{ $json.short_overview }}\n\nOverview:\n{{ $json.overview }}"
}
]
}
},
"credentials": {
"googlePalmApi": {
"id": "AaNPKXAphyMzRgfA",
"name": "Google Gemini(PaLM) (Eure)"
}
},
"typeVersion": 1
},
{
"id": "6cead83a-0661-4e2d-a1f6-d2d8469a07ae",
"name": "Rédiger un email au client",
"type": "n8n-nodes-base.gmail",
"position": [
2752,
352
],
"webhookId": "a9460f49-968a-412d-8805-9c583f23c52f",
"parameters": {
"message": "={{ $json.data }}",
"options": {},
"subject": "Recap Meeting",
"resource": "draft"
},
"credentials": {
"gmailOAuth2": {
"id": "nyuHvSX5HuqfMPlW",
"name": "Gmail account (n3w.it)"
}
},
"typeVersion": 2.1
},
{
"id": "a879cf0d-3d91-45bb-b58d-6b92b5aa2b19",
"name": "Récapitulatif en MD",
"type": "n8n-nodes-base.markdown",
"position": [
1808,
576
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json.content.parts[0].text }}"
},
"typeVersion": 1
},
{
"id": "5c0ee665-875d-4676-963d-c36ea029c62c",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-784,
-672
],
"parameters": {
"color": 3,
"width": 832,
"height": 352,
"content": "## Fireflies Meeting Transcript & Summary Automation\nThis workflow automates the process of retrieving meeting transcripts from [Fireflies.ai](https://app.fireflies.ai/login?referralCode=01K0V2Z1QHY76ZGY9450251C99), extracting and summarizing relevant content using Google Gemini, and sending or drafting well-formatted summaries and emails via Gmail.\n\n**Fireflies** is an AI-powered meeting assistant that automatically records, transcribes, and summarizes meetings. It integrates with popular video conferencing tools like Zoom, Google Meet, and Microsoft Teams, helping teams capture key insights and action items without manual note-taking.\n\n\nThis workflow automates meeting recap generation, from email detection to AI-powered summarization and delivery.\n\n3 possible triggers:\n- Manual trigger (set-up the MeetingId)\n- Webhook trigger\n- Gmail trigger\n"
},
"typeVersion": 1
},
{
"id": "d889fe43-dc9b-4147-b754-536d05826c03",
"name": "Note autocollante1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-784,
-288
],
"parameters": {
"width": 832,
"height": 144,
"content": "### PRELIMINARY STEPS\n- Sign up for FREE to [Fireflies.ai](https://app.fireflies.ai/login?referralCode=01K0V2Z1QHY76ZGY9450251C99) \n- Get API Key in \"Settings\"->\"Developer Settings\"->\"API Key\"\n- If you want to activate \"Webhook\", set n8n Webhook trigger url on \"Settings\"->\"Developer Settings\"->\"Webhook\"\n- In send:message Gmail node set your email address"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "2f8ef654-3e08-4219-bc75-281c8d8dff4f",
"connections": {
"bd1ec6e4-cbe1-499e-9a72-dfc3c1a8395c": {
"main": [
[
{
"node": "171f9f42-d428-4788-b922-eacdf20ec81a",
"type": "main",
"index": 0
}
]
]
},
"2aa61dca-63be-4085-a994-0be038738ab3": {
"main": [
[
{
"node": "d51ab401-514d-4683-9cf6-b9534b634b5e",
"type": "main",
"index": 0
}
]
]
},
"fa0b5315-4211-48da-9a37-15e770d2cfd8": {
"main": [
[
{
"node": "6cead83a-0661-4e2d-a1f6-d2d8469a07ae",
"type": "main",
"index": 0
}
]
]
},
"2e6b7379-7002-48ce-b96e-9ce85802b158": {
"main": [
[
{
"node": "171f9f42-d428-4788-b922-eacdf20ec81a",
"type": "main",
"index": 0
}
]
]
},
"d51ab401-514d-4683-9cf6-b9534b634b5e": {
"main": [
[
{
"node": "1b18001c-bd1a-4976-b4ab-c39b207d9cc0",
"type": "main",
"index": 0
}
]
]
},
"d2de3745-e563-4c52-9b0d-8754ffc45b31": {
"main": [
[
{
"node": "09926a2c-386d-4da6-9087-5d9bf01a274c",
"type": "main",
"index": 0
}
]
]
},
"a879cf0d-3d91-45bb-b58d-6b92b5aa2b19": {
"main": [
[
{
"node": "3da55996-bd1f-43f1-8d10-4294db196b45",
"type": "main",
"index": 0
}
]
]
},
"df665dab-2ee4-42e6-bd43-0ee3e2349335": {
"main": [
[
{
"node": "b8e6610b-0e1c-423d-adc7-ca954e9f4c9b",
"type": "main",
"index": 0
}
]
]
},
"1b18001c-bd1a-4976-b4ab-c39b207d9cc0": {
"main": [
[
{
"node": "fa0b5315-4211-48da-9a37-15e770d2cfd8",
"type": "main",
"index": 0
}
]
]
},
"4ea0f903-9b61-4c0c-a85d-a084ebf865d1": {
"main": [
[
{
"node": "00e4b3cf-5fb0-4818-b361-c5eef944f0e8",
"type": "main",
"index": 0
}
]
]
},
"ba732ec4-b1d0-456f-93e1-8697f327207f": {
"main": [
[
{
"node": "76cf2b34-d1a4-4a4e-88c9-cae79f7133ee",
"type": "main",
"index": 0
}
]
]
},
"e00e737b-7e6a-46d2-8bb4-6c3bdd268c90": {
"main": [
[
{
"node": "ba732ec4-b1d0-456f-93e1-8697f327207f",
"type": "main",
"index": 0
}
]
]
},
"ad53b5f9-7b95-49f3-aca6-cd9b6e5aa8de": {
"main": [
[
{
"node": "171f9f42-d428-4788-b922-eacdf20ec81a",
"type": "main",
"index": 0
}
]
]
},
"00e4b3cf-5fb0-4818-b361-c5eef944f0e8": {
"main": [
[
{
"node": "9a46a1ad-72c8-4d36-a35b-fa5ee5fd0a22",
"type": "main",
"index": 0
}
]
]
},
"171f9f42-d428-4788-b922-eacdf20ec81a": {
"main": [
[
{
"node": "4ea0f903-9b61-4c0c-a85d-a084ebf865d1",
"type": "main",
"index": 0
},
{
"node": "df665dab-2ee4-42e6-bd43-0ee3e2349335",
"type": "main",
"index": 0
}
]
]
},
"76cf2b34-d1a4-4a4e-88c9-cae79f7133ee": {
"main": [
[
{
"node": "73d609de-1675-488c-9d8c-68adcaf53870",
"type": "main",
"index": 0
}
]
]
},
"c4c85559-784b-4b8b-a944-7a78b0266328": {
"ai_languageModel": [
[
{
"node": "73d609de-1675-488c-9d8c-68adcaf53870",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"73d609de-1675-488c-9d8c-68adcaf53870": {
"main": [
[
{
"node": "bd1ec6e4-cbe1-499e-9a72-dfc3c1a8395c",
"type": "main",
"index": 0
}
]
]
},
"b8e6610b-0e1c-423d-adc7-ca954e9f4c9b": {
"main": [
[
{
"node": "a879cf0d-3d91-45bb-b58d-6b92b5aa2b19",
"type": "main",
"index": 0
},
{
"node": "2aa61dca-63be-4085-a994-0be038738ab3",
"type": "main",
"index": 1
}
]
]
},
"9a46a1ad-72c8-4d36-a35b-fa5ee5fd0a22": {
"main": [
[
{
"node": "d2de3745-e563-4c52-9b0d-8754ffc45b31",
"type": "main",
"index": 0
},
{
"node": "2aa61dca-63be-4085-a994-0be038738ab3",
"type": "main",
"index": 0
}
]
]
},
"ee48206c-8bfc-4dd7-aee4-2ff2d8396b25": {
"main": [
[
{
"node": "ad53b5f9-7b95-49f3-aca6-cd9b6e5aa8de",
"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
Davide
@n3witaliaFull-stack Web Developer based in Italy specialising in Marketing & AI-powered automations. For business enquiries, send me an email at info@n3w.it or add me on Linkedin.com/in/davideboizza
Partager ce workflow