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:
# List all feeds
python3 skills/rss-agent/scripts/rss.py list
# Add a new feed
python3 skills/rss-agent/scripts/rss.py add https://example.com/feed.xml --category Tech
# Fetch latest articles
python3 skills/rss-agent/scripts/rss.py fetch "Feed Name" --limit 5
# Check feed health
python3 skills/rss-agent/scripts/rss.py check
# Export to OPML
python3 skills/rss-agent/scripts/rss.py export -o my_feeds.opml
CLI Commands
list - List subscriptions
rss list # List all subscriptions
rss list --category Tech # Filter by category
rss list --verbose # Show URLs
add - Add subscription
rss add <url> # Basic add
rss add <url> --name "My Blog" # Custom name
rss add <url> -c Tech -n "Blog" # Specify category and name
remove - Remove subscription
rss remove "Feed Name" # Remove by name
rss remove https://example.com/feed.xml # Remove by URL
check - Health check
rss check # Check all feed status
Output example:
✅ Feed Name 1 # OK
⚠️ Feed Name 2 # Invalid content
❌ Feed Name 3 # Cannot access
fetch - Fetch content
rss fetch "Feed Name" # Get latest 5 items
rss fetch "Feed Name" -n 10 # Get latest 10 items
rss fetch "Feed Name" -v # Show links
rss fetch "Feed Name" --full-content # Get full content (if supported)
digest - Daily digest
rss digest # Get today's updates
rss digest -d 2 # Get last 2 days
rss digest -c "AI" --limit 5 # Filter by category
export - Export to OPML
rss export # Export as rss_export_YYYYMMDD.opml
rss export -o backup.opml # Specify filename
import - Import from OPML
rss import follow.opml # Import from 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_fetchto 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:
# Read full article without opening browser
rss fetch "Feed Name" --limit 1 --full-content
# Check which feeds in your collection support full content
rss list --verbose
How it works:
- RSS 2.0 feeds with
content:encodedfield → ✅ Full content available - Atom feeds with
contentfield → ✅ 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_fetchorbrowsertools 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 checkperiodically to clean up dead feeds - Use
rss digestfor quick daily updates overview - Categories help organize feeds for targeted reading
- Combine with
ttsfor audio news briefings - For complex websites blocked to
web_fetch, usebrowsertool - Try
rss fetch --full-contentfirst before usingweb_fetch- it's faster for supported feeds