mcpField
W
wechat-automation

wechat-automation

github.com/francismiko生产力1171 次安装33 周前更新
代码仓库

关于 wechat-automation

wechat-automation 是通过辅助功能 API 操作 WeChat macOS 桌面客户端的技能。它提供用于收发消息和浏览聊天记录的 Shell 函数,并通过截图检查界面操作结果。

主要功能

  1. 01激活并控制 WeChat 窗口
  2. 02查找并打开聊天
  3. 03通过剪贴板粘贴发送消息
  4. 04滚动浏览聊天并截屏
  5. 05后台操作后恢复应用状态
  6. 06通过截图验证操作

适用场景

  1. 01向联系人或群聊发送消息
  2. 02查看聊天并浏览较早记录
  3. 03通过截图核验不确定的界面操作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/francismiko/wechat-automation --skill wechat-automation

安装后在 Claude Code 中输入/wechat-automation确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
LICENSE
README.md
references/
key-codes.md
scripts/
wechat-utils.sh

详细介绍

来自项目 README

WeChat macOS Automation

通过 macOS 辅助功能 API 控制微信桌面客户端,实现消息收发和聊天记录浏览。

前提条件

  1. 微信 macOS 版已安装并登录
  2. 辅助功能权限已授予终端应用和 claude CLI(系统设置 → 隐私与安全性 → 辅助功能)
  3. cliclick 已安装(brew install cliclick)

如果用户遇到权限错误("不允许辅助访问"),引导他们到系统设置添加对应程序。需要授权的程序:终端应用(如 Warp、iTerm2)和 /opt/homebrew/Caskroom/claude-code/*/claude。

工具库

所有操作封装在 scripts/wechat-utils.sh 中。使用前先 source:

source ~/.agents/skills/wechat-automation/scripts/wechat-utils.sh

踩坑指南(必读)

以下是实际操控中验证过的经验,违反这些规则会导致操作失败:

绝对不要做
操作后果正确做法
用 Cmd+F 搜索会话打开全局搜索(含网络/公众号搜索),不是会话搜索用 wechat_open_chat 点击侧边栏搜索框
用 Cmd+N 找已有会话创建新群聊用 wechat_open_chat
用 keystroke 输入中文/emoji输入为空或乱码用 wechat_paste 通过剪贴板粘贴
不移动鼠标直接滚动滚到别的窗口先 wechat_move 到聊天区域再 wechat_scroll
用 Page Up/Down 翻页焦点跳到别的应用用 wechat_scroll_chat
搜索后不清理输入框残留文字被当消息发出wechat_open_chat 已内置清理;wechat_send_message 也会先清空
必须做
  • 截屏验证:UI 自动化天生不稳定。关键操作后调用 wechat_screenshot + Read 工具确认状态
  • 激活后缓存窗口信息:wechat_activate 会自动缓存窗口坐标,后续操作复用,避免重复查询
  • 滚动前定位鼠标:wechat_scroll_chat 已内置移动鼠标逻辑,直接用它而不是裸调 wechat_scroll

可用操作

基础操作
函数参数说明
wechat_activate—激活微信窗口、置顶、缓存窗口坐标
wechat_screenshot [path]输出路径截取当前屏幕
wechat_paste "文本"文本内容通过剪贴板粘贴(唯一正确的输入方式)
wechat_key keycodekey code模拟按键(36=回车, 53=ESC, 51=删除)
wechat_cmd "key"字符模拟 Cmd+key
wechat_click x y坐标点击
wechat_move x y坐标移动鼠标(滚动前必须调用)
wechat_scroll dir countup/down, 次数在鼠标当前位置滚动
组合操作
函数参数说明
wechat_open_chat "名称"联系人/群名点击侧边栏搜索 → 粘贴 → 回车 → ESC 关闭搜索面板
wechat_scroll_chat dir countup/down, 次数移动鼠标到聊天区域 → 滚动
wechat_send_message "消息"消息文本点击输入框 → 清空 → 粘贴 → 回车,自动追加签名
高级操作(支持后台模式)
函数参数说明
wechat_send_to "名称" "消息" [bg]联系人、消息、后台(默认true)完整流程:激活 → 搜索 → 发送 → 切回
wechat_read_chat [scroll] [path] [bg]滚动次数、路径、后台截屏当前会话
wechat_view_chat "名称" [scroll] [path] [bg]联系人、滚动、路径、后台搜索会话 → 截屏

后台模式(默认开启):操作前保存当前前台应用和剪贴板,操作后恢复。微信只需短暂前台 3-5 秒。

使用模式

发消息
source ~/.agents/skills/wechat-automation/scripts/wechat-utils.sh
wechat_send_to "张三" "你好" true
查看聊天记录

截屏 + Read 工具读取分析:

source ~/.agents/skills/wechat-automation/scripts/wechat-utils.sh
wechat_view_chat "群名" 80 /tmp/chat.png true
# 然后 Read /tmp/chat.png 查看内容
连续浏览历史

如果已在目标会话中,不要再调 wechat_open_chat(会重新搜索),直接滚动:

source ~/.agents/skills/wechat-automation/scripts/wechat-utils.sh
wechat_activate
# 假设已在目标会话中
for i in 1 2 3 4 5; do
    wechat_scroll_chat up 100
    wechat_screenshot "/tmp/chat-${i}.png"
done
# 批量 Read 截图分析
截屏驱动的操控模式

对于不确定的场景,采用「截屏 → 分析 → 操作 → 截屏验证」循环:

source ~/.agents/skills/wechat-automation/scripts/wechat-utils.sh
wechat_activate
wechat_screenshot /tmp/step1.png   # 看当前状态,Read 分析
# 根据截图决定下一步...
wechat_open_chat "某人"
wechat_screenshot /tmp/step2.png   # 确认进入正确会话
wechat_send_message "你好"
wechat_screenshot /tmp/step3.png   # 确认发送成功

故障排查

症状原因解决
"不允许辅助访问"缺少辅助功能权限系统设置 → 辅助功能,添加终端和 claude CLI
搜索打开了网络结果误用了 Cmd+F用 wechat_open_chat(点击侧边栏搜索框)
滚动滚到了别的窗口鼠标不在微信上用 wechat_scroll_chat 而非裸调 wechat_scroll
发出了群名当消息搜索残留未清理wechat_send_message 已内置清空逻辑
点到了公众号/其他页面窗口坐标偏移先 wechat_activate 刷新坐标缓存

详细的按键码和 UI 布局信息见 references/key-codes.md。

评论

支持 Markdown