RSS to Google Sheets, curated news your team trusts
Your “news process” starts simple. Then it turns into copy-paste chaos: open the RSS feed, skim headlines, rewrite a summary, translate it for other markets, drop it into a sheet, and ping Slack so people actually see it.
This is the kind of mess that slows down content curators first. But localization teams feel it too, and so do marketing leads who need reliable updates. With RSS news automation, you get consistent briefs in English, Chinese, and Korean, logged to Google Sheets and posted to Slack without someone babysitting it.
This workflow pulls from an RSS feed (NHK by default), filters for the topics you care about, rewrites and translates with Google Gemini, then creates a clean archive your team can trust.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: RSS to Google Sheets, curated news your team trusts
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Model1", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Fetch RSS Feed", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Limit Items", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Keywords", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Rewrite Article", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Extract Location", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Translate Content", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Data"]
n10@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheets", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Slack"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Skipped"]
n9 --> n10
n4 --> n5
n3 --> n4
n5 --> n6
n5 --> n12
n6 --> n7
n7 --> n8
n0 --> n3
n1 -.-> n6
n1 -.-> n7
n8 --> n9
n2 -.-> n8
n10 --> n11
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n6,n7,n8 ai
class n1,n2 aiModel
class n5 decision
class n10 database
class n9 code
classDef customIcon fill:none,stroke:none
class n9,n11,n12 customIcon
The Challenge: Multilingual news curation that doesn’t fall apart
Keeping up with industry or regional news sounds easy until it becomes a daily obligation. You check a feed, skim ten posts, and try to summarize the one that matters. Then someone asks, “Can we share this in Chinese and Korean too?” Now you’re juggling translations, tone, accuracy, and speed. And because it’s manual, it’s inconsistent. Some days the summary is sharp, other days it’s rushed. Links go missing. Locations aren’t captured. A week later, you can’t find the original source because it never made it into a proper archive.
It adds up fast. Here’s where it breaks down in real teams.
- Manual rewriting and translating steals about an hour a day when you’re monitoring news continuously.
- Different people summarize differently, which means Slack threads fill with clarifying questions instead of decisions.
- If the sheet isn’t updated the same day, your “archive” turns into a half-finished list no one relies on.
- Keyword monitoring is easy to forget, so you miss the one story your team actually needed to see.
The Fix: An automated RSS-to-Sheets news pipeline with Gemini + Slack
This workflow turns an RSS feed into a repeatable, multilingual “news brief” system. It runs on a schedule, fetches the latest items, and limits the batch so you’re not processing an endless backlog. Next, it checks each item against your keywords (think “Tokyo,” “Season,” or any topics tied to your campaigns). When there’s a match, Google Gemini rewrites the article into a clean summary, extracts location details for quick scanning, and then generates translations in English, Chinese, and Korean. Finally, the workflow assembles everything into structured fields, appends a new row in Google Sheets, and posts a formatted update to Slack so your team sees it immediately.
The workflow starts with a scheduled trigger and RSS Read. Then the If filter decides what’s worth processing. After that, Gemini handles rewriting, location extraction, and multilingual translation, and the final output is both archived in Sheets and broadcast in Slack.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you monitor one RSS feed daily and usually review about 10 items. If you manually rewrite and translate just 3 relevant stories, that’s roughly 15 minutes per story for summarizing plus another 20 minutes to translate and format, or about 2 hours a day once you include pasting into Sheets and messaging Slack. With this workflow, you set the keywords once, let the scheduled run process the batch, and you only spend a few minutes skimming the Slack posts and the sheet. You’re still in control, but the busywork is gone.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store your curated archive.
- Slack to send team-facing updates.
- Google Gemini API access (get it from Google AI Studio / Google Cloud, depending on your setup).
Skill level: Beginner. You’ll connect accounts, paste a feed URL, and tweak a few prompts and keywords.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A schedule kicks everything off. You decide when it runs (morning, hourly, or a few times a day). The workflow then pulls the latest items from your RSS source.
The feed is trimmed and filtered. A limit step keeps the batch manageable, then an If check looks for your keywords so you only process stories that match what your team cares about.
Gemini rewrites, extracts, and translates. The agent rewrites the brief into a consistent style, pulls out location information, and produces translations for EN/ZH/KO. A small code step cleans the JSON so it’s ready to store.
Google Sheets and Slack get the final output. Each relevant item becomes a new row in Sheets with fields like title, summary, location, the three languages, and the source URL. Then Slack posts a neat update, while skipped items can trigger a separate alert.
You can easily modify the RSS feed URL to monitor a different source based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set up the workflow schedule so RSS items are pulled automatically at the desired time.
- Add or open Scheduled Run Trigger.
- Set the schedule rule to run at hour
20(from rule → interval → triggerAtHour). - Connect Scheduled Run Trigger to Retrieve RSS Items.
Step 2: Connect the RSS Source and Filter Logic
Pull news items, restrict volume, and filter by keywords before AI processing begins.
- In Retrieve RSS Items, set URL to
https://www.nhk.or.jp/rss/news/cat3.xml. - Connect Retrieve RSS Items to Restrict Item Count to limit the number of items processed.
- Open Keyword Match Check and ensure the conditions include title checks with
={{ $json.title }}and right values=,tokyo, andseasonusing the contains operator. - Connect Restrict Item Count to Keyword Match Check.
- Keyword Match Check outputs to both Rewrite News Brief and Slack Skip Alert in parallel (matched items are summarized; non-matched items send a skip notification).
Step 3: Set Up the AI Processing Chain
Configure the AI nodes to rewrite, extract location, and translate content. The AI credentials are attached to the language model nodes, not the agent nodes.
- Open Rewrite News Brief and confirm Text is set to
={{ $json.content }}and promptType isdefine. - Open Location Extraction and set Text to
={{ $('Restrict Item Count').item.json.content }}followed by the Japanese extraction prompt already configured. - Open Multilingual Translation and set Text to
=={{ $('Rewrite News Brief').item.json.output }}. - Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine.
- Credential Required: Connect your googlePalmApi credentials in Gemini Translate Engine.
- Confirm Gemini Chat Engine is connected as the language model for Rewrite News Brief and Location Extraction, and Gemini Translate Engine is connected to Multilingual Translation.
Step 4: Configure Output Assembly and Google Sheets Logging
Combine AI outputs into a structured JSON object and log the results to Google Sheets.
- Open Assemble Output Data and keep the existing JavaScript that merges Keyword Match Check, Rewrite News Brief, Location Extraction, and Multilingual Translation outputs.
- In Update Sheets Archive, set Operation to
appendOrUpdate. - Set Document to
[YOUR_ID]and Sheet Name toシート1. - Map the columns using expressions: en
={{ $('Assemble Output Data').item.json.en }}, zh={{ $('Assemble Output Data').item.json.zh }}, ko={{ $('Assemble Output Data').item.json.ko }}, url={{ $json.url }}, title={{ $json.title }}, summary={{ $json.short_summary }}, location={{ $('Location Extraction').item.json.output }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheets Archive.
Step 5: Configure Slack Notifications
Send summaries to Slack and notify when items are skipped.
- In Post Slack Update, set Channel to
[YOUR_ID]and keep Message Type asattachment. - Ensure the first attachment fields use expressions: Text
={{ $('Multilingual Translation').item.json.output }}, Title={{ $('Location Extraction').item.json.output }}, Footer=Original Article: {{ $('Restrict Item Count').item.json.link }}, and Title Link={{ $('Restrict Item Count').item.json.link }}. - Ensure the second attachment includes translations:
=*English:* {{ $('Assemble Output Data').item.json.en }} *Chinese:* {{ $('Assemble Output Data').item.json.zh }} *Korean:* {{ $('Assemble Output Data').item.json.ko }}. - In Slack Skip Alert, set Channel to
[YOUR_ID]and keep Text as==[Skipped Notification] The article "{{ $json.title }}" did not match the keywords (Tokyo or Season), so summarization was skipped.. - Credential Required: Connect your slackOAuth2Api credentials in Post Slack Update and Slack Skip Alert.
Step 6: Test and Activate Your Workflow
Validate the workflow end-to-end, then enable scheduled execution.
- Click Execute Workflow to run a manual test from Scheduled Run Trigger.
- Confirm that matched RSS items pass through Rewrite News Brief → Location Extraction → Multilingual Translation → Assemble Output Data.
- Verify Google Sheets updates appear in Update Sheets Archive with the mapped columns populated.
- Check Slack for either a summary from Post Slack Update or a notice from Slack Skip Alert when keywords don’t match.
- When everything is correct, toggle the workflow to Active to enable scheduled execution.
Watch Out For
- Google Sheets access can fail if the connected Google account loses permission to the spreadsheet. If rows stop appending, check the n8n credential and the sheet sharing settings first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Common Questions
About 30 minutes if your accounts are ready.
Yes. You’ll mostly connect Google Sheets, Slack, and Gemini credentials, then edit the keyword filter and prompts.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Gemini API usage costs (usually small for short summaries, but it depends on volume).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can replace the RSS source by changing the URL in the “Retrieve RSS Items” node, and you can tighten or broaden relevance by editing the “Keyword Match Check” conditions. The biggest unlock is the AI prompts: update the “Rewrite News Brief” prompt to match your brand voice, then adjust “Multilingual Translation” to use your preferred terminology (product names, place names, style rules). If you don’t need location, you can simplify by removing the “Location Extraction” step and still keep the Sheets + Slack outputs.
Usually it’s a token or permission issue: the Slack app may not have access to the channel ID you configured, or the credential in n8n is no longer valid. Double-check the channel ID, then re-authorize Slack in n8n if posts suddenly stop. Also watch for workspace security policies that restrict bots from posting.
If you self-host n8n, there’s no hard execution limit (it mostly depends on your server and how many RSS items you process per run). On n8n Cloud, the Starter tier works well for a small team running a few scheduled checks per day, and higher tiers handle heavier monitoring. Practically, this workflow is usually fine processing a small batch of items per run, especially because it already limits item count before calling Gemini.
Often, yes. This workflow uses branching logic (process vs. skip), multi-step AI handling, and structured archiving, which is where n8n tends to feel more flexible and less “pay per extra step.” Zapier or Make can still be a good fit if you only want a simple RSS-to-Slack ping with no AI rewriting or translations. If you care about prompts, clean JSON fields, and a sheet that becomes a real database, n8n is the smoother choice. Talk to an automation expert if you want help choosing the simplest setup.
Once it’s running, you stop “handling news” and start using it. The workflow keeps the archive clean and your Slack updates consistent, which makes the whole thing actually sustainable.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.