[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1cz6u87djvxtt":3},{"_id":4,"slug":5,"title":6,"subtitle":7,"kind":8,"cards":9,"tags":23,"categories":24,"source":25,"lang":28,"author":29,"audioState":32,"stats":33,"publishedAt":36,"renderer":37},"6abb526dca21c797c7e9c127","workbuddy-1c5937b2","把 WorkBuddy 每日签到搬上云端","把 WorkBuddy 每日签到搬上云端：10 分钟部署实操 WorkBuddy 有个「Buddy 加油站」，每天签到领积分、还能派猫猫出去旅行领积分。攒得不多，但天天要手动点一下很烦。 这个仓库把整套流程搬到了云端（CNB 的云原生构建）定时跑：每天 00:05（北京时间）自动签到 + 领积分 + 派猫猫旅行，电脑关机、客户端不开也能签。 云端只存明文…","news",[10,14,19],{"headline":6,"body":11,"imageUrl":12,"images":13},"把 WorkBuddy 每日签到搬上云端：10 分钟部署实操 WorkBuddy 有个「Buddy 加油站」，每天签到领积分、还能派猫猫出去旅行领积分。攒得不多，但天天要手动点一下很烦。 这个仓库把整套流程搬到了云端（CNB 的云原生构建）定时跑：每天 00:05（北京时间）自动签到 + 领积分 + 派猫猫旅行，电脑关机、客户端不开也能签。 云端只存明文 JWT，不需要账号密码；脚本纯标准库，零第三方依赖 下面是一份照着抄就能跑通的部署流程，含每一步的具体操作。 Fork 之后就得到了你自己的「签到仓库」，下面所有操作都在你自己的仓库里进行。 打开上面的源码仓库，点右上角 Fork，把代码复制到你的账号下 —— 这就是你的签到仓库（建议设为 Private）。 再新建一个密钥仓库，用来单独存放登录凭据（与代码库隔离，务必 Private），名字随意，例如 workbuddy-checkin-secrets。 为什么是两个库？密钥是敏感凭据，单独放在一个私有库里，避免跟代码混在一起被误提交或误公开。 为什么是两个库？密钥是敏感凭据，单独放在一个私有库里，避免跟代码混在一起被误提交或误公开。 在你自己的签到仓库根目录找到 .cnb.yml，把里面的 imports 地址改成你的密钥仓库（把下面的 \u003C你的用户名> 换成你的 CNB 用户名）： 凭据只能经 imports 从这里注入，所以密钥仓库这一步不能省。 凭据只能经 imports 从这里注入，所以密钥仓库这一步不能省。 在签到仓库目录下，且 WorkBuddy 客户端正在运行且已登录的状态下，打开 PowerShell 执行：","\u002Fapi\u002Fmedia\u002Fposts\u002Fworkbuddy-1c5937b2\u002F0.webp",{"local":12},{"headline":15,"body":16,"imageUrl":17,"images":18},"这一步会自动完成：读取本机登录态 → 解密（5.6.2+ 加密态也能自动处理）→ 导出明文 JWT → 生成一份可直接整份复制的密钥文件","这一步会自动完成：读取本机登录态 → 解密（5.6.2+ 加密态也能自动处理）→ 导出明文 JWT → 生成一份可直接整份复制的密钥文件 secrets.yml。--slug auto 会用 git remote 自动填好仓库名，无需手改。 如果 --slug auto 没生效（比如没有 git remote），就手动把产物里的 \u003C你的用户名>\u002F\u003C签到仓库名> 替换成你的签到仓库。 如果 --slug auto 没生效（比如没有 git remote），就手动把产物里的 \u003C你的用户名>\u002F\u003C签到仓库名> 替换成你的签到仓库。 在密钥仓库里新建文件，路径填 .cnb\u002Fworkbuddy-secrets.yml，把上一步 secrets.yml 的内容全选复制进去，提交 回到签到仓库的「代码构建」页，点「执行」，展开日志核对： 看到 领取成功 \u002F 今日已签到 即代表跑通。之后每天 00:05（北京时间）自动执行，无需任何操作。 登录态是 JWT，实测有效期约 55 天。流水线每天打印剩余天数，不足 7 天会给 warning。到期前做三件事： 第 1 步不能省：密钥只存在于运行中的客户端进程内存，关掉客户端就只能拿到密文。 第 1 步不能省：密钥只存在于运行中的客户端进程内存，关掉客户端就只能拿到密文。 改签到仓库 .cnb.yml 里的 \"crontab: 5 0 * * *\" 重新生成一次密钥文件覆盖过去（allow_events 从 .cnb.yml 自动推导，不重新生成会校验失败） 本项目不内置推送配置——脚本每次运行会输出完整的结果 JSON 并写入 checkin.log，你可以据此自行接入任意通知渠道。不希望产生任何通知副作用时加 --no-notify。 整个部署的核心就一句：Fork 仓库 → 建个密钥仓库 → 一条命令导出密钥 → 粘进私有密钥仓库 → 点一次执行。 剩下的换 Token、改时间也都是「跑命令 → 覆盖提交」两步。","\u002Fapi\u002Fmedia\u002Fposts\u002Fworkbuddy-1c5937b2\u002F1.webp",{"local":17},{"headline":20,"body":20,"imageUrl":21,"images":22},"仓库纯标准库、零依赖；登录态在本机解密后才导出，云端拿不到任何密钥。如果你也想把每天那一下手动签到省掉，照着上面的步骤走一遍即可。","\u002Fapi\u002Fmedia\u002Fposts\u002Fworkbuddy-1c5937b2\u002F2.webp",{"local":21},[],[],{"name":26,"url":27},"Juejin","https:\u002F\u002Fjuejin.cn\u002Fpost\u002F7690056198372376627","zh",{"handle":30,"displayName":31},"spots","Spots",null,{"views":34,"likes":35,"saves":35,"shares":35,"completions":35,"opens":35,"skips":35,"depthSum":35},3,0,"2026-09-29T05:53:49.036Z","local"]