使用Cloudflare Workers、Vectorize和Nostr的自托管AI新闻聚合器
摘要
一个自托管的AI新闻聚合器,使用Cloudflare Workers、Vectorize、D1和Nostr抓取Hacker News、Lobsters和Reddit等来源,生成AI嵌入向量,并根据点赞历史提供个性化信息流。
查看缓存全文
缓存时间: 2026/07/03 16:25
delirehberi/news
来源:https://github.com/delirehberi/news
AI 策展新闻
一个完全自主运行、自托管的 AI 新闻聚合器,由 Cloudflare Workers、Vectorize、D1 和 Nostr 驱动。
该项目持续抓取你喜爱的信息源(Hacker News、Lobsters 和 Reddit),使用 Cloudflare Workers AI(@cf/baai/bge-base-en-v1.5)为每篇文章生成 AI 嵌入,并将它们与你个人的点赞历史进行比对,从而创建一份超个性化、专属于你的新闻源。
功能特性
- AI 向量搜索:利用语义搜索(余弦相似度)查找与你过往点赞内容相匹配的文章。
- Nostr 集成:通过 NIP-07(Nostr 浏览器扩展)验证你的点赞行为以训练 AI,并允许关注者轻松地将你的策展源重新发布到全球 Nostr 中继。
- 多源抓取:通过定时 Cron 任务自动从 HackerNews、Lobsters 和 Reddit 拉取内容。
- 隐私至上:完全自托管于 Cloudflare。你拥有数据库、向量索引和 AI 执行权。
- 现代 UI:基于 Vite、Tailwind CSS v4 和 Vanilla JS 构建的玻璃拟态前端。内置交错流、图片预览和关注者计数功能。
架构
- 前端:Vite + Tailwind CSS(
frontend/目录)。 - 后端 API:Cloudflare Workers 上的 Hono(
worker/目录)。 - 数据库:Cloudflare D1(SQL)。
- 向量数据库:Cloudflare Vectorize(元数据 + 768 维嵌入)。
- AI 模型:
@cf/baai/bge-base-en-v1.5用于文本嵌入。
安装与部署
前提条件
- Node.js(v22+)
- Cloudflare 账户(
npx wrangler login) - Nostr 扩展(如 Alby 或 nos2x)——如需使用 NIP-07 功能。
1. 初始化项目
首次克隆仓库后,运行初始化脚本:
bash make init
这将自动安装依赖项、复制配置模板(.env 和 wrangler.jsonc),并在终端打印部署检查清单。
2. 配置基础设施
在 Cloudflare 上创建 D1 数据库和 Vectorize 索引:
bash make db-init make vectorize-init
更新 worker/wrangler.jsonc(在 make init 时创建),填入新的 database_id 和 Vectorize index_name。
你还可以在 vars 块中启用或禁用特定信息源(例如 "ENABLE_REDDIT": "false")。
3. 配置密钥
应用需要 Reddit OAuth 凭据和一个用于身份识别的 Nostr 公钥。
将它们导出到环境变量(或使用 .envrc 文件),并自动推送到 Cloudflare:
``bash
export REDDIT_CLIENT_ID=“your_client_id”
export REDDIT_CLIENT_SECRET=“your_client_secret”
export REDDIT_REFRESH_TOKEN=“your_refresh_token”
export GMAIL_CLIENT_ID=“your_client_id”
export GMAIL_CLIENT_SECRET=“your_client_secret”
export GMAIL_REFRESH_TOKEN=“your_refresh_token”
export AUTHORIZED_NOSTR_PUBKEY=“your_nostr_pubkey_in_hex”
make push-secrets
``
make push-secrets 命令会安全地将本地环境变量直接传入 Cloudflare 的密钥存储,无需手动交互。
4. 配置前端
更新 frontend/.env(在 make init 时创建),填入所需 API URL、自定义副标题和主题偏好。
5. 初始化数据库
将 SQL 模式应用到远程 D1 实例,以创建数据表:
bash make db-apply-remote
6. 部署全栈
一次性将 Hono 后端 API 和 Vite 前端部署到 Cloudflare:
bash make deploy
此命令顺序执行 make deploy-worker 和 make deploy-frontend。它会自动构建 Vite 应用并部署到 Cloudflare Pages,同时将后端部署到 Cloudflare Workers。
引导你的 AI 模型
为了让 AI 了解你的喜好,需要历史数据。你可以使用提供的端点从 Lobsters、Reddit 或 HackerNews 的原始 JSON 导出中导入已有的点赞记录。一旦引导配置文件导入完成,每日 Cron 任务将处理其余工作!
许可证
MIT 许可证。欢迎 fork、修改并部署你自己的个性化新闻 AI。
相似文章
一个AI新闻、博客、论文、仓库、工具和事件的聚合信息流——我建了它,现在却在思考学习是否才是更大的问题
AgenticBrew 是一个新的AI新闻聚合器,从数百个来源抓取信息并将相关故事聚类。现在,其创建者正在探索个性化学习路径功能,根据用户角色和AI认知水平帮助提升技能,并寻求社区意见。
@tom_doerr: 从 Hacker News、Reddit 和 RSS 生成每日 AI 简报 https://github.com/Thysrael/Horizon…
Horizon 是一款开源工具,通过聚合和总结来自 Hacker News、Reddit、RSS 等来源的新闻,并利用 Claude、GPT 等 AI 模型生成每日 AI 简报。
无AI的Hacker News
据报道,Hacker News 正在从其平台上移除或过滤与人工智能相关的内容。
构建了一个AI原生社交信息流,让智能体可以真正发布它们的内容 vynly.co
独立开发者单人推出了vynly.co,这是一个AI原生社交信息流,专为AI智能体设计,使其能够自主发布AI生成的艺术作品和视频,内建溯源机制(C2PA/SynthID)并具备Sparks等功能。支持Midjourney、Flux、Sora、Runway等模型。
Ask HN: 为AI生成的文章添加标记
Hacker News 版主 Dang 讨论社区对AI生成文章的态度,并考虑添加一种标记选项来标识此类内容,反映了AI与人类读者之间不断演变的军备竞赛。