Back to Blog

免费搭一个 AI 新闻雷达:Horizon 开源项目部署实战

2026-05-09T12:30:00+08:00
Horizon AI 新闻 开源项目 GitHub Actions 免费部署 RSS 信息过滤

免费搭一个 AI 新闻雷达:Horizon 开源项目部署实战

每天打开 Hacker News、Reddit、Twitter,刷了半小时感觉看了很多,又好像什么都没看。AI 资讯更是如此——每天都有新模型、新工具、新论文,手动筛选效率极低。

最近发现一个 3100+ Star 的开源项目 Horizon,定位是"AI 驱动的个人新闻雷达"。不是简单汇总,而是帮你抓取、去重、AI 打分、补充背景,最后输出结构化日报。

最关键的是:可以完全免费跑在 GitHub Actions 上,不需要服务器,不需要数据库。我花了一个下午把它跑通了,下面把完整方案分享出来。

本文提纲

  1. Horizon 到底能干什么
  2. 免费部署方案总览
  3. Fork + 配置三步走
  4. AI Provider 选择:如何白嫖大模型
  5. 信息源配置:怎么抓外网内容
  6. GitHub Actions 自动化:每天自动跑
  7. 输出渠道:日报去哪了
  8. 我的实测配置和踩坑

Horizon 到底能干什么

一句话:多源采集 → AI 打分过滤 → 背景补充 → 结构化日报

它支持的信息源:

信息源 抓什么 要不要 Key
Hacker News 热门帖子 + 评论 ❌ 免费
RSS / Atom 任意 Feed ❌ 免费
Reddit Subreddit 帖子 + 评论 ❌ 免费
GitHub 用户动态、Repo Release 有 Token 更好
Telegram 公开频道消息 需配置
Twitter / X 用户推文 + 回复 需要 Apify(有免费额度)

核心流程是这样的:

配置信息源 → 并发抓取 → 去重合并 → AI 打分筛选 → 背景补充 → 生成 Markdown 日报

日报会按 0-10 分打分,只保留你设置阈值以上的内容。每条新闻还会附带背景说明和社区评论摘要。

免费部署方案总览

Horizon 有两种跑法:

  1. 本地 / Docker:需要一台服务器(不免费)
  2. GitHub Actions:零成本,每天定时跑,结果推到 GitHub Pages 或 Webhook

我们选第二种。整体架构:

GitHub Actions (免费 runner)
    ↓ 定时触发
Horizon 抓取 + AI 处理
    ↓ 生成日报
GitHub Pages / 飞书 / 邮件 / Webhook

唯一可能产生费用的地方是 AI API 调用。但后面会说怎么用免费额度搞定。

Fork + 配置三步走

Step 1:Fork 仓库

# 浏览器打开,点 Fork
https://github.com/Thysrael/Horizon

Fork 到你自己的 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人工智能时代,转载请注明出处。

Enjoyed this article? Share it with others!