# Weixin Channels Publish

> 微信视频号助手网页版视频发布全流程。通过浏览器自动化操控 channels.weixin.qq.com 完成登录检测、扫码登录、上传视频、填写描述和短标题、截图确认后发布或保存草稿。触发场景：用户需要发布视频到视频号、视频号发布、视频号上传视频、发视频号。

- Skill: `aaaaqwq/weixin-channels-publish` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aaaaqwq/weixin-channels-publish`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aaaaqwq/weixin-channels-publish/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aAAaqwq (https://skillmd.com/u/aaaaqwq)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/aaaaqwq/weixin-channels-publish

---


# 微信视频号助手 — 视频发布

## 概述

通过浏览器自动化（profile=openclaw）操控视频号助手网页版（channels.weixin.qq.com），完成从登录到视频发布的全流程闭环。

## 前置条件

1. 浏览器已启动：`browser start profile=openclaw`
2. 待发布的视频文件已准备好（通常由 video-merge-send skill 合并输出）
3. 视频描述文案（可由 AI 根据分镜脚本自动生成）

## 完整流程

### Step 1：导航到视频号助手

```
browser navigate url=https://channels.weixin.qq.com
```

等待页面加载完成（2-3秒）。

### Step 2：登录检测

根据 URL 和页面内容判断登录状态：

**判断方法：**
- **未登录**：URL 跳转到 `channels.weixin.qq.com/login.html`，页面显示二维码
- **已登录**：URL 为 `channels.weixin.qq.com/platform/post/list` 或其他非 login 页面，左侧有导航菜单

```javascript
() => {
  return {
    url: window.location.href,
    isLoginPage: window.location.pathname.includes('login'),
    title: document.title
  };
}
```

**已登录** → 跳到 Step 4

**未登录** → 继续 Step 3

### Step 3：扫码登录

#### 3.1 截取二维码

登录页面的二维码位于一个 **iframe** 中。

**方法A：直接截图整个页面**（推荐，最简单）

```
browser screenshot profile=openclaw
```

截图会包含右侧的二维码区域，用户可以直接用微信扫码。

**方法B：定位二维码 iframe 并截图**

```javascript
// 二维码在 iframe 内，结构：
// iframe → generic → img (二维码图片)
// snapshot 中 ref 前缀 f8 表示 iframe 内的元素
// 二维码图片 ref 类似 f8e7
```

#### 3.2 发送二维码截图给用户

```
message action=send channel=feishu message="📱 请用微信扫码登录视频号助手" filePath=<截图路径>
```

发送截图后告知用户：
> "请打开微信 → 扫一扫 → 扫描屏幕上的二维码，然后在手机上确认登录。"

#### 3.3 等待登录完成

轮询检测登录状态（每 5 秒检查一次，最多等待 2 分钟）：

```javascript
() => {
  return {
    url: window.location.href,
    isLoginPage: window.location.pathname.includes('login'),
    title: document.title
  };
}
```

**登录成功标志**：
- URL 不再包含 `login`
- 页面跳转到管理后台（通常是 `/platform/post/list`）

**二维码过期处理**：
- 如果 iframe 中出现"二维码已过期，点击刷新"文本（snapshot 中 `ref=f8e16`）
- 点击刷新链接，重新截图发送

```
browser act kind=click ref=f8e16  # "二维码已过期，点击刷新"
```

#### 3.4 登录态持久化

登录成功后，cookie 自动保存在：
```
~/.openclaw/browser/openclaw/user-data
```
下次打开浏览器自动保持登录。

### Step 4：导航到发表视频页面

登录后导航到"发表视频"页面。有两种方式：

**方式A：直接 URL 导航**（推荐）

```
browser navigate url=https://channels.weixin.qq.com/platform/post/create
```

**方式B：通过菜单导航**

1. snapshot 找到左侧菜单
2. 点击"内容管理"展开子菜单
3. 点击"视频"进入视频列表
4. 点击"发表视频"按钮

```
# 依次查找并点击：
# 1. "内容管理" 菜单项
# 2. "视频" 子菜单
# 3. "发表视频" 按钮
```

### Step 5：上传视频文件

发表视频页面会有一个**上传区域**（通常是拖拽区 + 点击上传按钮）。

#### 5.1 查找上传入口

做 snapshot 找到上传相关元素：
- 通常有"选择文件"或"点击上传"按钮
- 或者一个 `input[type="file"]` 隐藏元素

```javascript
// 查找文件上传 input
() => {
  const inputs = document.querySelectorAll('input[type="file"]');
  const results = [];
  inputs.forEach((input, i) => {
    results.push({
      index: i,
      accept: input.accept,
      id: input.id,
      className: input.className,
      parentClass: input.parentElement?.className
    });
  });
  return results;
}
```

#### 5.2 上传视频

```
browser upload selector="input[type='file']" paths=["<视频文件路径>"]
```

或使用 snapshot 中找到的具体选择器。

**视频文件路径**通常为：
- 单镜头：`/tmp/openclaw/jimeng-videos/01_xxx.mp4`
- 合并后：`/tmp/openclaw/jimeng-videos/final_merged.mp4`

#### 5.3 等待上传完成

视频上传需要时间，取决于文件大小。

轮询检查上传进度（每 5 秒截图/snapshot 一次）：
- 上传中：显示进度条或百分比
- 上传完成：进度消失，显示视频预览缩略图

```javascript
() => {
  // 检查是否有上传进度元素
  const progress = document.querySelector('[class*="progress"]');
  const percent = document.querySelector('[class*="percent"]');
  return {
    hasProgress: !!progress,
    progressText: progress?.textContent || '',
    percentText: percent?.textContent || ''
  };
}
```

### Step 6：填写视频信息

#### 6.1 添加描述（正文描述）

找到描述输入区域并填写爆火文案。

```
# snapshot 找到描述文本框（通常是 textarea 或 contenteditable div）
browser act kind=click ref=<描述输入框_ref>
browser act kind=type text="<描述文案>"
```

**描述文案生成规则：**

根据视频内容（分镜脚本的主题）自动生成爆款描述：

1. **Hook 开头**：用提问或痛点吸引注意
2. **核心价值**：一句话说清视频讲了什么
3. **话题标签**：加 3-5 个相关话题 `#标签`
4. **行动号召**：引导点赞/关注/收藏

