关于 news-aggregator-skill
这是一项新闻聚合技能,可从 44 多个来源抓取新闻、AI 出版物、播客、文章及用户 OPML 订阅。它按统一格式生成中文报告,并支持来源专属规则和深度文章抓取。
主要功能
- 01抓取 44 多个来源
- 02按来源和关键词筛选
- 03获取文章正文以供分析
- 04生成结构化中文报告
- 05支持自定义 OPML 订阅
- 06提供每日简报配置
适用场景
- 01准备每日新闻简报
- 02跟踪 AI 论文与通讯
- 03扫描最近 24 小时国际新闻
- 04聚合个人 RSS 订阅
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cclank/ news-aggregator-skill --skill news-aggregator-skill安装后在 Claude Code 中输入/news-aggregator-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreMISTAKES.mdimplementation_plan.mdREADME.mdrequirements.txtuser_sources.opml.exampletemplates.md.agent/workflows/daily_briefing.mdinstructions/briefing_github.mdbriefing_general.mdbriefing_ai_daily.mdbriefing_finance.mdbriefing_social.mdbriefing_tech.mdscripts/daily_briefing.pyfetch_generic_playwright.pydebug_hf_detail.pyfetch_hf_papers_playwright.pyfetch_bensbites.pyfetch_news.pyfetch_user_feeds.pyrss_parser.pyprocess_general_json.pytest_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) 链接 |
| GitHub | Heat 使用 🌟 Stars,添加 Lang 字段,在 Deep Dive 中添加 #Tags |
| Hugging Face | Heat 使用 🔥 +N 点赞数;如果有 [GitHub](url),则包含该链接;撰写深度解读(而非仅翻译摘要) |
| 保留精确的热度文本(例如“108万”) | |
| AIHOT | summary 已是中文编辑稿,直接引用,不要再翻译;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;将英文标题和摘要翻译成简体中文,保留原始媒体名称和链接;同一事件被多家媒体报道时可以合并观点,但不能合并链接 |
| Reuters | reuters 使用 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)
| 类别 | 键 | 名称 |
|---|---|---|
| 全球新闻 | hackernews | Hacker News |
36kr | 36氪 | |
wallstreetcn | 华尔街见闻 | |
tencent | 腾讯新闻 | |
weibo | 微博热搜 | |
v2ex | V2EX | |
producthunt | Product Hunt | |
github | GitHub Trending | |
| 技术社区(v2) | lobsters | Lobsters |
devto | Dev.to | |
| AI/技术 | huggingface | HF Daily Papers |
arxiv | arXiv (cs.AI/cs.CL/cs.LG, v2) | |
ai_newsletters | 所有 AI 新闻简报(聚合) | |
bensbites | Ben's Bites | |
interconnects | Interconnects (Nathan Lambert) | |
oneusefulthing | One Useful Thing (Ethan Mollick) | |
chinai | ChinAI (Jeffrey Ding) | |
memia | Memia | |
aitoroi | AI to ROI | |
kdnuggets | KDnuggets | |
| 中文(v2) | sspai | 少数派 |
infoq_cn | InfoQ 中文站(RSS 只提供标题,推荐配合 --deep 获取正文) | |
| AI 精选(v3) | aihot | AIHOT 中文 AI 精选(跨源 + 中文编辑稿) |
tldr_ai | TLDR AI 英文日刊 | |
import_ai | Import AI by Jack Clark 周刊(推荐使用 --deep) | |
| 国际新闻 | international | 最近 24 小时国际新闻聚合(BBC / Guardian / Al Jazeera / France 24 / Reuters 回退源) |
bbc_top | BBC 头条新闻(24 小时) | |
bbc_world | BBC 世界新闻(24 小时) | |
bbc_chinese | BBC 中文(24 小时) | |
guardian_world | The Guardian 世界新闻(24 小时) | |
aljazeera | Al Jazeera(24 小时) | |
france24 | France 24(24 小时) | |
reuters | 通过 Google News RSS 回退源获取 Reuters(24 小时) | |
| 播客 | podcasts | 所有播客(聚合) |
lexfridman | Lex Fridman | |
80000hours | 80,000 Hours | |
latentspace | Latent Space | |
| 随笔 | essays | 所有随笔(聚合) |
paulgraham | Paul Graham | |
waitbutwhy | Wait But Why | |
jamesclear | James Clear | |
farnamstreet | Farnam Street | |
scottyoung | Scott Young | |
dankoe | Dan 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>
| 配置 | 来源 | 指令文件 |
|---|---|---|
general | HN, 36Kr, GitHub, Weibo, PH, WallStreetCN | instructions/briefing_general.md |
finance | WallStreetCN, 36Kr, Tencent | instructions/briefing_finance.md |
tech | GitHub, HN, Product Hunt | instructions/briefing_tech.md |
social | Weibo, V2EX, Tencent | instructions/briefing_social.md |
ai_daily | HF Papers, AI Newsletters | instructions/briefing_ai_daily.md |
reading_list | 随笔, 播客 | (使用通用模板) |
工作流:运行脚本 → 阅读对应的指令文件 → 按照指令文件和通用模板生成报告。
⚠️ 规则(严格)
- 语言:所有输出都必须使用简体中文(简体中文)。保留知名英文专有名词(ChatGPT、Python 等)。
- 时间:必填字段。绝不跳过。如果 JSON 中缺少时间,则标记为“未知时间”。保留“实时”/“今天”/“热门”原样。
- 防止幻觉:仅使用 JSON 中的数据。绝不编造新闻条目。使用简单的主谓宾句子。不要捏造因果关系。
- 智能关键词扩展:用户说“AI”时 → 自动扩展为
"AI,LLM,GPT,Claude,Agent,RAG,DeepSeek"。其他领域也进行类似扩展。 - 智能补充:如果某个时间范围内的结果少于 5 条,则从更宽的时间范围补充高价值条目。用 ⚠️ 标记补充条目。例外:国际新闻来源严格限定在 24 小时内;不要补充更早的条目。
- 保存:始终先将报告保存到
reports/YYYY-MM-DD/,再显示。
📋 交互式菜单
当用户说“如意如意”或请求“菜单/帮助”时:
- 读取
templates.md - 显示菜单
- 使用上文的“通用工作流”执行用户的选择
要求
- Python 3.8+,
pip install -r requirements.txt - Playwright(用于 HF Papers 和 Ben's Bites):
playwright install chromium
评论
支持 Markdown