NewsNow 是一个优雅的实时新闻阅读平台,致力于为用户提供最佳的新闻浏览体验。该项目目前主要支持中文内容,未来将推出功能更完整、支持英文和多语言内容的版本。
核心特性
🎨 清澈优雅的界面设计
NewsNow 采用简洁现代的 UI 设计,专注于为用户提供最佳的阅读体验。界面干净整洁,没有多余的元素干扰,让用户能够专注于新闻内容本身。
⚡ 实时新闻更新
平台提供实时更新的热门新闻,确保用户能够第一时间了解最新的资讯动态。通过智能的内容抓取和更新机制,保持新闻内容的时效性。
🔐 GitHub OAuth 登录与数据同步
支持使用 GitHub 账号登录,方便快捷的同时实现数据同步功能。登录用户的个性化设置和阅读偏好能够在不同设备间保持一致。
🚀 智能缓存机制
- 默认缓存时长:30分钟,平衡了内容新鲜度和系统性能
- 强制刷新:登录用户可以强制刷新,获取最新内容
- 自适应抓取间隔:根据源更新频率动态调整(最小2分钟),优化资源使用并防止 IP 封禁
🔧 MCP 服务器支持
NewsNow 提供了 MCP (Model Context Protocol) 服务器支持,方便集成到各种 AI 助手和工具链中:
{
"mcpServers": {
"newsnow": {
"command": "npx",
"args": ["-y", "newsnow-mcp-server"],
"env": {
"BASE_URL": "https://newsnow.busiyi.world"
}
}
}
}
用户可以将 BASE_URL 更改为自己的域名,实现个性化的 MCP 服务部署。
部署方案
基础部署
对于不需要登录和缓存功能的简单部署:
- Fork 此仓库
- 导入到 Cloudflare Pages 或 Vercel 等平台
- 即可快速上线
Cloudflare Pages 配置
- 构建命令:
pnpm run build - 输出目录:
dist/output/public
GitHub OAuth 设置
- 创建 GitHub App
- 无需特殊权限
- 设置回调 URL:
https://your-domain.com/api/oauth/github(替换为实际域名) - 获取 Client ID 和 Client Secret
环境变量配置
参考 example.env.server 文件,本地开发时重命名为 .env.server:
# Github Client ID
G_CLIENT_ID=
# Github Client Secret
G_CLIENT_SECRET=
# JWT Secret,通常与 Client Secret 相同
JWT_SECRET=
# 初始化数据库,首次运行必须设置为 true,之后可以关闭
INIT_TABLE=true
# 是否启用缓存
ENABLE_CACHE=true
数据库支持
支持 db0 的所有数据库连接器,推荐使用 Cloudflare D1 数据库:
- 在 Cloudflare Worker 控制台创建 D1 数据库
- 在
wrangler.toml中配置database_id和database_name - 如果
wrangler.toml不存在,重命名example.wrangler.toml并修改配置 - 更改将在下次部署时生效
Docker 部署
在项目根目录运行:
docker compose up
也可以在 docker-compose.yml 中设置环境变量。
开发指南
环境要求
- Node.js >= 20
开发流程
corepack enable
pnpm i
pnpm dev
添加数据源
参考 shared/sources 和 server/sources 目录。项目提供了完整的类型定义和清晰的架构设计。详细的添加数据源指南请参考 CONTRIBUTING.md。
技术架构
前端技术栈
- 现代前端框架:采用最新的前端技术,确保良好的用户体验
- 响应式设计:适配各种设备屏幕尺寸
- 性能优化:通过缓存和懒加载等技术提升性能
后端架构
- 数据抓取引擎:智能抓取各种新闻源的内容
- 缓存系统:多层缓存机制,平衡性能和实时性
- API 设计:RESTful API 设计,便于集成和扩展
数据源管理
- 模块化设计:每个数据源都是独立的模块,便于维护
- 类型安全:完整的 TypeScript 类型定义
- 扩展性强:易于添加新的数据源
发展路线图
即将推出的功能
- 多语言支持:英文、中文以及更多语言版本
- 个性化选项:基于分类的新闻推荐、保存用户偏好
- 全球新闻源:扩展数据源以覆盖全球多语言新闻
长期规划
- AI 推荐:基于用户行为的智能新闻推荐
- 社交功能:新闻分享、评论等社交互动功能
- 移动应用:原生移动应用开发
社区贡献
NewsNow 欢迎社区贡献!无论是提交 Pull Request 还是创建 Issue,都是对项目的重要支持。
贡献方式
- 功能建议:通过 Issues 提出新功能想法
- Bug 报告:发现问题时创建详细的 Bug 报告
- 代码贡献:提交 Pull Request 贡献代码
- 文档改进:帮助完善项目文档
特别贡献
项目特别欢迎新数据源的贡献。详细的贡献指南请参考 CONTRIBUTING.md,其中包含了添加新数据源的详细说明。
项目亮点
用户体验优先
- 简洁界面:去除冗余元素,专注内容本身
- 快速加载:优化的性能,确保快速响应
- 智能缓存:平衡实时性和性能
开发者友好
- 清晰架构:模块化设计,易于理解和扩展
- 完整文档:详细的开发和部署文档
- 类型安全:TypeScript 支持,减少运行时错误
部署灵活
- 多种部署方式:支持 Vercel、Cloudflare Pages、Docker 等
- 环境适配:支持多种数据库和部署环境
- 配置简单:最小化配置,快速上手
许可证
NewsNow 采用 MIT 许可证 © ourongxing,允许自由使用、修改和分发。
总结
NewsNow 是一个设计优雅、功能实用的新闻阅读平台,特别适合追求简洁阅读体验的用户。无论是作为个人新闻阅读工具,还是作为学习现代 Web 开发的参考项目,都具有很高的价值。
随着项目的不断发展和社区贡献的积累,NewsNow 有望成为一个功能完善、支持多语言的全球新闻聚合平台。对于开发者来说,这是一个参与开源项目、学习现代 Web 开发技术的绝佳机会。
- GitHub 仓库:https://github.com/ourongxing/newsnow
- 在线演示:https://newsnow.busiyi.world
- 许可证:MIT