agentleFS
abduznikabduznik/abduznik-skills/skills/rss-feeds/SKILL.md

rss-feeds

Skill2 starsChanged 2 months agoMITView on GitHub

Read RSS, Atom, JSON feeds; discover feeds behind a page.

2 other projects use a version of this, 2 of them edited.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run through terminal with the skill-relative script path:

    line 39

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

RSS Feeds Skill

Reads any RSS 2.0, RSS 1.0/RDF, Atom, or JSON Feed URL into a clean, date-sorted list of entries, and discovers the feed behind an ordinary page URL (<link rel="alternate"> or the usual /feed, /rss.xml, /atom.xml paths). Standard library only, nothing to install. It does not fetch full article bodies — pass an entry's link to web_extract for that.

When to Use

  • "What's new on <blog/site>", "latest releases of <GitHub repo>", "recent posts in <subreddit>", "read this feed", "does this site have an RSS feed".
  • Building a recurring digest with cronjob_manage (feeds are cheaper and more stable than scraping the HTML front page every run). For a persistent read/unread database across many feeds install the optional blogwatcher skill; this skill is the zero-install read.
  • Anything where a structured list of title / link / date / author / summary beats a rendered page: podcasts, changelogs, YouTube channels, newsrooms, forum categories.

Prerequisites

None. Python 3.10+, network access to the feed host.

How to Run

Run through terminal with the skill-relative script path:

python3 scripts/feed.py read https://hnrss.org/frontpage --limit 10
python3 scripts/feed.py read https://simonwillison.net/            # page URL → discovers the feed
python3 scripts/feed.py read URL --since 2026-09-01 --json          # only newer entries, machine-readable
python3 scripts/feed.py discover https://example.com/               # list candidate feed URLs

Quick Reference

SourceFeed URL pattern
GitHub releases / commits / tagshttps://github.com/OWNER/REPO/releases.atom, …/commits/BRANCH.atom, …/tags.atom
Subreddit / Reddit searchhttps://www.reddit.com/r/NAME/.rss, https://www.reddit.com/search.rss?q=… (1 req/min anon; see reddit-reading)
YouTube channelhttps://www.youtube.com/feeds/videos.xml?channel_id=UC…
Hacker Newshttps://hnrss.org/frontpage, https://hnrss.org/newest?q=TERM
arXiv categoryhttps://rss.arxiv.org/rss/cs.CL
Substack / Medium / WordPress / GhostSITE/feed, medium.com/feed/@user, SITE/rss/
Podcaststhe show's RSS URL from its hosting page (discover finds it)

Output fields per entry: title, link, published (UTC ISO 8601), author, summary (HTML stripped, ≤ 2000 chars). Entries are sorted newest-first.

Procedure

① If you only have a site URL, run read on it directly; the script discovers the feed and reports which URL it used (discovered_from). Use discover when you want to choose between several advertised feeds (comments feed vs posts feed, per-category feeds).

② Bound the request: --limit for "latest N", --since YYYY-MM-DD for "since last check". For a cron digest persist the last-seen published value and pass it as --since next run.

③ For full text, hand the entry link to web_extract; feed summaries are frequently truncated or the first paragraph only.

④ Cite the entry link, not the feed URL, when the result feeds a report (grounded-citations).

Pitfalls

  • A 200 response with HTML means the URL is a page, not a feed; the script falls through to discovery automatically, but a site with no <link rel="alternate"> and none of the common paths reports no feed found — check the site's footer or /sitemap.xml before concluding there is none.
  • Reddit feeds share Reddit's anonymous throttle (about one request per minute per IP). Chain them through reddit-reading, which waits out the window, when you need more than one Reddit call.
  • Dates: RSS pubDate is RFC 822 and Atom uses ISO 8601; the script normalises both to UTC. Feeds that omit dates sort to the bottom and are dropped by --since.
  • Some feeds are Cloudflare-fronted and 403 non-browser clients; blocked-page-recovery handles that class.

Verification

python3 scripts/feed.py read https://github.com/NousResearch/hermes-agent/releases.atom --limit 1 prints one entry with a releases/tag/ link and a [atom] format tag; discover https://simonwillison.net/ prints an /atom/ URL.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.