免费搭一个 AI 新闻雷达:Horizon 开源项目部署实战
免费搭一个 AI 新闻雷达:Horizon 开源项目部署实战
每天打开 Hacker News、Reddit、Twitter,刷了半小时感觉看了很多,又好像什么都没看。AI 资讯更是如此——每天都有新模型、新工具、新论文,手动筛选效率极低。
最近发现一个 3100+ Star 的开源项目 Horizon,定位是"AI 驱动的个人新闻雷达"。不是简单汇总,而是帮你抓取、去重、AI 打分、补充背景,最后输出结构化日报。
最关键的是:可以完全免费跑在 GitHub Actions 上,不需要服务器,不需要数据库。我花了一个下午把它跑通了,下面把完整方案分享出来。
本文提纲
- Horizon 到底能干什么
- 免费部署方案总览
- Fork + 配置三步走
- AI Provider 选择:如何白嫖大模型
- 信息源配置:怎么抓外网内容
- GitHub Actions 自动化:每天自动跑
- 输出渠道:日报去哪了
- 我的实测配置和踩坑
Horizon 到底能干什么
一句话:多源采集 → AI 打分过滤 → 背景补充 → 结构化日报。
它支持的信息源:
| 信息源 | 抓什么 | 要不要 Key |
|---|---|---|
| Hacker News | 热门帖子 + 评论 | ❌ 免费 |
| RSS / Atom | 任意 Feed | ❌ 免费 |
| Subreddit 帖子 + 评论 | ❌ 免费 | |
| GitHub | 用户动态、Repo Release | 有 Token 更好 |
| Telegram | 公开频道消息 | 需配置 |
| Twitter / X | 用户推文 + 回复 | 需要 Apify(有免费额度) |
核心流程是这样的:
配置信息源 → 并发抓取 → 去重合并 → AI 打分筛选 → 背景补充 → 生成 Markdown 日报日报会按 0-10 分打分,只保留你设置阈值以上的内容。每条新闻还会附带背景说明和社区评论摘要。
免费部署方案总览
Horizon 有两种跑法:
- 本地 / Docker:需要一台服务器(不免费)
- GitHub Actions:零成本,每天定时跑,结果推到 GitHub Pages 或 Webhook
我们选第二种。整体架构:
GitHub Actions (免费 runner)
↓ 定时触发
Horizon 抓取 + AI 处理
↓ 生成日报
GitHub Pages / 飞书 / 邮件 / Webhook唯一可能产生费用的地方是 AI API 调用。但后面会说怎么用免费额度搞定。
Fork + 配置三步走
Step 1:Fork 仓库
# 浏览器打开,点 Fork
https://github.com/Thysrael/HorizonFork 到你自己的 GitHub 账号下。
Step 2:配置 Secrets
在你 Fork 的仓库 → Settings → Secrets and variables → Actions,添加以下 Secrets:
| Secret 名 | 用途 | 必填 |
|---|---|---|
OPENAI_API_KEY |
OpenAI / 兼容 API 的 Key | 看你选的 Provider |
ANTHROPIC_API_KEY |
Claude API Key | 看你选的 Provider |
GITHUB_TOKEN |
GitHub API(提高速率限制) | 推荐 |
HORIZON_WEBHOOK_URL |
Webhook 推送地址 | 可选 |
Step 3:修改配置文件
在仓库根目录创建 .env(实际上 GitHub Actions 用的是 Secrets,.env 只是本地用的):
# .env(本地运行用)
OPENAI_API_KEY=sk-xxx
GITHUB_TOKEN=ghp_xxx然后修改 data/config.json——这是 Horizon 的核心配置文件。
AI Provider 选择:如何白嫖大模型
Horizon 支持 7 种 AI Provider。对免费部署来说,推荐这几个:
方案一:Google Gemini(推荐,有免费额度)
{
"ai": {
"provider": "gemini",
"model": "gemini-2.0-flash",
"api_key_env": "GOOGLE_API_KEY",
"throttle_sec": 0
}
}Google AI Studio 注册就送免费额度,Gemini 2.0 Flash 速度快、质量够用,每天几十条新闻打分绰绰有余。
方案二:阿里 DashScope(国内首选)
{
"ai": {
"provider": "ali",
"model": "qwen-plus",
"api_key_env": "DASHSCOPE_API_KEY",
"throttle_sec": 0
}
}DashScope 新用户有免费额度,qwen-plus 质量不错,而且走国内网络,GitHub Actions 访问也稳定。最重要的是它走 OpenAI 兼容接口,不用额外适配。
方案三:DeepSeek(走 OpenAI 兼容)
Horizon 没有原生 DeepSeek provider,但 DeepSeek 的 API 完全兼容 OpenAI 格式。可以这样配:
{
"ai": {
"provider": "openai",
"model": "deepseek-chat",
"base_url": "https://api.deepseek.com/v1",
"api_key_env": "OPENAI_API_KEY",
"throttle_sec": 0
}
}DeepSeek 注册送 500 万 Token,够用很久。
方案四:MiniMax(也有免费额度)
{
"ai": {
"provider": "minimax",
"model": "MiniMax-M2.7",
"api_key_env": "MINIMAX_API_KEY",
"throttle_sec": 4.5
}
}MiniMax-M2.7 效果不错,免费额度也够。注意 throttle_sec 建议设 4.5,防止触发限速。
信息源配置:怎么抓外网内容
这部分是 Horizon 最核心的价值。一个推荐的 AI 资讯配置:
{
"sources": {
"hackernews": {
"enabled": true,
"fetch_top_stories": 30,
"min_score": 100
},
"reddit": {
"enabled": true,
"subreddits": [
{
"subreddit": "MachineLearning",
"sort": "hot",
"fetch_limit": 15,
"min_score": 50
},
{
"subreddit": "LocalLLaMA",
"sort": "hot",
"fetch_limit": 15,
"min_score": 30
},
{
"subreddit": "artificial",
"sort": "hot",
"fetch_limit": 10,
"min_score": 50
}
],
"fetch_comments": 5
},
"rss": [
{
"name": "Simon Willison",
"url": "https://simonwillison.net/atom/everything/",
"enabled": true,
"category": "ai-tools"
},
{
"name": "OpenAI Blog",
"url": "https://openai.com/blog/rss.xml",
"enabled": true,
"category": "ai-official"
},
{
"name": "Anthropic Blog",
"url": "https://www.anthropic.com/feed.xml",
"enabled": true,
"category": "ai-official"
}
],
"github": [
{
"type": "repo_releases",
"owner": "openai",
"repo": "whisper",
"enabled": true
},
{
"type": "repo_releases",
"owner": "anthropics",
"repo": "claude-code",
"enabled": true
}
]
}
}关于外网访问:GitHub Actions 的 runner 在海外,所以 Hacker News、Reddit、RSS 等外网源完全不受墙的影响,直接就能抓。这比自己在国内服务器上折腾代理省事太多。
GitHub Actions 自动化:每天自动跑
Fork 的仓库里已经有现成的 workflow 文件 .github/workflows/daily-summary.yml。稍微改一下:
name: Daily Horizon Summary
on:
schedule:
- cron: '0 2 * * *' # 每天北京时间 10:00 跑
workflow_dispatch: # 也支持手动触发
jobs:
daily-summary:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install dependencies
run: uv sync
- name: Run Horizon
env:
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: uv run horizon --hours 24
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
keep_files: true
commit_message: "Daily Summary: $(date +'%Y-%m-%d')"
publish_branch: gh-pages
enable_jekyll: true然后去仓库的 Settings → Pages,把 Source 设为 gh-pages 分支。每次跑完,日报就会自动发布到:
https://你的用户名.github.io/Horizon/完全免费。GitHub Actions 每月 2000 分钟免费额度,这个任务一次跑 5-10 分钟,一个月 30 次也就用 150-300 分钟。
输出渠道:日报去哪了
Horizon 支持 4 种输出方式,可以同时开:
| 渠道 | 说明 | 免费 |
|---|---|---|
| GitHub Pages | 自动发布静态网站 | ✅ |
| 飞书 / 钉钉 Webhook | 推送到群聊 | ✅ |
| 邮件 | SMTP 发送日报 | 看邮箱服务 |
| MCP Server | 给 AI Agent 用 | ✅ |
我目前用的是 GitHub Pages + 飞书 Webhook。飞书配置很简单:
{
"webhook": {
"enabled": true,
"url_env": "HORIZON_WEBHOOK_URL",
"delivery": "summary",
"platform": "feishu",
"layout": "collapsible",
"languages": ["zh"]
}
}在飞书群里创建一个自定义机器人,把 Webhook URL 存到 GitHub Secrets 的 HORIZON_WEBHOOK_URL 里就行。每天早上群里自动弹出一条可折叠的日报卡片。
我的实测配置和踩坑
完整 config.json(AI 资讯专用)
{
"version": "1.0",
"ai": {
"provider": "gemini",
"model": "gemini-2.0-flash",
"api_key_env": "GOOGLE_API_KEY",
"temperature": 0.3,
"max_tokens": 4096,
"throttle_sec": 0,
"languages": ["en", "zh"]
},
"sources": {
"hackernews": {
"enabled": true,
"fetch_top_stories": 30,
"min_score": 100
},
"reddit": {
"enabled": true,
"subreddits": [
{ "subreddit": "MachineLearning", "sort": "hot", "fetch_limit": 15, "min_score": 50 },
{ "subreddit": "LocalLLaMA", "sort": "hot", "fetch_limit": 15, "min_score": 30 }
],
"fetch_comments": 5
},
"rss": [
{ "name": "Simon Willison", "url": "https://simonwillison.net/atom/everything/", "enabled": true },
{ "name": "OpenAI Blog", "url": "https://openai.com/blog/rss.xml", "enabled": true }
],
"github": [
{ "type": "repo_releases", "owner": "openai", "repo": "whisper", "enabled": true }
]
},
"filtering": {
"ai_score_threshold": 6.0,
"time_window_hours": 24
},
"webhook": {
"enabled": false,
"url_env": "HORIZON_WEBHOOK_URL",
"platform": "generic",
"layout": "markdown"
}
}踩坑记录
1. GitHub Token 很重要
不加 Token 的话,GitHub API 每小时只有 60 次请求。加上 Token 后变成 5000 次。在 Secrets 里加一个 Personal Access Token 就行。
2. AI 额度控制
每天 30-50 条新闻,每条需要打分 + 摘要,大概消耗 50-100K Token。Gemini Flash 的免费额度完全够。如果用 GPT-4 就要注意额度了。
3. 首次运行建议手动触发
先别开定时任务,手动 workflow_dispatch 跑一次看看效果。确认日报格式没问题、AI 打分合理,再开 cron。
4. 双语生成
"languages": ["en", "zh"] 会同时生成中英文两版日报。如果只看中文,设 ["zh"] 就行,省一半 Token。
5. Reddit 在 GitHub Actions 上没问题
Reddit 的公开 API 不需要认证,GitHub Actions runner 在海外直接访问无障碍。不像在国内还需要搞代理。
Horizon 解决的核心问题是:让信息来找你,而不是你去找信息。GitHub Actions 免费帮你跑,AI 帮你筛,每天早上打开飞书或者 GitHub Pages 看一眼就行了。
项目地址:github.com/Thysrael/Horizon,在线 Demo:thysrael.github.io/Horizon
作者: itech001
来源: 公众号:AI人工智能时代
主页: https://www.theaiera.cn(每日分享最前沿的AI新闻和技术)
本文首发于 AI人工智能时代,转载请注明出处。