mcpbeat

News Aggregation

besoeasy/news-aggregation

Aggregate and deduplicate recent news from multiple sources into concise topic summaries.

938 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
1
copies elsewhere
how many repositories repackaged it
127
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/besoeasy/open-skills --skill news-aggregation

The instruction itself

12 sections, as written by the author

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.

See also

  • Web Search API (Free)
  • Web Scraping (Chrome + DuckDuckGo)

Repackaged in 1 other repositories

same content, different owner
aAAaqwq/AGI-Super-Team open on GitHub →

How to use it

Copy the folder

Take besoeasy/news-aggregation from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip, npm. Without those the skill loads but fails at the first command.