【技术教程】开源实时新闻聚合器NewsNow
2026/9/18 18:30:04 网站建设 项目流程

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询