每天签到领积分、再派猫猫出去旅行领积分——攒得不多,但天天要手动点一下很烦。 这个项目把整套流程搬到云端定时跑:每天 00:05(北京时间)自动签到 + 领积分 + 派猫猫旅行, 电脑关机、客户端不开也能签。

原文发布在掘金 · 含仓库地址与常见问题速查表

下面是部署流程与关键决策的整理,仓库地址、完整命令与排错表请到掘金阅读。

在掘金阅读全文

一句话要点

  • 云端只存明文 JWT,不需要账号密码;脚本纯标准库、零第三方依赖。
  • 凭据只能经 imports 注入,所以「代码仓库 + 独立密钥仓库」两个库这一步不能省。
  • 每条流水线日志都会输出完整结果,方便自己接通知渠道。

一、准备清单

  • 客户端:部署当天需要开着并登录一次,用于导出登录态。
  • Python 3.8+:本机执行「生成密钥」命令时用;云端已自带 python:3.12-slim。
  • CNB 账号:免费,用于托管代码和跑流水线。
  • Git(可选):Fork 和本地跑命令会用到,不想装也可以全程在网页端操作。

二、部署只有四步

第 1 步:建两个仓库

把源码 Fork 到自己的账号下,这就是签到仓库(建议设为 Private); 再新建一个密钥仓库专门放登录凭据,与代码库隔离,务必 Private。

为什么要两个库?密钥是敏感凭据,单独放在一个私有库里, 避免跟代码混在一起被误提交或误公开。

第 2 步:把密钥仓库接进来

在签到仓库根目录的 .cnb.yml 里,把 imports 地址改成自己的密钥仓库:

imports:
  - https://cnb.cool/<你的用户名>/workbuddy-checkin-secrets/-/blob/main/.cnb/workbuddy-secrets.yml

凭据只能经 imports 注入,所以这一步不能省。

第 3 步:本机生成密钥文件

在签到仓库目录下,且客户端正在运行并已登录的状态下执行:

python tools/make_min_auth.py --out secrets.yml --slug auto

它会自动完成四件事:读取本机登录态 → 解密(加密态也能处理)→ 导出明文 JWT → 生成一份可直接整份复制的 secrets.yml。 --slug auto 会用 git remote 自动填好仓库名。

第 4 步:粘贴 + 首次运行

在密钥仓库新建 .cnb/workbuddy-secrets.yml,把上一步的产物整份粘进去并提交; 回到签到仓库的「代码构建」页点「执行」,在日志里看到 登录态字符数、领取成功 或 今日已签到 就代表跑通了。

三、日常维护

换 Token(约 55 天一次)

登录态是 JWT,实测有效期约 55 天,流水线每天打印剩余天数, 不足 7 天会给 warning。到期前:打开并登录客户端 → 重新生成 secrets.yml → 整份覆盖密钥仓库里的文件 → 提交。

「打开并登录客户端」这步不能省:密钥只存在于运行中的客户端进程内存里, 关掉客户端只能拿到密文。

改签到时间

改 .cnb.yml 里的 "crontab: 5 0 * * *" 推到 main 之后, 要重新生成一次密钥文件覆盖过去—— allow_events 是从 .cnb.yml 自动推导的,不重新生成会校验失败。

四、几个容易卡住的点

  • 本地报「解密 accessToken 失败」:密钥只在运行中的客户端进程内存里,确认客户端已登录、与脚本同一 Windows 用户。
  • 日志报「Secret 内容疑似被截断」:粘贴时被截断了,删掉旧变量重新整份生成再覆盖。
  • 到点没跑但手动能跑:按序查 allow_events 是否对齐、配置是否在 main 分支、cron 时区固定为 Asia/Shanghai(直接写北京时间)。
  • docker.image 不能删:CNB 默认构建环境不含 python3。

五、关于通知

项目不内置推送配置——脚本每次运行会输出完整的结果 JSON 并写入 checkin.log, 可以据此接任意通知渠道。不希望产生通知副作用时加 --no-notify。

小结

整个部署的核心就一句:Fork 仓库 → 建个密钥仓库 → 一条命令导出密钥 → 粘进私有密钥仓库 → 点一次执行。 剩下的换 Token、改时间也都是「跑命令 → 覆盖提交」两步。

© 2026 HOLZWEGE 返回随笔列表