Build a Daily AI News Brief With n8n and Claude
This workflow runs every morning at 7am, pulls the top AI news from three RSS feeds, summarizes each story with Claude, and sends a clean digest to a Telegram channel. Setup takes about 30 minutes.
What You’ll Need
- n8n instance (self-hosted or cloud)
- Anthropic API key
- Telegram Bot token + channel ID
- RSS feeds (we use: TechCrunch AI, The Verge AI, VentureBeat AI)
Workflow Overview
Cron (7am daily)
→ Fetch RSS feeds (3x HTTP nodes, parallel)
→ Merge + deduplicate
→ Filter: last 24 hours only
→ Claude API: summarize each item (200 words max)
→ Format digest (Code node)
→ Telegram: send message
Step 1: Cron Trigger
Add a Schedule Trigger node. Set to 0 7 * * * (7am daily, UTC — adjust for your timezone).
Step 2: Fetch RSS Feeds
Add three HTTP Request nodes in parallel (connect all three from the Schedule node):
https://techcrunch.com/category/artificial-intelligence/feed/https://www.theverge.com/rss/ai-artificial-intelligence/index.xmlhttps://venturebeat.com/category/ai/feed/
Set Method: GET. The response will be XML — check “Response Format: Text”.
Step 3: Parse and Merge
Add an XML node after each HTTP node to parse the feed. Then use a Merge node (Mode: Combine All) to collect all items.
Add a Code node to deduplicate by title and filter to items published in the last 24 hours:
const now = Date.now();
const oneDayMs = 24 * 60 * 60 * 1000;
const seen = new Set();
return $input.all().filter(item => {
const pub = new Date(item.json.pubDate).getTime();
const title = item.json.title;
if (seen.has(title) || now - pub > oneDayMs) return false;
seen.add(title);
return true;
}).slice(0, 8); // cap at 8 stories
Step 4: Summarize With Claude
Add an HTTP Request node configured for the Anthropic API:
- URL:
https://api.anthropic.com/v1/messages - Method: POST
- Headers:
x-api-key: YOUR_KEY,anthropic-version: 2023-06-01,content-type: application/json
Body (Expression mode):
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 300,
"messages": [{
"role": "user",
"content": "Summarize this AI news story in 2-3 sentences. Focus on what's new and why it matters. Be direct.\n\nTitle: {{ $json.title }}\n\nContent: {{ $json.description }}"
}]
}
Use Haiku here — it’s fast and cheap for a simple summarization task. Connect this node with “Execute for Each Item” enabled.
Step 5: Format the Digest
Add a Code node to compile all summaries into a single message:
const items = $input.all();
const date = new Date().toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric' });
let msg = `*AI News Brief — ${date}*\n\n`;
items.forEach((item, i) => {
const title = item.json.title;
const summary = item.json.content?.[0]?.text ?? item.json.summary ?? '';
const link = item.json.link;
msg += `*${i + 1}. ${title}*\n${summary}\n[Read more](${link})\n\n`;
});
msg += `_Delivered by agenticoutputs.com_`;
return [{ json: { message: msg } }];
Step 6: Send to Telegram
Add a Telegram node:
- Operation: Send Message
- Chat ID: your channel ID (e.g.
@your_channelor numeric ID) - Text:
{{ $json.message }} - Parse Mode: Markdown
Running It
Activate the workflow. You can test immediately by clicking “Execute Workflow” manually. First run will call Claude once per story — at 8 stories, that’s 8 Haiku calls, which costs roughly $0.002 total.
At daily cadence, this workflow costs under $1/month to run.
Extensions
- Add a Slack node alongside Telegram to post to a team channel
- Filter by keyword to narrow to a specific topic (e.g. only stories mentioning “Claude” or “agents”)
- Store summaries in Airtable or Notion for a running archive
- Swap Claude Haiku for Sonnet if you want richer analysis