https://github.com/cairnechen/autopyq
前一阵子研究 Skill 准备随便 vibe 一个来练手,刚好发现 AutoHotkey 可以通过 ImageSearch 定位窗口中的特定区域,就想到了可以用 Windows 版微信来做自动化,本来以为会踩坑,结果发现越走越顺,索性一口气做完了,记录并分享一下。
说实话我真没细想,觉得可以做就做了,目前我的使用状态是,家里的 windows 笔记本保持一个 claude code 会话连接 telegram mcp, 登录微信并打开在前台,然后在外面需要发朋友圈的时候 通过 telegram 发内容给 claude 然后自动发朋友圈
从 github 下载 Skill 全部文件并复制到你本机的 skill 目录(.agent/skills 或者 ./claude/skills )
先打开 windows 微信(最新版本 4.1.8 ),然后通过提示词 [获取模板图片] 让 agent 通过一个 template-capture 自动化流程把几个关键图片截取并保存到 skill 根目录(期间不要动鼠标键盘)
打开微信在前台,在 agent 会话中通过 [发朋友圈] [发一张带图朋友圈] 等触发 skill ,根据 agent 指引确认并发布(因为是模拟键鼠操作,所以也不能动鼠标键盘)
通过 AutoHotkey 的 ImageSeach 功能根据模板图片找到几个关键位置,找到之后自动点击、粘贴内容、导入图片并发步
朋友圈入口➔相机按钮➔编辑框占位文本➔发表按钮
通过 AutoHotkey 提供的 windows spy 找到微信和朋友圈的窗口标题、class 、process 写进 config.ini 脚本运行的时候读配置文件匹配窗口,后面流程里还有一个文件选择窗口也是同样的办法
AutoHotkey 激活目标窗口然后模拟键盘发送 Alt+PrtSc 再从剪贴板将图片保存到临时目录
朋友圈窗口根据模板图片通过 ImageSearh 找到左上角相机图标,纯文本就模拟长按,带图就直接点击
通过占位文本模板图片 ImageSearch 定位文本输入区域,模拟鼠标点击获取输入焦点,发送 Ctrl+V 粘贴文本
发布前在 Pictures/Moments 创建一个发布目录,把所有图片文件复制到这个目录,在点击相机图标弹出的系统 [文件选择] 窗口中,通过 Alt+D 定位到 [地址输入栏] ,粘贴发布目录并跳转,再通过 Alt+N 回到 [文件名输入栏] 批量粘贴将要发布的图片文件名,回车确认
ImageSearch 找到绿色启用状态的 [发表] 按钮,模拟鼠标点击
点击发表按钮后,等待一段时间,发送 Alt+PrtSc ,再从剪贴板将图片保存到发布目录
1.ImageSearch 的准确度会受当前屏幕背景影响,黑色背景相比白色背景需要更高的容差
2.模型视觉能力参差不齐,GPT5.4 显著好于 Opus4.6 好于 Sonnet4.6, 为了能让 Sonnet 完成模板获取任务,改了好多版提示词
3.模型通过视觉处理图片的时候会进行缩放(且远比官方文档提到的缩放门槛更加严格),导致模型在判断目标区域时出现极大坐标漂移,反复迭代调整,不得已在模板抓取流程中增加调整微信和朋友圈窗口到最小宽度/高度的过程,减少模型负担
4.模型不依赖环境自己处理图片的原始方法是像素扫描,非常浪费 token ,只好增加了一个 imgtool 做了一些简单图片处理的工作
1.通过 Ahk2exe 把.ahk 脚本编译成 exe 可能会被 defender 误杀,需要到安全中心从隔离中恢复,不过如果本机有安装 AutHotkey 的话可以 fallback 到用脚本执行,imgtool 同理
2.模板抓取过程依赖模型视觉能力,可能自动抓完模板图片发现匹配不上,实在不行可以自己手动截图重命名为模板文件( pyq1~pyq4 必须为 png )注意 pyq1 是朋友圈入口图标的左下角 1/4 ,因为需要避开可能出现的红色数字角标
3.模板自动抓取模板图片的功能可能会消耗大量 token ,建议最好用 GPT5.4 Extra High ,如果不想消耗太多 token ,可以用 Sonnet 4.6 就是会比较慢
4.微信语言需要设置成中文,因为发现窗口用到了窗口标题
我目前只测试了了 Claude Code 连接 Telegram ,不过理论上只要 Agent 能通过 IM 收发图片,都可以打通发布流程,如果有需要的话后面可以在仓库里补充连接 IM 的教程
目前已经测试通过的:
1.DM 和 Group 都能接受图文加载 Skill 并发送朋友圈
2.发送纯文本、发送单张图片、发送多张图片都成功发布朋友圈
3.发送完成后自动将发布后朋友圈窗口截图返回给 IM
特别注意:如果要一直保证远程使用顺畅,最好在工作目录的.claude/settings.local.json 文件增加权限许可,Read Write Edit Bash grep glob 这些都给,基本上就不会出现还要在 IM 侧点 allow 的情况了
