NetPulse: 事件视界 是一款基于搜索增强生成的智能互联网事件分析器。它能将零散的网络信息转化为结构化的深度洞察,为重大的科技与互联网事件提供实时摘要、核心影响分析以及历史镜像对比。

架构升级: 本项目现已采用基于 Cloudflare Workers 的 BFF (Backend-for-Frontend) 架构。所有的 API 调用(Tavily 搜索和 Gemini 分析)均在服务端安全执行,彻底杜绝了 API Key 在前端泄露的风险。
/api/analyze) 通信。| 层级 | 技术 |
|---|---|
| 前端 | React 19, TypeScript, Vite, i18next |
| 后端 | Cloudflare Workers (JavaScript) |
| 样式 | Tailwind CSS, Lucide React (图标) |
| AI 模型 | Google Gemini 3.0 Pro / Gemini 3.0 Flash |
| 搜索引擎 | Tavily AI Search API |
| 存储 | Cloudflare KV (用于分享链接) |
NetPulse/
├── App.tsx # 主应用组件
├── i18n.ts # i18next 配置
├── locales/
│ ├── zh/translation.json # 中文翻译
│ └── en/translation.json # 英文翻译
├── components/
│ ├── Header.tsx # 头部(含语言切换器)
│ ├── SearchBar.tsx # 搜索界面(含热门话题)
│ ├── ResultView.tsx # 分析结果展示
│ ├── ShareButton.tsx # 分享按钮组件
│ ├── ShareModal.tsx # 分享配置弹窗
│ ├── SharedView.tsx # 分享视图页面
│ ├── SettingsPanel.tsx # 自定义 API Key 设置面板
│ ├── LanguageSwitcher.tsx# 响应式语言切换组件
│ ├── PrivacyPolicy.tsx # 隐私政策页面
│ └── TermsOfService.tsx # 使用条款页面
├── utils/
│ ├── shareUtils.ts # 分享链接编解码工具
│ └── apiConfigStore.ts # API 配置存储
├── services/
│ ├── geminiService.ts # API 服务层
│ └── directApiService.ts # 自定义 Key 直接调用服务
├── types/
│ └── apiConfig.ts # API 配置类型定义
└── backend/
└── worker-i18n-v2.js # Cloudflare Worker 后端(最新版)
克隆项目
bash
git clone https://github.com/EmmaStoneX/NetPulse.git
cd NetPulse
安装依赖
bash
npm install
# 或者
bun install
本地开发
bash
npm run dev
本项目采用 Cloudflare Workers with Static Assets 统一部署方案,前后端一起部署。
main 分支即可触发自动构建和部署npm run build) 并与 Worker 后端一起部署在 Cloudflare Worker 设置中添加以下密钥(设置 → 变量和机密):
- GEMINI_API_KEY: 你的 Gemini 或 OpenAI 中转 API Key
- GEMINI_PROXY_URL: Gemini API 代理地址(可选,默认使用 Google 官方端点)
- 如果使用中转服务,填写中转站地址,如 https://api.example.com
- 留空则使用 Google 官方端点 https://generativelanguage.googleapis.com
- TAVILY_API_KEY_1: 你的第一个 Tavily API Key
- TAVILY_API_KEY_2: 你的第二个 Tavily API Key(可选)
- TAVILY_API_KEY_3: 你的第三个 Tavily API Key(可选)
- ... 最多支持到 TAVILY_API_KEY_10
多 Key 轮询:NetPulse 支持配置最多 10 个 Tavily API Key,自动进行 Round-Robin 负载均衡。这有助于分散 API 调用量,避免单个 Key 触发速率限制。如果你只有一个 Key,配置
TAVILY_API_KEY_1即可。
SHARE_DATA 的 KV 命名空间(存储和数据库 → KV)wrangler.json 中设置好,只需将 id 更新为你的 KV 命名空间 ID| 接口 | 方法 | 描述 |
|---|---|---|
/api/analyze |
POST | 基于搜索增强分析查询 |
/api/trending |
GET | 获取热门话题(支持 ?lang=zh 或 ?lang=en) |
/api/share |
POST | 创建分享链接(数据存储到 KV) |
/api/share/:id |
GET | 根据 ID 获取分享的分析数据 |
$ claude mcp add NetPulse \
-- python -m otcore.mcp_server <graph>