【技术教程】开源实时新闻聚合器NewsNow
NewsNow 最强大的特性之一是极易添加自定义新闻源。想直接体验→ 访问官方演示站 https://newsnow.busiyi.world想研究代码或自部署→ 访问 GitHub 仓库 https://github.com/ourongxing/newsnowNewsNow 既是高效的个人资讯工具,又是学习现代全栈开发、设计模式和可扩展架构的优秀开源样本。如需部署细节、特定新闻源抓取技巧或性能
NewsNow 开源项目详解
NewsNow 是一个由开发者 ourongxing 创建的开源实时新闻聚合器,旨在将分散在各个平台的热点信息统一到一个简洁优雅的界面中,帮助用户高效获取有价值的信息,摆脱传统资讯平台的算法绑架和信息茧房。
⚠️ 重要区分:请勿与英国商业新闻网站 newsnow.co.uk 混淆,二者完全无关。
访问与体验方式
1. GitHub 项目仓库(研究代码 / 自部署)
- 地址:https://github.com/ourongxing/newsnow
- 用途:查看源代码、详细文档、功能特性、部署指南。可 Fork 仓库进行二次开发或自建部署。
2. 官方公开演示站点(直接在线体验)
- 地址:https://newsnow.busiyi.world
- 用途:无需部署即可完整体验所有核心功能。
演示站点使用提示:
- 初次访问默认显示“欢迎”和“实时”栏目。
- 点击顶部 “更多” 按钮。
- 在弹窗中为感兴趣的新闻源(如知乎、微博、GitHub 等)点星星进行关注。
- 返回首页,切换到 “关注” 栏目,即可查看个性化聚合新闻流。
核心理念与价值
NewsNow 主打用户主权和反算法绑架:
- 在一个界面追踪全网热点。
- 通过自定义关注,完全由用户决定信息来源和呈现顺序。
- 解决信息过载与碎片化问题,让用户主动获取信息而非被动接受推荐。
技术架构与设计模式
技术栈概览
- 前端:React 19 + TypeScript + Vite 6
- 后端:Nitro(Nuxt.js 服务端框架)
- 状态管理:Jotai(轻量级)
- 样式与交互:UnoCSS(原子化 CSS)、Framer Motion(动画)
整体架构图
核心设计模式
- 适配器模式:
server/sources/目录中每个新闻源独立实现适配器,将不同平台的数据结构统一为内部NewsItem格式,便于扩展新源。 - 策略模式:智能抓取调度器根据配置的
interval、type(hottest/latest)等动态调整抓取策略。 - 观察者模式:前端通过自定义 Hooks 监听数据变化,实现刷新、缓存过期时的自动更新。
核心功能
- 多源聚合:默认支持 40+ 新闻源,覆盖科技、社交、财经、新闻等领域。
- 优雅交互:卡片式布局,支持拖拽排序、深浅色模式切换、流畅动画。
- 智能数据管理:默认 30 分钟缓存,登录用户可强制刷新;内置智能重试机制避免 IP 封禁。
- 个性化与同步:支持 GitHub OAuth 登录,跨设备同步关注列表和阅读偏好。
快速部署
推荐使用 Docker,最简方式:
# docker-compose.yml
services:
newsnow:
image: ghcr.io/ourongxing/newsnow:latest
container_name: newsnow
restart: always
ports:
- '4444:4444'
执行 docker-compose up -d 后,访问 http://localhost:4444 即可。
远程访问建议:配合内网穿透工具(如 cpolar)可获得公网地址,实现随时随地访问。
扩展性:自定义新闻源
NewsNow 最强大的特性之一是极易添加自定义新闻源。
适用场景
- 学术领域追踪论文网站
- 开发者监控小众技术论坛
- 市场人员聚合竞品动态
- 个人兴趣整合博客、漫画更新等
示例:添加 GitHub Trending
- 在
shared/sources.json中添加配置:
{
"github-trending": {
"name": "GitHub Trending",
"type": "hottest",
"column": "tech",
"home": "https://github.com/trending",
"color": "gray",
"interval": 600000,
"title": "今日热门仓库"
}
}
- 在
server/sources/创建github.ts:
import * as cheerio from 'cheerio';
import { myFetch } from '../utils/fetch';
export default defineSource({
'github-trending': async () => {
const url = 'https://github.com/trending';
const html = await myFetch(url);
const $ = cheerio.load(html);
const items = [];
$('article.Box-row').each((_, element) => {
const title = $(element).find('h2 a').text().trim();
const relativeUrl = $(element).find('h2 a').attr('href');
const description = $(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 || ''
}
});
}
});
return items.slice(0, 10);
}
});
- 运行
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 既是高效的个人资讯工具,又是学习现代全栈开发、设计模式和可扩展架构的优秀开源样本。如需部署细节、特定新闻源抓取技巧或性能优化指导,可进一步提问。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)