SuperAPI AI Directory

weixin-channels-publish

Marketing & growth

View repository

Updated 10-15 11:24

About this skill

WeChat Channels Assistant — Video Publishing

Overview

Through browser automation (profile=openclaw), control the Channels Assistant web version (channels.weixin.qq.com) to complete the full closed loop from login to video publishing.

Prerequisites

  1. Browser already started:browser start profile=openclaw
  2. The video file to be published is ready (usually output by the video-merge-send skill after merging)
  3. Video description copy (can be automatically generated by AI based on the storyboard script)

Complete Process

Step 1: Navigate to Channels Assistant

browser navigate url=https://channels.weixin.qq.com

Wait for the page to finish loading (2-3 seconds).

Step 2: Login Detection

Determine the login status based on the URL and page content:

Judgment method:

  • Not logged in: URL redirects to channels.weixin.qq.com/login.html, and the page displays a QR code
  • Logged in: URL is channels.weixin.qq.com/platform/post/list or another non-login page, with a navigation menu on the left
() => {
  return {
    url: window.location.href,
    isLoginPage: window.location.pathname.includes('login'),
    title: document.title
  };
}

Logged in → skip to Step 4

Not logged in → continue to Step 3

Step 3: QR Code Login

3.1 Capture the QR Code

The QR code on the login page is located in a iframe .

Method A: Directly screenshot the entire page(recommended, simplest)

browser screenshot profile=openclaw

The screenshot will include the QR code area on the right, and the user can scan it directly with WeChat.

Method B: Locate the QR code iframe and screenshot it

// 二维码在 iframe 内,结构:
// iframe → generic → img (二维码图片)
// snapshot 中 ref 前缀 f8 表示 iframe 内的元素
// 二维码图片 ref 类似 f8e7

3.2 Send the QR code screenshot to the user

message action=send channel=feishu message="📱 请用微信扫码登录视频号助手" filePath=<截图路径>

After sending the screenshot, inform the user:

"Please open WeChat → Scan → scan the QR code on the screen, then confirm the login on your phone."

3.3 Wait for login to complete

Poll to detect the login status (check every 5 seconds, wait up to 2 minutes):

() => {
  return {
    url: window.location.href,
    isLoginPage: window.location.pathname.includes('login'),
    title: document.title
  };
}

Login success indicators:

  • URL no longer contains login
  • The page redirects to the management backend (usually /platform/post/list)

QR Code Expiration Handling:

  • If the text "QR code has expired, click to refresh" appears in the iframe (in the snapshot, ref=f8e16)
  • Click the refresh link, take a new screenshot and send it
browser act kind=click ref=f8e16  # "二维码已过期,点击刷新"

3.4 Login State Persistence

After a successful login, the cookie is automatically saved in:

~/.openclaw/browser/openclaw/user-data

The next time the browser is opened, the login will be maintained automatically.

Step 4: Navigate to the Publish Video page

After logging in, navigate to the "Publish Video" page. There are two ways:

Method A: Direct URL navigation(recommended)

browser navigate url=https://channels.weixin.qq.com/platform/post/create

Method B: Navigate through the menu

  1. snapshot to find the left-side menu
  2. Click "Content Management" to expand the submenu
  3. Click "Video" to enter the video list
  4. Click the "Publish Video" button
# 依次查找并点击:
# 1. "内容管理" 菜单项
# 2. "视频" 子菜单
# 3. "发表视频" 按钮

Step 5: Upload the video file

The Publish Video page will have anupload area(usually a drag-and-drop area + a click-to-upload button).

5.1 Find the upload entry point

Take a snapshot to find upload-related elements:

  • Usually there is a "Choose File" or "Click to Upload" button
  • Or a input[type="file"] hidden element
// 查找文件上传 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 Upload the video

browser upload selector="input[type='file']" paths=["<视频文件路径>"]

Or use the specific selector found in the snapshot.

Video file pathUsually:

  • Single shot:/tmp/openclaw/jimeng-videos/01_xxx.mp4
  • After merging:/tmp/openclaw/jimeng-videos/final_merged.mp4

5.3 Wait for the upload to complete

Video uploads take time, depending on file size.

Poll to check upload progress (take a screenshot/snapshot every 5 seconds):

  • Uploading: a progress bar or percentage is displayed
  • Upload complete: the progress disappears and a video preview thumbnail is displayed
() => {
  // 检查是否有上传进度元素
  const progress = document.querySelector('[class*="progress"]');
  const percent = document.querySelector('[class*="percent"]');
  return {
    hasProgress: !!progress,
    progressText: progress?.textContent || '',
    percentText: percent?.textContent || ''
  };
}

Step 6: Fill in video information

6.1 Add description (body description)

Find the description input area and fill in the viral copy.

# snapshot 找到描述文本框(通常是 textarea 或 contenteditable div)
browser act kind=click ref=<描述输入框_ref>
browser act kind=type text="<描述文案>"

