这份详细的部署教程将指引您安装和使用 Horizon——一个由AI驱动的个人新闻雷达。它能从您关注的源头(如Hacker News、Reddit、RSS等)抓取内容,通过AI进行评分、去重、丰富背景信息,并生成每日中英双语简报。

Horizon 的核心优势在于,它不仅聚合信息,还通过AI模拟了“人工编辑”的筛选过程,帮您从信息噪音中找出真正值得阅读的内容。

⚙️ 部署方式:本地安装与Docker

您可以根据自己的技术偏好选择以下任一方式部署 Horizon。

方式一:本地安装(推荐开发者)

此方式便于修改配置和进行二次开发。

  1. 前提条件:确保系统已安装 Python 3.10+uv(一个快速的Python包管理器)。安装uv:pip install uv

  2. 克隆并安装

    1
    2
    3
    git 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. 克隆仓库

    1
    2
    git clone https://github.com/Thysrael/Horizon.git
    cd Horizon
  2. 构建并运行

    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 配置文件。
  • 手动配置
    1. 复制示例环境变量文件:cp .env.example .env,然后在 .env 文件中填入您的 OpenAI、Gemini 等AI服务的 API密钥
    2. 复制并编辑配置文件: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助手调用。

📊 配置要点提示

  • 配置文件 (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)时遇到问题,可以随时告诉我。