Fetch RSS Feeds
Fetch and store articles from RSS/Atom feeds with deduplication.
When to Use
Use this skill when you need to:
- Collect articles from RSS or Atom feeds
- Store articles in memory for later analysis
- Avoid processing duplicate articles
Instructions
Step 1: Check for Duplicates Before Fetching
Before fetching each feed, prepare to deduplicate articles:
- Use
memory/check_seen with the article URL as the key
- Namespace:
news/articles
Step 2: Fetch RSS Feeds
Use the rss tool to fetch articles from configured feeds.
Feed sources to fetch:
- Company blogs (OpenAI, Anthropic, Google DeepMind, etc.)
- AI-focused tech news (TechCrunch AI, VentureBeat AI, The Verge AI)
- Research feeds (arXiv, Papers with Code)
For each feed:
- Call the
rss tool with the feed URL
- Extract: title, url, published_date, summary, author
Step 3: Filter and Deduplicate
For each article from the feed:
Check if already seen:
- Call
memory/check_seen with key=URL hash, namespace="news/articles"
- If seen=true, skip this article
Validate required fields:
- Article must have: title, url
- Skip articles missing required fields
Filter by age (optional):
- If max_age_hours is specified, skip articles older than threshold
Step 4: Store New Articles
For each new (unseen) article:
Store in memory:
- Call
memory/add with:
- type: "document"
- namespace: "news/articles"
- data: {title, url, summary, author, source, published_at}
- metadata: {fetched_at, source_feed}
Mark as seen:
- Call
memory/mark_seen with:
- key: URL hash
- namespace: "news/articles"
- ttl_seconds: 1209600 (14 days)
Step 5: Return Results
Return a summary including:
- Number of articles stored
- Number of duplicates skipped
- Number of feeds processed
- Any failed feeds
Tool Usage Guidance
rss tool
- Use to fetch feed content
- Handles XML parsing and date extraction
- Returns list of entries with title, link, summary, published
memory/check_seen
- Call before processing each article
- Key should be a hash or the URL itself
- Returns {seen: true/false}
memory/add
- Store each new article
- Include all extracted metadata
- Type should be "document"
memory/mark_seen
- Call after successfully storing
- Use 14-day TTL to allow re-processing after expiry
Error Handling
- If a feed fails to fetch, log the error and continue with other feeds
- If memory operations fail, log but don't crash
- Return partial results if some feeds succeed
Success Criteria
- At least one feed successfully fetched
- New articles stored in memory
- Duplicates correctly identified and skipped
- Failed feeds logged but don't stop collection
1---2name: fetch-rss-feeds3description: Fetch articles from RSS/Atom feeds and store them in memory for analysis. Uses the rss tool for fetching and memory MCP for storage and deduplication.4license: MIT5---6
7# Fetch RSS Feeds
8
9Fetch and store articles from RSS/Atom feeds with deduplication.
10
11## When to Use
12
13Use this skill when you need to:
14- Collect articles from RSS or Atom feeds
15- Store articles in memory for later analysis
16- Avoid processing duplicate articles
17
18## Instructions
19
20### Step 1: Check for Duplicates Before Fetching
21
22Before fetching each feed, prepare to deduplicate articles:
23- Use `memory/check_seen` with the article URL as the key
24- Namespace: `news/articles`
25
26### Step 2: Fetch RSS Feeds
27
28Use the `rss` tool to fetch articles from configured feeds.
29
30**Feed sources to fetch:**
31- Company blogs (OpenAI, Anthropic, Google DeepMind, etc.)
32- AI-focused tech news (TechCrunch AI, VentureBeat AI, The Verge AI)
33- Research feeds (arXiv, Papers with Code)
34
35**For each feed:**
361. Call the `rss` tool with the feed URL
372. Extract: title, url, published_date, summary, author
38
39### Step 3: Filter and Deduplicate
40
41For each article from the feed:
42
431. **Check if already seen:**
44 - Call `memory/check_seen` with key=URL hash, namespace="news/articles"
45 - If seen=true, skip this article
46
472. **Validate required fields:**
48 - Article must have: title, url
49 - Skip articles missing required fields
50
513. **Filter by age (optional):**
52 - If max_age_hours is specified, skip articles older than threshold
53
54### Step 4: Store New Articles
55
56For each new (unseen) article:
57
581. **Store in memory:**
59 - Call `memory/add` with:
60 - type: "document"
61 - namespace: "news/articles"
62 - data: {title, url, summary, author, source, published_at}
63 - metadata: {fetched_at, source_feed}
64
652. **Mark as seen:**
66 - Call `memory/mark_seen` with:
67 - key: URL hash
68 - namespace: "news/articles"
69 - ttl_seconds: 1209600 (14 days)
70
71### Step 5: Return Results
72
73Return a summary including:
74- Number of articles stored
75- Number of duplicates skipped
76- Number of feeds processed
77- Any failed feeds
78
79## Tool Usage Guidance
80
81### rss tool
82- Use to fetch feed content
83- Handles XML parsing and date extraction
84- Returns list of entries with title, link, summary, published
85
86### memory/check_seen
87- Call before processing each article
88- Key should be a hash or the URL itself
89- Returns {seen: true/false}
90
91### memory/add
92- Store each new article
93- Include all extracted metadata
94- Type should be "document"
95
96### memory/mark_seen
97- Call after successfully storing
98- Use 14-day TTL to allow re-processing after expiry
99
100## Error Handling
101
102- If a feed fails to fetch, log the error and continue with other feeds
103- If memory operations fail, log but don't crash
104- Return partial results if some feeds succeed
105
106## Success Criteria
107
108- At least one feed successfully fetched
109- New articles stored in memory
110- Duplicates correctly identified and skipped
111- Failed feeds logged but don't stop collection