Open-skills news-aggregation
Aggregate and deduplicate recent news from multiple sources into concise topic summaries.
install
source · Clone the upstream repo
git clone https://github.com/besoeasy/open-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/besoeasy/open-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/news-aggregation" ~/.claude/skills/besoeasy-open-skills-news-aggregation && rm -rf "$T"
manifest:
skills/news-aggregation/SKILL.mdsource content
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.