Utiliser GPT-5-mini pour résumer et résumer automatiquement les tableaux d'emploi Make.com
Ceci est uncontenant 18 nœuds.Utilise principalement des nœuds comme Code, Html, Merge, Filter, EmailSend. Gratter automatiquement les tableaux d'emploi Make.com et résumer les annonces avec GPT-5-mini
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (18)
Catégorie
{
"meta": {
"instanceId": "42450f423595f391b7c323eb4191c0bc81df9f6de5483a12f34f76cb4146556c",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "65c33726-bacc-4180-b62f-15701697516d",
"name": "Analyseur de sortie structurée",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1488,
400
],
"parameters": {
"jsonSchemaExample": "{\n\t\"summary\": \"What the client is looking to build\"\n}"
},
"typeVersion": 1.2
},
{
"id": "652bb452-ea0e-4719-813d-994436d15960",
"name": "Modèle de chat OpenRouter",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
1360,
400
],
"parameters": {
"model": "openai/gpt-5-mini",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "aCsTDT5LGS5D8Ndl",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "c92e0da2-85ff-4a57-970f-1b9f636b8a1b",
"name": "Récupérer la plateforme d'emploi principale",
"type": "n8n-nodes-base.httpRequest",
"position": [
224,
144
],
"parameters": {
"url": "https://community.make.com/tag/professional-service",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "45216826-c35d-4724-808a-0fc119fb60f4",
"name": "Extraire les liens d'offres d'emploi",
"type": "n8n-nodes-base.html",
"position": [
448,
144
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "jobTitle",
"cssSelector": ".topic-list-item .main-link .link-top-line a",
"returnArray": true
},
{
"key": "jobLink",
"attribute": "href",
"cssSelector": ".topic-list-item .main-link .link-top-line a",
"returnArray": true,
"returnValue": "attribute"
},
{
"key": "date",
"cssSelector": ".topic-list-item td:last-child",
"returnArray": true
}
]
}
},
"typeVersion": 1.2
},
{
"id": "3fb97846-8387-430c-bc8a-a20528978a46",
"name": "Filtrer les emplois nouveaux/valides",
"type": "n8n-nodes-base.filter",
"position": [
896,
144
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9db031ce-cbcc-4ccf-8f68-ca6fee8cd510",
"operator": {
"type": "dateTime",
"operation": "after"
},
"leftValue": "={{ $json.date }}",
"rightValue": "={{$now.minus({days: 7})}} "
}
]
}
},
"typeVersion": 2.2
},
{
"id": "bdabba9a-ba1f-4261-8b97-d8e19987a730",
"name": "Obtenir la page individuelle de l'offre",
"type": "n8n-nodes-base.httpRequest",
"position": [
1120,
32
],
"parameters": {
"url": "={{ $json.jobLink }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "0bcf04e4-f4c6-4530-8f42-58baa8e7f19d",
"name": "Obtenir le HTML de la page pour le LLM",
"type": "n8n-nodes-base.html",
"position": [
1408,
-128
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "jobDescription",
"attribute": "content",
"cssSelector": "meta[property=\"og:description\"]",
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6",
"name": "Extraire les détails de l'offre avec IA",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1344,
176
],
"parameters": {
"text": "={{ $json.data }}",
"messages": {
"messageValues": [
{
"message": "=<prompt>\n <purpose>\n Based on this HTML your task is to provide a summary of what the client is looking to build with the automation software make.com\n </purpose>\n\n <instructions>\n <instruction>Output in json format</instruction>\n <instruction>Give a high level summary of what the client wants to build</instruction>\n <instruction>Make sure to only distill the relevant text from all the HTML input</instruction>\n </instructions>\n</prompt>"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "eb84699b-e02c-4ef8-b37a-2ffaf395396e",
"name": "Combiner données IA et URL",
"type": "n8n-nodes-base.merge",
"position": [
1696,
160
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition",
"numberInputs": 3
},
"typeVersion": 3
},
{
"id": "c598080e-3716-4ac4-b1a3-e18c3acb4ba5",
"name": "Formater les éléments de la liste d'offres",
"type": "n8n-nodes-base.code",
"position": [
672,
144
],
"parameters": {
"jsCode": "const titles = items[0].json[\"jobTitle\"];\nconst links = items[0].json[\"jobLink\"];\nconst dates = items[0].json[\"date\"];\n\nconst merged = titles.map((link, index) => ({\n \"jobTitle\": link,\n \"jobLink\": links[index],\n \"date\": dates[index],\n \"source\": \"make-forum\"\n}));\n\nreturn merged.map(item => ({ json: item }));\n"
},
"typeVersion": 2
},
{
"id": "9f811105-07b4-4c4e-ba7d-85183b718e1f",
"name": "Nettoyer la réponse de l'IA",
"type": "n8n-nodes-base.code",
"position": [
1920,
176
],
"parameters": {
"jsCode": "return $input.all().map((item) => ({...item.json, summary:item.json.output.summary, output: undefined}))\n"
},
"typeVersion": 2
},
{
"id": "1ce88c89-4780-4c6f-9781-0c065ff6473f",
"name": "Agréger toutes les offres",
"type": "n8n-nodes-base.code",
"position": [
2144,
176
],
"parameters": {
"jsCode": "const items = $input.all().map((item) => {\n const itemJson = item.json;\n return {\n ...itemJson\n }\n})\n\nconsole.log(items.length)\n\nreturn {data: items}\n"
},
"typeVersion": 2
},
{
"id": "16173a79-9c23-47b6-8582-ee2c870fdc1a",
"name": "Envoyer la synthèse hebdomadaire des offres",
"type": "n8n-nodes-base.emailSend",
"position": [
2368,
176
],
"webhookId": "d53405e8-9964-43c2-8fe4-38eeebf65d34",
"parameters": {
"html": "={{(() => {\n const grouped = $json.data.sort((a,b) => new Date(b.date.replace(/\\s/, 'T')) - new Date(a.date.replace(/\\s/, 'T'))).reduce((acc, job) => {\n const source = job.source === 'n8n-forum' ? 'n8n-forum' : \n job.source === 'make-forum' ? 'make-forum' : \n 'reddit';\n if (!acc[source]) acc[source] = [];\n acc[source].push(job);\n return acc;\n }, {});\n \n return Object.entries(grouped).reduce((html, [source, jobs]) => \n html + '<div class=\"section\"><h2>' + \n (source === 'n8n-forum' ? 'n8n Forum Jobs' : \n source === 'make-forum' ? 'Make Forum Jobs' : \n 'Reddit Jobs') + '</h2>' +\n jobs.map(job => \n '<div class=\"job-item\"><h3><a href=\"' + job.jobLink + '\">' + \n job.jobTitle + '</a></h3><div class=\"date\">Posted: ' + \n job.date + '</div><div class=\"source\">Source: ' + \n (job.source === 'n8n-forum' ? 'n8n Forum' : \n job.source === 'make-forum' ? 'Make Forum' : \n 'Reddit - ' + job.origin) + '</div><p class=\"summary\">' + \n job.summary + '</p></div>'\n ).join('') + '</div>',\n '<!DOCTYPE html><html><head><style>body{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:800px;margin:0 auto;padding:20px}.section{margin-bottom:30px}.job-item{border:1px solid #ddd;margin-bottom:20px;padding:15px;border-radius:5px}h2{color:#2c5282;border-bottom:2px solid #2c5282;padding-bottom:10px;margin-top:30px}h3{color:#2c5282;margin:0 0 10px}a{color:#2b6cb0;text-decoration:none}a:hover{text-decoration:underline}.date,.source{color:#666;font-size:0.9em;margin-bottom:8px}.summary{background:#f8f9fa;padding:10px;border-left:4px solid #4299e1;margin:10px 0}</style></head><body><h1>Latest Job Opportunities</h1><p>Generated on: ' + new Date().toLocaleString() + '</p>'\n ) + '</body></html>';\n})()}}\n",
"options": {},
"subject": "Job Opportunities",
"toEmail": "test@example.com",
"fromEmail": "test@example.com"
},
"credentials": {
"smtp": {
"id": "JN7BvujMXvFvoUMh",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "ebe89e2a-da83-4150-9204-db0313daf256",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-64
],
"parameters": {
"width": 336,
"height": 176,
"content": "## 📋 WORKFLOW OVERVIEW\nThis automation scrapes Make.com's professional services forum for job postings, uses AI to summarize each opportunity, and emails you a digest of jobs from the last 7 days.\n"
},
"typeVersion": 1
},
{
"id": "e5334bb7-116e-4227-b938-3a4ae1c8c540",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
-64
],
"parameters": {
"height": 176,
"content": "## ⏱️ DATE FILTERING\nOnly processes jobs posted within the last 7 days.\nAdjust the filter condition to change this timeframe.\n"
},
"typeVersion": 1
},
{
"id": "33890a9f-ae80-4dcf-a430-3924fdc6c891",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
544
],
"parameters": {
"width": 320,
"height": 208,
"content": "## 🤖 AI EXTRACTION\nUses GPT-5-mini to read the job posting HTML and extract a clear summary \nof what the client wants to build. This makes scanning opportunities much faster!\n"
},
"typeVersion": 1
},
{
"id": "e19f09cd-617a-45f9-bc2c-47b1ec92a608",
"name": "Note adhésive 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2304,
-64
],
"parameters": {
"height": 192,
"content": "## 📧 EMAIL FORMATTING\nCreates a beautiful HTML email with jobs organized by source.\nUpdate the fromEmail and toEmail parameters to your addresses.\n"
},
"typeVersion": 1
},
{
"id": "050341ef-70f2-4e06-9e44-61d519a8910e",
"name": "Exécution hebdomadaire le lundi matin",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
144
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * 1"
}
]
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"9f811105-07b4-4c4e-ba7d-85183b718e1f": {
"main": [
[
{
"node": "1ce88c89-4780-4c6f-9781-0c065ff6473f",
"type": "main",
"index": 0
}
]
]
},
"1ce88c89-4780-4c6f-9781-0c065ff6473f": {
"main": [
[
{
"node": "16173a79-9c23-47b6-8582-ee2c870fdc1a",
"type": "main",
"index": 0
}
]
]
},
"c92e0da2-85ff-4a57-970f-1b9f636b8a1b": {
"main": [
[
{
"node": "45216826-c35d-4724-808a-0fc119fb60f4",
"type": "main",
"index": 0
}
]
]
},
"eb84699b-e02c-4ef8-b37a-2ffaf395396e": {
"main": [
[
{
"node": "9f811105-07b4-4c4e-ba7d-85183b718e1f",
"type": "main",
"index": 0
}
]
]
},
"3fb97846-8387-430c-bc8a-a20528978a46": {
"main": [
[
{
"node": "bdabba9a-ba1f-4261-8b97-d8e19987a730",
"type": "main",
"index": 0
},
{
"node": "eb84699b-e02c-4ef8-b37a-2ffaf395396e",
"type": "main",
"index": 1
}
]
]
},
"c598080e-3716-4ac4-b1a3-e18c3acb4ba5": {
"main": [
[
{
"node": "3fb97846-8387-430c-bc8a-a20528978a46",
"type": "main",
"index": 0
}
]
]
},
"0bcf04e4-f4c6-4530-8f42-58baa8e7f19d": {
"main": [
[
{
"node": "eb84699b-e02c-4ef8-b37a-2ffaf395396e",
"type": "main",
"index": 0
}
]
]
},
"652bb452-ea0e-4719-813d-994436d15960": {
"ai_languageModel": [
[
{
"node": "d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"45216826-c35d-4724-808a-0fc119fb60f4": {
"main": [
[
{
"node": "c598080e-3716-4ac4-b1a3-e18c3acb4ba5",
"type": "main",
"index": 0
}
]
]
},
"bdabba9a-ba1f-4261-8b97-d8e19987a730": {
"main": [
[
{
"node": "0bcf04e4-f4c6-4530-8f42-58baa8e7f19d",
"type": "main",
"index": 0
},
{
"node": "d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6",
"type": "main",
"index": 0
}
]
]
},
"65c33726-bacc-4180-b62f-15701697516d": {
"ai_outputParser": [
[
{
"node": "d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6": {
"main": [
[
{
"node": "eb84699b-e02c-4ef8-b37a-2ffaf395396e",
"type": "main",
"index": 2
}
]
]
},
"050341ef-70f2-4e06-9e44-61d519a8910e": {
"main": [
[
{
"node": "c92e0da2-85ff-4a57-970f-1b9f636b8a1b",
"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é
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
Julian Kaiser
@jksrFull Stack Developer turned AI & Automation Engineer, implementing intelligent solutions with custom code, LLMs & n8n. Use my link to book a free 30-minute call to discuss your AI challenges and see if my services might be a good fit for your needs.
Partager ce workflow