Build a Daily AI News Brief With n8n and Claude
Automation

Build a Daily AI News Brief With n8n and Claude

mrmolsen · June 6, 2026 ·7 min read

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.xml
  • https://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_channel or 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