GitHub 外部触发器
GitHub 官方和社区一致建议:不要把关键/定时任务完全依赖内置 cron,改用外部触发器 + workflow_dispatch。
cron-job.org 是目前最简单、免费、可靠的外部触发 GitHub Actions workflow_dispatch 的方式之一(无需服务器、无需信用卡)。它确实需要注册一个免费账号(邮箱注册,很简单),服务完全免费,由捐赠维持,执行上限是每小时最多60次(够你一天两次用)。
下面是2026年当前最实操的完整步骤(基于官网和社区实际使用经验):
步骤 1: 先在 GitHub 准备好 PAT(Personal Access Token)
cron-job.org 要发 POST 请求触发你的 workflow,必须带上 GitHub 的认证 token。
去 GitHub → Settings(右上角头像) → Developer settings → Personal access tokens → Tokens (classic)
点击 Generate new token (classic)
勾选权限:repo(全选) + workflow(必须,用于 dispatch)
Expiration 选 "No expiration" 或长一点(比如1年)
生成后复制 token(只显示一次!),记下来叫它 ghp_你的token字符串
安全保存,别泄露
步骤 2: 确认你的 workflow 支持 workflow_dispatch
你的 YAML 必须有这个(你之前已经有了):
YAMLon:
schedule:
- cron: '0 1 * * *'
- cron: '0 10 * * *'workflow_dispatch: # ← 必须保留这个
可选:如果你想区分外部触发和手动触发,可以加 event_type(但不必须):YAMLon:
workflow_dispatch:
# inputs: ... (如果有输入参数的话)
步骤 3: 注册并创建 cron job(在 cron-job.org)
打开 https://cron-job.org/ → 点击 Start now 或 Sign up(右上角)
用邮箱注册(随便填密码,验证邮箱后登录)
登录后 → 点击 Create cronjob(或类似“New job”按钮)
填写字段(关键部分):
Title:随便填,比如 "Auto Checkin 09:00 & 18:00"
URL:填这个(替换成你自己的仓库):https://api.github.com/repos/你的GitHub用户名/你的仓库名/actions/workflows/你的.yaml/dispatches
示例:https://api.github.com/repos/kooker/webhost/actions/workflows/login.yaml/dispatches
Request method:选 POST
Timeout:默认30秒够用(你的签到脚本应该很快)
Custom headers(很重要!加两个):
Header 1: Accept → 值:application/vnd.github.v3+json
Header 2: Authorization → 值:Bearer ghp_你的PAT token
(注意:Bearer 后面加空格,然后贴你的 token)
Body data(选 JSON 类型):
{
"ref": "main", // 或你的默认分支名,比如 master
"inputs": {} // 如果没 inputs,可以空对象
}
Schedule(调度时间):
选 Advanced 或自定义 cron
输入两个时间(UTC 时间,北京+8,所以 09:00 北京 = UTC 01:00;18:00 北京 = UTC 10:00)
第一行:0 1 * (每天 UTC 01:00)
第二行:0 10 * (每天 UTC 10:00)
或用他们的界面点选时间(记得选 UTC!)
其他选项:
Execution notification:可选开 Telegram/Email 通知(如果失败会提醒你)
保存后,先点 Test now 测试一次,看 GitHub Actions 标签页有没有触发运行
步骤 4: 测试 & 观察
测试成功后,Actions 页面会出现由 "workflow_dispatch" 触发的运行记录
等到下一个时间点(或手动等),确认是否准时跑
如果失败:看 cron-job.org 的执行日志(会显示 HTTP 响应码),常见问题是 token 错、URL 错、header 格式不对
注意事项 & 常见坑
Token 权限:必须有 workflow scope,否则返回 403
仓库名/用户名:大小写敏感,别写错
频率:你一天两次,完全在免费限额内(甚至可以加到每小时一次都没问题)
如果想更安全:cron-job.org 支持 IP 白名单(在账号设置里加你的 IP),但一般个人用不必要
备选:如果 cron-job.org 哪天不稳定了,再考虑 Google Cloud Scheduler(有免费额度)或 Cloudflare Workers Cron(也免费)
照这个步骤走,基本5-10分钟就能搞定,远比 GitHub 自带 schedule 靠谱。
