Skip to content
forked from iliane5/meridian

Meridian cuts through news noise by scraping hundreds of sources, analyzing stories with AI, and delivering concise, personalized daily briefs.

License

Notifications You must be signed in to change notification settings

A1pha3/meridian

 
 

Repository files navigation

Meridian

Meridian 是一个基于 Cloudflare Workers 和 Durable Objects 的新闻聚合和智能摘要系统,专为处理大量新闻源并生成智能摘要而设计。

功能特点

  • 多源新闻聚合: 支持从多个 RSS 源自动抓取新闻
  • 智能内容分析: 使用 Google Gemini 2.0 Flash 模型进行内容分析和摘要生成
  • 自动聚类: 基于内容的相似性自动将新闻聚类
  • 多语言支持: 支持中文、英文等多种语言的新闻处理
  • 实时更新: 基于 Durable Objects 的实时新闻源监控
  • 高性能: 利用 Cloudflare Workers 的全球分布式网络
  • 可扩展: 模块化设计,易于扩展和维护

系统架构

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   RSS Sources   │───▶│  Durable Objects │───▶│   Content       │
│                 │    │  (Per Source)    │    │   Processing    │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                                        │
                                                        ▼
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Frontend      │◀───│   API Gateway    │◀───│   AI Analysis   │
│   (Dashboard)   │    │   (Worker)       │    │   (Gemini 2.0)  │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                │
                                ▼
                       ┌──────────────────┐
                       │   Cloudflare R2  │
                       │   (Storage)      │
                       └──────────────────┘

技术栈

  • 运行时: Cloudflare Workers
  • 存储: Cloudflare D1 (SQLite) 和 R2 (对象存储)
  • AI 模型: Google Gemini 2.0 Flash
  • 前端: HTML, CSS, JavaScript (原生)
  • 部署: Cloudflare

快速开始

前置要求

  • Node.js 18+
  • Cloudflare 账户
  • Wrangler CLI

安装步骤

  1. 克隆仓库
git clone https://github.com/your-username/meridian.git
cd meridian
  1. 安装依赖
npm install
  1. 配置环境变量
cp .dev.vars.example .dev.vars
# 编辑 .dev.vars 文件,填入必要的配置
  1. 初始化数据库
npm run db:init
  1. 启动开发服务器
npm run dev
  1. 访问应用 打开浏览器访问 http://localhost:8787

配置说明

环境变量

.dev.vars 文件中配置以下变量:

# 数据库配置
DATABASE_URL="your-d1-database-url"

# AI 模型配置
GEMINI_API_KEY="your-gemini-api-key"

# 认证配置
API_TOKEN="your-api-token"

# 存储配置
R2_BUCKET_NAME="your-r2-bucket-name"

# 其他配置
ENVIRONMENT="development"

新闻源配置

系统支持多种新闻源,可以通过以下方式添加:

  1. 通过 API 接口添加
  2. 直接在数据库中添加
  3. 通过管理界面添加

示例新闻源配置:

{
  "name": "BBC News",
  "url": "http://feeds.bbci.co.uk/news/rss.xml",
  "category": "general",
  "language": "en",
  "frequency_tier": "high"
}

API 文档

详细的 API 文档请参考 API 文档

主要 API 端点

  • GET /ping - 健康检查
  • GET /reports - 获取报告列表
  • GET /reports/{id} - 获取单个报告
  • POST /reports - 创建新报告
  • GET /sources - 获取新闻源列表
  • GET /sources/{id} - 获取单个新闻源
  • POST /sources - 添加新闻源
  • GET /articles - 获取文章列表
  • GET /articles/{id} - 获取单篇文章
  • GET /articles/search - 搜索文章
  • GET /openGraph - 生成 OpenGraph 图像

部署指南

生产环境部署

  1. 配置 Wrangler
npx wrangler auth login
  1. 设置环境变量
npx wrangler secret put GEMINI_API_KEY
npx wrangler secret put API_TOKEN
npx wrangler secret put DATABASE_URL
  1. 部署应用
npm run deploy

数据库迁移

