| name | rss-agent |
| description | A powerful RSS subscription manager and reader. Use it to (1) Import/export OPML files, (2) Manage RSS feeds (add, remove, categorize), (3) Validate feed connectivity, (4) Schedule periodic updates via cron, (5) Fetch and summarize articles with a progressive disclosure approach. |
RSS Agent
Manage and consume RSS feeds directly within OpenClaw. This skill replaces traditional RSS readers by providing AI-powered summaries, progressive exploration, and automated delivery.
Quick Start
Use the unified CLI to manage your subscriptions:
python3 skills/rss-agent/scripts/rss.py list
python3 skills/rss-agent/scripts/rss.py add https://example.com/feed.xml --category Tech
python3 skills/rss-agent/scripts/rss.py fetch "Feed Name" --limit 5
python3 skills/rss-agent/scripts/rss.py check
python3 skills/rss-agent/scripts/rss.py export -o my_feeds.opml
CLI Commands
list - List subscriptions
rss list
rss list --category Tech
rss list --verbose
add - Add subscription
rss add <url>
rss add <url> --name "My Blog"
rss add <url> -c Tech -n "Blog"
remove - Remove subscription
rss remove "Feed Name"
rss remove https://example.com/feed.xml
check - Health check
rss check
Output example:
✅ Feed Name 1 # OK
⚠️ Feed Name 2 # Invalid content
❌ Feed Name 3 # Cannot access
fetch - Fetch content
rss fetch "Feed Name"
rss fetch "Feed Name" -n 10
rss fetch "Feed Name" -v
rss fetch "Feed Name" --full-content
digest - Daily digest
rss digest
rss digest -d 2
rss digest -c "AI" --limit 5
export - Export to OPML
rss export
rss export -o backup.opml
import - Import from OPML
rss import follow.opml
Data Storage
- Feed list:
/root/.openclaw/workspace/rss_feeds.json
- Schema:
[
{
"name": "Blog Name",
"xmlUrl": "https://example.com/feed.xml",
"htmlUrl": "https://example.com/",
"category": "Technology"
}
]
Automation (Cron)
Schedule periodic RSS updates using OpenClaw's cron tool:
Daily Summary Example
{
"schedule": {"kind": "cron", "expr": "0 9 * * *"},
"payload": {
"kind": "agentTurn",
"message": "Fetch latest 3 items from all RSS feeds in category 'AI', summarize them, and send a report"
},
"sessionTarget": "isolated"
}
Implementation Pattern
When asked to check RSS feeds, the agent will:
- Run
python3 skills/rss-agent/scripts/rss.py list --category <cat> to get feed list
- Run
python3 skills/rss-agent/scripts/rss.py fetch "<name>" for each feed
- Use
web_fetch to get full article content if needed
- Summarize and format results
Full Content Extraction
Some RSS feeds provide full article content via content:encoded (RSS 2.0) or content (Atom) fields. Use the --full-content flag to extract and read articles directly:
rss fetch "Feed Name" --limit 1 --full-content
rss list --verbose
How it works:
- RSS 2.0 feeds with
content:encoded field → ✅ Full content available
- Atom feeds with
content field → ✅ Full content available
- Feeds with only
description/summary → ❌ Only summary available
Notes:
- Full content extraction strips HTML tags for readability
- If a feed doesn't provide full content, the CLI will show a warning
- For feeds without full content, use
web_fetch or browser tools as fallback
Progressive Reading
The skill supports a 3-level disclosure pattern:
Level 1 - Headlines: Quick overview with rss fetch
Level 2 - Summaries: Agent summarizes interesting articles
Level 3 - Full content: Use rss fetch --full-content or web_fetch for complete article
Example interaction:
User: "Check my RSS 'Tech' category"
→ Agent lists new articles from Tech feeds
User: "Tell me more about the AI article"
→ Agent fetches full content using rss fetch --full-content and summarizes
User: "Read the full article"
→ Agent displays the full content or uses TTS for audio playback
File Structure
skills/rss-agent/
├── SKILL.md # This file
└── scripts/
└── rss.py # Main CLI (unified interface)
Tips
- Use
rss check periodically to clean up dead feeds
- Use
rss digest for quick daily updates overview
- Categories help organize feeds for targeted reading
- Combine with
tts for audio news briefings
- For complex websites blocked to
web_fetch, use browser tool
- Try
rss fetch --full-content first before using web_fetch - it's faster for supported feeds