Description copy generation rules:

Automatically generate a viral description based on the video content (the theme of the storyboard script):

  1. Hook opening: Use a question or pain point to attract attention
  2. Core value: Explain in one sentence what the video is about
  3. Hashtags: Add 3-5 related topics #标签
  4. Call to action: Guide likes/follows/saves

Example template:

🔥 [痛点问题]?看完这条视频你就懂了!

[一句话核心价值]

💡 关键要点:
1. [要点1]
2. [要点2]
3. [要点3]

👇 觉得有用就点赞收藏,关注我学更多干货!

#企业数字化 #创业干货 #门店经营 #中小企业 #田泽湘

6.2 Fill in the short title (6-16 characters)

Find the short title input box and fill it in. The short title is displayed on the video cover and must be 6-16 characters。

# snapshot 找到短标题输入框
browser act kind=click ref=<短标题输入框_ref>
browser act kind=type text="<短标题>"

Short title generation rules:

  • 6-16 characters (Chinese counts as 1 character)
  • Short and powerful, summarizing the core of the video
  • With numbers, it is more attractive to click
  • Example:3万搞定门店数字化、利润翻倍的3个秘诀、老板必学的获客公式

6.3 Other optional settings

Depending on the page, there may also be:

  • Cover selection: Automatically captured by default, or you can upload a custom cover
  • Location: Optionally add a location
  • Collection: Optionally add to an existing collection
  • Scheduled publishing: You can set the publishing time
  • Who can view: Public/Private/Partially visible

Generally, keep the default unless the user specifically specifies otherwise.

Step 7: Screenshot confirmation

Before publishing, take a screenshot of the entire page and send it to the user for confirmation:

browser screenshot profile=openclaw
message action=send channel=feishu message="📋 视频已准备好,请确认以下信息后告诉我:\n1️⃣ 立即发布\n2️⃣ 保存草稿\n3️⃣ 修改内容\n\n描述:[已填写的描述]\n短标题:[已填写的短标题]" filePath=<截图路径>

Wait for the user's reply instruction.

Step 8: Execute publish / save draft

Execute according to the user's instruction:

Publish

# snapshot 找到"发表"按钮
browser act kind=click ref=<发表按钮_ref>

After publishing, a confirmation pop-up may appear; click confirm.

Take a screenshot to confirm successful publishing:

browser screenshot profile=openclaw
message action=send channel=feishu message="✅ 视频已成功发布到视频号!" filePath=<截图路径>

Save draft

# snapshot 找到"存草稿"按钮
browser act kind=click ref=<存草稿按钮_ref>

Default configuration

Maintained in TOOLS.md :

### 视频号助手 (weixin-channels-publish)

- **默认话题标签**: #企业数字化 #创业干货 #门店经营 #中小企业 #田泽湘
- **默认描述模板**: 爆款描述(hook+价值+标签+CTA)
- **短标题风格**: 数字+痛点,6-16字

Key technical details

Element Description
Browser profile openclaw
Login page URL https://channels.weixin.qq.com/login.html
Backend homepage URL https://channels.weixin.qq.com/platform/post/list
Publish video URL https://channels.weixin.qq.com/platform/post/create
QR code location Inside the iframe on the right side of the login page (img element)
Login method WeChat scan code (no account and password login option)
Login state storage ~/.openclaw/browser/openclaw/user-data(cookie automatically persisted)
Video upload limits Maximum 4GB, duration 1 second to 60 minutes
Supported formats mp4, mov, avi, wmv, flv, mkv, webm
Short title requirements 6-16 characters
Description length limit Maximum 1000 characters

Complete workflow (end-to-end)

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: 发布/草稿

FAQ

Problem Solution
QR code expired Click the "QR code expired, click to refresh" link, take a new screenshot and send it to the user
No redirect after scanning Confirm that the confirmation has been tapped on the phone, wait 5-10 seconds, then refresh the page
Upload progress stuck Check whether the file size exceeds the limit (4GB) and whether the network is stable
Cannot find the upload button Take a new snapshot; WeChat Channels Assistant may have been redesigned, use JS to search input[type="file"]
Short title character count does not match Strictly control 6-16 characters; Chinese counts as 1 character
Publish button grayed out/disabled Check whether all required fields have been filled in (description, short title, video upload complete)
After logging in, it jumps back to the login page The cookie may have expired; you need to log in again by scanning the QR code
Description blocked for containing sensitive words Avoid absolute wording such as "best", "number one", and "guaranteed profit"

Precautions

  1. Compliance first: Avoid exaggerated promises and absolute wording in the description ("best", "guaranteed", "100%")
  2. User confirmation required before publishing: Never click publish automatically; you must take a screenshot for the user to confirm
  3. Draft priority: If the user hesitates, save as a draft by default instead of publishing
  4. Each snapshot must reacquire the ref: The WeChat Channels Assistant SPA page re-renders frequently