一、介绍

Horizon是一个新兴的开源项目,它可以为你整理你指定的信息源的新闻并予以评分,放在markdown文件里作为一个报告,与trendrader类似,但不同的是Horizon专注于你个人想要的新闻而不是大众化的新闻(作者自己说的),所以很适合一些想要在专门几个信息源进行总结的人。不过它的缺点在于还没办法直接暴露为静态网页,只是生成了markdown文件。不过还是值得一试的。

二、整体思路

目标:在云服务器上用 uv 本地安装 Horizon,配置好信息源和 AI 模型,让 uv run horizon 可以定时/按需运行,生成日报到 data/summaries/
核心步骤:

  1. 服务器准备 & 环境依赖(Python、git)
  2. 安装 uv(官方推荐方式)
  3. 克隆 Horizon 代码并用 uv sync 安装依赖
  4. 配置 .env(AI API Key 等)和 data/config.json(信息源与评分)
  5. 用交互式向导 horizon-wizard 或手动方式完成配置
  6. 测试运行 uv run horizon
  7. 用 systemd / cron 设置定时任务(可选但推荐)

三、服务器准备

1. 云服务器

我依旧是使用了雨云这个小厂的云服务器,当然你手里如果有别的比如阿里云之类的也可以。我的配置是香港四区1H1G。
官网链接

2. 基础软件

接下来用ssh软件登录服务器。我用的是MobaXterm。注意输入密码的时候不会显示。ssh
然后执行以下命令:

sudo apt update
sudo apt install -y git curl python3 python3-venv

Horizon 依赖 Python 3.8+,uv 会自动下载合适的 Python 版本,但先有系统 Python 可以更方便调试。安装好后就这样。在这里插入图片描述


四、安装 uv(推荐方式)

uv 是官方推荐的 Python 包管理器,比 pip 快很多,Horizon 的 Quick Start 也推荐用它。

# 官方独立安装脚本(推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 重新加载 shell,使 uv 生效
source ~/.bashrc    # 或 ~/.zshrc,看你用的 shell

验证:

uv --version

这样ok
这样就OK了


五、克隆 Horizon 并安装依赖

1. 拉取代码

cd ~
git clone https://github.com/Thysrael/Horizon.git
cd Horizon

如上

2. 使用 uv 创建虚拟环境并安装依赖

按照官方给的 README 的「方式 A:本地安装」:

# 推荐方式:uv sync(自动创建 .venv 并安装所有依赖)
uv sync
# 如果你需要开发/测试依赖(如 pytest)
uv sync --extra dev
# 如果你启用 OpenBB 金融新闻源(可选)
uv sync --extra openbb

如果 OpenBB 在某些云平台依赖缺少 wheel,可按文档用:
uv pip install --only-binary=:all: openbb openbb-benzinga


然后终端会巴拉巴拉输出一大堆进度条,跑完就好了如上

六、配置 Horizon

1. 配置环境变量 .env

Horizon 用 .env 存放 API Key 等敏感信息,模板在 .env.example

cp .env.example .env
vi .env   # 或你喜欢的编辑器

重点配置(按你实际使用的模型至少填一个):

# AI API Keys(至少配一个)
ANTHROPIC_API_KEY=sk-ant-xxx
OPENAI_API_KEY=sk-xxx
DEEPSEEK_API_KEY=xxx
DOUBAO_API_KEY=xxx
MINIMAX_API_KEY=xxx
DASHSCOPE_API_KEY=xxx
GOOGLE_API_KEY=xxx
# WebHook 通知(可选)
HORIZON_WEBHOOK_URL=https://xxx
# GitHub Token(可选但推荐,提高 GitHub API 速率限制)
GITHUB_TOKEN=ghp_xxx
# Apify Token(如果需要抓 Twitter/X)
APIFY_TOKEN=apify_api_xxx

顺便提一嘴,vim用i键进入插入模式,这个时候复制就ok了
然后复制后按一下esc,再输入":wq"就可以保存并退出。
DS
我这里用deepseek的api,在ds开放平台上申请完apikey直接复制过来即可。

2. 配置信息源和 AI 评分:data/config.json

Horizon 的信息源、AI 模型、评分阈值等都在 data/config.json 里配置。Quick Start 和 README 都提供了示例。
先创建配置文件:

mkdir -p data
cp data/config.example.json data/config.json
vi data/config.json 
#同上使用vim配置你的ai大模型

我的DeepSeek配置示例(来自 README_zh):