npm run db:migrate

开发指南

项目结构

meridian/
├── .github/                  # GitHub 配置文件
│   └── workflows/            # CI/CD 工作流
├── .vscode/                  # VS Code 配置
├── apps/                     # 应用程序
│   └── web/                  # Web 应用
│       ├── public/           # 静态资源
│       └── src/              # 源代码
├── docs/                     # 项目文档
│   ├── components/           # 组件文档
│   ├── guides/               # 指南文档
│   ├── overview.md           # 项目概述
│   ├── getting-started.md    # 快速开始
│   ├── api.md                # API 文档
│   └── README.md             # 文档索引
├── packages/                 # 共享包
│   ├── config/               # 配置文件
│   ├── database/             # 数据库相关
│   └── types/                # 类型定义
├── services/                 # 服务
│   ├── backend/              # 后端服务
│   ├── ml-service/           # ML 服务
│   └── scraper/              # 抓取服务
├── tools/                    # 工具和脚本
├── package.json              # 项目依赖
├── turbo.json                # Turborepo 配置
└── README.md                 # 项目说明

开发工作流

  1. 创建新功能分支
git checkout -b feature/new-feature
  1. 进行开发
npm run dev
  1. 运行测试
npm test
  1. 提交代码
git add .
git commit -m "feat: add new feature"
git push origin feature/new-feature
  1. 创建 Pull Request

代码规范

  • 使用 ESLint 进行代码检查
  • 使用 Prettier 进行代码格式化
  • 遵循 JavaScript Standard Style

性能优化

缓存策略

  • 使用 Cloudflare Workers KV 缓存频繁访问的数据
  • 实现智能缓存失效机制
  • 优化 API 响应时间

数据库优化

  • 合理设计数据库索引
  • 使用分页查询减少数据传输
  • 定期清理过期数据

AI 模型优化

  • 批量处理减少 API 调用
  • 实现智能重试机制
  • 优化提示词提高响应质量

监控和日志

监控指标

  • API 响应时间
  • 错误率
  • 新闻源更新频率
  • AI 模型调用次数

日志管理

  • 结构化日志记录
  • 错误日志告警
  • 性能日志分析

故障排除

常见问题

  1. 新闻源更新失败

    • 检查新闻源 URL 是否可访问
    • 验证 RSS 格式是否正确
    • 查看错误日志获取详细信息
  2. AI 模型调用失败

    • 检查 API 密钥是否正确
    • 验证请求格式是否符合要求
    • 查看配额是否已用尽
  3. 数据库连接问题

    • 检查数据库 URL 配置
    • 验证网络连接是否正常
    • 查看数据库状态

调试技巧

  1. 使用 Wrangler 本地调试
npx wrangler dev --local
  1. 查看详细日志
npx wrangler tail
  1. 使用 Cloudflare Dashboard 监控

贡献指南

我们欢迎社区贡献!请遵循以下步骤:

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 创建 Pull Request
  5. 等待代码审查

贡献类型

  • 修复 Bug
  • 添加新功能
  • 改进文档
  • 性能优化
  • 测试用例

许可证

本项目采用 MIT 许可证。详情请参考 LICENSE 文件。

联系方式

更新日志

v1.2.0 (2025-06-20)

  • 新增文章搜索功能
  • 改进新闻源管理界面
  • 优化 AI 模型调用性能
  • 修复已知 Bug

v1.1.0 (2025-06-15)

  • 新增 OpenGraph 图像生成
  • 改进报告生成流程
  • 优化数据库查询性能
  • 添加更多新闻源

v1.0.0 (2025-06-10)

  • 初始版本发布
  • 基本新闻聚合功能
  • AI 摘要生成
  • 管理界面

最后更新时间: 2025-06-20

About

Meridian cuts through news noise by scraping hundreds of sources, analyzing stories with AI, and delivering concise, personalized daily briefs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 62.5%
  • Vue 25.4%
  • Python 6.8%
  • CSS 3.8%
  • Dockerfile 1.3%
  • JavaScript 0.1%
  • Makefile 0.1%