mcpField
N
news-aggregator-skill

news-aggregator-skill

github.com/cclank生产力1.3k6.0k 次安装22 周前更新
代码仓库

关于 news-aggregator-skill

这是一项新闻聚合技能,可从 44 多个来源抓取新闻、AI 出版物、播客、文章及用户 OPML 订阅。它按统一格式生成中文报告,并支持来源专属规则和深度文章抓取。

主要功能

  1. 01抓取 44 多个来源
  2. 02按来源和关键词筛选
  3. 03获取文章正文以供分析
  4. 04生成结构化中文报告
  5. 05支持自定义 OPML 订阅
  6. 06提供每日简报配置

适用场景

  1. 01准备每日新闻简报
  2. 02跟踪 AI 论文与通讯
  3. 03扫描最近 24 小时国际新闻
  4. 04聚合个人 RSS 订阅

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cclank/news-aggregator-skill --skill news-aggregator-skill

安装后在 Claude Code 中输入/news-aggregator-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
MISTAKES.md
implementation_plan.md
README.md
requirements.txt
user_sources.opml.example
templates.md
.agent/workflows/
daily_briefing.md
instructions/
briefing_github.md
briefing_general.md
briefing_ai_daily.md
briefing_finance.md
briefing_social.md
briefing_tech.md
scripts/
daily_briefing.py
fetch_generic_playwright.py
debug_hf_detail.py
fetch_hf_papers_playwright.py
fetch_bensbites.py
fetch_news.py
fetch_user_feeds.py
rss_parser.py
process_general_json.py
test_all_sources.py

详细介绍

新闻聚合器技能

从 44 个以上来源获取实时热点新闻(包括国际新闻、AI 精选聚合器和用户自定义的 OPML 订阅源),并用中文生成深度分析报告。


🔄 通用工作流(3 步)

每个新闻请求都遵循相同的工作流,不受来源或组合方式影响:

第 1 步:获取数据
# Single source
python3 scripts/fetch_news.py --source <source_key> --no-save

# Multiple sources (comma-separated)
python3 scripts/fetch_news.py --source hackernews,github,wallstreetcn --no-save

# All sources (broad scan)
python3 scripts/fetch_news.py --source all --limit 15 --deep --no-save

# With keyword filter (auto-expand: "AI" → "AI,LLM,GPT,Claude,Agent,RAG")
python3 scripts/fetch_news.py --source hackernews --keyword "AI,LLM,GPT" --deep --no-save
第 2 步:生成报告

阅读输出 JSON,并使用下方的统一报告模板格式化每一条内容。将所有内容翻译成简体中文。

第 3 步:保存并展示

将报告保存到 reports/YYYY-MM-DD/<source>_report.md,然后向用户展示完整内容。


📰 统一报告模板

所有来源均使用此模板。 根据数据是否可用,显示或隐藏可选字段。

#### N. [标题 (中文翻译)](https://original-url.com)
- **Source**: 源名 | **Time**: 时间 | **Heat**: 🔥 热度值
- **Links**: [Discussion](hn_url) | [GitHub](gh_url)     ← 仅在数据存在时显示
- **Summary**: 一句话中文摘要。
- **Deep Dive**: 💡 **Insight**: 深度分析(背景、影响、技术价值)。
各来源的适配方式

仅列出与通用模板的不同之处:

来源适配方式
Hacker News必须包含 [Discussion](hn_url) 链接
GitHubHeat 使用 🌟 Stars,添加 Lang 字段,在 Deep Dive 中添加 #Tags
Hugging FaceHeat 使用 🔥 +N 点赞数;如果有 [GitHub](url),则包含该链接;撰写深度解读(而非仅翻译摘要)
Weibo保留精确的热度文本(例如“108万”)
AIHOTsummary 已是中文编辑稿,直接引用,不要再翻译;Heat 字段为空时也不要编造数据;保留 推荐理由 风格的一句话点评
TLDR AI单条标题往往包含多个主题(Topic A 💻, Topic B ⚡, Topic C ⛪),拆分为项目符号,逐一列出各个主题;summary 是 HTML 段落,需要拆出与每个主题对应的一两句概述
Import AI周刊长文,标题格式为 Import AI 458: 主题1; 主题2; 主题3。建议默认使用 --deep,否则 RSS summary 只有开头几句;Deep Dive 应直接提炼 Jack Clark 的核心观点,而不是平铺事实
国际新闻每条内容必须使用统一报告模板;仅使用最近 24 小时的 RSS 条目,不使用更早新闻进行 Smart Fill;将英文标题和摘要翻译成简体中文,保留原始媒体名称和链接;同一事件被多家媒体报道时可以合并观点,但不能合并链接
Reutersreuters 使用 Google News RSS 的 site:reuters.com fallback;报告中保留 Reuters (Google News fallback) source,不要写成官方公开 RSS

🛠️ 工具