{
  "ai": {
    "provider": "deepseek",
    "model": "deepaeek-v4-flash",
    "api_key_env": "DEEPSEEK_API_KEY"
  },
# 后面一些不展示了
方式 A:交互式向导(推荐)

Horizon 提供了 horizon-wizard,通过问答帮你生成 data/config.json

uv run horizon-wizard

前面是填AI提供商,直接填ds,然后是模型名称baseurl之类,按照你的情况填写就好。然后可以填写你的兴趣,这里我以LLM和开源工具为例,他会自动搜集信息源,你可以自己挑选,我这里就press enter直接全部通过。
依照以上填就号

向导
如上

向导会问你的兴趣方向(如 LLM 推理、嵌入式、Web 安全等),自动推荐并生成配置,还可以让 AI 补充小众信息源。

方式 B:手动配置

如果你更想自己掌控,可以:

  1. 参照 data/config.example.json 手动编辑 data/config.json
  2. 在 Horizon 官网浏览和选择信息源,然后导出为配置文件,再合并到你的 data/config.json
    • 访问官网 Sources 页面
    • 用过滤器找到你感兴趣的信息源
    • 点击 Export 生成配置片段
    • 把它复制到你的 data/config.jsonsources 字段中

导出的配置只包含信息源,不包含 AI 模型相关设置,你需要参照示例文件自己补齐 aifiltering 部分。

关键字段说明(简要)
  • ai.provider:模型提供商,如 openaianthropicdeepseekdoubaominimax 等。
  • ai.model:具体模型,如 gpt-4deepseek-chat 等。
  • ai.api_key_env:对应 .env 中的环境变量名。
  • ai.languages:输出语言,如 ["en", "zh"] 支持中英双语日报。
  • sources:各类信息源配置(RSS、HN、Reddit、Telegram、X、GitHub、OpenBB 等)。
  • filtering.ai_score_threshold:AI 评分阈值,低于此分数的内容会被过滤(0–10 分)。

七、运行 Horizon(测试)

1. 单次运行

在 Horizon 仓库根目录执行:

# 默认抓取最近 24 小时内容
uv run horizon
# 或自定义时间窗口,例如 48 小时
uv run horizon --hours 48

运行
可能会有一些报错,是因为有些信息源需要api key,而我没有配置。
运行结束后,日报会保存在:

data/summaries/

你可以用 catless 查看生成的 Markdown 文件。
这样就ok
我的示例
上面这个就是最终的效果,还不错吧?用了十几万token,只花了0.19rmb。一个月算下来token费用只有3元。

八、在云服务器上定时运行(推荐)

Horizon 很适合作为「定时任务」,每天自动生成日报。官方也推荐用 GitHub Actions,但云服务器上一般用 cron 或 systemd timer 更方便。
下面给一种用systemd的方案。

使用 systemd

  1. 创建服务单元:
sudo vi /etc/systemd/system/horizon.service

示例内容(请按实际路径修改 UserWorkingDirectoryExecStart):

[Unit]
Description=Horizon AI News Radar
After=network.target
[Service]
Type=oneshot
User=你的服务器用户名
WorkingDirectory=/home/你的用户名/Horizon
ExecStart=/home/你的用户名/.local/bin/uv run horizon --hours 24
# 可选:日志输出到 journalctl
StandardOutput=journal
StandardError=journal
  1. 创建定时器单元:
sudo nano /etc/systemd/system/horizon.timer

示例(每天 03:00 运行):

[Unit]
Description=Daily Horizon run
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
RandomizedDelaySec=10m
[Install]
WantedBy=timers.target
  1. 启用并启动定时器:
sudo systemctl daemon-reload
sudo systemctl enable --now horizon.timer
  1. 查看定时器状态和日志:
systemctl list-timers --all | grep horizon
journalctl -u horizon.service --since "today"

systemd timer 比 cron 更灵活,支持随机延迟、失败重试、日志集中查看等。


九、日报的访问与分发(可选)

根据 README,Horizon 支持多种输分发方式:

  • 本地 Markdown 文件:data/summaries/
  • GitHub Pages 静态日报站点(可配合 GitHub Actions)
  • 邮件推送(自托管 SMTP/IMAP)
  • Webhook / 飞书 / 钉钉 / Slack / Discord 等

默认是不会推送到哪的,只能看md文件。我的建议是直接用邮箱,可以直接发到的。


好了,部署教程就到这结束了。总体而言,这个项目还是挺值得一试的,特别是这个新闻评分我觉得挺有创新。大家都可以去试试。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