Build a daily AI news briefing with n8n and Claude
Build an n8n workflow that pulls AI news from 2 feeds each morning, has Claude summarize it and posts the briefing to Slack, in about 25 minutes.

What you need
Step 1: Start the workflow on a schedule
3 minThe Schedule Trigger starts the briefing at the same time every morning, with no clicks from you.
- In n8n, create a new workflow and add a Schedule Trigger node.
- Set Trigger Interval to days, Days Between Triggers to 1 and Trigger at Hour to 7am.
- Open the three-dot workflow menu, pick Settings and set Timezone to your own.
You should see a Schedule Trigger node on the canvas, set to run once a day at 7am.
The briefing arrives at the wrong hour?
Without a workflow timezone, n8n uses the instance timezone, which is New York time by default. Set Timezone in the workflow settings.
Step 2: Pull stories from 2 feeds
6 minRSS feeds give clean titles and links, and a cap of 5 stories per feed keeps the prompt short.
- Add an RSS Read node after the trigger and paste the TechCrunch AI feed below into URL.
- Add a second RSS Read node after the trigger, with the Hacker News feed below.
- After each RSS Read node, add a Limit node with Max Items set to 5.
- Connect both Limit nodes to a Merge node, with Mode set to Append.
Your feedshttps://techcrunch.com/category/artificial-intelligence/feed/ https://news.ycombinator.com/rss
You should see about 10 stories in the Merge node's output, each with a title and a link.
An RSS Read node shows an error?
Open the feed URL in your browser. If you get a web page or an error, the feed has moved. Look for the new feed link on the site.
To test one node while you build, open it and click Execute step. n8n runs the nodes before it too.
Step 3: Drop sponsored stories and bundle the rest
4 minClaude should get one clean list in a single call, not one call per story.
- After the Merge node, add a Filter node. Add 3 String conditions on
{{ $json.title }}, each set to does not contain: Sponsored, Advertisement and Partner. - Combine the conditions with AND, and turn on Ignore Case.
- Add an Aggregate node and pick All Item Data (Into a Single List).
- Set Put Output in Field to
stories. Under Include, pick Specified Fields and listtitle,linkandcontentSnippet.
You should see 1 item in the Aggregate output, holding a
storieslist.The Aggregate node still outputs 1 item per story?
Pick All Item Data (Into a Single List), not Individual Fields, then run the step again.
- After the Merge node, add a Filter node. Add 3 String conditions on
Step 4: Summarize the stories with Claude
6 minClaude turns the raw list into a short briefing and picks the one story worth your time.
- Add a Basic LLM Chain node after the Aggregate node. Set the prompt source to Define below and paste the prompt below into Prompt (User Message).
- Connect an Anthropic Chat Model node to the chain's model input.
- For its credential, paste an API key from platform.claude.com/settings/keys. On n8n Cloud, you can pick Use Gateway credits instead.
- In Model, choose a fast model from the list, such as Claude Haiku 5.5.
Your promptYou write a short morning briefing on AI news for a busy reader. For each story below, give the headline on its own line, then 2 sentences on what happened and why it matters, then the link. After the list, name the 1 story most worth reading today and say why in 1 sentence. Write plain text that reads well in Slack, with no tables, no JSON and no markdown headings. Stories: {{ JSON.stringify($json.stories) }}You should see the briefing in the chain's output, in a field called
text, with a pick of the day at the end.Claude says it got no stories, or you see [object Object]?
Keep
JSON.stringify()around the field, as in the prompt. Then check that the Aggregate node writes to a field namedstories.Your API key lives in an n8n credential, never in the prompt. Keep it out of shared files, exported workflows and screenshots.
Step 5: Post it to Slack and publish
5 minA test run catches formatting problems before the first 7am run, and publishing turns the schedule on.
- Add a Slack node with the message Send operation. Set Send Message To to Channel, pick your channel and set Message Text to
{{ $json.text }}. - For the Slack credential on n8n Cloud, click Connect my account and sign in to Slack.
- Click Execute workflow and check the message in Slack.
- Click Publish in the canvas header, then Publish again in the dialog.
You should see the briefing in your Slack channel, and the workflow marked as published.
The Slack message ends with a link back to n8n?
In the Slack node's options, turn off Include Link to Workflow, then run the workflow again.
A Schedule Trigger only fires in a published workflow. Changes you make later stay in draft until you publish again.
- Add a Slack node with the message Send operation. Set Send Message To to Channel, pick your channel and set Message Text to
You get
A briefing of the day's top AI stories in Slack every morning at 7am, with one pick to read first
Try next
Did this guide work for you?
Thanks. It helps us fix the steps.


