Convertir un site en résumé audio via WhatsApp avec GPT et TTS
Ceci est unPersonal Productivity, AI Summarizationworkflow d'automatisation du domainecontenant 23 nœuds.Utilise principalement des nœuds comme If, Set, Code, Html, Merge. Convertir un site Web en résumé audio via WhatsApp en utilisant GPT et TTS
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (23)
Catégorie
{
"meta": {
"instanceId": "42bde649da4575cc0d49afcf8affcdbece40e5e40061aa2c9b7a8b3639284dfe",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "3ac9465d-b69c-422e-a538-dbf9abbc7642",
"name": "Extraire l'URL du message",
"type": "n8n-nodes-base.code",
"position": [
-576,
240
],
"parameters": {
"jsCode": "// Extract URL from WhatsApp message\nconst item = $input.item.json;\n\n// Check if this is a message (not a status update)\nif (!item.messages || !Array.isArray(item.messages) || item.messages.length === 0) {\n // This is a status update or empty, skip processing\n return null;\n}\n\nconst message = item.messages[0];\nconst messageText = message.text?.body || '';\nconst from = message.from;\n\n// Simple URL extraction\nconst urlRegex = /(https?:\\/\\/[^\\s]+)/gi;\nconst urls = messageText.match(urlRegex);\n\nif (!urls || urls.length === 0) {\n // No URL found, return error message\n return {\n error: true,\n from: from,\n message: \"⚠️ Please send a valid URL to summarize. Example: https://example.com\"\n };\n}\n\nreturn {\n URL: urls[0],\n from: from,\n original_message: messageText,\n error: false\n};"
},
"typeVersion": 2
},
{
"id": "2da6a2a7-6bd3-4681-909a-d39fb1244d4b",
"name": "Vérifier si l'URL est valide",
"type": "n8n-nodes-base.if",
"position": [
-432,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "has-url",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.error }}",
"rightValue": false
}
]
}
},
"typeVersion": 2.2
},
{
"id": "660545af-20f0-467b-851b-d210c82ac48f",
"name": "Envoyer un message d'erreur",
"type": "n8n-nodes-base.whatsApp",
"position": [
-208,
416
],
"webhookId": "9dfc84ae-12e0-4f63-8820-4ec2dc4db02f",
"parameters": {
"textBody": "={{ $json.message }}",
"operation": "send",
"phoneNumberId": "={{ $('WhatsApp Trigger').item.json.metadata.phone_number_id }}",
"additionalFields": {},
"recipientPhoneNumber": "={{ $json.from }}"
},
"credentials": {
"whatsAppApi": {
"id": "Lf4s3r55bG6RFGLw",
"name": "WhatsApp account"
}
},
"typeVersion": 1.1
},
{
"id": "a5a5d844-ff22-48df-8c3d-11e897aa1408",
"name": "Envoyer un message de traitement",
"type": "n8n-nodes-base.whatsApp",
"position": [
-208,
224
],
"webhookId": "8a404dac-179c-4e06-bd47-fbb214730f06",
"parameters": {
"textBody": "🔍 Fetching and analyzing webpage...\nThis may take 10-30 seconds.",
"operation": "send",
"phoneNumberId": "={{ $('WhatsApp Trigger').item.json.metadata.phone_number_id }}",
"additionalFields": {},
"recipientPhoneNumber": "={{ $json.from }}"
},
"credentials": {
"whatsAppApi": {
"id": "Lf4s3r55bG6RFGLw",
"name": "WhatsApp account"
}
},
"typeVersion": 1.1
},
{
"id": "68da6673-0e21-4a6f-b631-167748249777",
"name": "Obtenir le résumé de la page web",
"type": "n8n-nodes-base.executeWorkflow",
"notes": "This calls your existing '[SUB] Get Webpage Summary' workflow",
"position": [
112,
224
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "QglZjvjdZ16BisPN",
"cachedResultUrl": "/workflow/QglZjvjdZ16BisPN",
"cachedResultName": "[SUB] Get Webpage Summary"
}
},
"typeVersion": 1.1
},
{
"id": "b505c2b7-368b-4577-b7c8-7d1bdfba73a2",
"name": "Convertir le résumé en audio",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
288,
224
],
"parameters": {
"input": "={{ $json.summary }}",
"options": {
"speed": 1,
"response_format": "opus"
},
"resource": "audio"
},
"credentials": {
"openAiApi": {
"id": "mDGcGh1b3ALbNE4K",
"name": "OpenAi account"
}
},
"typeVersion": 2
},
{
"id": "8c75eb4b-c9b2-48a4-9e49-d71195110915",
"name": "Envoyer le résumé audio",
"type": "n8n-nodes-base.whatsApp",
"position": [
448,
224
],
"webhookId": "cb67c7fb-dd7e-423f-893c-f26266cde026",
"parameters": {
"mediaPath": "useMedian8n",
"operation": "send",
"messageType": "audio",
"phoneNumberId": "={{ $('WhatsApp Trigger').item.json.metadata.phone_number_id }}",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('Extract URL from Message').item.json.from }}"
},
"credentials": {
"whatsAppApi": {
"id": "Lf4s3r55bG6RFGLw",
"name": "WhatsApp account"
}
},
"typeVersion": 1.1
},
{
"id": "d82c4465-e3d2-43ea-b61a-f93c39b2e5b1",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1152,
0
],
"parameters": {
"color": 5,
"width": 380,
"height": 1132,
"content": "## 🎤 WhatsApp Voice Research Assistant\n\n**How it works:**\n1. User sends URL via WhatsApp\n2. Workflow fetches webpage\n3. AI summarizes content\n4. Text-to-speech conversion\n5. Audio summary sent back\n\n**Perfect for:**\n- Commuting (hands-free)\n- Multitasking\n- Visual impairments\n- Quick content review\n\n**Voice:** Natural AI voice (Alloy)\n**Language:** Auto-detects from content\n\n\nWhatsApp Requirements:\n\nYou will need a WhatsApp business account with OAuth:\n\nhttps://docs.n8n.io/integrations/builtin/credentials/whatsapp\n\nCreate a WhatsApp App and register a phone number (although a test number can be used if its just for one person and you don't plan to make this for public use)\n\nAnd create a System User to then generate a system user token (so that you don't have to manually generate a token every 4 hours.)\n\nhttps://business.facebook.com/latest/settings/system_users\n\nWhatsApp works well once its up and running. However it can be initially a chore as WhatsApp security wants you to verify the business when you make an app, when you register a phone, when you create a system user. So yes, at least 3 different times... possibly up to 5 times.\n\nAnother WhatsApp caveat: \nYou can't send an auto-generated message to a whatsapp users phone after 24 hours, unless that user has replied, special message template or the user has sent the app, a message first.\n\nFor example in the morning, you can send the app a quick \"Hi\" message and from then on, the app can work well. "
},
"typeVersion": 1
},
{
"id": "35194f26-35c9-401e-88c4-b09102c0fafd",
"name": "WhatsApp Trigger",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
-720,
240
],
"webhookId": "1c4d0dd4-3820-4fc9-8926-b692c22509f1",
"parameters": {
"options": {},
"updates": [
"messages"
]
},
"credentials": {
"whatsAppTriggerApi": {
"id": "Kng74VNxItdZDRjm",
"name": "WhatsApp OAuth account"
}
},
"typeVersion": 1
},
{
"id": "3eef648b-506d-4a1e-8494-2892fab999b6",
"name": "Obtenir l'URL",
"type": "n8n-nodes-base.set",
"position": [
-48,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "32b5ebf5-67a4-4be9-b659-221c354a4957",
"name": "URL",
"type": "string",
"value": "={{ $('Check if Valid URL').item.json.URL }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1e575c6d-c3a0-4426-a044-4d3b11711c5a",
"name": "Note autocollante1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
608
],
"parameters": {
"width": 1265,
"height": 495,
"content": "## [SUB] Get Webpage Summary\n# Summarize website text with GPT"
},
"typeVersion": 1
},
{
"id": "ef8b7ac7-09aa-49d2-98f0-491762d52370",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
96,
992
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "mDGcGh1b3ALbNE4K",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "f8637017-8352-4034-bebc-a306bf90bab2",
"name": "Extraire le titre",
"type": "n8n-nodes-base.html",
"position": [
-80,
624
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "title",
"cssSelector": "title"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d2bc9ef2-fdde-4549-b8e6-1f7611376d3c",
"name": "Chaîne de résumé",
"type": "@n8n/n8n-nodes-langchain.chainSummarization",
"position": [
-160,
784
],
"parameters": {
"options": {},
"operationMode": "documentLoader"
},
"typeVersion": 2
},
{
"id": "75a23c01-9746-48d8-b63f-17f5029e6841",
"name": "Nettoyage",
"type": "n8n-nodes-base.set",
"position": [
352,
768
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7b337b47-a1c6-470e-881f-0c038b4917e5",
"name": "title",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "ca820521-4fff-4971-84b5-e6e2dbd8bb7a",
"name": "summary",
"type": "string",
"value": "={{ $json.response.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "dc6be66b-f9a5-422a-9158-f3183d7c5f1b",
"name": "Fusion",
"type": "n8n-nodes-base.merge",
"position": [
224,
768
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3
},
{
"id": "bc556f6b-1f69-46dc-bfee-0c3dc32e8644",
"name": "Chargeur de données par défaut",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-160,
896
],
"parameters": {
"options": {},
"jsonData": "={{ $('Extract Text Only').item.json.data }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "17be0ba5-0e78-4a59-8dfc-745ba92e8037",
"name": "Séparateur de texte récursif",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
96,
864
],
"parameters": {
"options": {},
"chunkSize": 6000
},
"typeVersion": 1
},
{
"id": "e2efdfe7-203c-4eb6-a2e5-9027a3886173",
"name": "Extraire le texte uniquement",
"type": "n8n-nodes-base.html",
"position": [
-336,
784
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "data",
"cssSelector": "body",
"skipSelectors": "img,nav"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "3f6398b1-c16c-4f3e-b601-dd65efe98771",
"name": "Sous-exécution",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-672,
784
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "32e45648-f0c0-4d1b-8dae-1a090fc468e3",
"name": "Récupérer les textes du site",
"type": "n8n-nodes-base.httpRequest",
"position": [
-544,
784
],
"parameters": {
"url": "=https://r.jina.ai/{{ $json.URL }}",
"options": {
"redirect": {
"redirect": {
"maxRedirects": 5
}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
},
{
"name": "Accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0e76e32f-270e-4714-839b-b490d0bbdaf7",
"name": "Traitement du téléchargement et du chemin1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
-16
],
"parameters": {
"color": 4,
"width": 448,
"height": 224,
"content": "## WhatsApp Trigger -> Extract URL -> Check if Valid\n\n1. **WhatsApp Trigger**: Reads URl\n2. **Extract URL node**: Gets URL from WhatsApp\n3. **Check if Valid**: Checks to see if we have valid URL"
},
"typeVersion": 1
},
{
"id": "18c324d6-0a56-4903-a0ab-8641eec897eb",
"name": "Gestion des liens de partage1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
-16
],
"parameters": {
"color": 2,
"width": 768,
"height": 224,
"content": "## Summarize webpage and answer in audio message back to WhatsApp\n\n1. **WhatsApp Notification**: Notifies user of pending summery \n2. **Sets URL for wub workflow**\n3. **Sub Workflow - Gets Webpage Summary**\n5. **Generate Summary Audio** \n4. **WhatsApp Audio Message**: Generates audio message response with summary back to user"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"dc6be66b-f9a5-422a-9158-f3183d7c5f1b": {
"main": [
[
{
"node": "75a23c01-9746-48d8-b63f-17f5029e6841",
"type": "main",
"index": 0
}
]
]
},
"3eef648b-506d-4a1e-8494-2892fab999b6": {
"main": [
[
{
"node": "68da6673-0e21-4a6f-b631-167748249777",
"type": "main",
"index": 0
}
]
]
},
"3f6398b1-c16c-4f3e-b601-dd65efe98771": {
"main": [
[
{
"node": "32e45648-f0c0-4d1b-8dae-1a090fc468e3",
"type": "main",
"index": 0
}
]
]
},
"f8637017-8352-4034-bebc-a306bf90bab2": {
"main": [
[
{
"node": "dc6be66b-f9a5-422a-9158-f3183d7c5f1b",
"type": "main",
"index": 0
}
]
]
},
"32e45648-f0c0-4d1b-8dae-1a090fc468e3": {
"main": [
[
{
"node": "f8637017-8352-4034-bebc-a306bf90bab2",
"type": "main",
"index": 0
},
{
"node": "e2efdfe7-203c-4eb6-a2e5-9027a3886173",
"type": "main",
"index": 0
}
]
]
},
"35194f26-35c9-401e-88c4-b09102c0fafd": {
"main": [
[
{
"node": "3ac9465d-b69c-422e-a538-dbf9abbc7642",
"type": "main",
"index": 0
}
]
]
},
"e2efdfe7-203c-4eb6-a2e5-9027a3886173": {
"main": [
[
{
"node": "d2bc9ef2-fdde-4549-b8e6-1f7611376d3c",
"type": "main",
"index": 0
}
]
]
},
"ef8b7ac7-09aa-49d2-98f0-491762d52370": {
"ai_languageModel": [
[
{
"node": "d2bc9ef2-fdde-4549-b8e6-1f7611376d3c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2da6a2a7-6bd3-4681-909a-d39fb1244d4b": {
"main": [
[
{
"node": "a5a5d844-ff22-48df-8c3d-11e897aa1408",
"type": "main",
"index": 0
}
],
[
{
"node": "660545af-20f0-467b-851b-d210c82ac48f",
"type": "main",
"index": 0
}
]
]
},
"bc556f6b-1f69-46dc-bfee-0c3dc32e8644": {
"ai_document": [
[
{
"node": "d2bc9ef2-fdde-4549-b8e6-1f7611376d3c",
"type": "ai_document",
"index": 0
}
]
]
},
"68da6673-0e21-4a6f-b631-167748249777": {
"main": [
[
{
"node": "b505c2b7-368b-4577-b7c8-7d1bdfba73a2",
"type": "main",
"index": 0
}
]
]
},
"d2bc9ef2-fdde-4549-b8e6-1f7611376d3c": {
"main": [
[
{
"node": "dc6be66b-f9a5-422a-9158-f3183d7c5f1b",
"type": "main",
"index": 1
}
]
]
},
"a5a5d844-ff22-48df-8c3d-11e897aa1408": {
"main": [
[
{
"node": "3eef648b-506d-4a1e-8494-2892fab999b6",
"type": "main",
"index": 0
}
]
]
},
"b505c2b7-368b-4577-b7c8-7d1bdfba73a2": {
"main": [
[
{
"node": "8c75eb4b-c9b2-48a4-9e49-d71195110915",
"type": "main",
"index": 0
}
]
]
},
"3ac9465d-b69c-422e-a538-dbf9abbc7642": {
"main": [
[
{
"node": "2da6a2a7-6bd3-4681-909a-d39fb1244d4b",
"type": "main",
"index": 0
}
]
]
},
"17be0ba5-0e78-4a59-8dfc-745ba92e8037": {
"ai_textSplitter": [
[
{
"node": "bc556f6b-1f69-46dc-bfee-0c3dc32e8644",
"type": "ai_textSplitter",
"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é - Productivité personnelle, 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
Anthony
@usascholarI write code to save you headaches. I post workflows, that I had a hard time with or find was really needed. If you pay for one of my workflows, congratulations... it probably took me 10x the $$ amount in my personal time, figuring the darn thing out.
Partager ce workflow