下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/zlaix--wxchannels-auto-draft.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @zlaix/wxchannels-auto-draft。视频自动发布视频号skill,三步上手:① 装依赖(一条命令)② 微信扫码一次 ③ 说一句「传视频号」。把成片 + 封面 + 标题 + 话题 + 短标题自动送进微信视频号助手的草稿箱,只存草稿、绝不点发表,位置自动改成「不显示位置」,存没存上按接口核验。做完视频要发视频号,一句话搞定。触发词:发视频号、传视频号、视频号上传、传草稿箱、发到视频号、视频号自动发布。
阅读全文 (展开查看完整说明)
概述
一句话:把成片送进视频号草稿箱,位置清空,存没存上按接口核验。发表永远由人点。
本技能是独立技能:不依赖、也不修改任何其他技能。装它不会动你电脑上已有的技能。
〇、三步上手(看这一段就会用)
第 1 步 装依赖 一条命令,30 秒
第 2 步 扫码一次 微信扫一下,之后长期有效
第 3 步 说一句话 对着助手说「传视频号」,剩下它来第 1 步 · 装依赖
~/.workbuddy/binaries/python/envs/default/bin/pip install playwright如果提示找不到浏览器内核,再补一条:
~/.workbuddy/binaries/python/envs/default/bin/python -m playwright install chromium
第 2 步 · 扫码一次
PY=~/.workbuddy/binaries/python/envs/default/bin/python
SC="$HOME/.workbuddy/skills/wxchannels-auto-draft/scripts/upload_draft.py"
$PY "$SC" --login弹窗 → 用要发视频的那个微信号扫 → 看到 ✅ 已登录 就完事。
第 3 步 · 以后每次只要说一句话
「把这条片子传视频号」/「发视频号」/「存草稿箱」
助手会自动:上传视频 → 填标题话题 → 传封面(三步确认)→ 把位置改成「不显示位置」→ 保存草稿 → 按接口核验 → 回报结果。它不会点发表,最后那一下你自己在手机上点。
一、它到底干什么(边界写死)
| 做 | 不做 |
|---|---|
| 打开视频号助手,替你点上传视频 | ❌ 不点「发表」/「发布」 |
| 传封面(含三步确认) | ❌ 不要账号密码 |
| 填标题 / 正文 / 话题 / 短标题 | ❌ 不逆向接口、不签名、不改前端 |
| 把「位置」改成「不显示位置」 | ❌ 不动你其他技能、不改系统配置 |
| 点「保存草稿」并用接口核验 | ❌ 不批量代替你发多条 |
二、首次安装(只做一次,约 3 分钟)
第 1 步:装依赖
~/.workbuddy/binaries/python/envs/default/bin/pip install playwrightChromium 内核优先复用本机缓存;没有就装一次:
~/.workbuddy/binaries/python/envs/default/bin/python -m playwright install chromium第 2 步:扫码登录(只需一次)
PY=~/.workbuddy/binaries/python/envs/default/bin/python
SC="$HOME/.workbuddy/skills/wxchannels-auto-draft/scripts/upload_draft.py"
$PY "$SC" --login会弹出浏览器窗口 → 用要发布视频的那个微信号扫码 → 看到 ✅ 登录态有效 即完成。
🔴 一个
--profile名字 = 一个视频号账号的登录态。默认
weixin-channels。换账号就换名字:--profile 我的另一个号,首次会重新弹码,不会串号。
第 3 步:自检
$PY "$SC" --list能打印出草稿箱里现有草稿(含 videoPlayLen 时长、city 定位)就是装好了。
完整对话脚本见 references/first-run-dialog.md —— 首次装机时照着说即可。
三、什么时候触发(做完视频之后)
3.1 触发时机(两条任一即可)
- 用户说了动词:「传视频号」「发视频号」「存草稿箱」「帮我把这条发上去」……
- 片子刚交付完 + 用户点头:成片已经发到对话框给用户看过,用户说「可以」「传吧」「发吧」。
3.2 🔴 顺序铁律:先给看,再上传
出片 → 把成片发到对话框让用户看 → 等一句「可以」→ 才跑上传用户没明确说「传」时,只问一句,绝不擅自上传:
成片好了,要先存进视频号草稿箱吗?说「传」我就传(只存草稿,不发表)。
3.3 参数从哪来(不要每次重问)
按顺序找,找到就用,不要反问用户:
- 本期交付目录里的
发布标题与话题.txt/发布信息.txt - 上一轮对话里用户已经说过的标题 / 话题
- 都没有 → 才问一句:「标题和话题给我一下,短标题我按 6~16 字帮你压。」
字段对应关系:
| 视频号字段 | 从哪取 | 注意 |
|---|---|---|
| 标题 | 发布标题第一行 | 一行就够,长了会被折叠 |
| 正文 | 脚本备注 / 简介 | 可空 |
| 话题 | #标签 #标签 | 空格分隔 |
| 短标题 | 从标题压出来 | 6~16 个字符,英文数字各算 1 个 |
四、标准执行(一条命令)
PY=~/.workbuddy/binaries/python/envs/default/bin/python
SC="$HOME/.workbuddy/skills/wxchannels-auto-draft/scripts/upload_draft.py"
$PY "$SC"
--video "…/交付/成片.mp4"
--cover "…/交付/封面.png"
--title "只要装这 4 个技能,WorkBuddy 几分钟出片"
--desc "分镜、画面、配音、字幕,四步串成一条流水线。"
--tags "#AI工具 #WorkBuddy #效率"
--short "4 个技能出片"或者用 JSON(Agent 调用推荐,字段少写错):
$PY "$SC" --json publish-info.json # 模板见 templates/publish-info.json| 参数 | 说明 |
|---|---|
--video | 成片路径(必填) |
--cover | 封面图;不给就用视频首帧(强烈建议给) |
--title / --desc / --tags | 标题 / 正文 / 话题 |
--short | 短标题,6~16 字符,脚本会先拦 |
--json | 从 JSON 读全部参数 |
--login | 只扫码 |
--list | 只列草稿箱(含时长、定位) |
--verify-only | 只核验有没有存上 |
--probe | 到创作页打印页面结构,不提交(改版排查用) |
--profile | 账号标识,默认 weixin-channels |
--headless | 无头(首次登录别用) |
--keep-open | 结束保留窗口,人工兜底 |
退出码:0 成功|2 参数错|3 缺依赖|6 未登录|7 进不了创作页|8 上传失败|9 等转码超时|10 没点中保存|11 接口核验未通过
脚本最后一行是 RESULT_JSON: {...},Agent 直接读这行判断成败,不要靠猜日志。
五、🔴 八条铁律(违反必失败,逐条都是真金白银)
- 绝不点「发表」
脚本只找「保存草稿」类按钮。发布是人来决定的。
- 封面必须走三步
① 点封面缩略图「编辑」→ ② 点弹窗左下虚线框「上传封面」→ ③ 点右下角橙色「确认」。漏第③步封面不生效,但接口照样返回成功、日志照样报"已提交" —— 极具欺骗性。脚本已加硬校验:弹窗没关掉就整轮重试。
- 只能点真实鼠标 / locator
视频号前端校验 isTrusted,element.click()、dispatchEvent 会被静默忽略。关键按钮一律 page.mouse.click() 或 locator.click()。
- 必须等视频真的传完
创作器表单渲染得很早(进度条才 33%),此时封面上传口还不可用。判据:取消上传/上传中 消失 + 封面区生成中 消失 + 「发表」按钮出现。
- 位置必须清成「不显示位置」
创作页默认带出账号所在地区(哪怕从没填过)。必须按元素中心真实鼠标点开下拉,再点「不显示位置」;读 textContent 判断会永远误判成已清空。
- 短标题 6~16 个字符,两头都卡
少了红字「标题至少6个字」,多了红字「标题超过16字限制」。两种都表现为「保存草稿」点了毫无反应,看起来像按钮点不到,其实是表单校验没过。
- 核验只认接口
get_draft_list 返回里的 videoPlayLen(时长)+ 标题 + city(定位)才是硬证据。页面文字核验会误报(草稿列表是异步渲染,文本读早了就是空)。
- 账号按 profile 隔离
一份登录态目录 = 一个视频号账号。要换号就换 --profile 名,别共用目录。
六、交付话术(跑完给用户看什么)
脚本成功后,这样回报(别只丢一堆日志):
✅ 已存进视频号草稿箱(只存草稿,没发表)
· 标题:xxx
· 短标题:xxx(n 字符)
· 封面:已上传 ✔
· 位置:不显示位置 ✔
· 接口核验:草稿箱共 N 条,本条时长 xx.x 秒 ✔
下一步:手机视频号助手 → 内容管理 → 草稿箱 → 点开这条 → 点「发表」失败时说清哪一步、给一条可执行建议,不甩原始报错:
| 情况 | 怎么跟用户说 |
|---|---|
| 短标题长度不对 | 「短标题要 6~16 个字,我压成『xxx』再试」 |
| 没登录 | 「需要你扫码一次,窗口已经弹出,用要发的那个号扫」 |
| 保存没反馈 | 「按钮没点中,窗口我留着了,你手点一下『保存草稿』就行」 |
| 核验没过 | 「草稿箱没读到这条,先别发,我重跑一次核验」 |
七、排错速查
| 现象 | 原因 / 处理 |
|---|---|
| 提示要扫码 | 登录态过期 → --login |
set_input_files 超时 | 创作器是 OOPIF,locator 解析不到 → 用 frame.evaluate |
| 封面点了没反应 | 没用真实鼠标,或点的是文字标签不是父级虚线框 |
| 草稿箱里封面还是首帧 | 「确认」那步漏了(铁律 2) |
| 「保存草稿」点了没存上 | 短标题长度不对(铁律 6)或只发了键盘事件(铁律 3) |
| 草稿带了定位 | 位置没清成「不显示位置」(铁律 5) |
Executable doesn't exist at .../chromium-XXXX/... | 脚本已自愈(自动回退缓存内核,日志打「内核回退」);也可 WX_DRAFT_CHROME=<内核绝对路径> 强制指定 |
页面报 ERR_CONNECTION_CLOSED | 站点抖动,重试即可 |
| 元素全找不到 | 站点改版 → --probe 看真实结构,再改选择器 |
更多细节见 references/tech-breakdown.md(机制 + 踩坑时间线)与 references/troubleshooting.md。
八、文件结构
wxchannels-auto-draft/
├── SKILL.md # 本文件(技能定义 + 执行流程)
├── README.md # 人读的安装说明
├── scripts/
│ └── upload_draft.py # 主脚本:上传 / 核验 / 列草稿,可独立运行
├── references/
│ ├── first-run-dialog.md # 首次安装话术 + 做完视频后的触发对话(照读)
│ ├── tech-breakdown.md # 六个核心机制 + 踩坑时间线
│ └── troubleshooting.md # 按现象查原因
└── templates/
└── publish-info.json # 参数模板,复制改值即可技术来源:拆解自本机 Easel(~/WorkBuddy/Easel)的 web_publisher.py 通用网页发布框架,按「只存草稿、不发布」改造,并补齐封面三步确认、位置清空、接口级核验三条链路。作者:智灵影视AIX(吉老师)。