**示例模板：**
```
🔥 [痛点问题]？看完这条视频你就懂了！

[一句话核心价值]

💡 关键要点：
1. [要点1]
2. [要点2]
3. [要点3]

👇 觉得有用就点赞收藏，关注我学更多干货！

#企业数字化 #创业干货 #门店经营 #中小企业 #田泽湘
```

#### 6.2 填写短标题（6-16个字符）

找到短标题输入框并填写。短标题显示在视频封面上，要求 **6-16个字符**。

```
# snapshot 找到短标题输入框
browser act kind=click ref=<短标题输入框_ref>
browser act kind=type text="<短标题>"
```

**短标题生成规则：**
- 6-16个字符（中文算1个字符）
- 简短有力，概括视频核心
- 带数字更吸引点击
- 示例：`3万搞定门店数字化`、`利润翻倍的3个秘诀`、`老板必学的获客公式`

#### 6.3 其他可选设置

根据页面情况，可能还有：
- **封面选择**：默认自动截取，或可上传自定义封面
- **位置**：可选添加定位
- **合集**：可选加入已有合集
- **定时发布**：可设置发布时间
- **谁可以看**：公开/私密/部分可见

一般保持默认即可，除非用户特别指定。

### Step 7：截图确认

发布前截图整个页面，发送给用户确认：

