Horizon 一个由AI驱动的个人新闻雷达
这份详细的部署教程将指引您安装和使用 Horizon——一个由AI驱动的个人新闻雷达。它能从您关注的源头(如Hacker News、Reddit、RSS等)抓取内容,通过AI进行评分、去重、丰富背景信息,并生成每日中英双语简报。
Horizon 的核心优势在于,它不仅聚合信息,还通过AI模拟了“人工编辑”的筛选过程,帮您从信息噪音中找出真正值得阅读的内容。
⚙️ 部署方式:本地安装与Docker
您可以根据自己的技术偏好选择以下任一方式部署 Horizon。
方式一:本地安装(推荐开发者)
此方式便于修改配置和进行二次开发。
前提条件:确保系统已安装 Python 3.10+ 和 uv(一个快速的Python包管理器)。安装uv:
pip install uv。克隆并安装:
1
2
3git clone https://github.com/Thysrael/Horizon.git
cd Horizon
uv sync可选依赖:如需使用OpenBB金融新闻源,请运行
uv sync --extra openbb。如果安装时遇到二进制包问题,可尝试uv pip install --only-binary=:all: openbb openbb-benzinga。
方式二:使用Docker部署(推荐生产环境)
Docker方式能提供一致的运行环境,易于管理。
克隆仓库:
1
2git clone https://github.com/Thysrael/Horizon.git
cd Horizon构建并运行:
1
2
3
4# 构建镜像(如需包含额外依赖,如EXTRAS=trafilatura,openbb)
docker compose build --build-arg EXTRAS=trafilatura horizon
# 运行容器
docker compose run --rm horizon [命令参数]
🚀 首次配置与运行
Horizon 提供了灵活的配置方式,推荐从交互式向导开始。
第一步:配置
- 交互式向导(最简方式):运行
uv run horizon-wizard,根据提示输入您感兴趣的主题(如“AI”、“区块链”),向导会自动生成data/config.json配置文件。 - 手动配置:
- 复制示例环境变量文件:
cp .env.example .env,然后在.env文件中填入您的 OpenAI、Gemini 等AI服务的 API密钥。 - 复制并编辑配置文件:
cp data/config.example.json data/config.json。您可以在此文件中定义数据源(RSS、Reddit子版块等)、AI模型、评分阈值和输出方式。详细的配置项可以参考项目的 配置指南。
- 复制示例环境变量文件:
第二步:运行
- 本地安装:在项目根目录下执行
uv run horizon。 - Docker:执行
docker compose run --rm horizon。 - 常用参数:
--hours 24:抓取过去24小时的内容(可调整)。-l INFO:设置日志级别为INFO,方便查看运行详情。
Horizon 运行后,会在 data/summaries/ 目录下生成Markdown格式的每日简报。
🔧 核心功能与自动化
- 数据源:Horizon 支持 Hacker News、RSS/Atom、Reddit、Telegram、Twitter/X、GitHub(动态和发布)、OpenBB(金融新闻)。您可以在
config.json中自由增删。 - AI处理流程:抓取 → 去重(跨平台合并相同故事)→ AI评分与过滤 → 丰富背景(解释术语、概念)→ 总结评论 → 生成双语简报。
- 输出与分发:除了本地保存,Horizon 还能:
- 发布为网站:通过 GitHub Actions 自动将简报推送到
docs/目录,配合 GitHub Pages 生成每日更新的静态网站(项目中提供了.github/workflows/daily-summary.yml示例工作流)。 - 邮件订阅:配置SMTP后,可向订阅者发送简报,并自动处理订阅/退订请求。
- 推送通知:支持将结果推送到 飞书/Lark、钉钉、Slack、Discord 或自定义Webhook。
- MCP服务器:可将Horizon的各个处理步骤暴露为MCP工具,供AI助手调用。
- 发布为网站:通过 GitHub Actions 自动将简报推送到
📊 配置要点提示
- 配置文件 (
config.json):ai:指定AI提供商(如openai,gemini)和模型,并通过api_key_env引用.env中的环境变量名。sources:定义您的信息源。每个源可以指定一个profile(处理档案)。processing:设置评分阈值 (threshold),只有高于此值的新闻才会进入简报。可以设置digest来限制简报总条目数和各分类的数量,避免单一话题霸榜。
- 环境变量 (
/data/.env):所有敏感信息(API密钥、邮件密码)都应放在此文件中,不要写入config.json。配置文件中通过${VAR_NAME}语法引用。
📚 进一步学习
- 完整配置参考:查看项目的 配置指南 了解所有选项。
- 处理档案:了解如何通过 Processing Profiles 自定义AI的评分和摘要风格。
- 贡献来源:如果您发现有价值的信息源,欢迎通过 horizon1123.top 分享给社区。
你想先用交互式向导快速体验,还是准备手动精细配置数据源?如果在配置特定来源(比如Twitter或OpenBB)时遇到问题,可以随时告诉我。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 极客的赛博空间 | 专注 AI 与技术分享!
评论



