Turn RSS Feeds into AI-Written Social Posts with n8n
Most content marketing playbooks boil down to the same manual loop: read an article, open a doc, write three variations, pick one, paste it into a scheduler, repeat. That cycle is exactly what n8n was built to automate — and once you add an AI node, the quality bar is high enough to actually publish.
This post walks through a concrete n8n workflow that watches RSS feeds, rewrites each new item into a platform-appropriate social post, and hands it off to your scheduling tool or posting node. Every node, field name, and config choice is real.
What the workflow does
- Runs on a schedule (e.g., every 30 minutes or every hour).
- Reads one or more RSS feeds.
- Filters out items it has already processed.
- Sends each new item to an AI/LLM node with a platform-specific prompt.
- Posts the result to LinkedIn, X, or a Buffer/Airtable queue.
Total nodes: 5–7. Total setup time: under 30 minutes.
Step 1 — Schedule Trigger
Drop a Schedule Trigger node and set it to your cadence. For a busy tech news feed, every 30 minutes makes sense. For a slower industry blog, once or twice a day is fine.
{
"rule": {
"interval": [{ "field": "minutes", "minutesInterval": 30 }]
}
}
One trigger node can kick off checks across multiple feeds if you chain them with a Merge node later, but start with a single feed to keep things debuggable.
Step 2 — RSS Read node
Add an RSS Read node. Point it at any valid RSS or Atom URL. For example:
https://feeds.arstechnica.com/arstechnica/index(tech news)https://hnrss.org/frontpage(Hacker News)- Your own blog's
/feed.xml
The node returns an array of items. Each item has fields like title, link, content, pubDate, and guid. You'll reference guid in the next step.
Tip: Enable "Return All Items" only if you want to backfill on the first run. For ongoing use, leave it at the default limit (usually 10 items per run) — you only want recent entries.
Step 3 — Deduplicate with an IF or Deduplication node
Without this step the flow reposts the same articles on every run. You have two options:
Option A — Deduplication node (n8n 1.22+):
Add a Deduplication node, set the key to {{ $json.guid }}, and choose "Remove items seen in previous executions." n8n stores seen keys internally so no external database is needed.
Option B — IF node + date check:
If your feed always has a reliable pubDate, add an IF node:
- Condition:
{{ DateTime.fromISO($json.pubDate) > $now.minus({ minutes: 35 }) }}
Items older than the window are dropped; fresh ones pass through.
Step 4 — AI / LLM node (the core of the workflow)
Add an AI / LLM (or OpenAI Message Model / Basic LLM Chain) node. This is where the rewriting happens.
Prompt structure
The system prompt sets the persona and constraints. The user message injects the article data. Here's a working example for a LinkedIn post:
System prompt:
You are a B2B content marketer. Write LinkedIn posts that are direct, insight-led,
and end with a single clear takeaway or question. No hashtag spam — at most 3 relevant
hashtags. 150–220 words. Do not start with "I" or with a generic observation.
Write in first person as if the reader is sharing their own opinion.
User message (use n8n expressions):
Article title: {{ $json.title }}
Article summary: {{ $json.contentSnippet }}
Source URL: {{ $json.link }}
Write a LinkedIn post that shares the key insight from this article.
For X (Twitter), swap the system prompt for one that demands 240 characters or fewer, a punchy opener, and no filler phrases.
You can create separate branches with an IF node to route LinkedIn-bound items to one prompt and X-bound items to another — same article, two different rewrites, queued to two different platforms.
Model choice
Pick a model that balances cost and quality for short-form copy. claude-3-5-haiku and gpt-4o-mini are both fast and cheap for this task. You can change the model any time from the node's dropdown — no code change required.
Step 5 — Post or queue the output
You have two main paths:
Direct posting:
- LinkedIn node → "Create Post" → set the
textfield to{{ $json.output }}(the AI node's output field) → authenticate via OAuth. - X (Twitter) node → "Create Tweet" → same pattern.
Queue for review first (recommended when starting out):
- Airtable node → append a row with
post_text,platform,source_url, andstatus = "pending". A human (or a second workflow) picks up pending rows and publishes them. - Google Sheets node → same idea, useful if your team already lives in Sheets.
Queueing for review is the safer default. Once you've seen 20–30 outputs and you're happy with the quality, switch to direct posting.
Optional: Set node for metadata
Before hitting the AI node, add a Set node to normalize the fields you'll reference in prompts. This keeps expressions readable:
{
"title": "{{ $json.title }}",
"summary": "{{ $json.contentSnippet || $json.content.slice(0, 500) }}",
"url": "{{ $json.link }}",
"feedName": "Hacker News"
}
Run this on AgentRoost
The workflow above needs to run continuously on a schedule — which means it needs an always-on n8n instance. Running n8n on your laptop or a spare cloud VM means it goes dark when you close the lid or the instance sleeps.
On AgentRoost you get your own n8n instance — your login, your workflows, your data — running around the clock and accessible at https://<your-id>.agentroost.app.
The part that matters for this workflow: the AI/LLM node works out of the box because LLM credits are included in the subscription. Every competitor (n8n Cloud, Elestio, Sliplane, Hostinger) is bring-your-own-API-key. Here, you just wire up the node and hit "Execute" — no OpenAI account, no Anthropic account, no billing to set up on the side.
How to get started:
- Sign up at AgentRoost (email, Google, Microsoft, or Discord).
- Pick the n8n framework, name your instance.
- Your private n8n editor opens at
https://<your-id>.agentroost.app— usually within two minutes. - Import the workflow JSON or build it node by node from this guide.
- Activate the Schedule Trigger. Done.
Plans start at $19.99/mo all-in — that's the server, the n8n instance, and the LLM credits bundled. 14-day money-back guarantee, cancel anytime.
Compare plans — or go straight to the n8n framework page to see what's included.
Common pitfalls
The AI output includes the source URL — LinkedIn will still show a preview card. That's fine, but if you want a clean post without a duplicate link in the text, strip {{ $json.url }} from the prompt's user message and let the LinkedIn node attach the URL as a separate field.
Feed items with no contentSnippet. Some feeds only give a title and link. Add a fallback in the Set node: {{ $json.contentSnippet || $json.title }}. For more depth, add an HTTP Request node to fetch and parse the article body before the AI node.
Token limits on long articles. If content is a full article (5,000+ words), the AI node's context window fills up. Truncate in the Set node: {{ $json.content.slice(0, 1500) }} — the first 1,500 characters usually contain the lede and key points.
Rate limits on posting APIs. LinkedIn's API allows 100 posts per day per member token. For most use cases that's not a constraint, but if you're pulling from 20 feeds and posting everything, add a Wait node between posts.
What you end up with
A workflow that runs on a schedule, reads the feeds you care about, skips what it's already seen, writes a platform-appropriate post for each new item, and either publishes it directly or drops it in a review queue — without you touching a keyboard. The AI node handles the rewriting, and on AgentRoost it does so without requiring you to manage a single API key.
Frequently asked questions
Do I need an OpenAI or Anthropic API key to use the AI node?
Not on AgentRoost. LLM credits are included in every subscription plan, so the AI/LLM node works the moment you drop it into a workflow. You choose from 350+ models in the node's settings — no external key to paste, no billing account to link.
How do I stop the workflow from re-posting the same articles on every run?
Add a Deduplication node (available in n8n 1.22+) between the RSS Read node and the AI node. Configure it to key on the feed item's guid or link field. Items already seen in a previous run are filtered out automatically. Alternatively, a simple IF node checking a date field against the last run timestamp works for feeds with reliable pubDate values.
Can I post directly to LinkedIn and X (Twitter) from n8n?
Yes — n8n has built-in nodes for both. The LinkedIn node covers personal-profile and company-page posts. For X, use the X (Twitter) node (OAuth 2.0, Basic tier allows posting). You'll need to connect your social accounts via OAuth in n8n's credential manager — this is a one-time setup.
What happens if my AgentRoost instance goes down?
Your instance runs 24/7 on always-on infrastructure. If a scheduled run is missed due to maintenance, n8n records the last execution time and the next scheduled trigger fires as normal. Workflow execution history is stored on your instance so you can inspect any run.
Can I export my workflows if I want to move away?
Yes. n8n workflows are plain JSON — you can export any workflow from the editor's menu at any time. You own the data and the workflow definitions. There's no lock-in.