
该软件用于在 macOS 微信中自动发送公众号文章链接、打开文章窗口、刷新文章,并在监控模式下根据 wcplusPro 本地 API 的任务状态自动选择文章执行刷新流程。
1. 适用环境
- macOS。
- 已安装并登录 macOS 微信,应用 Bundle ID 为
com.tencent.xinWeChat。 - 已启动 wcplusPro 本地服务,默认 API 地址为
http://localhost:5001/api。 - 使用 Monitor 模式时,需要本地 API 能返回任务和文章数据。
- 启动 Monitor 或 Single 前,应用会先检查 wcplusPro 授权信息。
2. 软件会自动做什么
一次完整刷新流程如下:
- 激活微信。
- 打开微信通讯录页。
- 搜索并进入目标联系人或聊天,默认搜索词是
File。 - 把文章链接粘贴到聊天输入框并发送。
- 如果开启
Proxy,调用代理设置接口。 - 通过 OCR 在微信聊天窗口中识别刚发送的文章链接并点击打开。
- 等待文章窗口出现并激活。
- 等待
Open秒。 - 对文章窗口执行
Command + R刷新,次数由Reloads决定。 - 每次刷新后在内部默认的
3-5秒之间随机等待。 - 关闭文章窗口。
- 如果开启
Proxy,调用代理取消接口。
如果 OCR 没有找到刚发送的链接,程序会尝试点击聊天窗口右下区域的几个兜底位置来打开最近发送的文章。
3. 首次使用前准备
3.1 启动微信
先打开 macOS 微信并登录账号。建议保持微信主窗口可见,不要最小化。
程序会自动激活微信,但如果微信没有登录或没有可见主窗口,会报错:
No visible WeChat window found. Open WeChat and log in first.
3.2 打开 wcplusPro API
默认 API 根地址:
http://localhost:5001/api
如果无法读取授权信息,通常是 wcplusPro 没有启动、API 地址配置错误,或 localhost:5001 不可访问。
3.3 授予 macOS 权限
主界面底部的 运行权限 会显示 3 项权限状态。
| 权限 | 用途 |
|---|---|
| 辅助功能 | 发送鼠标点击、键盘输入、粘贴链接、刷新和关闭文章窗口。 |
| 屏幕录制 | 截取微信窗口,用 OCR 识别联系人和刚发送的文章链接。 |
| 自动化 | 激活微信,以及通过 Apple Events 控制微信窗口。 |
点击每一行可以打开对应的系统设置页面。授权后如果状态没有立即更新,可以点击右上角刷新按钮,或重新激活应用。
自动化权限有一个特殊状态:需启动微信。这表示当前没有检测到正在运行的微信,先启动微信后再刷新权限状态。
4. 两种运行模式
4.1 Monitor
Monitor 是自动监控模式。点击 Start Monitor 后,程序会按 Poll 间隔定时请求:
GET {API}/task/recent
当最近任务满足以下条件时触发刷新:
CrawlerType是wx_article_link或reading_data。StatusError不为空,并且不是无。
触发后,程序会请求近期文章:
GET {API}/report/gzh_articles?biz={Biz}&offset=0&num={Articles}&sort=p_date&direction=desc
然后从返回的、带 ContentURL 的文章中随机选择一篇,发到微信并刷新。
如果没有最近任务、任务类型不匹配、StatusError 为空,或 StatusError 是 无,本轮会记为 skipped。
4.2 Single
Single 是单链接模式。切换到 Single 后,会出现 URL 输入框。
使用方式:
- 在
URL中粘贴一篇公众号文章链接。 - 检查
Search、Open、Reloads、Proxy、API等配置。 - 点击
Run Once。
Single 模式不会查询 /task/recent,也不会从 /report/gzh_articles 选择文章,只处理你输入的这一条链接。
5. 主界面说明
5.1 顶部状态
Idle:当前没有运行任务。Live:Monitor 或 Single 正在运行。- 绿色圆点:正在运行。
- 灰色圆点:空闲。
标题为:
wcplusPro 微信参数自动化
5.2 模式切换
顶部的 Monitor / Single 分段控件用于选择运行模式。
切回 Monitor 时,程序会清空 URL,因为 Monitor 模式通过 API 自动选文章,不使用手动链接。
5.3 运行卡片
运行卡片会显示当前状态:
Ready:可以启动。Checking:正在检查授权。Running:正在运行。
按钮含义:
Start Monitor:启动监控模式。Run Once:执行单链接刷新。Stop:请求停止当前任务。
运行中按钮上会显示距离下一次检查的倒计时。倒计时对应当前轮结束后的等待时间,通常是 Poll,如果刚完成了一次刷新,则会使用内部默认的 postRefreshWait = 10 秒。
5.4 Cycles
监控循环统计。
- 主数字:Monitor 已执行的检查轮数。
skipped:未触发刷新的轮数,包括没有最近任务、任务不匹配、没有可用文章等情况。
Single 模式通常不会增加循环数。
5.5 Refresh
刷新统计。
- 主数字:成功完成文章刷新流程的次数。
failed:失败次数。
失败可能来自微信窗口不可见、联系人搜索失败、链接发送失败、文章窗口未打开、API 请求失败、代理接口失败等。
6. 配置项说明
6.1 Target
Search
用于在微信通讯录中搜索目标聊天对象。
默认值:
File
程序会进入微信通讯录,点击左上搜索框,粘贴 Search,然后通过 OCR 匹配搜索结果。匹配时会优先使用你填写的搜索词,同时也会尝试匹配:
file transfer
文件传输助手
如果你的微信语言或联系人名称不同,可以改成更容易识别的关键词,例如 文件传输助手。
注意:默认值末尾带一个空格,这是当前项目里的默认配置。通常可以保留;如果搜索不稳定,建议改成明确的中文名称。
URL
只在 Single 模式显示。
表示本次要刷新的公众号文章链接。为空时,Run Once 按钮不可用。
程序会在发送前解码常见 HTML 实体,例如把 & 还原为 &。
6.2 Timing
Poll
Monitor 模式每隔多少秒检查一次最近任务 API。
默认值:
20s
界面可选范围:
5-3600s
数值越小,检查越频繁;数值太小会增加本地 API 请求压力,也可能让微信操作之间的间隔过短。
Open
文章窗口打开后,等待多少秒再开始刷新。
默认值:
4s
界面可选范围:
0-120s
如果网络慢、文章页面加载慢、或打开后刷新容易失败,建议调大。
6.3 Refresh
Reloads
每篇文章打开后执行几次刷新。
默认值:
1
界面可选范围:
0-20
设置为 0 表示发送并打开文章后不刷新,只执行打开、等待、关闭流程。
刷新快捷键固定为:
Command + R
Articles
Monitor 模式从最近多少篇文章中选择。
默认值:
5
界面可选范围:
1-100
这个值会作为 /report/gzh_articles 的 num 参数。程序会过滤掉没有 ContentURL 的文章,然后随机选择一篇。
Single 模式不使用这个配置。
6.4 Endpoint
Proxy 开关
是否在打开文章前后调用代理切换接口。
默认值:
开启
开启时流程为:
POST http://localhost:5001/api/settings/proxy/set
打开并刷新文章
POST http://localhost:5001/api/settings/proxy/unset
关闭时不会调用代理接口。
注意:当前 Swift 版本的代理 API 根地址是代码中的固定值:
http://localhost:5001/api/settings/proxy
界面里的 API 只影响授权、任务和文章接口,不会改变代理接口地址。
API
wcplusPro 本地 API 根地址。
默认值:
http://localhost:5001/api
用途包括:
- 授权检查:
GET {API}/settings/license - 最近任务:
GET {API}/task/recent - 近期文章:
GET {API}/report/gzh_articles?...
如果 wcplusPro 服务不在默认地址,需要在这里修改。
建议不要在末尾加 /。程序会自动去掉末尾多余的 /。
Timeout
授权、任务、文章等 API 请求的超时时间。
默认值:
5s
界面可选范围:
1-120s
如果 API 偶尔响应慢,可以调大。
Proxy
代理接口请求的超时时间。
默认值:
5s
界面可选范围:
1-120s
只影响 Proxy 开启时的 /set 和 /unset 请求。
7. 当前没有显示在界面上的内部配置
Swift 版当前界面只暴露了常用配置。以下配置存在于代码默认值中,但没有界面入口:
| 配置 | 默认值 | 含义 |
|---|---|---|
waitMin | 3.0 | 每次刷新后随机等待的最短秒数。 |
waitMax | 5.0 | 每次刷新后随机等待的最长秒数。 |
postRefreshWait | 10.0 | Monitor 模式完成一次刷新后,到下一轮检查前等待的秒数。 |
maxCycles | 0 | Monitor 最大循环次数,0 表示不限制。当前界面不可改。 |
requestTimeout | 5.0 | 同界面 Timeout。 |
proxyTimeout | 5.0 | 同界面 Proxy 超时。 |
校验规则:
Reloads >= 00 <= waitMin <= waitMaxProxy timeout > 0Poll > 0Timeout > 0Articles > 0postRefreshWait >= 0maxCycles >= 0
8. 配置是否会保存
当前 Swift 项目没有实现配置持久化。
也就是说,Search、Poll、Open、Reloads、Articles、Proxy、API、Timeout 等界面配置只在本次应用运行期间有效。关闭并重新打开应用后,会恢复为代码中的默认值。
当前默认值如下:
| 配置 | 默认值 |
|---|---|
Search | File |
URL | 空 |
Reloads | 1 |
Open | 4s |
Proxy | 开启 |
API | http://localhost:5001/api |
Poll | 20s |
Timeout | 5s |
Articles | 5 |
Proxy timeout | 5s |
9. 输出文件
Monitor 模式停止或结束时,会在用户 Application Support 目录下创建运行报告目录:
~/Library/Application Support/wechat_auto/
报告文件名格式:
refresh_req_data_report_YYYYMMDD_HHMMSS.txt
报告内容包括:
- 开始和结束时间。
- 运行时长。
- API、轮询、文章数量、刷新次数、代理开关等配置。
- 循环次数。
- API 错误次数。
- skipped 次数。
- 触发刷新次数。
- 成功和失败次数。
- 最近错误。
- 事件列表。
10. 推荐使用流程
10.1 先用 Single 测试
- 启动 wcplusPro,并确认本地 API 可用。
- 启动并登录 macOS 微信。
- 打开
wechat_auto。 - 在
运行权限中确认三项权限都为已授权。 - 切换到
Single。 - 在
Search中填写目标聊天名称,建议使用文件传输助手。 - 在
URL中粘贴一篇公众号文章链接。 - 保持
Reloads = 1,Open = 4s。 - 点击
Run Once。 - 观察微信是否能自动发送链接、打开文章、刷新并关闭。
10.2 测试稳定后使用 Monitor
- 切换到
Monitor。 - 检查
API是否指向正确的 wcplusPro 服务。 - 根据需要调整
Poll和Articles。 - 点击
Start Monitor。 - 运行中如需停止,点击
Stop。
11. 常见问题
11.1 提示无法读取授权信息
检查:
- wcplusPro 是否已经启动。
API是否是正确地址。GET {API}/settings/license是否能访问。Timeout是否太短。
11.2 提示仅Max版支持微信参数自动化获取
表示授权检查没有通过。当前逻辑要求未过期,或 isMaxVersion = true。
11.3 找不到微信窗口
检查:
- 微信是否已启动。
- 微信是否已登录。
- 微信主窗口是否可见。
- 微信是否被最小化或隐藏。
11.4 搜索不到文件传输助手
优先把 Search 改成:
wenjian
人工在微信输出合适关键词,确保第一个结果是文件传输助手。
同时确认微信通讯录和搜索结果区域没有被其他窗口遮挡。由于程序依赖 OCR,微信窗口缩放、语言、主题、字体和屏幕录制权限都会影响识别。
11.5 文章链接发出去了,但没有打开
程序会先通过 OCR 找链接,再用兜底坐标点击。如果仍然打不开,可能原因包括:
- 微信窗口尺寸太小。
- 刚发送的消息不在可见区域。
- 屏幕录制权限未授权。
- 文章链接显示形式与 OCR 匹配逻辑不兼容。
- 微信聊天窗口被遮挡。
建议把微信主窗口放大,保持文件传输助手聊天区域可见,然后重试。
11.6 代理设置失败
如果开启了 Proxy,每次刷新前都必须成功请求:
POST http://localhost:5001/api/settings/proxy/set
如果请求失败,当前刷新流程会中断。
解决方式:
- 确认 wcplusPro 的代理接口可用。
- 调大 Endpoint 中的
Proxy超时时间。 - 暂时关闭
Proxy开关。
11.7 Stop 后没有立刻停止
Stop 会取消当前异步任务。程序正在执行微信点击、等待窗口、API 请求、刷新文章等步骤时,可能需要等当前步骤返回后才完全停止。
Monitor 停止后仍会写出一份运行报告。