Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Monitor RSS / Atom feeds for new posts (Python feedparser)
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-06 | ✓→✗ | ▼ Worse | 29% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 46% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 479% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 7% | 0% |
Monitor RSS and Atom feeds from blogs, news sites, and podcasts to track new posts. Uses the feedparser Python library — no API keys required for most feeds.
powershellpip install feedparser
pythonimport feedparser from datetime import datetime feed = feedparser.parse("https://news.ycombinator.com/rss") print(f"Feed: {feed.feed.title}") print(f"Posts: {len(feed.entries)}\n") for entry in feed.entries[:5]: title = entry.get("title", "No title") link = entry.get("link", "") date = entry.get("published", "Unknown date") print(f"• {title}\n {link}\n {date}\n")
pythonimport feedparser, time FEEDS = [ "https://feeds.feedburner.com/oreilly/radar", "https://blog.openai.com/rss/", "https://news.ycombinator.com/rss", "https://simonwillison.net/atom/everything/", ] def fetch_all(feeds, max_per_feed=5): results = [] for url in feeds: feed = feedparser.parse(url) for entry in feed.entries[:max_per_feed]: results.append({ "source": feed.feed.get("title", url), "title": entry.get("title", ""), "link": entry.get("link", ""), "published": entry.get("published", ""), }) return sorted(results, key=lambda x: x["published"], reverse=True) for item in fetch_all(FEEDS): print(f"[{item['source']}] {item['title']}\n {item['link']}")
pythonimport feedparser def search_feed(url, keyword): feed = feedparser.parse(url) keyword = keyword.lower() matches = [ e for e in feed.entries if keyword in e.get("title","").lower() or keyword in e.get("summary","").lower() ] for e in matches: print(f"• {e.title}\n {e.link}\n") search_feed("https://news.ycombinator.com/rss", "llm")
Common RSS URL patterns:
https://site.com/feed
https://site.com/rss
https://site.com/feed.xml
https://site.com/atom.xml
https://site.com/blog/feedpythonimport feedparser, requests from bs4 import BeautifulSoup # pip install beautifulsoup4 def find_feed(site_url): resp = requests.get(site_url, timeout=10, headers={"User-Agent": "Mozilla/5.0"}) soup = BeautifulSoup(resp.text, "html.parser") for tag in soup.find_all("link", type=lambda t: t and "rss" in t or "atom" in t): print(tag.get("href")) find_feed("https://simonwillison.net")
pythonimport feedparser, json feed = feedparser.parse("https://news.ycombinator.com/rss") posts = [{"title": e.title, "link": e.link, "date": e.get("published","")} for e in feed.entries[:20]] with open("hn_feed.json", "w") as f: json.dump(posts, f, indent=2) print(f"Saved {len(posts)} posts to hn_feed.json")
"What are the latest posts from Hacker News?" → Use step 2 with https://news.ycombinator.com/rss.
"Monitor these 4 AI blogs and show me posts about agents from the last week" → Use step 3 to fetch all, then step 4 logic to filter for agent keyword.
"Does this blog have an RSS feed? If so, get the latest 5 posts" → Use step 5 to discover the feed URL, then step 2 to fetch posts.
User-Agent header if getting 403 errorsentry.published format varies by feed — some use RFC 2822, others ISO 8601; don't assume a format[:n]) to limit outputOther measured skills in the registry, with their headline benchmark lift.