Blog feed monitor
Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.
How to use it
- Hit Copy the whole skill.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/monitoring/capabilities/blog-feed-monitor#main ~/.claude/skills/blog-feed-monitorFor one project only, change the path to .claude/skills/blog-feed-monitor.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text66 lines
Blog Feed Monitor
Scrape blog posts via RSS/Atom feeds (free) with optional Apify fallback for JS-heavy sites.
Quick Start
No API key needed for RSS mode.
# Scrape a blog's RSS feed
python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \
--urls "https://example.com/blog" --days 30
# Multiple blogs with keyword filter
python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \
--urls "https://blog1.com,https://blog2.com" --keywords "AI,marketing" --output summary
# Force Apify for JS-heavy sites
python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \
--urls "https://example.com" --mode apify
How It Works
Auto Mode (default)
- For each URL, tries to discover an RSS/Atom feed:
- Checks HTML
<link rel="alternate">tags - Probes common paths:
/feed,/rss,/atom.xml,/feed.xml,/rss.xml,/blog/feed,/index.xml
- Checks HTML
- Parses discovered feeds (supports RSS 2.0 and Atom)
- If any URLs fail, falls back to Apify
jupri/rss-xml-scraper(if token available) - Applies date and keyword filtering client-side
Note: The Apify fallback actor
jupri/rss-xml-scrapermay need updating -- it has not been verified recently. RSS mode works reliably without it.
RSS Mode
Only tries RSS feeds, no Apify fallback.
Apify Mode
Uses Apify actor directly, skipping RSS discovery.
CLI Reference
| Flag | Default | Description |
|---|---|---|
--urls |
required | Blog URL(s), comma-separated |
--keywords |
none | Keywords to filter (comma-separated, OR logic) |
--days |
30 | Only include posts from last N days |
--max-posts |
50 | Max posts to return |
--mode |
auto | auto (RSS + fallback), rss (RSS only), apify (Apify only) |
--output |
json | Output format: json or summary |
--token |
env var | Apify token (only needed for Apify mode/fallback) |
--timeout |
300 | Max seconds for Apify run |
Cost
- RSS mode: Free (no API, no tokens)
- Apify mode: Uses
jupri/rss-xml-scraper-- minimal Apify credits
| 1 | |
| 2 | name blog-feed-monitor |
| 3 | description > |
| 4 | Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for |
| 5 | JS-heavy sites. Use when you need to monitor competitor blogs, track industry |
| 6 | content, or aggregate blog posts by keyword. |
| 7 | |
| 8 | |
| 9 | # Blog Feed Monitor |
| 10 | |
| 11 | Scrape blog posts via RSS/Atom feeds (free) with optional Apify fallback for JS-heavy sites. |
| 12 | |
| 13 | ## Quick Start |
| 14 | |
| 15 | No API key needed for RSS mode. |
| 16 | |
| 17 | |
| 18 | # Scrape a blog's RSS feed |
| 19 | python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \ |
| 20 | --urls "https://example.com/blog" --days 30 |
| 21 | |
| 22 | # Multiple blogs with keyword filter |
| 23 | python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \ |
| 24 | --urls "https://blog1.com,https://blog2.com" --keywords "AI,marketing" --output summary |
| 25 | |
| 26 | # Force Apify for JS-heavy sites |
| 27 | python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \ |
| 28 | --urls "https://example.com" --mode apify |
| 29 | |
| 30 | |
| 31 | ## How It Works |
| 32 | |
| 33 | ### Auto Mode (default) |
| 34 | For each URL, tries to discover an RSS/Atom feed: |
| 35 | Checks HTML `<link rel="alternate">` tags |
| 36 | Probes common paths: `/feed`, `/rss`, `/atom.xml`, `/feed.xml`, `/rss.xml`, `/blog/feed`, `/index.xml` |
| 37 | Parses discovered feeds (supports RSS 2.0 and Atom) |
| 38 | If any URLs fail, falls back to Apify `jupri/rss-xml-scraper` (if token available) |
| 39 | Applies date and keyword filtering client-side |
| 40 | |
| 41 | > **Note:** The Apify fallback actor `jupri/rss-xml-scraper` may need updating -- it has not been verified recently. RSS mode works reliably without it. |
| 42 | |
| 43 | ### RSS Mode |
| 44 | Only tries RSS feeds, no Apify fallback. |
| 45 | |
| 46 | ### Apify Mode |
| 47 | Uses Apify actor directly, skipping RSS discovery. |
| 48 | |
| 49 | ## CLI Reference |
| 50 | |
| 51 | | Flag | Default | Description | |
| 52 | |------|---------|-------------| |
| 53 | | `--urls` | *required* | Blog URL(s), comma-separated | |
| 54 | | `--keywords` | none | Keywords to filter (comma-separated, OR logic) | |
| 55 | | `--days` | 30 | Only include posts from last N days | |
| 56 | | `--max-posts` | 50 | Max posts to return | |
| 57 | | `--mode` | auto | `auto` (RSS + fallback), `rss` (RSS only), `apify` (Apify only) | |
| 58 | | `--output` | json | Output format: `json` or `summary` | |
| 59 | | `--token` | env var | Apify token (only needed for Apify mode/fallback) | |
| 60 | | `--timeout` | 300 | Max seconds for Apify run | |
| 61 | |
| 62 | ## Cost |
| 63 | |
| 64 | **RSS mode:** Free (no API, no tokens) |
| 65 | **Apify mode:** Uses `jupri/rss-xml-scraper` -- minimal Apify credits |
| 66 |
Discussion
Alternatives
Also in Scraping & extractionAI Crawler Access Analysis SkillAI crawler access analysis. Checks robots.txt, meta tags, and HTTP headers to determine which AI crawlers can access the site. Provides a complete access map and recommendations for maximizing AI visibility while maintaining appropriate control.Extract webpage dataExtract structured data from web pages using AINotte - Browser Automation APIBrowser automation - control browser sessions, scrape pages, and run AI agentsOlostep - Web Scraping & Crawling APIWeb scraping, crawling, and AI-powered answer extraction at scale