用途
wechat-channels-video 是一个用于微信视频号助手的技能,目标是在 Ego Lite 会话中自动完成视频号视频草稿的保存,不执行最终发表操作。发表环节需要通过扫码完成,保留给人工处理。
前置依赖
需要先安装 Ego Lite,并确保 ego-browser 在 PATH 中可用。若缺失,技能会软失败并提示用户安装,不会强行调用浏览器。
登录检查
每次发布前必须运行登录检查脚本,因为视频号登录态过期较快。
node scripts/check-login.mjs
# 需要把窗口留给人扫码时:
node scripts/check-login.mjs --keep
退出码含义:
- 0:已登录,可继续流程。
- 2:未登录或无 ego-browser,需展示登录指引并停止,请人在 Ego 扫码后重新运行检查。
- 1:其它错误,需报告错误信息,不能假装已发布。
输入
调用方提供本机视频路径、description、short_title,可选提供 tags、cover、位置、原创、活动等字段。技能不写死业务目录。
主要脚本
- check-login.mjs:登录硬闸门,默认以 finish({ keep: [] }) 结束。
- serve-file.mjs:本机 CORS 文件服务,供页面 fetch 视频文件,打印 { url, bytes, port },按 SIGINT 结束。大视频不使用 base64。
Agent 操作流程
登录通过后,按以下步骤操作:
- 通过 UI 路径进入发表页:首页 → 内容管理 → 视频 → 发表视频,不直接访问 create 链接以避免白屏。
- 启动 serve-file,在页面中通过 fetch 和 DataTransfer 注入隐藏的 video file input 完成上传。验证只看 DOM 是否出现预览卡且进度 100%。
- 上传完成后先点击一次「保存草稿」,避免中途失败导致重传。
- 填写描述和话题,描述使用 .input-editor 配合 execCommand,文案通过 evaluate 参数传入。
- 填写短标题,使用 native setter,并注意服务端限制:不超过 16 字,符号白名单仅限书名号、引号、冒号、加号、问号、百分号、摄氏度;全角逗号需换成空格;小数点、|、#、@ 等不可用。填写后检查红字警告。
- 位置默认可能带城市,通过坐标点击打开后选择「不显示位置」并回读确认。
- 可选声明原创:勾选 checkbox 后在协议层确认,两步均需回读确认。
- 可选活动搜索:使用 native setter 写入搜索词,弹层可能需重试,列表渲染后按截图坐标点击并回读确认。
- 可选上传封面:唯一稳妥方式是 waitForFileChooser() 配合可信点击和 chooser.setFiles。
- 最终点击「保存草稿」,成功信号为「已保存」且按钮变灰,再到草稿箱核对。
- 收尾:停止 serve-file;需要人发表时使用 handOff(),否则 finish({ keep: [] })。
适用场景
适用于需要自动化生成视频号视频草稿、减少手动填表工作量、同时将最终发表保留给人工扫码确认的场景。
限制
- 不执行发表操作,发表必须人工扫码完成。
- 依赖 Ego Lite 与 ego-browser。
- 登录态易过期,每次操作前必须检查。
- 短标题有严格字符限制和符号白名单,超长或特殊字符会被拒绝。
- 封面只能通过 waitForFileChooser 上传。
- 部分 UI 操作需要坐标点击和截图辅助,弹层行序和坐标可能变化。
- 草稿保存前不能离开编辑器。