ワンクリックで
blogwatcher
Monitor RSS / Atom feeds for new posts (Python feedparser)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Monitor RSS / Atom feeds for new posts (Python feedparser)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Search and download arXiv papers (no API key needed)
Delegate coding and file edits to Anthropic Claude Code CLI
Read/write Windows clipboard text, HTML, images, history (PowerShell)
Running scripts and code on Windows
Delegate coding tasks to OpenAI Codex CLI
Windows Defender: scans, threat history, signatures (PowerShell)
SOC 職業分類に基づく
| name | blogwatcher |
| description | Monitor RSS / Atom feeds for new posts (Python feedparser) |
| category | research |
| version | 1.0.0 |
| origin | aiden |
| license | Apache-2.0 |
| tags | rss, atom, feed, blog, news, monitor, feedparser, podcast, updates, aggregation |
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.
pip install feedparser
import 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")
import 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']}")
import 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/feed
import 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")
import 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 output