Blog feed monitor

Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

How to use it

  1. Hit Copy the whole skill.
  2. 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.
  3. 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-monitor

For 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.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text66 lines
blog-feed-monitor/SKILL.md66 lines2.3 KBpushed 96d agoRawView on GitHub

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)

  1. 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
  2. Parses discovered feeds (supports RSS 2.0 and Atom)
  3. If any URLs fail, falls back to Apify jupri/rss-xml-scraper (if token available)
  4. Applies date and keyword filtering client-side

Note: The Apify fallback actor jupri/rss-xml-scraper may 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---
2name: blog-feed-monitor
3description: >
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 
11Scrape blog posts via RSS/Atom feeds (free) with optional Apify fallback for JS-heavy sites.
12 
13## Quick Start
14 
15No API key needed for RSS mode.
16 
17```bash
18# Scrape a blog's RSS feed
19python3 skills/blog-feed-monitor/scripts/scrape_blogs.py \
20 --urls "https://example.com/blog" --days 30
21 
22# Multiple blogs with keyword filter
23python3 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
27python3 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)
341. 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`
372. Parses discovered feeds (supports RSS 2.0 and Atom)
383. If any URLs fail, falls back to Apify `jupri/rss-xml-scraper` (if token available)
394. 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
44Only tries RSS feeds, no Apify fallback.
45 
46### Apify Mode
47Uses 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 & extraction