news 2026/3/31 23:58:40

【技术教程】开源实时新闻聚合器NewsNow

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【技术教程】开源实时新闻聚合器NewsNow

NewsNow 开源项目详解

NewsNow 是一个由开发者ourongxing创建的开源实时新闻聚合器,旨在将分散在各个平台的热点信息统一到一个简洁优雅的界面中,帮助用户高效获取有价值的信息,摆脱传统资讯平台的算法绑架和信息茧房。

⚠️重要区分:请勿与英国商业新闻网站 newsnow.co.uk 混淆,二者完全无关。

访问与体验方式

1. GitHub 项目仓库(研究代码 / 自部署)

  • 地址:https://github.com/ourongxing/newsnow
  • 用途:查看源代码、详细文档、功能特性、部署指南。可 Fork 仓库进行二次开发或自建部署。

2. 官方公开演示站点(直接在线体验)

  • 地址:https://newsnow.busiyi.world
  • 用途:无需部署即可完整体验所有核心功能。

演示站点使用提示

  1. 初次访问默认显示“欢迎”和“实时”栏目。
  2. 点击顶部“更多”按钮。
  3. 在弹窗中为感兴趣的新闻源(如知乎、微博、GitHub 等)点星星进行关注。
  4. 返回首页,切换到“关注”栏目,即可查看个性化聚合新闻流。

核心理念与价值

NewsNow 主打用户主权反算法绑架

  • 在一个界面追踪全网热点。
  • 通过自定义关注,完全由用户决定信息来源和呈现顺序。
  • 解决信息过载与碎片化问题,让用户主动获取信息而非被动接受推荐。

技术架构与设计模式

技术栈概览

  • 前端:React 19 + TypeScript + Vite 6
  • 后端:Nitro(Nuxt.js 服务端框架)
  • 状态管理:Jotai(轻量级)
  • 样式与交互:UnoCSS(原子化 CSS)、Framer Motion(动画)

整体架构图

前端展示层

API服务层

数据处理与存储层

数据获取层

多种新闻源API

智能抓取调度器

HTML页面爬取

数据清洗与解析

是否启用缓存?

缓存系统
SQLite/MySQL/D1

实时数据

Nitro API Server

React前端应用

卡片式布局UI

用户交互
(拖拽/收藏/刷新)

核心设计模式

  • 适配器模式server/sources/目录中每个新闻源独立实现适配器,将不同平台的数据结构统一为内部NewsItem格式,便于扩展新源。
  • 策略模式:智能抓取调度器根据配置的intervaltype(hottest/latest)等动态调整抓取策略。
  • 观察者模式:前端通过自定义 Hooks 监听数据变化,实现刷新、缓存过期时的自动更新。

核心功能

  • 多源聚合:默认支持 40+ 新闻源,覆盖科技、社交、财经、新闻等领域。
  • 优雅交互:卡片式布局,支持拖拽排序、深浅色模式切换、流畅动画。
  • 智能数据管理:默认 30 分钟缓存,登录用户可强制刷新;内置智能重试机制避免 IP 封禁。
  • 个性化与同步:支持 GitHub OAuth 登录,跨设备同步关注列表和阅读偏好。

快速部署

推荐使用 Docker,最简方式:

# docker-compose.ymlservices:newsnow:image:ghcr.io/ourongxing/newsnow:latestcontainer_name:newsnowrestart:alwaysports:-'4444:4444'

执行docker-compose up -d后,访问http://localhost:4444即可。

远程访问建议:配合内网穿透工具(如 cpolar)可获得公网地址,实现随时随地访问。

扩展性:自定义新闻源

NewsNow 最强大的特性之一是极易添加自定义新闻源。

适用场景

  • 学术领域追踪论文网站
  • 开发者监控小众技术论坛
  • 市场人员聚合竞品动态
  • 个人兴趣整合博客、漫画更新等

示例:添加 GitHub Trending

  1. shared/sources.json中添加配置:
{"github-trending":{"name":"GitHub Trending","type":"hottest","column":"tech","home":"https://github.com/trending","color":"gray","interval":600000,"title":"今日热门仓库"}}
  1. server/sources/创建github.ts
