GitHub Actions 部署
GitHub Actions 是 GitHub 提供的托管自动化服务。通过它,TrendRadar 可以在云端自动运行, 无需你自己的服务器。是否占用付费或套餐分钟数取决于仓库可见性与账号方案,本文会在创建仓库时说明取舍。
当前任务 · GitHub Actions
更换部署方式在自己的仓库中手动运行任务,并在已配置的渠道收到第一条推送。
获取项目代码
"Use this template" 与 "Fork" 的区别
GitHub 提供了两种复制他人项目的方式。对于 TrendRadar,你必须使用 "Use this template" 方式,不要使用 "Fork"。
| 对比项 | Use this template | Fork |
|---|---|---|
| 创建结果 | 一个全新的、独立的仓库 | 一个与原项目关联的副本 |
| 提交历史 | 不保留(干净的开始) | 完整保留原项目历史 |
| Actions 工作流 | 默认启用 | 默认禁用(安全限制) |
| 适用场景 | 自己使用,不需要向原项目贡献代码 | 想给原项目提交改进(Pull Request) |
| 推荐程度 | 推荐 | 不推荐(可能导致 Actions 不工作) |
使用 Fork 可能导致工作流无法运行
Fork 项目的 GitHub Actions 默认被禁用,即使手动开启也可能出现权限问题(参考 Issue #606)。如果你已经 Fork 了项目并遇到问题,建议删除 Fork 的仓库,改用 Use this template 重新创建。
操作步骤:
打开 TrendRadar GitHub 仓库页面
点击绿色的 "Use this template" 按钮
选择 "Create a new repository"
填写你的仓库名称(可以自定义,例如 my-trendradar)
选择仓库可见性
Public 仓库使用标准 runner 不计费,但仓库内容公开;Private 可保护你的配置文件,但会使用账号套餐包含的 Actions 分钟数。Secrets 在两种仓库中都会加密保存。
点击 "Create repository" 完成创建
配置 Secrets(推送密钥)
GitHub Secrets 是 GitHub 提供的安全存储机制,用于保存不能公开的敏感信息(如 API 密钥、Webhook 地址等)。 TrendRadar 通过读取 Secrets 来确定把消息推送到哪里。
添加 Secret 的步骤
进入仓库设置
在你的仓库页面,点击顶部的 "Settings" 标签页
找到 Secrets 菜单
在左侧栏中,展开 "Secrets and variables",点击 "Actions"
添加新 Secret
点击 "New repository secret" 按钮
填写名称和值
在 "Name" 栏填入 Secret 名称(必须与下表完全一致),在 "Secret" 栏填入对应的值
保存
点击 "Add secret" 按钮保存
关于 Secrets 的重要说明
- 一个 Name 对应一个 Secret:每个密钥需要单独添加。 例如 Telegram 需要添加两个 Secret(TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID), 你需要点击两次 "New repository secret",分别添加
- 保存后看不到值:Secret 保存后,GitHub 会隐藏它的内容, 你只能看到名称和最后更新时间。这是正常的安全行为,不是出了问题
- 名称必须精确匹配:Secret 的名称必须和下表中列出的 完全一致(包括大小写和下划线)。 不要自己发明名称,否则程序无法读取
- 可以配置多个渠道:你可以同时配置多个推送渠道, 程序运行时会向所有已配置的渠道发送消息
- 修改已有 Secret:点击 Secret 旁边的 "Update" 按钮, 输入新的值并保存即可
全部推送渠道 Secret 一览
不知道如何获取 Webhook、Token 或 Chat ID?先打开 推送渠道配置, 获取凭据后再回到本页添加对应 Secret。
GitHub Actions 的临时磁盘会在运行结束后销毁。基础推送可以不配远程存储;如需历史记录、增量检测等完整体验, 请按 存储配置 添加 4 个必需的 S3 凭据,不能只设置上表中的可选
S3_REGION。手动运行工作流
配置好 Secrets 后,你可以手动触发工作流来验证配置是否正确。
进入 Actions 页面
在你自己的仓库页面,点击顶部的 "Actions" 标签页。 请务必确认你在自己的仓库中,而不是在原始项目 (sansan0/TrendRadar) 中。
选择工作流
在左侧的工作流列表中,找到并点击 "Get Hot News"
触发运行
点击页面右侧的 "Run workflow" 按钮,在弹出的下拉框中再次点击绿色的 "Run workflow" 确认
等待结果
工作流通常需要 2-3 分钟完成。页面不会自动刷新,你可以手动刷新页面查看运行状态
查看运行日志
如果工作流运行失败或你想查看详细过程,可以通过以下方式查看日志:
点击运行记录
在 Actions 页面,点击你想查看的那次运行记录(显示了运行时间和状态)
查看 Job 列表
进入后你会看到一个或多个 Job(任务),点击你要查看的 Job
展开步骤
每个 Job 包含多个步骤,点击任一步骤可以展开查看该步骤的详细日志输出
用日志和实际消息共同验证
绿色对勾只表示工作流进程完成,不一定代表通知已经送达。请展开 Run crawler,确认抓取、存储与通知日志没有错误,并实际检查目标渠道是否收到消息。
项目的 7 天签到机制
这是使用 GitHub Actions 部署方式必须了解的机制。 如果不了解这一点,你的自动推送可能会在某天突然停止。
为什么项目坚持设置 7 天签到?
TrendRadar 的原则是:可以合理使用 GitHub Actions,但不能让已经无人使用的定时任务持续空转, 给 GitHub 服务器增加无谓负担。
GitHub Actions 提供的公共计算资源有限且宝贵。7 天签到不是 GitHub 的强制限制,也不是为了增加使用门槛, 而是一次轻量的「我仍在使用」确认:仍需服务的用户定期续期,不再需要的任务自动停下, 让资源留给真正活跃且需要的人。
如果 7 天都忘了签到,或许这些资讯暂时并非刚需;适时暂停,也能帮你从信息流中抽离,给大脑留出喘息空间。
如果你不想手动签到,可以改用 Docker;本地运行也不受该 7 天机制限制,但需要自行配置操作系统定时任务。
它与 GitHub 的平台规则有什么区别?
7 天是 TrendRadar 项目自己的规则:
Get Hot News 会检查自身最早的可见运行记录; 超过 7 天后,它会禁用 crawler.yml。这不是 GitHub 的 7 天限制。GitHub 另有平台规则:公共仓库如果连续 60 天没有仓库活动,定时工作流可能被自动禁用, 高负载时定时任务也可能延迟或被丢弃。详见 GitHub 官方 schedule 说明。
到期后会发生什么?
如果项目的 7 天周期已经过期:
- 自动推送会停止,你不会再收到任何消息
Get Hot News会被禁用,自动推送停止- 运行
Check In只会重置计时,不会自动重新启用爬虫 - 签到后还需要打开
Get Hot News,点击 Enable workflow
如何签到
进入你的仓库的 Actions 页面
在左侧工作流列表中,找到 "Check In"
点击 "Run workflow" 按钮
在弹出的下拉框中点击绿色的 "Run workflow" 确认
如果 Get Hot News 已被禁用,回到该工作流并点击 "Enable workflow"
签到会清理 Actions 运行历史
Check In 会删除当前签到记录之外的仓库 Actions 运行历史,以此让下一次 Get Hot News 重新开始 7 天计时。需要保留排错日志时,请在签到前先查看或保存。建议在周期到期前每周签到一次。
修改运行频率(Cron 定时)
什么是 Cron?
Cron 是一种用于设定「定时任务」的表达式。你可以把它理解为一个闹钟设置: 告诉系统「在什么时间自动执行任务」。在 TrendRadar 中,Cron 决定了多久自动抓取一次新闻。
Cron 表达式由 5 个数字/符号组成,用空格分隔,分别代表:
分钟 小时 日期 月份 星期
* * * * *
| | | | |
| | | | +-- 星期几 (0-6, 0=周日)
| | | +-------- 月份 (1-12)
| | +-------------- 日期 (1-31)
| +-------------------- 小时 (0-23)
+-------------------------- 分钟 (0-59)
* 表示"每个" */N 表示"每隔 N" N 表示"第 N"常用时间预设
时区注意
GitHub Actions 使用 UTC 时区(协调世界时),比北京时间(UTC+8)晚 8 小时。换算方法:北京时间 - 8 = UTC 时间。 例如:你想在北京时间 8:00 运行,需要设置为 UTC 0:00。下表已标注换算结果。
修改步骤
找到工作流文件
在你的仓库中,导航到文件
.github/workflows/crawler.yml进入编辑模式
点击文件内容右上角的铅笔图标(编辑按钮),或者点击 "Edit this file"
找到 cron 配置行
在文件中找到类似这样的内容:
on:
schedule:
- cron: '0 */2 * * *' # 找到这一行修改 cron 表达式
将引号内的表达式替换为你需要的时间设置(参考上面的预设表)
提交修改
滚动到页面底部,在 "Commit changes" 区域填写修改说明,然后点击 "Commit changes" 按钮
修改注意事项
- 不要修改 cron 行以外的内容,错误的修改可能导致整个工作流无法运行
- cron 表达式两侧的引号不要删除
- 设置过于频繁(例如每分钟一次)会快速消耗你的 GitHub Actions 免费额度
- GitHub Actions 的 cron 触发不是精确到秒的,实际运行时间可能有几分钟的延迟
启用 AI 分析(可选)
如果你希望每次推送的新闻附带 AI 生成的分析总结,只需额外添加两个 Secrets:
| Secret Name | 说明 |
|---|---|
AI_API_KEY | 你的 AI 服务 API 密钥(如 OpenAI、DeepSeek 等) |
AI_MODEL | AI 模型标识(格式:提供商/模型名称,如 deepseek/deepseek-v4-flash) |
添加方式与推送渠道 Secrets 完全相同。AI 功能是可选的,不影响基础的新闻推送。