30 RSS feeds in. One feed you'll actually finish.
The RSS reader failure mode isn't missing feeds — it's 30 subscriptions, 400 unread, and the same story syndicated four times. emit fixes the middle: hand it your subscriptions and a plain-English description of what you actually care about, and read back one feed — merged, de-duplicated, filtered, and (optionally) pre-summarized. Your reader stays your reader; it just subscribes to one URL now.
With an agent
If your OPML export is on disk, this is a one-paster for Claude Code (with emit's MCP server registered; the API calls these feeds watchers):
Using emit: read my subscriptions from ~/feeds.opml and create one watcher with all of them as sources (discover: false), the prompt "hands-on engineering content: postmortems, performance work, new tool releases — not company news, hiring posts, or event announcements", balanced threshold, summaries on. Give me the atom_url to put in my reader. After the first hour, show me the audit view (items?include_ suppressed=true) so I can sanity-check what got filtered and tap more/less to tune it.
With curl
curl -sX POST https://api.rssemit.com/v1/watchers \
-H "Authorization: Bearer $EMIT_KEY" \
-d '{
"prompt": "hands-on engineering content: postmortems, performance
work, new tool releases — not company news or hiring",
"sources": ["https://blog-a.dev/rss.xml",
"https://blog-b.dev/atom.xml",
"…up to 25…"],
"discover": false,
"summarize": true
}'
# → .atom_url goes in your reader; per-URL failures come back in
# .source_errors instead of failing the call
What the middle actually does
- Merge: every source lands in one feed, with per-source attribution carried in the feed's extension fields.
- Dedupe: the same story from multiple sources collapses on its canonical URL (tracking parameters stripped) before it costs you a judgment.
-
Filter, auditable: every item gets a 0–1 relevance score and a one-line
reason. Nothing silently disappears —
GET /v1/watchers/{id}/items?include_suppressed=trueshows exactly what was held back and why, and more/less like this nudges the threshold. - Summarize (optional): each surviving item arrives as a crisp 1–2 sentence summary, so triage happens in the feed itself.
- No baseline blast: connecting 30 established feeds emits nothing — only items published after you connect flow through.
Cost
30 feeds producing ~60 new items a day: filtering costs 12 credits/day (≈ $0.58/month). With summaries on for the ~15 that survive, add ~$0.72 — call it $1.30/month to actually finish your reader. Serving the feed is free, and it's plain RSS, so leaving is one unsubscribe.