I follow around 35 RSS feeds. Infrastructure security advisories, DevOps tooling blogs, language and framework changelogs, staff-level engineering posts from companies I respect.
On any given day, maybe 5-10 of those articles are actually relevant to what I'm working on. The rest is noise I was spending 20-30 minutes every morning scanning through, and I still missed things.
So I built an API for SereneReader, my RSS reader, and connected it to my OpenClaw agent. It checks my feeds three times a day (9 AM, 12 PM, 6 PM) and sends me what's worth reading. That morning scan is down to about two minutes now.
The feeds I'm monitoring
My SereneReader account has feeds organized into folders: Infra Security, Cloud & DevOps, Node.js / TypeScript, Vue / Nuxt, .NET, and Staff+ Engineering.
On a busy day, that's 50+ new articles. Most aren't relevant to whatever I'm shipping that week. An npm advisory matters if the package is in my lockfile. A new Vue RFC matters if it affects my projects. A Stripe engineering retrospective is interesting but not urgent. I needed something that could tell the difference.
Why I built the API instead of scraping
The obvious approach would be to have the agent scrape RSS feeds directly. Parse XML, fetch articles, deal with encoding. I tried that early on. Feeds use different XML dialects (RSS 1.0, RSS 2.0, Atom), plenty have broken encoding, some need specific User-Agent headers, and a few rate-limit aggressively. It was miserable.
SereneReader was built to deal with all of that. It fetches feeds on a schedule, parses the XML, fixes encoding, deduplicates articles, and stores structured data. I just needed to expose that as JSON.
Three endpoints: list articles (with filters for feed, folder, and date range), list feeds, and check usage. Bearer token auth, 30 requests per minute. The agent never touches RSS or XML; it queries the API and gets back titles, URLs, publish dates, snippets, and feed metadata.
I wrote a more detailed walkthrough of the API itself on the SereneReader blog: Building automations with the SereneReader API.
The OpenClaw setup
OpenClaw is an AI agent platform that lets agents call external APIs as tools. Three things to configure: the API tool, the agent instructions, and a schedule.
Defining the SereneReader tool
In the OpenClaw agent config, I pointed it at SereneReader's article endpoint. It needs the API base URL, the Bearer token, and the query parameters (since, folder, limit). SereneReader's settings page shows the endpoint docs, so configuring the tool was straightforward.
The schedule
Three runs per day:
- 9:00 AM - Morning briefing. Covers overnight articles.
- 12:00 PM - Midday check. Catches anything published in the morning across US and European time zones.
- 6:00 PM - End of day. Quick scan before I stop working. Anything urgent gets flagged for tomorrow morning.
Each run uses the since parameter to fetch only what's been published since the last check. The 9 AM run looks back about 15 hours, noon looks back 3, and 6 PM looks back 6.
The agent prompt
Here's roughly what my agent instructions look like:
You have access to the SereneReader API. Fetch articles published
since the last check.
For each article, evaluate whether it's relevant to:
- Infrastructure security (CVEs, advisories, breaches, patches)
- DevOps tooling I use (Railway, Docker, GitHub Actions, Cloudflare)
- Node.js/TypeScript ecosystem changes that affect production code
- Vue, Nuxt updates that require migration or unlock new patterns
- Staff+ engineering insights (architecture decisions, scaling,
team leadership, incident management)
Ignore:
- Marketing announcements and product launches I don't use
- Beginner tutorials
- Opinion pieces without actionable takeaways
- Anything I've seen in a previous check
For relevant articles, provide:
1. The title and source feed
2. A 1-2 sentence summary of why it matters to me specifically
3. Priority: HIGH (security advisories, breaking changes) or
NORMAL (worth reading when I have time)
If nothing relevant was published, say so. Don't pad the summary.The "why it matters to me specifically" part is what makes this work. I don't want a generic summary. I want "new CVE in a package in your lockfile" or "Railway changed how deploys work, and you use that config." Not keyword matching; actual reasoning about my stack.
What the briefings look like
A typical briefing might flag a CVE in a package in my lockfile as HIGH priority, a relevant infrastructure changelog as NORMAL, and skip the 40+ articles that don't apply to my current work. Each flagged item includes the source feed and a sentence or two about why it matters to me specifically. The whole thing takes about 90 seconds to read.
Why this works better than email digests
I tried email digests before building this. They didn't work for a few reasons:
- Email digests send everything or filter by keyword. Keywords miss nuance. "Redis" matches marketing posts about Redis Cloud pricing, not just the CVE I care about.
- Once a day isn't enough. A critical security advisory at 10 AM shouldn't sit until tomorrow's digest.
- Digest emails compete with everything else in my inbox. OpenClaw sends the summary straight to Telegram, where I know every message has already been filtered.
- A keyword filter doesn't know my stack. The agent knows I use Railway, Nuxt, and BullMQ. It understands that a vulnerability in a transitive dependency is still relevant to me.
The SereneReader side
SereneReader is the RSS reader I built because I was tired of bloated alternatives. Minimal UI, keyboard-driven, focused reading mode, no ads. I use it daily, and the API turns it into a data source for this kind of automation.
API access is on the Pro and Team plans (rates start around $5/mo and $25/mo respectively as of writing — see serenereader.com for current pricing). JSON responses with article titles, URLs, publish dates, content snippets, and feed metadata. No XML parsing, no encoding issues on your end. Just HTTP requests.
If you want to wire this up with a different LLM tool, anything that can make authenticated HTTP requests will work. I wrote a walkthrough with a Node.js example on the SereneReader blog: How to connect your RSS feeds to AI agents.
Building it yourself
If you want to set up something like this:
- Sign up for SereneReader and subscribe to the feeds you want your agent to monitor.
- Upgrade to Pro or Team to get API access.
- Generate an API key in your settings. The settings page has the full endpoint docs and example requests.
- Configure your agent in OpenClaw (or whatever agent platform you use) with the SereneReader API as a tool.
- Write a prompt that tells the agent what you care about. Be specific about your stack, your role, and what counts as "relevant."
- Set a schedule. Three times a day works well for me. Adjust based on how time-sensitive your feeds are.
The whole thing took about 30 minutes once the API existed. Most of that was tuning the prompt. The first version filtered too aggressively and hid things I wanted to see. Adding "why it matters to me" fixed it; the agent had to actually reason about relevance instead of just matching words.
Conclusion
I built this because scanning headlines every morning was eating time I didn't have. SereneReader gives the agent structured feed data, OpenClaw runs the checks on a schedule, and I get a short summary three times a day.
The security monitoring alone was worth it. CVEs surface within hours now instead of whenever I happen to check the right feed. When you're responsible for the security of multiple production apps, that gap matters.
If your feeds are piling up and you want something smarter than keyword filters, this is the setup. RSS for data, an API for access, an agent for reasoning.
