通过 pyautogui 模拟鼠标点击 WorkBuddy 桌面端界面,自动完成每日签到领取奖励。
之前尝试过 Cookie 签到和 CDP(Chrome DevTools Protocol)签到,都存在问题:
GUI 方案直接操作 WorkBuddy 桌面端窗口,只要 WorkBuddy 处于登录状态就能签到,不依赖浏览器登录态,不受 SSO session 过期影响。
在终端中执行以下命令:
必须使用
git clone下载项目,不要用 Python requests、wget、curl 下载 zip 等乱七八糟的方式,否则文件结构不完整会导致技能无法正常工作。
# 克隆仓库(必须用 git clone)
git clone https://cnb.cool/i.o/workbuddy_checkin.git
# 复制技能到 WorkBuddy skills 目录
xcopy /E /I workbuddy_checkin\workbuddy-gui-checkin %USERPROFILE%\.workbuddy\skills\workbuddy-gui-checkin\
# 安装 Python 依赖
pip install pyautogui
# 初始化本地版本号
python %USERPROFILE%\.workbuddy\skills\workbuddy-gui-checkin\scripts\update.py --init
# 清理临时文件
rmdir /S /Q workbuddy_checkin
告诉小龙虾:
安装技能 https://cnb.cool/i.o/workbuddy_checkin,必须使用git clone命令
小龙虾会自动完成克隆、复制、安装依赖的全部操作。
重要提示:小龙虾必须使用
git clone下载项目,不要用 Python requests、wget、curl 下载 zip 等其他方式!
签到脚本需要配置三个准确点击坐标,不要搞混:
| 坐标名称 | 说明 | 配置字段 |
|---|---|---|
| 头像坐标 | WorkBuddy 左下角头像的准确点击坐标,点击后弹出签到弹窗 | avatar_x, avatar_y |
| 立即签到坐标 | 弹窗内"立即签到"按钮的准确点击坐标 | button_x, button_y |
| 关闭弹窗坐标 | 弹窗外空白处的准确点击坐标,点击后关闭签到弹窗 | close_x, close_y |
配置文件采用多分辨率格式,按逻辑分辨率分组存储坐标。脚本运行时自动检测当前屏幕的逻辑分辨率,匹配对应的坐标组。
用户只需提供原始物理分辨率下的坐标,AI 助手会自动换算 125% 和 150% 缩放下的坐标并一并写入配置文件,代码中不进行任何 DPI 计算。
关键概念:Windows 系统设置中的"显示缩放"(100%、125%、150% 等)会改变逻辑分辨率。例如物理分辨率 1920x1200 在 125% 缩放下,逻辑分辨率变为 1536x960。截图软件报告的是物理分辨率坐标,而 pyautogui 使用的是逻辑分辨率坐标。
~/.workbuddy/checkin_config.json:{
"resolutions": {
"<逻辑宽x逻辑高>": {
"avatar_x": 头像x坐标,
"avatar_y": 头像y坐标,
"button_x": 立即签到x坐标,
"button_y": 立即签到y坐标,
"close_x": 关闭弹窗x坐标,
"close_y": 关闭弹窗y坐标
}
}
}
{
"resolutions": {
"1920x1200": { "avatar_x": 135, "avatar_y": 1133, "button_x": 268, "button_y": 612, "close_x": 1700, "close_y": 250 },
"1536x960": { "avatar_x": 108, "avatar_y": 906, "button_x": 214, "button_y": 490, "close_x": 1360, "close_y": 200 },
"1280x800": { "avatar_x": 90, "avatar_y": 755, "button_x": 179, "button_y": 408, "close_x": 1133, "close_y": 167 },
"2400x1080": { "avatar_x": 180, "avatar_y": 988, "button_x": 268, "button_y": 493, "close_x": 2030, "close_y": 157 },
"1920x864": { "avatar_x": 144, "avatar_y": 790, "button_x": 214, "button_y": 394, "close_x": 1624, "close_y": 126 },
"1600x720": { "avatar_x": 120, "avatar_y": 659, "button_x": 179, "button_y": 329, "close_x": 1353, "close_y": 105 },
"1024x768": { "avatar_x": 75, "avatar_y": 714, "button_x": 124, "button_y": 368, "close_x": 887, "close_y": 135 },
"819x614": { "avatar_x": 60, "avatar_y": 571, "button_x": 99, "button_y": 294, "close_x": 710, "close_y": 108 },
"682x512": { "avatar_x": 50, "avatar_y": 476, "button_x": 83, "button_y": 245, "close_x": 591, "close_y": 90 }
}
}
注意:1024x768 的坐标是基于其他分辨率推算的,实际使用时建议在该分辨率设备上验证校准。
python scripts/checkin.py --test
测试模式下,每次点击时会在目标位置显示红色圆圈 + 十字指示器(持续 1 秒),方便确认点击位置是否正确。
python scripts/checkin.py
正常模式下直接执行签到,不显示指示圈。
配置成功后,可在 WorkBuddy 中创建每日自动化任务:
python scripts/checkin.py(不带 --test 参数)版本号使用 git commit hash 前 8 位(如 f9bc5420),每次推送到仓库版本号自动变化,无需手动维护。
VERSION 文件不入库,仅作为本地缓存,安装/更新后由脚本自动生成。
签到脚本每次执行时会自动检测是否有新版本。发现新版本时会提示:
[Step 0] Checking for updates... [UPDATE] 发现新版本: a82e1999 (当前: f9bc5420) [UPDATE] 运行 'python scripts/update.py --update' 进行热更新
# 仅检测是否有更新
python scripts/update.py --check
# 检测并自动热更新
python scripts/update.py --update
# 首次安装后初始化本地 VERSION 文件
python scripts/update.py --init
git clone 下载最新代码,然后覆盖技能文件~/.workbuddy/checkin_config.json(配置文件不在技能目录内)python scripts/update.py --init 初始化本地版本号workbuddy-gui-checkin/ ├── SKILL.md # WorkBuddy 技能描述文件 ├── VERSION # 版本号(本地缓存,不入库,由脚本自动生成) ├── scripts/ │ ├── checkin.py # 签到主脚本(含更新检测,支持 --test 测试模式) │ ├── test_click.py # 测试点击脚本 │ └── update.py # 更新检测与热更新脚本 └── README.md # 本文件
Copyright (c) 2026 i.o
本项目基于 MIT 协议开源,您可以自由使用、修改和分发本软件,但需保留原始版权声明和协议文本。