Fetch and manage RSS/Atom feed subscriptions stored in OPML format. Use when the user wants to list RSS subscriptions, add/remove RSS feeds, fetch and read latest articles, search across feeds, get a daily digest, or export feed content in markdown or JSON. Triggers on "rss", "rss feeds", "subscriptions", "fetch articles", "news feeds", "atom feed", "opml", "what's new", "digest", "search feeds", or any request to read, browse, search, or manage RSS content.
Manage RSS/Atom subscriptions (OPML) and fetch feed content as markdown or JSON.
The rss CLI tool must be installed on PATH. If rss is not found (command not found error), stop and tell the user the tool is not installed.
Do NOT attempt any fallback. The tool must be installed before this skill can be used.
Default output is readable markdown. Add --json before the subcommand for structured JSON.
~/.config/llm/rss-reader.opml (auto-created on first use)~/.cache/rss-reader/ (cached XML, 30-min TTL)RSS_OPML_PATH, RSS_CACHE_DIRList all RSS subscriptions, grouped by category.
rss list
rss add <url> [--title TITLE] [--category CATEGORY]
rss remove <query>
add is a no-op if the URL already exists. remove matches by title or URL substring.
Import feeds from another OPML file. Deduplicates by xmlUrl.
rss merge <file>
Move a feed to a different category.
rss recategorize <query> --category CATEGORY
Fetch and display feed content with full article content by default.
rss fetch <query> [--limit N] [--refresh] [--index N]
rss fetch --all [--limit N] [--refresh]
| Flag | Description |
|------|-------------|
| --all | Fetch all subscribed feeds |
| --limit N | Max items per feed (default: 10) |
| --refresh | Bypass cache and re-fetch from source |
| --index N | Show a specific item by 1-based index |
Search articles across ALL subscribed feeds by keyword.
rss search <keyword> [--limit N] [--refresh] [--feeds "rust,simon"]
Matches against title, description, and full content. Results sorted by date (newest first). Default limit: 20.
Cache-first: scans already-cached XML instantly. Only fetches uncached feeds (with --refresh, re-fetches all).
Show recent articles across all feeds within a time window.
rss digest [--since 24h] [--limit N] [--refresh] [--feeds "rust,simon"]
| Flag | Description |
|------|-------------|
| --since | Time window: 24h, 7d, 30m, etc. (default: 24h) |
| --limit N | Max results (default: 50) |
| --feeds | Comma-separated filter by feed title/URL substring |
Results grouped by feed, sorted newest first. Cache-first like search.
rss digest --since 24h
Then summarize the output for the user, highlighting items relevant to their interests.
rss search "rust" --limit 10
Scan results, then use rss fetch <feed> --index N to drill into specific articles.
When feeds lack categories (e.g. after a bulk merge):
rss --json list to get all feeds with their titles/URLsrss recategorize <query> --category <CATEGORY> for each feedThis leverages the agent's own reasoning rather than hardcoding classification rules.
Combine search + digest for a focused briefing:
rss digest --since 7d --limit 100
rss search "LLM" --limit 10
rss search "rust" --limit 10
Synthesize findings into a summary for the user.
--json for piping to jq or further processing.~/.cache/rss-reader/. Use --refresh to force re-fetch.content:encoded is rendered when available; falls back to description summary.search and digest fetch all feeds, which can be slow with many subscriptions. Use cached results when possible.Category:news