wechat-search-collector
SKILL.md
微信视频号搜索
约定
统一安装与执行目录:~/.agents/skills/wechat-search-collector/。执行前先进入该目录:
cd ~/.agents/skills/wechat-search-collector
- 使用
android-adb执行设备操作;使用ai-vision从截图定位元素(不要用dump-ui)。 - 关键:所有 UI 操作(如点击、输入)必须使用
plan-next进行规划和执行。严禁先执行 query 再使用返回坐标进行点击,因为存在坐标偏移问题。 - 优先复用
references/commands.md的函数封装(ADB/VISION/TASK/REPORT),避免cd漂移。 - 产物目录:
TASK_ID存在则写~/.eval/<TASK_ID>/,否则写~/.eval/debug/(文件名带时间戳)。 - 结果采集与上报:使用
result-bitable-reporter;进入微信流程前必须collect-start,结束时必须collect-stop+report。
前置处理
- 读取设备序列号:使用环境变量
SerialNumber(或ADB devices自行确认)。 - 准备输出目录:
TASK_ID必须为数字;创建~/.eval/<TASK_ID>/。 - 启动采集:执行
REPORT collect-start --task-id <TASK_ID> --db-path ~/.eval/records.sqlite --table capture_results(见references/commands.md)。 - 可选拉取任务:用
TASK claim从飞书领取任务;按Scene选择流程(综合页搜索 / 个人页搜索)。
共享子流程:滚动结果到触底(每滑动 5 次检测一次)
目标:避免视觉误判,优先用 sqlite capture_results 增量判断是否还有新增。
- 进入某个关键词结果页后,记录基线
LAST_COUNT:LAST_COUNT="$(REPORT stat --task-id <TASK_ID>)" - 循环执行直到触底:
- 滑动 5 次:
ADB -s <SERIAL> swipe 540 1800 540 400 --duration-ms 800(循环 5 次;每次滑动后随机等待 500~1000ms) - 查询当前总行数:
CUR_COUNT="$(REPORT stat --task-id <TASK_ID>)" - 若
CUR_COUNT == LAST_COUNT连续出现N次(建议N=3),判定触底;否则更新LAST_COUNT=CUR_COUNT并继续。
- 滑动 5 次:
- sqlite 判定不可用时,用
ai-vision assert二值兜底(不确定必须判定为否),见references/commands.md。
综合页搜索流程
适用于“在视频号综合页搜索单个或多个关键词并遍历结果”的需求。
1. 任务参数校验
- 任务信息必须提供搜索关键词(以逗号拆分为
KEYWORDS)
2. 启动微信
- 若当前已在微信内,先使用
android-adb的back-home命令返回手机桌面。 - 回到桌面后再启动微信。
3. 进入 发现 -> 视频号
- 通过截图 + ai-vision 定位并点击
发现与视频号入口。
4. 进入搜索界面
- 通过截图 + ai-vision 点击搜索框/放大镜进入搜索页;若被遮挡则先滑动后再定位。
5. 依次输入关键词并触发搜索
- 对关键词列表
KEYWORDS逐个执行:清空输入框 -> 输入关键词 -> 触发搜索。 - 若未进入结果页,重试触发直到进入结果页。
6. 结果滚动到底并切换下一个关键词
- 每个关键词的结果页都执行“结果滚动到底”的滑动循环。
- 对每个关键词执行“共享子流程:滚动结果到触底(每滑动 5 次检测一次)”。
- 确认触底后:点击搜索框确保输入框激活 -> 清空 -> 输入下一个关键词 -> 触发搜索,直到完成所有关键词的遍历。
7. 场景后置处理
- 当综合页搜索任务成功完成后,调用
piracy-handler,实现盗版聚类筛查、子任务创建与 webhook 推送计划创建。 - 若综合页搜索流程失败或中断,不调用该编排器。
个人页搜索流程
适用于“先进入某账号个人页,再在个人页内检索多个关键词并遍历结果”的需求。
1. 任务参数校验
- 任务信息必须提供:账号名称(
ACCOUNT_NAME)和搜索关键词(以逗号拆分为KEYWORDS)
2. 启动微信
- 若当前已在微信内,先使用
android-adb的back-home命令返回手机桌面。 - 回到桌面后再启动微信。
3. 进入 发现 -> 视频号
- 通过截图 + ai-vision 定位并点击
发现与视频号入口。
4. 进入搜索界面
- 通过截图 + ai-vision 点击搜索框/放大镜进入搜索页;若被遮挡则先滑动后再定位。
5. 搜索账号并进入个人页
- 输入账号名称
ACCOUNT_NAME并触发搜索 - 进入搜索结果后,若有目标账号则直接点击进入个人页
- 否则可先点击
账号Tab,然后在账号列表中点击目标账号进入个人页
6. 在个人页依次搜索关键词
- 对关键词列表
KEYWORDS逐个执行:先点击个人页搜索框确保输入框激活 -> 清空 -> 输入关键词 -> 触发搜索 -> 滑动结果到底。 - 每个关键词的结果页都执行“结果滚动到底”的滑动循环。
- 对每个关键词执行“共享子流程:滚动结果到触底(每滑动 5 次检测一次)”。
- 每个关键词搜索前确认仍在该账号个人页;若误退出则重进个人页后继续。
7. 场景后置处理
- 个人页任务结束并进入终态(
success/error)后,若任务存在GroupID,调用piracy-handler做“是否就绪 + webhook 推送”。
任务结束后的收尾逻辑
- 若
claim未获取任务,直接结束不做收尾。 - 所有关键词遍历完成后,使用
android-adb的back-home命令返回手机桌面 - 无论任务成功、失败或中断,都必须执行以下动作(finally 语义):
- 调用
result-bitable-reporter的collect-stop结束当前设备采集,并打印采集统计。 - 调用
result-bitable-reporter的report,并带--task-id <TASK_ID>,仅上报当前任务在capture_results中reported in (0,-1)的数据到飞书多维表格采集结果表。
- 调用
- 调用
feishu-bitable-task-manager更新该TaskID的字段:Status->success/failed/error(基于任务执行结果)、EndAt->now
备注与排障
- 点击不准:重新截图,让 ai-vision 提供更精确坐标(不要改用
dump-ui)。务必确认使用了plan-next而非query。 - 异常流程(弹窗遮挡或步骤卡住):先识别弹窗并关闭,再继续原步骤。处理命令见
references/commands.md。 - 任务超时限制:若单个任务执行时长超过 30 分钟,则终止执行,任务状态更新为 failed。
Weekly Installs
9
Repository
httprunner/skillsFirst Seen
Feb 8, 2026
Security Audits
Installed on
opencode9
codex9
gemini-cli8
cursor8
codebuddy8
github-copilot8