Génération de résumés visuels et d'insights de graphes de connaissances pour vos e-mails
Ceci est unOther, AIworkflow d'automatisation du domainecontenant 38 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, Gmail, combinant la technologie d'intelligence artificielle pour une automatisation intelligente. Générer des résumés visuels et des aperçus de graphiques de connaissances pour vos e-mails
- •Compte Google et informations d'identification Gmail API
- •Token Bot Telegram
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API Google Gemini
Nœuds utilisés (38)
Catégorie
{
"id": "ddCCP7XAKuUqNKbU",
"meta": {
"instanceId": "2a26454b0172ffcb8d70ba77c235b1209f92cd71bf06c79ba609c7173b416d68",
"templateCredsSetupCompleted": true
},
"name": "Generate Visual Summary & Knowledge Graph Insights for Your Email",
"tags": [
{
"id": "sJk9cUvmMU8FkJXv",
"name": "AI",
"createdAt": "2025-05-20T13:16:15.636Z",
"updatedAt": "2025-05-20T13:16:15.636Z"
}
],
"nodes": [
{
"id": "bb0edf9a-910c-41fc-bcc1-f09e162045c2",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2040,
-240
],
"parameters": {
"width": 380,
"height": 1140,
"content": "## 1. How to Trigger?\n\n### a. via a password-protected private URL form where you can specify which emails you want to analyze\n\n### b. daily trigger (for regular automated updates)\n\n### c. manual trigger\n\n### d. webhook\n\nTo select a trigger, activate it while deactivating the others.\n\nTo learn more about the email search criteria, refer to this [Google page](https://support.google.com/mail/answer/7190?hl=en&co=GENIE.Platform%3DAndroid)\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "3a974df3-2b2a-4ce2-aff4-74b3771d2e5d",
"name": "InfraNodus Question Generator",
"type": "n8n-nodes-base.httpRequest",
"position": [
2460,
200
],
"parameters": {
"url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&optimize=gap&includeGraph=false&includeGraphSummary=true",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "aiTopics",
"value": "true"
},
{
"name": "requestMode",
"value": "question"
},
{
"name": "name",
"value": "={{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "FPDx6PA5CtzGEIQc",
"name": "InfraNodus DeeMeeTree API Key"
}
},
"typeVersion": 4.2
},
{
"id": "81a91a82-e1c5-4ff6-873a-3d70d4635637",
"name": "Nettoyer le texte et organiser en énoncés",
"type": "n8n-nodes-base.code",
"position": [
1200,
200
],
"parameters": {
"jsCode": "\nlet statements = []\nfor (const item of $input.all()) {\n\n item.json.from?.forEach((emailOrigin, index) => {\n const textContent = item.json.text[index]?.split('\\n').join(' ');\n const cleanTextContent = removeHtmlCssScript(textContent)\n const cleanDate = new Date().toDateString()\n statements.push('[[' + emailOrigin + ']] ' + '[' + cleanDate + '] ' + cleanTextContent)\n })\n}\n\nreturn { statements: statements }\n\nfunction removeHtmlCssScript(text) {\n if (!text || typeof text !== 'string') {\n return '';\n }\n \n let cleanText = text;\n \n // Remove script tags and their content (case insensitive)\n cleanText = cleanText.replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi, '');\n \n // Remove style tags and their content (case insensitive)\n cleanText = cleanText.replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi, '');\n \n // Remove HTML comments\n cleanText = cleanText.replace(/<!--[\\s\\S]*?-->/g, '');\n \n // Remove all remaining HTML tags\n cleanText = cleanText.replace(/<[^>]*>/g, '');\n \n // Decode common HTML entities\n const htmlEntities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n ' ': ' ',\n '©': '©',\n '®': '®',\n '™': '™'\n };\n \n Object.keys(htmlEntities).forEach(entity => {\n const regex = new RegExp(entity, 'g');\n cleanText = cleanText.replace(regex, htmlEntities[entity]);\n });\n \n // Clean up extra whitespace\n cleanText = cleanText.replace(/\\s+/g, ' ').trim();\n \n return cleanText;\n}"
},
"typeVersion": 2
},
{
"id": "7a1946fe-5e84-402a-a728-71288cc4b160",
"name": "Note autocollante1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2040,
-880
],
"parameters": {
"color": 6,
"width": 1280,
"height": 600,
"content": "# Visual Summary & Knowledge Graph Insights for Your Gmail\n\n## Use this workflow to filter your emails by search terms, date, labels, or AI-defined criteria and to visualize the main topics and gaps using the [InfraNodus knowledge graph](https://infranodus.com). Generate topical summaries and insights based on the gaps, receive them via Telegram.\n\n### Some interesting use cases:\n- Analyze all your personal messages for the week to get an overview of the main topics \n- Analyze all your Sent messages to find recurrent topics and gaps and generate ideas based. on those gaps\n- Generate ideas based on specific message filter (Personal, Promos, from a specific person, AI-defined criteria, e.g. urgency)\n- Get an overview of an interaction with a specific person / company\n- Get an overview of your notes\n- Generate ideas based on your correspondence\n- Learn about various n8n nodes useful for email processing, filtering, and data conversion\n- Never miss important topics \n\n\n### To set up (takes 2 minutes):\n- Connect your Gmail account in steps 3 and 4 (best works if you have a Google cloud Oauth key, which you can use for other Google services)\n- Get your [InfraNodus API](https://infranodus.com/api-access) key and add it in steps 7 and 8\n- Connect to your Telegram bot (takes 30 secs to set up via [@botfather](https://t.me/botfather) in step 8\n- Use a Form trigger to experiment or specify your default parameters in the Step 2 node\n"
},
"typeVersion": 1
},
{
"id": "599264b8-bd89-4ed9-8645-725ebd005747",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
120,
500
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-preview-04-17"
},
"credentials": {
"googlePalmApi": {
"id": "ivswOFTY8MYDbj5b",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "e7251d9c-e247-4b48-a7db-4b7bba057777",
"name": "Un label a-t-il été fourni ?",
"type": "n8n-nodes-base.if",
"position": [
-1080,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a8278945-a9a1-45c6-809f-b9282f6de0ed",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json[\"Label Filter\"] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "6a1fdf73-fa60-46d6-8980-e192735fbb54",
"name": "Analyser les extraits ?",
"type": "n8n-nodes-base.if",
"position": [
-620,
380
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "802f2028-04bb-43ad-befa-416c0afc5515",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json['Analyze Full Email Text?'] }}",
"rightValue": "Snippets"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "daa2cf5f-e8b5-45a4-ab73-feb5981d665d",
"name": "Analyser les extraits d'e-mails filtrés ?",
"type": "n8n-nodes-base.if",
"position": [
-600,
60
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "82abd9a8-375b-4c3f-8f19-be6b3c1b8e80",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json['Analyze Full Email Text?'] }}",
"rightValue": "Snippets"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9cae8722-13c0-4090-81c3-ec60ced40ec4",
"name": "Filtrer les e-mails par label",
"type": "n8n-nodes-base.filter",
"notes": "To only show personal mails, use CATEGORY_PERSONAL in the filters (or any other label you like)\nCATEGORY_PROMOTIONS - for promos\nSENT - for your sent messages",
"position": [
-880,
160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "731d1986-b8e1-480f-b956-0e9e7d2b9df8",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
},
"leftValue": "={{ $json.labels.map(label => label.name) }}",
"rightValue": "={{ $('Assign Processing Settings').item.json['Label Filter'] }}"
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "204e3171-f4bf-4c6f-a0a9-3ba9ae9f869d",
"name": "Obtenir le contenu complet du message",
"type": "n8n-nodes-base.gmail",
"position": [
-280,
380
],
"webhookId": "e79f9021-02a7-4506-8aa8-b21a6b823815",
"parameters": {
"simple": false,
"options": {},
"messageId": "={{ $json.id }}",
"operation": "get"
},
"credentials": {
"gmailOAuth2": {
"id": "pL8OjzEMWakSY1Nk",
"name": "Gmail paranyushkin"
}
},
"typeVersion": 2.1
},
{
"id": "825e11fe-5f2c-41ef-ade0-1136607decbd",
"name": "Utiliser l'IA pour filtrer davantage les e-mails ?",
"type": "n8n-nodes-base.if",
"position": [
-20,
220
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6ccf71c6-0f1b-4560-82c7-0185946af0a2",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json['Email Type Description'] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "f504bc20-2385-42f1-80da-f7129a4dcb6e",
"name": "Texte du message ou extrait présent ?",
"type": "n8n-nodes-base.filter",
"position": [
160,
120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "eaffd686-c04b-4327-b2c5-3b0da2eee00e",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.text || $json.snippet }}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "52802d59-e9a0-44ec-9ffc-0ecd1ad60354",
"name": "Classer les e-mails",
"type": "@n8n/n8n-nodes-langchain.textClassifier",
"position": [
300,
280
],
"parameters": {
"options": {},
"inputText": "={{ $json.text || $json.snippet }}",
"categories": {
"categories": [
{
"category": "Matched User's Condition",
"description": "={{ $('Assign Processing Settings').item.json['Email Type Description'] }}"
},
{
"category": "Spam and Notifications",
"description": "Spam, automatic notifications, generic, non-personalized emails, non-personalized commercial offers, promotions, discounts"
}
]
}
},
"typeVersion": 1
},
{
"id": "0fe84425-5e0b-4eb7-b8fa-f6e8cc0bfee2",
"name": "Champ texte présent ?",
"type": "n8n-nodes-base.if",
"position": [
760,
200
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9448b606-0961-4852-8917-408e5fef7df9",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "5759e919-6f02-49c3-9012-c3bdfa29f5a3",
"name": "Agréger à partir des textes complets des e-mails",
"type": "n8n-nodes-base.aggregate",
"position": [
980,
80
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "from",
"fieldToAggregate": "from.text"
},
{
"renameField": true,
"outputFieldName": "text",
"fieldToAggregate": "text"
},
{
"renameField": true,
"outputFieldName": "date",
"fieldToAggregate": "date"
}
]
}
},
"typeVersion": 1
},
{
"id": "d38a14d2-118b-45cd-b6fa-f7ef3811e9ea",
"name": "Agréger à partir des extraits d'e-mails",
"type": "n8n-nodes-base.aggregate",
"position": [
980,
360
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "from",
"fieldToAggregate": "From"
},
{
"renameField": true,
"outputFieldName": "text",
"fieldToAggregate": "snippet"
},
{
"renameField": true,
"outputFieldName": "date",
"fieldToAggregate": "internalDate"
}
]
}
},
"typeVersion": 1
},
{
"id": "bb3ff757-5cfc-4d1e-9544-0ae411978c9f",
"name": "Attendre avant de générer des questions",
"type": "n8n-nodes-base.wait",
"position": [
1980,
160
],
"webhookId": "c6d4fa4d-223a-47c3-b026-a002daa05b3b",
"parameters": {
"amount": 60
},
"typeVersion": 1.1
},
{
"id": "3c912db2-015b-4284-9c12-7fd0891bf2a6",
"name": "Envoyer le lien du graphe et le résumé via Telegram",
"type": "n8n-nodes-base.telegram",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
2800,
420
],
"webhookId": "51b1be86-6889-420c-b0c6-e95f9b464b97",
"parameters": {
"text": "=🧬 The knowledge graph is ready at [https://infranodus.com/your_user_name/{{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}/edit](https://infranodus.com/your_user_name/{{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}/edit)\n\nTopical Summary: \n{{ $('InfraNodus AI Summary & Graph Link').item.json.aiAdvice[0].text }}",
"chatId": "use_get_id_bot_to_get_it",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "UXVSOiGwy2SPh7Du",
"name": "Gmail Talker Bot"
}
},
"retryOnFail": true,
"typeVersion": 1.2
},
{
"id": "3d9ac1ee-cf79-4f2d-930b-76f6b4eb80f5",
"name": "Envoyer une question d'insight via Telegram",
"type": "n8n-nodes-base.telegram",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
2800,
680
],
"webhookId": "690e527e-3085-4b32-b1d1-ea2f70aa403f",
"parameters": {
"text": "=💎 Insight Question: \n{{ $json.aiAdvice[0].text }}\n \nMore at [https://infranodus.com/your_user_name/{{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}/edit](https://infranodus.com/your_user_name/{{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}/edit)",
"chatId": "use_get_id_bot_to_get_it",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "UXVSOiGwy2SPh7Du",
"name": "Gmail Talker Bot"
}
},
"retryOnFail": true,
"typeVersion": 1.2
},
{
"id": "85e994c5-8762-4e07-89e0-a91742e1c4aa",
"name": "Obtenir les messages par critères de recherche",
"type": "n8n-nodes-base.gmail",
"notes": "// use this is a filter to retrieve yesterday's date\n// change the number 1 below to the number of days to go behind\n{{ \n (() => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return `after:${yesterday.getFullYear()}/${(yesterday.getMonth() + 1).toString().padStart(2, '0')}/${yesterday.getDate().toString().padStart(2, '0')}`;\n })()\n}}",
"position": [
-1280,
320
],
"webhookId": "083fdee4-dcae-4366-8550-8df8dbe29fa2",
"parameters": {
"filters": {
"q": "={{ $json[\"Search Criteria\"] }}"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"gmailOAuth2": {
"id": "pL8OjzEMWakSY1Nk",
"name": "Gmail paranyushkin"
}
},
"typeVersion": 2.1
},
{
"id": "229bf0ac-7371-443b-9d4c-c2774d184116",
"name": "L'utilisateur soumet le formulaire",
"type": "n8n-nodes-base.formTrigger",
"disabled": true,
"position": [
-1940,
300
],
"webhookId": "84c4d21b-e825-42f0-a73b-c9a837ec8da3",
"parameters": {
"options": {
"appendAttribution": false,
"respondWithOptions": {
"values": {
"formSubmittedText": "Thank you, you will receive a summary via Telegram in a moment, once the analysis is ready."
}
}
},
"formTitle": "Generate a Visual Summary of Your Mailbox",
"formFields": {
"values": [
{
"fieldLabel": "Search Criteria",
"placeholder": "e.g. from:email@gmail.com after:2025/06/01 label:personal"
},
{
"fieldLabel": "Label Filter",
"placeholder": "SENT, CATEGORY_PERSONAL - for additional filtering"
},
{
"fieldLabel": "Email Type Description",
"placeholder": "Anything that relates to my work on various projects"
},
{
"fieldType": "dropdown",
"fieldLabel": "Analyze Full Email Text?",
"fieldOptions": {
"values": [
{
"option": "Yes"
}
]
}
},
{
"fieldType": "dropdown",
"fieldLabel": "Build a Social Graph?",
"fieldOptions": {
"values": [
{
"option": "Yes"
}
]
}
},
{
"fieldLabel": "Graph Name",
"placeholder": "e.g. n8n_gmail_search"
}
]
},
"authentication": "basicAuth",
"formDescription": "Build a knowledge graph from your Gmail mails based on search criteria, label, date, and email type. Generate topical summary and insight questions."
},
"credentials": {
"httpBasicAuth": {
"id": "dnRnDRFSRoubvTh8",
"name": "Basic n8n Form Auth"
}
},
"typeVersion": 2.2
},
{
"id": "423739ac-e4a8-4890-b1ef-851fb7b56e86",
"name": "InfraNodus AI Summary & Graph Link",
"type": "n8n-nodes-base.httpRequest",
"position": [
2240,
200
],
"parameters": {
"url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&optimize=summary&includeGraph=false&includeGraphSummary=true",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "aiTopics",
"value": "true"
},
{
"name": "requestMode",
"value": "graph summary"
},
{
"name": "name",
"value": "={{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "FPDx6PA5CtzGEIQc",
"name": "InfraNodus DeeMeeTree API Key"
}
},
"typeVersion": 4.2
},
{
"id": "177e9479-176c-434b-8082-b7cebd315c4b",
"name": "Type de graphe à construire",
"type": "n8n-nodes-base.switch",
"position": [
1460,
260
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "social knowledge graph",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "76bf82df-009a-4714-819c-ec9159f39f72",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json['Build a Social Graph?'] }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "text knowledge graph",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "49ca2845-be5b-40ad-b6b4-c2a4e45f4f77",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $('Assign Processing Settings').item.json['Build a Social Graph?'] }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "2b2b0d12-296d-4d11-9a5e-13c9b411f1bb",
"name": "InfraNodus Build a Social Knowledge Graph",
"type": "n8n-nodes-base.httpRequest",
"position": [
1720,
160
],
"parameters": {
"url": "https://infranodus.com/api/v1/graphAndStatements?doNotSave=false&includeGraph=false&includeGraphSummary=true&includeStatements=false",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "name",
"value": "={{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}"
},
{
"name": "statements",
"value": "={{ $json.statements }}"
},
{
"name": "contextSettings",
"value": "={{{ \"partOfSpeechToProcess\":\"HASHTAGS_AND_WORDS\", \"doubleSquarebracketsProcessing\":\"PROCESS_AS_MENTIONS\"} }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "FPDx6PA5CtzGEIQc",
"name": "InfraNodus DeeMeeTree API Key"
}
},
"typeVersion": 4.2
},
{
"id": "8fec6156-93e0-410b-b91a-6d378b70d369",
"name": "InfraNodus Build a Text Knowledge Graph",
"type": "n8n-nodes-base.httpRequest",
"position": [
1720,
460
],
"parameters": {
"url": "https://infranodus.com/api/v1/graphAndStatements?doNotSave=false&includeGraph=false&includeGraphSummary=true&includeStatements=false",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "name",
"value": "={{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}"
},
{
"name": "statements",
"value": "={{ $json.statements }}"
},
{
"name": "contextSettings",
"value": "={{{ \"partOfSpeechToProcess\":\"HASHTAGS_AND_WORDS\", \"doubleSquarebracketsProcessing\":\"EXCLUDE\", \"mentionsProcessing\":\"EXCLUDE\"} }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "FPDx6PA5CtzGEIQc",
"name": "InfraNodus DeeMeeTree API Key"
}
},
"typeVersion": 4.2
},
{
"id": "23d3c594-1416-486c-961e-55dbf0714b4d",
"name": "Lors du clic sur 'Tester le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1940,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "be89719e-e217-4c28-9d71-ddcda1b4606d",
"name": "Attribuer les paramètres de traitement",
"type": "n8n-nodes-base.set",
"notes": "// script to generate a date \n// minus -1 is the days before\n\n(() => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 7);\n return `after:${yesterday.getFullYear()}/${(yesterday.getMonth() + 1).toString().padStart(2, '0')}/${yesterday.getDate().toString().padStart(2, '0')}`;\n })()",
"position": [
-1560,
540
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"Label Filter\": \"{{ $json[\"Label Filter\"] !== undefined ? $json[\"Label Filter\"] : `CATEGORY_PERSONAL`}}\",\n \"Email Type Description\": \"{{ $json[\"Email Type Description\"] !== undefined ? $json[\"Email Type Description\"] : `Important personalized emails, exclude mailouts and non-urgent notifications` }}\",\n \"Analyze Full Email Text?\": \"{{ $json[\"Analyze Full Email Text?\"] !== undefined ? $json[\"Analyze Full Email Text?\"] : ``}}\",\n \"Build a Social Graph?\": \"{{ $json[\"Build a Social Graph?\"] !== undefined ? $json[\"Build a Social Graph?\"] : `Yes`}}\",\n \"Search Criteria\": \"{{ $json[\"Search Criteria\"] !== undefined ? $json[\"Search Criteria\"] :\n (() => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return `after:${yesterday.getFullYear()}/${(yesterday.getMonth() + 1).toString().padStart(2, '0')}/${yesterday.getDate().toString().padStart(2, '0')}`;\n })()\n}}\",\n \"Graph Name\": \"{{ $json[\"Graph Name\"] !== undefined ? $json[\"Graph Name\"] : `n8n_gmail_search_` + $now.toString().split('T')[0] }}\"\n}"
},
"typeVersion": 3.4
},
{
"id": "a1b0c1c6-efd1-4d77-91d3-6f29565ea3ed",
"name": "Déclencheur planifié",
"type": "n8n-nodes-base.scheduleTrigger",
"disabled": true,
"position": [
-1940,
500
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 10
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f2401504-38c5-4368-84bb-738082abd50c",
"name": "Note autocollante2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1620,
-240
],
"parameters": {
"width": 220,
"height": 960,
"content": "## 2. Filter Settings\n\n### 🚨 Specify which emails should be extracted. Default values are provided in the node. \n\nTo increase the speed, we recommend to use the Gmail search operators like \"after:2025/06/01\" or \"keyword\" or \"label:notes\".\n\nDefault values are provided in the node, which are filled in automatically if no details are specified. \n\n[Options](https://support.google.com/mail/answer/7190?hl=en&co=GENIE.Platform%3DAndroid) you can use for filtering:\n\n- search string or date (e.g. \"after:2025/06/01\" or \"business\")\n\n- email labels and categories (e.g. SENT, CATEGORY_PERSONAL, etc)\n\n- use AI query for advanced filtering\n\n- build a social text graph (with sender's emails)\n\n\n"
},
"typeVersion": 1
},
{
"id": "893fa8d1-935e-4671-83f5-a0fc5a5d2e7f",
"name": "Note autocollante3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
-240
],
"parameters": {
"width": 600,
"height": 960,
"content": "## 3. Get Gmail Messages\n\n### Get the emails that satisfy the filter criteria. \n#### 🚨 Specify your Gmail account credentials here\n\nWe recommend using the filters to make the search faster. You can then use the labels to filter the search results. However, you can also use the labels in the search query, like \"label:notes\" to increase the speed in this step. Alternatively, you can set a limit to 50 to 100 and then this node will retrieve the most recent messages. \n\nSome useful labels:\n- SENT (or label:sent in the search query)\n- CATEGORY_PERSONAL (or label:personal in the search query)\n- CATEGORY_PROMOTION (or label:promotion in the search query)\n- ... and your own labels (e.g. \"Business\", \"Urgent\", etc.)\n\nSee our [other workflows](https://n8n.io/creators/infranodus/) to automate email labeling"
},
"typeVersion": 1
},
{
"id": "a016b287-db0c-4ef7-ba73-381890c7a6a7",
"name": "Note autocollante4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
-240
],
"parameters": {
"width": 540,
"height": 960,
"content": "## 4. Analyze Snippets or Full Text?\n\n### Which parts of emails to analyze?\n\nBy default, we're analyzing the snippets provided by Google. However, for detailed and more precise analysis you can also analyze the full text of emails. \n\nIn this case, we need to retrieve the email text using a separate Gmail node.\n"
},
"typeVersion": 1
},
{
"id": "298cf343-afb4-4c8f-b164-a0bb827c7d7c",
"name": "Note autocollante5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
-240
],
"parameters": {
"width": 660,
"height": 960,
"content": "## 5. Use AI Classifier to Filter Mails?\n\n### You can use the AI to add additional filters. Check the Classify Node for specifics.\n\nIf the Google search parameters or your existing emails are not sufficient, you can use the AI to classify the type of emails you want to analyze. \n\nYou can describe it in the User Submits Form in the Step 1 or in the Assign Processing Settings in the Step 2. \n\nWe prefer to use the Google's Gemini model as it's faster, and we also have to be less concerned about sending the email content to an external model as it's the same company. \n\n🚨 Specify your Gemini API key here (takes 30 seconds to get in the Google's AI studio)"
},
"typeVersion": 1
},
{
"id": "4306e643-4055-4f69-8393-322f70e5e035",
"name": "Note autocollante6",
"type": "n8n-nodes-base.stickyNote",
"position": [
680,
-240
],
"parameters": {
"width": 660,
"height": 960,
"content": "## 6. Formatting Text or Snippets\n\n### We convert the html to text and also format the data to be converted to the [InfraNodus](https://infranodus.com) format, so we can build a nice graph from it.\n\n"
},
"typeVersion": 1
},
{
"id": "ba5a3dbc-2502-46fd-8b66-c975b696bb15",
"name": "Note autocollante7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1380,
-240
],
"parameters": {
"width": 540,
"height": 1340,
"content": "## 7. Building a Knowledge Graph\n\n### We submit the data to build a knowledge graph using [InfraNodus](https://infranodus.com). \n\n### 🚨 Specify the graph name you want to save the data to in the `name` field of the HTTP InfraNodus node (or in the Step 2) and your [InfraNodus API key](https://infranodus.com/api-access) credentials.\n\nWe have two types of graphs:\n\n- Text Knowledge Graph will visualize the content and the main topics and gaps within\n\n- Social Knowledge Graph will visualize the content as well as the senders so you can see not only the main topics and gaps, but also who actually sent the messages.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "42e1981f-2d8f-4260-b6df-8d625f7cab0a",
"name": "Note autocollante8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2140,
-240
],
"parameters": {
"width": 480,
"height": 1340,
"content": "## 8. Use InfraNodus to generate topical summary and insight questions \n\n### We use the [InfraNodus GraphRAG API](https://infranodus.com/use-case/ai-knowledge-graphs) to generate the topical summary and AI questions\n\n\n### The insight is based on the structural gap identified in the graph — the topics that could be connected but are not yet.\n\n\n### 🚨 Specify the graph name you want to save the data to in the `name` field of the HTTP InfraNodus node or in the Step 2.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "06c11eea-d17a-4342-990a-f3ecf978a594",
"name": "Note autocollante9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2720,
-240
],
"parameters": {
"width": 300,
"height": 1340,
"content": "## 9. Send the insight and the graph link via Telegram and Email\n\n### Get informed via Telegram when the graph is created along with the topical summary and insight question\n\n### 🚨 Creating a bot in Telegram takes 30 seconds: just to to [@botfather](https://t.me/botfather) and type in `newbot` — then use the API key it generates in the credentials\n\n\n"
},
"typeVersion": 1
},
{
"id": "c5072e2a-0848-43b9-bbc5-88c99947fece",
"name": "Note autocollante10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
-880
],
"parameters": {
"color": 7,
"width": 1260,
"height": 600,
"content": "## Types of knowledge graphs\n\n### Knowledge graphs can show you recurrent patterns and gaps in your data. This can be very useful for understanding complex relations and discovering what you would otherwise have missed.\n\n#### You can build two types of graphs with this template: a text graph that shows the topics only and the social graph that adds the email senders to the graph, so you can see the associations of individuals / companies with the topics you're talking about.\n\n\n| Text Graph | | Social Graph |\n|------------|--|-------------|\n|  | |  |"
},
"typeVersion": 1
},
{
"id": "c2f7946d-a08d-4c63-93fc-0296adad0e86",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"onError": "continueRegularOutput",
"position": [
2800,
200
],
"webhookId": "9ecdabd6-c4bc-4bff-81c9-14ba07a2b947",
"parameters": {
"sendTo": "your_own_email_2912319@email.com",
"message": "=Hello\n\nHere is a visual knowledge graph summary of your emails as of {{$now.toString().split('T')[0]}}: \nhttps://infranodus.com/your_user_name/{{ $('Assign Processing Settings').item.json[\"Graph Name\"] }}/edit\n\nTopical summary:\n{{ $('InfraNodus AI Summary & Graph Link').item.json.aiAdvice[0].text }}\n\nResearch questions:\n{{ $json.aiAdvice[0].text }}\n\n",
"options": {},
"subject": "=Email Summary as of {{$now.toString().split('T')[0]}}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "w7b4H8WpgY9Oit56",
"name": "Gmail supadelicious"
}
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d35db610-8926-4980-834f-662656aa7f75",
"connections": {
"52802d59-e9a0-44ec-9ffc-0ecd1ad60354": {
"main": [
[
{
"node": "0fe84425-5e0b-4eb7-b8fa-f6e8cc0bfee2",
"type": "main",
"index": 0
}
]
]
},
"a1b0c1c6-efd1-4d77-91d3-6f29565ea3ed": {
"main": [
[
{
"node": "be89719e-e217-4c28-9d71-ddcda1b4606d",
"type": "main",
"index": 0
}
]
]
},
"229bf0ac-7371-443b-9d4c-c2774d184116": {
"main": [
[
{
"node": "be89719e-e217-4c28-9d71-ddcda1b4606d",
"type": "main",
"index": 0
}
]
]
},
"0fe84425-5e0b-4eb7-b8fa-f6e8cc0bfee2": {
"main": [
[
{
"node": "5759e919-6f02-49c3-9012-c3bdfa29f5a3",
"type": "main",
"index": 0
}
],
[
{
"node": "d38a14d2-118b-45cd-b6fa-f7ef3811e9ea",
"type": "main",
"index": 0
}
]
]
},
"e7251d9c-e247-4b48-a7db-4b7bba057777": {
"main": [
[
{
"node": "9cae8722-13c0-4090-81c3-ec60ced40ec4",
"type": "main",
"index": 0
}
],
[
{
"node": "6a1fdf73-fa60-46d6-8980-e192735fbb54",
"type": "main",
"index": 0
}
]
]
},
"9cae8722-13c0-4090-81c3-ec60ced40ec4": {
"main": [
[
{
"node": "daa2cf5f-e8b5-45a4-ab73-feb5981d665d",
"type": "main",
"index": 0
}
]
]
},
"177e9479-176c-434b-8082-b7cebd315c4b": {
"main": [
[
{
"node": "2b2b0d12-296d-4d11-9a5e-13c9b411f1bb",
"type": "main",
"index": 0
}
],
[
{
"node": "8fec6156-93e0-410b-b91a-6d378b70d369",
"type": "main",
"index": 0
}
]
]
},
"204e3171-f4bf-4c6f-a0a9-3ba9ae9f869d": {
"main": [
[
{
"node": "825e11fe-5f2c-41ef-ade0-1136607decbd",
"type": "main",
"index": 0
}
]
]
},
"599264b8-bd89-4ed9-8645-725ebd005747": {
"ai_languageModel": [
[
{
"node": "52802d59-e9a0-44ec-9ffc-0ecd1ad60354",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"6a1fdf73-fa60-46d6-8980-e192735fbb54": {
"main": [
[
{
"node": "825e11fe-5f2c-41ef-ade0-1136607decbd",
"type": "main",
"index": 0
}
],
[
{
"node": "204e3171-f4bf-4c6f-a0a9-3ba9ae9f869d",
"type": "main",
"index": 0
}
]
]
},
"be89719e-e217-4c28-9d71-ddcda1b4606d": {
"main": [
[
{
"node": "85e994c5-8762-4e07-89e0-a91742e1c4aa",
"type": "main",
"index": 0
}
]
]
},
"d38a14d2-118b-45cd-b6fa-f7ef3811e9ea": {
"main": [
[
{
"node": "81a91a82-e1c5-4ff6-873a-3d70d4635637",
"type": "main",
"index": 0
}
]
]
},
"3a974df3-2b2a-4ce2-aff4-74b3771d2e5d": {
"main": [
[
{
"node": "3d9ac1ee-cf79-4f2d-930b-76f6b4eb80f5",
"type": "main",
"index": 0
},
{
"node": "3c912db2-015b-4284-9c12-7fd0891bf2a6",
"type": "main",
"index": 0
},
{
"node": "c2f7946d-a08d-4c63-93fc-0296adad0e86",
"type": "main",
"index": 0
}
]
]
},
"5759e919-6f02-49c3-9012-c3bdfa29f5a3": {
"main": [
[
{
"node": "81a91a82-e1c5-4ff6-873a-3d70d4635637",
"type": "main",
"index": 0
}
]
]
},
"85e994c5-8762-4e07-89e0-a91742e1c4aa": {
"main": [
[
{
"node": "e7251d9c-e247-4b48-a7db-4b7bba057777",
"type": "main",
"index": 0
}
]
]
},
"f504bc20-2385-42f1-80da-f7129a4dcb6e": {
"main": [
[
{
"node": "52802d59-e9a0-44ec-9ffc-0ecd1ad60354",
"type": "main",
"index": 0
}
]
]
},
"bb3ff757-5cfc-4d1e-9544-0ae411978c9f": {
"main": [
[
{
"node": "423739ac-e4a8-4890-b1ef-851fb7b56e86",
"type": "main",
"index": 0
}
]
]
},
"23d3c594-1416-486c-961e-55dbf0714b4d": {
"main": [
[
{
"node": "be89719e-e217-4c28-9d71-ddcda1b4606d",
"type": "main",
"index": 0
}
]
]
},
"423739ac-e4a8-4890-b1ef-851fb7b56e86": {
"main": [
[
{
"node": "3a974df3-2b2a-4ce2-aff4-74b3771d2e5d",
"type": "main",
"index": 0
}
]
]
},
"3d9ac1ee-cf79-4f2d-930b-76f6b4eb80f5": {
"main": [
[]
]
},
"81a91a82-e1c5-4ff6-873a-3d70d4635637": {
"main": [
[
{
"node": "177e9479-176c-434b-8082-b7cebd315c4b",
"type": "main",
"index": 0
}
]
]
},
"8fec6156-93e0-410b-b91a-6d378b70d369": {
"main": [
[
{
"node": "bb3ff757-5cfc-4d1e-9544-0ae411978c9f",
"type": "main",
"index": 0
}
]
]
},
"825e11fe-5f2c-41ef-ade0-1136607decbd": {
"main": [
[
{
"node": "f504bc20-2385-42f1-80da-f7129a4dcb6e",
"type": "main",
"index": 0
}
],
[
{
"node": "0fe84425-5e0b-4eb7-b8fa-f6e8cc0bfee2",
"type": "main",
"index": 0
}
]
]
},
"2b2b0d12-296d-4d11-9a5e-13c9b411f1bb": {
"main": [
[
{
"node": "bb3ff757-5cfc-4d1e-9544-0ae411978c9f",
"type": "main",
"index": 0
}
]
]
},
"3c912db2-015b-4284-9c12-7fd0891bf2a6": {
"main": [
[]
]
},
"daa2cf5f-e8b5-45a4-ab73-feb5981d665d": {
"main": [
[
{
"node": "825e11fe-5f2c-41ef-ade0-1136607decbd",
"type": "main",
"index": 0
}
],
[
{
"node": "204e3171-f4bf-4c6f-a0a9-3ba9ae9f869d",
"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é - Autres, Intelligence Artificielle
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
InfraNodus
@infranodusI'm Dmitry, the founder of InfraNodus — an AI text network analysis tool. I'm passionate about networks and data visualization and its ability to reveal what everyone else is missing and to highlight different perspectives. I'm sharing the n8n templates that make use of this unique capability of InfraNodus for multiple scenarios.
Partager ce workflow