name: rss-fetch description: Fetch RSS/Atom feeds via curl. Use this skill to gather news and articles from RSS sources.
RSS Feed Fetcher
Use curl to fetch and parse RSS/Atom feeds from any source.
RSS feeds return XML that can be parsed with
xmllintor converted to JSON.
When to Use
Use this skill when you need to:
- Fetch news articles from RSS feeds
- Monitor blog updates or content sources
- Aggregate content from multiple feeds
- Track topics via RSS subscriptions
Prerequisites
No API key required. RSS feeds are public.
Optional tools for parsing:
xmllint(for XML parsing)jq(for JSON output)
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
How to Use
1. Fetch Raw RSS Feed
curl -s "https://hnrss.org/frontpage" | head -100
2. Parse RSS with xmllint
Extract titles from RSS feed:
curl -s "https://hnrss.org/frontpage" | xmllint --xpath '//item/title/text()' - 2>/dev/null
Extract titles and links:
curl -s "https://hnrss.org/frontpage" | xmllint --format - | grep -E '<title>|<link>' | head -20
3. Get Items with Details
RSS_URL="https://hnrss.org/frontpage"
curl -s "$RSS_URL" | xmllint --xpath '//item' - 2>/dev/null | xmllint --format - | head -50
4. Parse Atom Feeds
Atom feeds use <entry> instead of <item>:
curl -s "https://github.com/blog.atom" | xmllint --xpath '//entry/title/text()' - 2>/dev/null
Popular RSS Feeds
| Source | URL |
|---|---|
| Hacker News | https://hnrss.org/frontpage |
| HN Best | https://hnrss.org/best |
| TechCrunch | https://techcrunch.com/feed/ |
| Ars Technica | https://feeds.arstechnica.com/arstechnica/index |
| The Verge | https://www.theverge.com/rss/index.xml |
| Reddit (any sub) | https://www.reddit.com/r/programming/.rss |
| GitHub Blog | https://github.blog/feed/ |
Examples
Fetch Hacker News Top Stories
curl -s "https://hnrss.org/frontpage?count=10" | xmllint --xpath '//item/title/text()' - 2>/dev/null | tr '\n' '\n'
Get Story Links
curl -s "https://hnrss.org/frontpage?count=5" | grep -oP '<link>\K[^<]+' | grep -v hnrss
Fetch Multiple Feeds
FEEDS=(
"https://hnrss.org/frontpage?count=5"
"https://techcrunch.com/feed/"
)
for feed in "${FEEDS[@]}"; do
echo "=== $feed ==="
curl -s "$feed" | xmllint --xpath '//item/title/text()' - 2>/dev/null | head -5
echo ""
done
Extract Title, Link, and Date
curl -s "https://hnrss.org/frontpage?count=3" | xmllint --format - | awk '
/<item>/ { in_item=1 }
/<\/item>/ { in_item=0; print "---" }
in_item && /<title>/ { gsub(/<[^>]*>/, ""); print "Title: " $0 }
in_item && /<link>/ { gsub(/<[^>]*>/, ""); print "Link: " $0 }
in_item && /<pubDate>/ { gsub(/<[^>]*>/, ""); print "Date: " $0 }
'
Save Feed to File
curl -s "https://hnrss.org/frontpage" -o /tmp/hn-feed.xml
xmllint --xpath '//item/title/text()' /tmp/hn-feed.xml
HN RSS Options
Hacker News RSS (hnrss.org) supports parameters:
| Parameter | Description |
|---|---|
count=N |
Number of items (default 20) |
points=N |
Minimum points |
comments=N |
Minimum comments |
q=keyword |
Search keyword |
# Top stories with 100+ points
curl -s "https://hnrss.org/frontpage?points=100&count=10"
# Search for "AI" topics
curl -s "https://hnrss.org/frontpage?q=AI&count=10"
RSS vs Atom Format
| Element | RSS | Atom |
|---|---|---|
| Container | <item> |
<entry> |
| Title | <title> |
<title> |
| Link | <link> |
<link href="..."> |
| Summary | <description> |
<summary> |
| Date | <pubDate> |
<published> |
Guidelines
- Check feed format: Use
headfirst to see if it's RSS or Atom - Use xmllint: Best tool for XPath queries on XML
- Handle errors: Some feeds may be slow or rate-limited
- Respect robots.txt: Don't hammer feeds with requests
- Cache results: Feeds don't update every second