AI daily news digest
Every morning, AI summarises the latest articles from a news feed into one short email.
How it works
- Read the latest items from an RSS feed (industry news, blogs, Google News).
- Keep articles from the last 24 hours.
- Ask an AI model for a 5-bullet summary with the most important links.
- Email the digest to yourself.
Diagram
Code
JavaScript used in the Code step — already included in the template below.
// Keeps the last 24 hours of articles (max 15) as one block of text for the AI.
const DAY = 24 * 60 * 60 * 1000;
const articles = $input.all()
.map((item) => item.json)
.filter((a) => Date.now() - new Date(a.isoDate || a.pubDate).getTime() < DAY)
.slice(0, 15)
.map((a, i) => `${i + 1}. ${a.title}\n${(a.contentSnippet || "").slice(0, 300)}\n${a.link}`);
if (!articles.length) return [];
return [{ json: { articles: articles.join("\n\n") } }];Build it
Pick your tool — same automation, step by step.
Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder. AI steps use a Claude model node — swap it for OpenAI, Gemini or Ollama if you prefer.
Show code (182 lines)
{
"name": "AI daily news digest (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## AI daily news digest\nEvery morning, AI summarises the latest articles from a news feed into one short email.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Every day 7:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"url": "https://news.google.com/rss/search?q=YOUR_TOPIC&hl=en",
"options": {}
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Read news feed",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
300,
0
]
},
{
"parameters": {
"jsCode": "// Keeps the last 24 hours of articles (max 15) as one block of text for the AI.\nconst DAY = 24 * 60 * 60 * 1000;\n\nconst articles = $input.all()\n .map((item) => item.json)\n .filter((a) => Date.now() - new Date(a.isoDate || a.pubDate).getTime() < DAY)\n .slice(0, 15)\n .map((a, i) => `${i + 1}. ${a.title}\\n${(a.contentSnippet || \"\").slice(0, 300)}\\n${a.link}`);\n\nif (!articles.length) return [];\nreturn [{ json: { articles: articles.join(\"\\n\\n\") } }];"
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Last 24 hours",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
0
]
},
{
"parameters": {
"promptType": "define",
"text": "=Summarize today's most important news for a busy reader in 5 bullet points. Each bullet: one sentence plus the link. Skip duplicates and clickbait.\n\n{{ $json.articles }}"
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Summarize news",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
900,
0
]
},
{
"parameters": {
"model": {
"__rl": true,
"value": "claude-sonnet-5",
"mode": "list"
},
"options": {}
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Claude model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"typeVersion": 1.3,
"position": [
900,
220
]
},
{
"parameters": {
"sendTo": "you@yourcompany.com",
"subject": "=☕ Your news digest — {{ $now.toFormat('d LLL') }}",
"emailType": "text",
"message": "={{ $json.text }}",
"options": {
"appendAttribution": false
}
},
"id": "292cf932-28a7-4640-ac3f-63835463a159",
"name": "Email digest",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1200,
0
]
}
],
"connections": {
"Every day 7:00": {
"main": [
[
{
"node": "Read news feed",
"type": "main",
"index": 0
}
]
]
},
"Read news feed": {
"main": [
[
{
"node": "Last 24 hours",
"type": "main",
"index": 0
}
]
]
},
"Last 24 hours": {
"main": [
[
{
"node": "Summarize news",
"type": "main",
"index": 0
}
]
]
},
"Summarize news": {
"main": [
[
{
"node": "Email digest",
"type": "main",
"index": 0
}
]
]
},
"Claude model": {
"ai_languageModel": [
[
{
"node": "Summarize news",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}In Make, create a new scenario and add these modules in order:
- Schedule the scenario: Every day 7:00
- RSS › Retrieve RSS Feed Items
- Tools › Set variable / Iterator + Array aggregator (same logic as the Code step)
- Anthropic Claude › Create a Prompt (or OpenAI › Create a Completion)
- Gmail › Send an Email
- Every module run uses Make operations — the free plan includes a monthly quota.
- Make's built-in functions (map, sum, formatDate…) can replace most Code steps; for complex logic use a code module.
- Module and step names can differ slightly as Make and Zapier update their apps.
In Zapier, create a new Zap and add these steps in order:
- Schedule by Zapier — Every day 7:00
- RSS by Zapier + Digest by Zapier
- Code by Zapier — Run JavaScript (paste the code from the Code section)
- Anthropic (Claude) — Send Message (or ChatGPT — Conversation)
- Gmail — Send Email
- Zaps with more than two steps need a paid Zapier plan.
- Webhooks, Filters/Paths and Code by Zapier are premium features on some Zapier plans.
- Code by Zapier runs JavaScript: reuse the code shown above, reading inputs from inputData instead of $json.
- Module and step names can differ slightly as Make and Zapier update their apps.
Tips
- Google News offers RSS for any search: news.google.com/rss/search?q=your+topic
Related flows
AI drafts replies to your emails
AI writes a reply draft for every new email — you just review and hit send.
Turn labelled emails into Notion tasks
Label an email "To-do" and it becomes a Notion task with a link back to the email.
SMS alert for urgent emails
Get a text message when an important email arrives, even when you're away from your inbox.