新闻阅读服务

一个提供实时热门新闻阅读的服务,具有优雅的UI设计和多种部署选项。

  • by See-lo
  • 本地部署
  • 更新于
在 GitHub 查看 see-lo/newsnow

使用说明

英语| 简体中文 | 日本语

[!注意] 这是一个演示版本,目前仅支持中文。稍后将发布具有更好定制和英语内容支持的全功能版本。

优雅阅读实时热门新闻

特性

  • 简洁优雅的用户界面设计,提供最佳阅读体验
  • 实时更新热门新闻
  • GitHub OAuth登录与数据同步
  • 默认缓存持续时间为30分钟(登录用户可以强制刷新)
  • 基于源更新频率的自适应抓取间隔(至少2分钟),以优化资源使用并防止IP禁令
  • 支持MCP服务器
{
  "mcpServers": {
    "newsnow": {
      "command": "npx",
      "args": [
        "-y",
        "newsnow-mcp-server"
      ],
      "env": {
        "BASE_URL": "https://newsnow.busiyi.world"
      }
    }
  }
}

您可以更改 BASE_URL 到你自己的领域。

部署

基本部署

对于没有登录和缓存的部署:

  1. 分叉此存储库
  2. 导入到Cloudflare Page或Vercel等平台

Cloudflare页面配置

  • 构建命令: pnpm run build
  • 输出目录: dist/output/public

GitHub OAuth设置

  1. 创建GitHub应用程序
  2. 无需特殊权限
  3. 将回调URL设置为: https://your-domain.com/api/oauth/github (替换 your-domain 使用您的实际域名)
  4. 获取客户端ID和客户端密码

环境变量

参见 example.env.server。对于本地开发,请将其重命名为 .env.server 并配置:

# Github Client ID
G_CLIENT_ID=
# Github Client Secret
G_CLIENT_SECRET=
# JWT Secret, usually the same as Client Secret
JWT_SECRET=
# Initialize database, must be set to true on first run, can be turned off afterward
INIT_TABLE=true
# Whether to enable cache
ENABLE_CACHE=true

数据库支持

支持的数据库连接器:https://db0.unjs.io/connectors Cloudflare D1数据库 是推荐的。

  1. 在Cloudflare Worker仪表板中创建D1数据库
  2. 在wrangler.toml中配置database_id和database_name
  3. 如果wrangler.toml不存在,请重命名example.wrangler.toml并修改配置
  4. 更改将在下次部署时生效

Docker部署

在项目根目录中:

docker compose up

您还可以在中设置环境变量 docker-compose.yml.

发展

[!注意] 需要Node.js>=20

corepack enable
pnpm i
pnpm dev

添加数据源

参见 shared/sources 和 server/sources 目录。该项目提供了完整的类型定义和干净的架构。

有关如何添加新源的详细说明,请参阅 贡献.md.

路线图

  • 添加 多语言支持 (英语、中文,以后会更多)。
  • 改进 个性化选项 (基于类别的新闻,保存的偏好)。
  • 扩展 数据源 以多种语言报道全球新闻。

准备就绪后释放

贡献

欢迎投稿!请随时提交pull请求或为功能请求和bug报告创建问题。

看 贡献.md 有关如何贡献的详细指南,特别是添加新数据源的指南。

许可证

麻省理工学院 ©欧龙兴