fetch_news.py
参数描述默认值
--source来源 key,可用逗号分隔。参见下表。all
--limit每个来源的最大条目数15
--keyword以逗号分隔的关键词筛选条件None
--deep下载文章正文以进行更深入的分析Off
--save强制保存到 reports 目录单一来源时自动保存
--outdir自定义输出目录reports/YYYY-MM-DD/
可用来源(44+ 个,含用户 OPML)
类别键名称
全球新闻hackernewsHacker News
36kr36氪
wallstreetcn华尔街见闻
tencent腾讯新闻
weibo微博热搜
v2exV2EX
producthuntProduct Hunt
githubGitHub Trending
技术社区(v2)lobstersLobsters
devtoDev.to
AI/技术huggingfaceHF Daily Papers
arxivarXiv (cs.AI/cs.CL/cs.LG, v2)
ai_newsletters所有 AI 新闻简报(聚合)
bensbitesBen's Bites
interconnectsInterconnects (Nathan Lambert)
oneusefulthingOne Useful Thing (Ethan Mollick)
chinaiChinAI (Jeffrey Ding)
memiaMemia
aitoroiAI to ROI
kdnuggetsKDnuggets
中文(v2)sspai少数派
infoq_cnInfoQ 中文站(RSS 只提供标题,推荐配合 --deep 获取正文)
AI 精选(v3)aihotAIHOT 中文 AI 精选(跨源 + 中文编辑稿)
tldr_aiTLDR AI 英文日刊
import_aiImport AI by Jack Clark 周刊(推荐使用 --deep)
国际新闻international最近 24 小时国际新闻聚合(BBC / Guardian / Al Jazeera / France 24 / Reuters 回退源)
bbc_topBBC 头条新闻(24 小时)
bbc_worldBBC 世界新闻(24 小时)
bbc_chineseBBC 中文(24 小时)
guardian_worldThe Guardian 世界新闻(24 小时)
aljazeeraAl Jazeera(24 小时)
france24France 24(24 小时)
reuters通过 Google News RSS 回退源获取 Reuters(24 小时)
播客podcasts所有播客(聚合)
lexfridmanLex Fridman
80000hours80,000 Hours
latentspaceLatent Space
随笔essays所有随笔(聚合)
paulgrahamPaul Graham
waitbutwhyWait But Why
jamesclearJames Clear
farnamstreetFarnam Street
scottyoungScott Young
dankoeDan Koe
自定义(v2)user你的 OPML 订阅源(见下文)
自定义订阅源(用户 OPML)

将你常看的 RSS/Atom 源写入 OPML,即可使用 --source user 统一抓取。

1. 放置 OPML 文件(按优先级查找):

  • ~/.config/news-aggregator/user_sources.opml(推荐,可在不同 skill 间复用)
  • <skill_root>/user_sources.opml(本仓库内)

2. 文件格式:标准 OPML 2.0,可直接从 Feedly / Inoreader / NetNewsWire 导出。参考 user_sources.opml.example:

<outline type="rss" text="Simon Willison" title="Simon Willison"
         xmlUrl="https://simonwillison.net/atom/everything/" />

只有 xmlUrl 是必填项,其它均为可选项。

3. 运行:python3 scripts/fetch_news.py --source user --limit 15

daily_briefing.py(晨间例行简报)

预配置的多来源配置:

python3 scripts/daily_briefing.py --profile <profile>
配置来源指令文件
generalHN, 36Kr, GitHub, Weibo, PH, WallStreetCNinstructions/briefing_general.md
financeWallStreetCN, 36Kr, Tencentinstructions/briefing_finance.md
techGitHub, HN, Product Huntinstructions/briefing_tech.md
socialWeibo, V2EX, Tencentinstructions/briefing_social.md
ai_dailyHF Papers, AI Newslettersinstructions/briefing_ai_daily.md
reading_list随笔, 播客(使用通用模板)

工作流:运行脚本 → 阅读对应的指令文件 → 按照指令文件和通用模板生成报告。


⚠️ 规则(严格)

  1. 语言:所有输出都必须使用简体中文(简体中文)。保留知名英文专有名词(ChatGPT、Python 等)。
  2. 时间:必填字段。绝不跳过。如果 JSON 中缺少时间,则标记为“未知时间”。保留“实时”/“今天”/“热门”原样。
  3. 防止幻觉:仅使用 JSON 中的数据。绝不编造新闻条目。使用简单的主谓宾句子。不要捏造因果关系。
  4. 智能关键词扩展:用户说“AI”时 → 自动扩展为 "AI,LLM,GPT,Claude,Agent,RAG,DeepSeek"。其他领域也进行类似扩展。
  5. 智能补充:如果某个时间范围内的结果少于 5 条,则从更宽的时间范围补充高价值条目。用 ⚠️ 标记补充条目。例外:国际新闻来源严格限定在 24 小时内;不要补充更早的条目。
  6. 保存:始终先将报告保存到 reports/YYYY-MM-DD/,再显示。

📋 交互式菜单

当用户说“如意如意”或请求“菜单/帮助”时:

  1. 读取 templates.md
  2. 显示菜单
  3. 使用上文的“通用工作流”执行用户的选择

要求

  • Python 3.8+,pip install -r requirements.txt
  • Playwright(用于 HF Papers 和 Ben's Bites):playwright install chromium

评论

支持 Markdown