News Aggregation (Multi-Source, 3-Day Window)
Collect latest news from multiple sites and aggregators, merge similar stories into short topics, and list all main source links under each topic.
When to use
- You want one concise briefing from many outlets.
- You need deduplicated coverage (same story from multiple sites).
- You want source transparency (all original links shown).
- You want a default time window of the last 3 days unless specified otherwise.
Required tools / APIs
- No API keys required for basic RSS workflow.
- Python 3.10+
Install:
pip install feedparser python-dateutil
Sources (news sites + aggregators)
Use a mixed source list for better coverage.
News sites (RSS)
- Reuters World:
https://feeds.reuters.com/Reuters/worldNews - AP Top News:
https://feeds.apnews.com/apnews/topnews - BBC World:
http://feeds.bbci.co.uk/news/world/rss.xml - Al Jazeera:
https://www.aljazeera.com/xml/rss/all.xml - The Guardian World:
https://www.theguardian.com/world/rss - NPR News:
https://feeds.npr.org/1001/rss.xml
Aggregators (RSS/API)
- Google News (topic feed):
https://news.google.com/rss/search?q=world - Bing News (RSS query):
https://www.bing.com/news/search?q=world&format=RSS - Hacker News (tech):
https://hnrss.org/frontpage - Reddit News (community signal):
https://www.reddit.com/r/news/.rss
Skills
Node.js quick fetch + grouping starter
// npm install rss-parser
const Parser = require('rss-parser');
const parser = new Parser();
const SOURCES = {
Reuters: 'https://feeds.reuters.com/Reuters/worldNews',
AP: 'https://feeds.apnews.com/apnews/topnews',
BBC: 'http://feeds.bbci.co.uk/news/world/rss.xml',
'Google News': 'https://news.google.com/rss/search?q=world'
};
async function fetchRecent(days = 3) {
const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
const all = [];
for (const [source, url] of Object.entries(SOURCES)) {
const feed = await parser.parseURL(url);
for (const item of feed.items || []) {
const ts = new Date(item.pubDate || item.isoDate || 0).getTime();
if (!ts || ts < cutoff) continue;
all.push({ source, title: item.title || '', link: item.link || '', ts });
}
}
return all.sort((a, b) => b.ts - a.ts);
}
// Next step: add title-similarity clustering (same idea as Python section above)
Agent prompt
Use the News Aggregation skill.
Requirements:
1) Pull news from multiple predefined sources (news sites + aggregators).
2) Default to only the last 3 days unless user asks another time range.
3) Group similar headlines into one short topic.
4) Under each topic, list all main source links (not just one source).
5) If 3+ sources cover the same event, output one topic with all those links.
6) Keep summaries short and factual; avoid adding unsupported claims.
Best practices
- Keep source diversity (wire + publisher + aggregator) to reduce bias.
- Rank grouped topics by number of independent sources.
- Include publication timestamps when possible.
- Keep the grouping threshold conservative to avoid merging unrelated stories.
- Allow custom source lists and time windows when user requests.
Troubleshooting
- Empty results: some feeds may be unavailable; retry and rotate sources.
- Too many duplicates: increase similarity threshold (e.g., 0.35 -> 0.45).
- Under-grouping: decrease threshold (e.g., 0.35 -> 0.28).
- Rate limiting: fetch feeds sequentially with small delays.