news-aggregation
Aggregate and deduplicate recent news from multiple sources into concise topic summaries.
git clone --depth 1 https://github.com/besoeasy/open-skills /tmp/news-aggregation && cp -r /tmp/news-aggregation/skills/news-aggregation ~/.claude/skills/news-aggregationSKILL.md
# 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:
```bash
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
```javascript
// 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
```text
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.
## See also
- [Web Search API (Free)](./web-search-api.md)
- [Web Scraping (Chrome + DuckDuckGo)](./using-web-scraping.md)Encrypt and decrypt files or streams using age — a simple, modern, and secure encryption tool with small explicit keys, passphrase support, SSH key support, post-quantum hybrid keys, and UNIX-style composability. No config options, no footguns.
Upload and host files anonymously using decentralized storage with Originless and IPFS.
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Star all repositories from a GitHub user automatically. Use when: (1) Supporting open source creators, (2) Bulk discovery of useful projects, or (3) Automating GitHub engagement.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Log all chat messages to a SQLite database for searchable history and audit. Use when: (1) Building chat history, (2) Auditing conversations, (3) Searching past messages, or (4) User asks to log chats.
Check cryptocurrency wallet balances across multiple blockchains using free public APIs.
Calculate line-of-sight and road distances between two cities using free OpenStreetMap services.