```
browser screenshot profile=openclaw
message action=send channel=feishu message="📋 视频已准备好，请确认以下信息后告诉我：\n1️⃣ 立即发布\n2️⃣ 保存草稿\n3️⃣ 修改内容\n\n描述：[已填写的描述]\n短标题：[已填写的短标题]" filePath=<截图路径>
```

等待用户回复指令。

### Step 8：执行发布 / 保存草稿

根据用户指令执行：

#### 发布

```
# snapshot 找到"发表"按钮
browser act kind=click ref=<发表按钮_ref>
```

发布后可能出现确认弹窗，点击确认。

截图确认发布成功：
```
browser screenshot profile=openclaw
message action=send channel=feishu message="✅ 视频已成功发布到视频号！" filePath=<截图路径>
```

#### 保存草稿

```
# snapshot 找到"存草稿"按钮
browser act kind=click ref=<存草稿按钮_ref>
```

## 默认配置

在 `TOOLS.md` 中维护：

```markdown
### 视频号助手 (weixin-channels-publish)

- **默认话题标签**: #企业数字化 #创业干货 #门店经营 #中小企业 #田泽湘
- **默认描述模板**: 爆款描述（hook+价值+标签+CTA）
- **短标题风格**: 数字+痛点，6-16字
```

## 关键技术细节

| 要素 | 说明 |
|------|------|
| 浏览器 profile | openclaw |
| 登录页 URL | `https://channels.weixin.qq.com/login.html` |
| 后台首页 URL | `https://channels.weixin.qq.com/platform/post/list` |
| 发表视频 URL | `https://channels.weixin.qq.com/platform/post/create` |
| 二维码位置 | 登录页右侧 iframe 内（`img` 元素） |
| 登录方式 | 微信扫码（无账号密码登录选项） |
| 登录态存储 | `~/.openclaw/browser/openclaw/user-data`（cookie 自动持久化） |
| 视频上传限制 | 最大 4GB，时长 1 秒 ~ 60 分钟 |
| 支持格式 | mp4, mov, avi, wmv, flv, mkv, webm |
| 短标题要求 | 6-16 个字符 |
| 描述长度限制 | 最多 1000 字 |

## 完整工作流（端到端）

```
1. jimeng-storyboard skill    → 生成分镜脚本
2. jimeng-digital-human skill → 逐镜头生成 + 下载视频
3. video-merge-send skill     → 合并视频片段
4. weixin-channels-publish    → 发布到视频号 ← 本 skill
   ├── Step 1-3: 登录检测/扫码
   ├── Step 4: 导航到发表页
   ├── Step 5: 上传合并视频
   ├── Step 6: 填写描述+短标题
   ├── Step 7: 截图确认
   └── Step 8: 发布/草稿
```

## 常见问题

| 问题 | 解决方案 |
|------|---------|
| 二维码过期 | 点击"二维码已过期，点击刷新"链接，重新截图发给用户 |
| 扫码后未跳转 | 确认手机端已点确认，等待 5-10 秒后刷新页面 |
| 上传进度卡住 | 检查文件大小是否超限（4GB），网络是否稳定 |
| 找不到上传按钮 | 重新 snapshot，视频号助手可能改版，用 JS 搜索 `input[type="file"]` |
| 短标题字数不符 | 严格控制 6-16 字符，中文算 1 个字符 |
| 发布按钮灰色/disabled | 检查必填项是否都已填写（描述、短标题、视频上传完成） |
| 登录后又跳回登录页 | cookie 可能过期，需重新扫码登录 |
| 描述含敏感词被拦截 | 避免使用"最"、"第一"、"保证赚"等绝对化用语 |

## 注意事项

1. **合规先行**：描述中避免夸大承诺和绝对化用语（"最好"、"保证"、"100%"）
2. **发布前必须用户确认**：永远不要自动点击发布，必须截图让用户确认
3. **草稿优先**：如果用户犹豫，默认保存草稿而非发布
4. **每个 snapshot 都要重新获取 ref**：视频号助手 SPA 页面会频繁重渲染

