Loading...
Loading...
Aggregate and deduplicate recent news from multiple sources into concise topic summaries.
npx skill4agent add besoeasy/open-skills news-aggregationpip install feedparser python-dateutilhttps://feeds.reuters.com/Reuters/worldNewshttps://feeds.apnews.com/apnews/topnewshttp://feeds.bbci.co.uk/news/world/rss.xmlhttps://www.aljazeera.com/xml/rss/all.xmlhttps://www.theguardian.com/world/rsshttps://feeds.npr.org/1001/rss.xmlhttps://news.google.com/rss/search?q=worldhttps://www.bing.com/news/search?q=world&format=RSShttps://hnrss.org/frontpagehttps://www.reddit.com/r/news/.rss// 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)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.