{"slug": "build-an-ai-automation-with-an-rss-trigger-in-n8n", "title": "Build an AI Automation with an RSS Trigger in n8n", "summary": "A developer published a step-by-step n8n workflow that polls an RSS feed every 30 minutes, summarizes new items with an Anthropic Claude model via the Basic LLM Chain node, validates the model's JSON output in a Code node, gates items on a 1-10 relevance score of 6 or higher, and posts the survivors to Slack. The build includes Retry On Fail settings for rate limits, a separate Error Trigger workflow that alerts on failures, and a Limit node to cap cost on the first backfill run. The developer advises skipping the LLM entirely for simple feed-to-Slack posting and adding AI only when summarization, scoring, or entity extraction is needed.", "body_md": "Most n8n + AI tutorials end with a workflow that works once. This one is built to keep running: it triggers on an RSS feed, summarizes new items with an LLM, filters out noise, and posts to Slack. It also covers what happens when things fail.\n\nThe workflow\n\nRSS Feed Trigger → Basic LLM Chain (Claude) → Code (validate JSON) → IF (relevance) → Slack\n\nPlus a separate Error Workflow for alerts.\n\nDo you even need AI here?\n\nIf you only want “post every new item to Slack,” skip the LLM. RSS Trigger + Slack is two nodes and costs nothing. Add AI when you need judgment: summarizing, scoring relevance, extracting entities, or rewriting for an audience.\n\nStep 1: RSS Feed Trigger\n\nAdd an RSS Feed Trigger node.\n\nFeed URL: your feed\n\nPoll Times: every 30 minutes (RSS has no webhooks, so polling is the trigger)\n\nn8n remembers which items it has already emitted, so you get deduplication for free. This is one of the best reasons to use n8n for this. Note that the very first activation can emit a batch of existing items, so test with a small or low-traffic feed first.\n\nStep 2: Summarize with an LLM\n\nAdd a Basic LLM Chain node and attach an Anthropic Chat Model sub-node with your credentials. Pick the model from the dropdown, and check Anthropic’s docs for current model names.\n\nSet the prompt to:\n\nTitle: {{ $json.title }}\n\nContent: {{ ($json.contentSnippet || $json.content || '').slice(0, 6000) }}\n\nAnd the system message to:\n\nYou summarize articles for a busy web developer.\n\nRespond with ONLY a JSON object:\n\n{\"summary\": string (max 2 sentences), \"relevance\": number 1-10, \"tags\": string[]}\n\nNo markdown, no preamble.\n\nThe .slice(0, 6000) caps token cost per item. Some feeds ship full article HTML, which gets expensive fast.\n\nIn the node’s Settings tab, turn on Retry On Fail (3 tries, a few seconds between). That covers rate limits and temporary API errors.\n\nStep 3: Validate the output (Code node)\n\nNever trust raw LLM output. Add a Code node (JavaScript, “Run Once for Each Item”):\n\njs\n\nconst raw = ($json.text || '').replace(/\n\n``` js\n/g, '').trim();\n\nlet d;\ntry {\n  d = JSON.parse(raw);\n} catch (e) {\n  throw new Error('Model returned invalid JSON: ' + raw.slice(0, 200));\n}\n\nif (\n  typeof d.summary !== 'string' ||\n  typeof d.relevance !== 'number' ||\n  !Array.isArray(d.tags)\n) {\n  throw new Error('Unexpected shape: ' + JSON.stringify(d));\n}\n\nreturn {\n  json: {\n    title: $('RSS Feed Trigger').item.json.title,\n    link: $('RSS Feed Trigger').item.json.link,\n    ...d,\n  },\n};\n\nThrowing on bad output is intentional. It turns “weird message in Slack” into a clean, visible failure. If you prefer, n8n’s Structured Output Parser sub-node can enforce a schema for you, but the Code node gives you more control over error messages.\n\nStep 4: Relevance gate (IF node)\n\nAdd an IF node: {{ $json.relevance }} is greater than or equal to 6. Connect the true branch onward. This is where the AI earns its cost, because noise is filtered out before it reaches your channel.\n\nStep 5: Slack\n\nAdd a Slack node (Send Message) on the true branch:\n\n*<{{ $json.link }}|{{ $json.title }}>* ({{ $json.relevance }}/10)\n{{ $json.summary }}\n_{{ $json.tags.join(', ') }}_\n\nStep 6: Error handling\n\nCreate a new workflow called “Alert on failure” starting with an Error Trigger node, followed by a Slack or email node that sends {{ $json.workflow.name }} and {{ $json.execution.error.message }}.\nIn your main workflow, open Settings and set Error Workflow to the one you just made.\n\nNow any failure pings you instead of dying silently.\n\nWhat breaks, and what happens\n\nWhat breaks Result\nFeed is down    Execution fails, the Error Workflow alerts you, and the next poll retries\nAPI rate limit  Retry On Fail handles it, and the Error Workflow alerts you if retries run out\nModel returns bad JSON  Code node throws and you get an alert\nSlack is down   Slack node fails and you get an alert\nBig first run   Add a Limit node after the trigger (e.g. 20 items) to cap cost on backfill\n\nOne thing to know: if a node fails mid-run, that item has already been consumed by the trigger, so it won’t be retried automatically on the next poll. For anything critical, either send failed items to a Google Sheet or database in the error branch, or re-run the failed execution manually from the Executions tab.\n\nWhere to take it next\n\nSwap Slack for email, Notion, or a database\nMerge several feeds and tag each by source\nHave the model draft a social post for high-relevance items\nAdd a Wait node and a human approval step before anything gets published\n\nWrapping up\n\nAn RSS trigger is the simplest way into event-driven AI automation. The LLM call is the easy part. The real work is validation, retries, and knowing what happens when something fails.\n\nWhat feeds are you pointing yours at? Let me know in the comments.\n```\n\n", "url": "https://wpnews.pro/news/build-an-ai-automation-with-an-rss-trigger-in-n8n", "canonical_source": "https://dev.to/gym_growthx_b19a6a17c1306/build-an-ai-automation-with-an-rss-trigger-in-n8n-fic", "published_at": "2026-10-22 14:39:01+00:00", "updated_at": "2026-10-22 14:43:15.408859+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-agents", "developer-tools"], "entities": ["n8n", "Anthropic", "Claude", "Slack"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/build-an-ai-automation-with-an-rss-trigger-in-n8n", "markdown": "https://wpnews.pro/news/build-an-ai-automation-with-an-rss-trigger-in-n8n.md", "text": "https://wpnews.pro/news/build-an-ai-automation-with-an-rss-trigger-in-n8n.txt", "jsonld": "https://wpnews.pro/news/build-an-ai-automation-with-an-rss-trigger-in-n8n.jsonld"}}