GitHub Explorer

NewsNow 深度分析报告

GitHub: https://github.com/ourongxing/newsnow

一句话总结

精致的中文新闻热榜聚合工具,44 个数据源通过 Glob Import 零配置自动注册,一键部署到 Cloudflare/Vercel/Docker——28.4% 的 Fork/Star 比证明了”零成本 Serverless 部署”策略的成功。

值得关注的理由

  1. 极高的实际使用率:19K stars 中 Fork 率达 28.4%(行业均值 ~5-10%),说明大量用户实际部署了自己的实例,而非仅仅收藏
  2. 架构精巧值得学习:自定义 Rollup 插件实现 glob:./sources/*.ts 语法,新增数据源零配置自动注册;两级缓存(interval + TTL)兼顾时效性和容错;前后端同构架构(Vite + Nitro)
  3. 小而美的工程典范:6,012 行核心代码、44 个数据源平均仅 49 行/个、单人 17 个月打造——是独立开发者高效构建产品的优秀案例

项目画像

维度数据
GitHubhttps://github.com/ourongxing/newsnow
Star / Fork18,955 / 5,384
代码行数~6,012 行核心代码(TypeScript 80%+, TSX 15%)
项目年龄17 个月(2024-09 创建)
开发阶段稳定维护(v0.0.39,爆发期已过,近期主要为依赖更新和数据源维护)
贡献模式独立开发(ourongxing 贡献 90.8%,18 位贡献者)
热度定位大众热门(19K stars,中文热榜工具赛道领先)
质量评级代码[B+] 文档[B] 测试[D]

作者视角:为什么存在这个项目

创始人/作者背景

Ou(ourongxing),深圳独立开发者,596 followers,以 TypeScript 和 Lua 为主要技术栈。此前有 chatgpt-vercel(项目模式类似:开源 + Vercel 一键部署)等成功项目经验。他深谙”一键部署 → 高 Fork 率 → 快速传播”的开源产品增长飞轮。

问题判断

中文互联网的热点新闻分散在微博、知乎、抖音、哔哩哔哩等数十个平台,用户需要逐个打开查看。现有工具要么只提供 API 无前端(DailyHotApi),要么是商业产品(今日热榜),要么定位不同(RSSHub 是 RSS 订阅源而非热榜)。缺少一个开源、免费、UI 精致、可自部署的热榜聚合工具。

解法哲学

“精致但极简”:

  • 做什么:44 个中文热门数据源(微博/知乎/抖音/哔哩哔哩/GitHub 等)、优雅的卡片式 UI、一键 Cloudflare/Vercel/Docker 部署、GitHub/Google 登录、MCP Server 支持
  • 不做什么:不做 RSS 订阅、不做全文阅读、不做内容推荐算法——只做”热榜一览”这一件事
  • 核心信条:新增数据源只需一个文件(平均 49 行),零配置自动注册

战略意图

个人独立开发者作品,无明显商业化意图。MIT 许可鼓励 Fork 和二次开发。MCP Server 集成暗示作者在探索 AI Agent 场景的扩展可能。

核心价值提炼

创新之处

创新点新颖度实用性可迁移性说明
Glob Import 自动注册数据源4/55/55/5自定义 Rollup 插件,glob:./sources/*.ts 自动发现和注册
两级缓存策略3/55/55/5interval 刷新间隔 + TTL 失效,失败降级返回旧缓存
中英文双语相对时间解析器3/54/54/530+ 种格式(“3小时前”、“昨天”、“2 days ago”)
热榜排名变化动画2/54/53/5可视化展示排名上升/下降趋势
MCP Server 集成3/53/54/5AI Agent 可直接查询热榜数据

可复用的模式与技巧

  1. Glob Import 插件化注册模式:通过 Vite/Rollup 插件实现 glob:./sources/*.ts 语法,新增模块只需放入指定目录即可自动注册,零配置。适用于任何需要插件化扩展的前后端项目。

  2. 两级缓存 + 降级策略:interval(数据源自定义刷新间隔,2min~1h)+ TTL(缓存过期时间),抓取失败时降级返回旧缓存而非报错。适用于任何依赖外部数据源的聚合服务。

  3. Vite + Nitro 前后端同构:使用 vite-plugin-with-nitro 将前端(React)和后端(H3/Nitro)统一在一个项目中,共享类型定义。适用于小型全栈 Serverless 应用。

  4. 声明式数据源定义:每个数据源文件导出 defineSource() 返回标准化结构(id、name、type、interval、列表数据),44 个数据源平均仅 49 行。适用于任何需要标准化数据采集的场景。

  5. 拼音搜索支持:集成拼音库实现中文拼音搜索匹配,提升了用户搜索体验。

关键设计决策

  1. Cloudflare Workers 优先:以 Cloudflare Workers 为首选部署目标(免费额度足够),KV 做缓存存储,D1 做用户数据。Trade-off:绑定了 Cloudflare 生态,但获得了零成本全球加速部署。

  2. 前后端同构而非分离:没有拆分为 API + SPA,而是用 Nitro 统一处理。Trade-off:不适合大型项目,但极度简化了部署流程(一个项目一键部署)。

  3. 直接爬取而非 API:大部分数据源通过 HTTP 请求直接爬取页面/API,而非使用官方 API。Trade-off:开发快、无需申请 API Key,但稳定性依赖于目标网站不改版。

竞品格局与定位

竞品对比矩阵

维度NewsNowDailyHotApiRSSHub今日热榜
定位热榜聚合前端 + 后端热榜 API(无前端)RSS 订阅源聚合商业热榜产品
Stars19K3.7K42.9KN/A
前端 UI精致卡片式无无(需 RSS 阅读器)有
部署成本零(Cloudflare 免费层)需服务器需服务器/Docker免费+付费
数据源数44~302000+(但非热榜专用)~50
MCP 支持有无无无
许可证MITMITMIT商业

差异化护城河

  1. “一键部署”体验:Cloudflare/Vercel 零成本部署 + GitHub 登录 + 卡片式 UI,是唯一同时具备精致前端和零成本 Serverless 部署的开源热榜工具
  2. 28.4% Fork 率验证:远超行业均值的 Fork 率证明了产品-市场匹配
  3. MCP Server 先发:在热榜聚合赛道率先支持 AI Agent 场景

竞争风险

  • DailyHotApi 添加前端:如果 DailyHotApi 增加 Web UI,会直接竞争
  • RSSHub 覆盖热榜场景:RSSHub 42.9K stars 的社区规模如果聚焦热榜,有碾压优势
  • 数据源稳定性:直接爬取依赖目标网站不改版,维护成本随数据源增加线性增长

生态定位

NewsNow 填补了 “开源、免费、精致、可自部署的中文热榜聚合工具” 的空白。与 RSSHub 是互补关系(RSSHub 做 RSS 订阅,NewsNow 做热榜快览)。

套利机会分析

  • 信息差: 部分存在——19K stars 在中文开发者圈已有知名度,但 Glob Import 自动注册、两级缓存降级等架构模式的可迁移价值尚未被广泛认知
  • 技术借鉴: (1) Glob Import 插件化注册是前后端项目扩展性设计的精巧方案;(2) 两级缓存 + 降级策略是依赖外部数据源服务的通用模式;(3) Vite + Nitro 前后端同构是小型 Serverless 应用的最佳实践
  • 生态位: 中文热榜聚合赛道的开源领导者,与 RSSHub 互补
  • 趋势判断: 增长放缓但用户基数稳固。热榜聚合是持续需求,MCP 集成为 AI 场景打开新增长空间

风险与不足

  1. Bus Factor = 1:ourongxing 贡献 90.8% 代码,社区贡献主要集中在数据源修复和 i18n。
  2. 测试覆盖极低:仅 date.ts 有实质测试,核心爬虫和缓存逻辑无测试,数据源失效只能靠用户反馈发现。
  3. 数据源稳定性风险:直接爬取而非使用 API,目标网站改版即导致数据源失效。Issue 中大量 “XXX 数据源无法使用” 报告证实了这一风险。
  4. 安全隐患:存在硬编码 Cookie、SQL 拼接(虽然 D1 有参数化,但部分路径不确定)等问题。
  5. 版本号停滞在 0.0.x:39 个版本全部是 0.0.x 补丁版本,暗示项目尚未建立正式的版本管理规划。
  6. 爆发期已过:2024 年 10 月单月 195 次提交是绝对高峰,之后进入低频维护模式。

行动建议

  • 如果你要用它: 想要一个私人热榜聚合页面时的最佳选择。推荐 Cloudflare Workers 部署(零成本)。注意部分数据源可能因目标网站改版而失效,需要自行维护或等待社区修复。
  • 如果你要学它: 重点关注 (1) shared/sourceListVirtual.ts 和构建插件 — Glob Import 自动注册机制;(2) server/sources/ — 44 个数据源的声明式定义模式(每个平均 49 行);(3) server/cache.ts — 两级缓存 + 降级策略;(4) shared/date.ts — 中英文双语相对时间解析器(30+ 格式)。
  • 如果你要 fork 它: (1) 添加核心爬虫的测试覆盖和数据源健康检查;(2) 扩展国际化数据源(当前以中文为主);(3) 改进数据源稳定性(对高频失效的数据源增加备用抓取策略);(4) 建立正式版本号管理(从 0.1.0 开始)。

知识入口

资源链接
DeepWikideepwiki.com/ourongxing/newsnow
Zread.aizread.ai/ourongxing/newsnow
关联论文无
在线 Demonewsnow.busiyi.world

相关报告