Résumé quotidien des actualités Hacker News : résumé par GPT-5 et envoi par e-mail
Ceci est uncontenant 16 nœuds.Utilise principalement des nœuds comme Set, Filter, Markdown, Aggregate, EmailSend. Obtenir un résumé quotidien des actualités IA de Hacker News, résumer avec GPT-5 et envoyer par e-mail
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (16)
Catégorie
{
"meta": {
"instanceId": "3d7eb9567ae690bf8c9bba1cb43396e6e40c18e15eb5889cf9673ed1713da6db",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "c352f6dc-9570-419d-9d48-3c94758a0104",
"name": "Récupérer les articles IA de HN",
"type": "n8n-nodes-base.hackerNews",
"position": [
1024,
3552
],
"parameters": {
"limit": 1000,
"resource": "all",
"additionalFields": {
"keyword": "AI"
}
},
"typeVersion": 1
},
{
"id": "2a57c491-15f9-4035-854f-9bc410e9fe5e",
"name": "Filtrer les 24 dernières heures",
"type": "n8n-nodes-base.filter",
"position": [
1232,
3552
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f59903f3-835c-407a-a930-060d20c8abdf",
"operator": {
"type": "dateTime",
"operation": "afterOrEquals"
},
"leftValue": "={{ $json.created_at }}",
"rightValue": "={{ $now.minus({ days: 1 }).toFormat('yyyy-MM-dd') }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "960d99c5-3bfa-4baa-b9eb-4cc41e6ad961",
"name": "Boucler sur les éléments",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1440,
3552
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "9bf34ea7-64ad-4bc5-b4f7-af3a1d1fa0a0",
"name": "Extraire l'URL de l'article",
"type": "n8n-nodes-base.httpRequest",
"position": [
1648,
3632
],
"parameters": {
"url": "={{ $json.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "714804a1-ebc4-474a-9de0-4e8785086129",
"name": "Convertir en Markdown",
"type": "n8n-nodes-base.markdown",
"position": [
1872,
3632
],
"parameters": {
"html": "={{ $json.data }}",
"options": {}
},
"typeVersion": 1
},
{
"id": "72b3a898-bfa8-4388-9a8c-a9c9c4895020",
"name": "GPT Résumer l'article",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
2064,
3632
],
"parameters": {
"text": "=Summarize the info below so that I can get a quick news snippet of what this is about in the area of AI. \n\nSimply output the main point as the heading and then 2 sentences of the summary (maybe with a link)\n\n---\n\nScraped info below: {{ $json.markdown }}",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "dd7d375a-26bd-469f-8cea-2d68511aa1bb",
"name": "Formater l'élément d'actualité",
"type": "n8n-nodes-base.set",
"position": [
2368,
3728
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ec79a00c-98ba-40fc-b606-b4e40eeed15c",
"name": "news",
"type": "string",
"value": "={{ $('GPT Summarize Article').item.json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b612d024-cb1b-4f93-8761-3a4e805cb0a2",
"name": "Combiner tous les résumés",
"type": "n8n-nodes-base.aggregate",
"position": [
1648,
3456
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "news"
}
]
}
},
"typeVersion": 1
},
{
"id": "db3ace26-4a67-4916-9f16-1719fdfbaed7",
"name": "Envoyer le digest par email",
"type": "n8n-nodes-base.emailSend",
"position": [
1872,
3456
],
"webhookId": "ec7ef530-cebe-4a22-b9ad-428230ba4b71",
"parameters": {
"html": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Daily News Digest</title>\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #f5f5f5;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n line-height: 1.5;\n color: #333;\n }\n \n .email-container {\n max-width: 600px;\n margin: 0 auto;\n background-color: white;\n padding: 0;\n }\n \n .header {\n background-color: #d97757;\n color: white;\n text-align: center;\n padding: 20px;\n border-radius: 8px 8px 0 0;\n }\n \n .header h1 {\n margin: 0;\n font-size: 18px;\n font-weight: 500;\n }\n \n .content {\n padding: 30px 40px;\n background-color: white;\n }\n \n .news-item {\n margin-bottom: 30px;\n padding-bottom: 25px;\n border-bottom: 1px solid #e0e0e0;\n }\n \n .news-item:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n }\n \n .news-title {\n font-size: 16px;\n font-weight: 600;\n color: #333;\n margin: 0 0 12px 0;\n line-height: 1.4;\n }\n \n .news-content {\n font-size: 14px;\n color: #666;\n line-height: 1.6;\n margin: 0;\n }\n \n .news-content a {\n color: #d97757;\n text-decoration: none;\n }\n \n .news-content a:hover {\n text-decoration: underline;\n }\n \n .footer {\n text-align: center;\n padding: 20px;\n background-color: #f9f9f9;\n color: #888;\n font-size: 12px;\n border-radius: 0 0 8px 8px;\n }\n \n @media (max-width: 600px) {\n .email-container {\n margin: 0 10px;\n }\n \n .content {\n padding: 20px 25px;\n }\n \n .header {\n padding: 15px;\n }\n }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"header\">\n <h1>📰 Latest AI News — {{ $now.format('MMMM d, yyyy') }}</h1>\n </div>\n \n <div class=\"content\">\n {{ $json.news.join('') }}\n </div>\n \n <div class=\"footer\">\n You're receiving this digest because you subscribed to updates.<br>\n © 2025 AI News Digest\n </div>\n </div>\n</body>\n</html>",
"options": {},
"subject": "Daily AI Digest - {{ $now.format('MMMM d, yyyy') }}",
"toEmail": "recipient@example.com",
"fromEmail": "AI News <noreply@example.com>"
},
"credentials": {
"smtp": {
"id": "M9BmJSJmYzVHw6xq",
"name": "Zoho Mail 2"
}
},
"typeVersion": 2.1
},
{
"id": "030bc0bb-c0ae-4234-9a9e-720c86ba3f0c",
"name": "Déclencheur quotidien",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
800,
3552
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "f59da8bf-9079-46e6-a97d-63ac00da0f09",
"name": "Vue d'ensemble et configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
3168
],
"parameters": {
"color": 4,
"width": 728,
"height": 1072,
"content": "# Daily AI News Digest from Hacker News\n\n## 📋 What This Template Does\nFetches recent AI stories from Hacker News, filters for today, scrapes each article, summarizes with GPT into snippets, aggregates into HTML, and emails a styled daily digest.\n\n## 🔧 Prerequisites\n- n8n instance\n- OpenAI API access\n- SMTP server (e.g., Zoho, Gmail)\n\n## 🔑 Required Credentials\n\n### OpenAI API\n1. Get key from platform.openai.com/api-keys\n2. Add to n8n as OpenAI credential\n3. Assign to \"GPT 5 pro\" node\n\n### SMTP Setup\n1. Configure in n8n credentials (host, port, user/pass)\n2. Assign to \"Send Email Digest\" node\n3. Update fromEmail/toEmail fields\n\n## ⚙️ Configuration Steps\n1. Import JSON into n8n\n2. Assign OpenAI and SMTP credentials\n3. Update fromEmail/toEmail in \"Send Email Digest\" node\n4. Set schedule in \"Daily Schedule Trigger\" (e.g., daily at 8 AM)\n5. Activate workflow\n\n## 🎯 Use Cases\n- Personal AI news briefing\n- Team knowledge sharing\n- Content curation for blogs\n\n## ⚠️ Troubleshooting\n- No stories: Check keyword filter; HN API limits\n- Scraping fails: Add proxy if blocked\n- Email not sending: Verify SMTP settings\n- Summaries poor: Tweak GPT prompt"
},
"typeVersion": 1
},
{
"id": "088aeedc-3850-415e-a691-691fd3e02428",
"name": "Note : Récupération et filtrage HN",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
3728
],
"parameters": {
"color": 2,
"width": 428,
"height": 304,
"content": "## 📥 Data Collection\n\n**Fetch HN AI Stories:**\n- Pulls 1000 stories with \"AI\" keyword\n- Uses public HN API (no auth needed)\n\n**Filter Last 24 Hours:**\n- Checks `created_at` field\n- Keeps only yesterday/today posts\n- Uses `$now().minus({ days: 1 })`\n\n**💡 Customization:**\nChange keyword filter or date range here"
},
"typeVersion": 1
},
{
"id": "4c555f5e-4b5b-4176-bc8e-161dcb9a9b25",
"name": "Note : Extraction et traitement",
"type": "n8n-nodes-base.stickyNote",
"position": [
1488,
3888
],
"parameters": {
"color": 3,
"width": 484,
"height": 352,
"content": "## 🌐 Content Processing\n\n**Loop Over Items:**\n- Processes each story sequentially\n- Prevents rate limiting\n\n**Scrape Article URL:**\n- Fetches content from source URL\n- May need proxy for blocked sites\n\n**Convert to Markdown:**\n- Cleans HTML to text\n- Formats for LLM input\n\n**💡 Troubleshooting:**\nIf scraping fails, check URL accessibility"
},
"typeVersion": 1
},
{
"id": "3e0e97ce-561d-4c6b-a9b4-96b0eacf90d5",
"name": "Note : Résumé par IA",
"type": "n8n-nodes-base.stickyNote",
"position": [
2176,
3904
],
"parameters": {
"color": 5,
"width": 460,
"height": 336,
"content": "## 🤖 AI Summarization\n\n**GPT Summarize Article:**\n- Generates heading + 2 sentences\n- Extracts key AI insights\n- Includes link when relevant\n\n**Format News Item:**\n- Wraps in HTML for email\n- Prepares for aggregation\n\n**Combine All Summaries:**\n- Merges into single array\n- Ready for email template\n\n**💡 Customization:**\nEdit prompt for different summary styles"
},
"typeVersion": 1
},
{
"id": "2dbe3adc-d430-4eff-9306-c2f45cd632f3",
"name": "Note : Livraison par email",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
3200
],
"parameters": {
"color": 6,
"width": 436,
"height": 320,
"content": "## 📧 Email Delivery\n\n**Send Email Digest:**\n- Styled HTML template\n- Mobile-responsive design\n- Inline CSS for compatibility\n\n**Template Features:**\n- Clean news item layout\n- Branded header/footer\n- Clickable links\n\n**⚙️ Required:**\nUpdate fromEmail/toEmail before activating"
},
"typeVersion": 1
},
{
"id": "eaa3c5c3-bf65-4efc-8f23-208ed7751ed4",
"name": "GPT 5 pro",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2064,
3808
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-5-pro",
"cachedResultName": "gpt-5-pro"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "ymMvgDroJHalwvRf",
"name": "OpenAI"
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"eaa3c5c3-bf65-4efc-8f23-208ed7751ed4": {
"ai_languageModel": [
[
{
"node": "72b3a898-bfa8-4388-9a8c-a9c9c4895020",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"960d99c5-3bfa-4baa-b9eb-4cc41e6ad961": {
"main": [
[
{
"node": "b612d024-cb1b-4f93-8761-3a4e805cb0a2",
"type": "main",
"index": 0
}
],
[
{
"node": "9bf34ea7-64ad-4bc5-b4f7-af3a1d1fa0a0",
"type": "main",
"index": 0
}
]
]
},
"dd7d375a-26bd-469f-8cea-2d68511aa1bb": {
"main": [
[
{
"node": "960d99c5-3bfa-4baa-b9eb-4cc41e6ad961",
"type": "main",
"index": 0
}
]
]
},
"9bf34ea7-64ad-4bc5-b4f7-af3a1d1fa0a0": {
"main": [
[
{
"node": "714804a1-ebc4-474a-9de0-4e8785086129",
"type": "main",
"index": 0
}
]
]
},
"714804a1-ebc4-474a-9de0-4e8785086129": {
"main": [
[
{
"node": "72b3a898-bfa8-4388-9a8c-a9c9c4895020",
"type": "main",
"index": 0
}
]
]
},
"c352f6dc-9570-419d-9d48-3c94758a0104": {
"main": [
[
{
"node": "2a57c491-15f9-4035-854f-9bc410e9fe5e",
"type": "main",
"index": 0
}
]
]
},
"2a57c491-15f9-4035-854f-9bc410e9fe5e": {
"main": [
[
{
"node": "960d99c5-3bfa-4baa-b9eb-4cc41e6ad961",
"type": "main",
"index": 0
}
]
]
},
"b612d024-cb1b-4f93-8761-3a4e805cb0a2": {
"main": [
[
{
"node": "db3ace26-4a67-4916-9f16-1719fdfbaed7",
"type": "main",
"index": 0
}
]
]
},
"72b3a898-bfa8-4388-9a8c-a9c9c4895020": {
"main": [
[
{
"node": "dd7d375a-26bd-469f-8cea-2d68511aa1bb",
"type": "main",
"index": 0
}
]
]
},
"030bc0bb-c0ae-4234-9a9e-720c86ba3f0c": {
"main": [
[
{
"node": "c352f6dc-9570-419d-9d48-3c94758a0104",
"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
Daniel Nkencho
@daniel-automatesAI Automation Consultant | Helping Business Owners Implement AI Systems for growth and lead gen
Partager ce workflow