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