Install
openclaw skills install @noaheleven/wb-buddy-checkin自动完成 WorkBuddy 桌面客户端「Buddy 加油站」每日签到、领取积分。当用户需要在 Windows 上自动点击头像→Buddy加油站→立即领取,并通过截图灰度校验是否成功(灰底「今日已领」)时使用。基于纯 ctypes 实现窗口置前、坐标点击与窗口截图,零第三方 Python 依赖,仅依赖 Windows 系统 API(可选复用 desktop-control-win skill 的截图)。
openclaw skills install @noaheleven/wb-buddy-checkin在 Windows 上自动给 WorkBuddy 桌面客户端的「Buddy 加油站」签到领积分(每日 100 积分)。 脚本用相对坐标点击 + 截图灰度校验,无需 OCR,主题无关(亮/暗色都能正确判定)。
ctypes.windll / user32 / gdi32)。pip install 任何包)。references/calibration.md),因为不同屏幕/布局下点击点不同。这步跳过是移植后"只会点头像"的头号原因。先跑一次校准,再 -run。脚本内置的坐标是作者屏幕的校准值,别人的屏幕八成对不上——头像在左下角还能蒙对,但加油站/领取位置一偏,后续点击全打空,看起来就像"只点了头像"。
校准有两种,推荐用弹窗校准(通用、傻瓜、零依赖):
# 弹窗校准(推荐):自动弹出一个悬浮窗,按提示把鼠标移到三个目标点,
# 每步倒计时结束自动记录,三步写 calibrate.json。无需终端/微信/任何外部通道。
python scripts/wb_mouse_checkin.py -calibrate-gui
无 GUI 环境(如某些精简 Python 没带 tkinter)时,退而用终端文字校准:
# 终端校准:把鼠标依次移到 头像 / Buddy加油站 / 立即领取 三个点,各按一次回车
python scripts/wb_mouse_checkin.py -calibrate
校准后直接:
python scripts/wb_mouse_checkin.py -run
没校准就
-run,脚本会红字警告"用的是示例默认坐标,大概率打空",并打印算出的三个屏幕坐标供你对照。
脚本位于 scripts/wb_mouse_checkin.py,三种模式:
# 1) 干跑:打印窗口信息 + 计算好的点击坐标 + 校准状态告警,不点击
python scripts/wb_mouse_checkin.py
# 2) 真实签到(自动读取 calibrate.json;无则告警并退回示例坐标)
python scripts/wb_mouse_checkin.py -run
# 3) 弹窗校准(推荐):悬浮窗倒计时自动采样鼠标,三步写 calibrate.json
python scripts/wb_mouse_checkin.py -calibrate-gui
# 3b) 终端校准(无 GUI 时):鼠标移到三个目标点各按回车
python scripts/wb_mouse_checkin.py -calibrate
退出码:0=成功(已处于「今日已领」) / 2=失败(未领取或面板异常,报错会指明该校准哪个点) / 3=未找到 WorkBuddy 窗口。
结果截图保存在脚本同目录 checkin_result.png,可用于人工确认或后续通知。
argtypes,HWND 按 c_void_p(64 位指针)传。不声明会被 ctypes 默认按 32 位 c_int 截断,导致 SetForegroundWindow 静默失败——表现为「窗口没置顶、点击打空」。本脚本已统一声明。ShowWindow(SW_RESTORE) → AttachThreadInput 线程绑定绕过系统前台锁 → SetWindowPos(HWND_TOP) 置顶 z 序。screen-info.ps1(若存在),否则回退 PrintWindow 客户区截图;PNG 编解码全用标准库手写(支持所有 filter),无外部依赖。在 WorkBuddy 自动化里建一个每日任务,prompt 大致为:
运行
python scripts/wb_mouse_checkin.py -run(脚本内置窗口置前与灰度校验)。 读checkin_result.png确认结果:灰色「今日已领」=完成;黑底「立即领取」仍在=失败。 按你的通知偏好(微信/钉钉等)把结果发给本人。通知目标和通道由你自己的配置决定,本 skill 不内置任何推送。
cwd 设为该 skill 的 scripts/ 所在目录(或脚本实际位置)。
references/calibration.md