import*ascheeriofrom'cheerio';import{myFetch}from'../utils/fetch';exportdefaultdefineSource({'github-trending':async()=>{consturl='https://github.com/trending';consthtml=awaitmyFetch(url);const$=cheerio.load(html);constitems=[];$('article.Box-row').each((_,element)=>{consttitle=$(element).find('h2 a').text().trim();constrelativeUrl=$(element).find('h2 a').attr('href');constdescription=$(element).find('p.pr-4').text().trim();if(title&&relativeUrl){items.push({id:relativeUrl,title:title.replace(/\s+/g,' '),url:`https://github.com${relativeUrl}`,extra:{description:description||''}});}});returnitems.slice(0,10);}});
  1. 运行pnpm dev测试,确认新源在界面正常显示。

生态与变体

MCP Newsnow Server

  • 一个基于 Model Context Protocol 的新闻聚合服务器。
  • 用途:让 AI 助手(如 Claude Desktop)通过自然语言直接查询实时新闻(如“今天知乎和微博热搜”)。
  • 安装:pip install mcp-newsnow,然后在 AI 助手配置中添加即可。

总结与建议

  • 想直接体验→ 访问官方演示站 https://newsnow.busiyi.world
  • 想研究代码或自部署→ 访问 GitHub 仓库 https://github.com/ourongxing/newsnow

NewsNow 既是高效的个人资讯工具,又是学习现代全栈开发、设计模式和可扩展架构的优秀开源样本。如需部署细节、特定新闻源抓取技巧或性能优化指导,可进一步提问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 2:36:29

[特殊字符]一键打包下载:HeyGem为用户提供便捷的结果导出方案

一键打包下载:HeyGem 如何让批量视频导出更高效 在数字人内容生产逐渐走向工业化的今天,AI 视频生成系统早已不再只是“能跑通流程”的工具,而是需要真正贴近用户工作流、解决实际交付痛点的产品。HeyGem 正是这样一个将用户体验贯穿始终的系…

作者头像 李华
网站建设 2026/3/20 5:53:54

【稀缺资料】C# 12拦截器性能调优的7个隐藏技巧(微软内部文档泄露)

第一章:C# 12拦截器性能调优概述 C# 12 引入的拦截器(Interceptors)为开发人员提供了在编译时替换方法调用的能力,尤其适用于提升运行时性能、减少反射开销以及实现轻量级AOP模式。这一特性允许开发者将特定方法调用静态绑定到替代…

作者头像 李华
网站建设 2026/3/28 11:19:01

播放按钮在哪里?HeyGem允许预览原始音频和最终视频

播放按钮在哪里?HeyGem允许预览原始音频和最终视频 在数字内容创作日益自动化的今天,一个看似简单的问题却可能暴露出整个系统的成熟度:“播放按钮在哪里?”——当用户上传了一段语音、等待生成一段数字人视频后,最自然…

作者头像 李华
网站建设 2026/3/29 10:29:42

3个案例讲透C# using别名与指针类型的协同应用

第一章:C# using别名与指针类型概述在C#编程中,using 指令和指针类型是两个看似独立但均对代码可读性与性能优化具有重要意义的语言特性。using 不仅用于资源管理,还可定义类型别名以简化复杂类型的引用;而指针类型则允许在不安全…

作者头像 李华
网站建设 2026/3/25 6:04:19

C#指针编程避坑指南:using别名在unsafe代码中的妙用(仅限高手)

第一章:C#指针编程的高风险与高回报在C#开发中,指针编程属于非托管代码范畴,通常被用于性能敏感场景,如高频数值计算、图像处理或底层系统交互。启用指针需将代码标记为 unsafe,并配合编译器选项 /unsafe 编译。启用指…

作者头像 李华
网站建设 2026/3/27 0:31:42

[特殊字符]️删除当前视频功能:精准移除不需要的生成结果

删除当前视频功能:精准移除不需要的生成结果 在AI内容生成系统越来越普及的今天,一个常被忽视但至关重要的问题浮出水面——如何优雅地“删除”? 我们习惯于赞美生成速度有多快、口型同步有多准、语音自然度有多高。但很少有人关注&#xff1…

作者头像 李华