---
name: wechat
description: "微信视频号与公众号调研 + 视频下载。使用场景：微信上什么火/搜微信/视频号达人/公众号文章/软文调研/微信选品，或下载视频号/微信视频/weixin.qq.com/sph/ 链接、查看视频号信息/作者/话题/点赞。使用 scout wechat 命令。"
version: "2.0.0"
owner_repo: Optima-Chat/optima-scout
---

# 微信 - 视频号 & 公众号调研全指南

**开始前先加载 scout-intent skill 执行意图确认。** 平台已确定为微信，只需确认目的（下载视频 / 调研选品 / 达人评估 / 软文分析）和关键词、目标账号。

所有命令使用 `scout wechat` 前缀，覆盖**视频号（Channels）+ 公众号（MP）**两个 surface，共 15 个子命令。

---

## 快速选择：我该用哪个命令？

| 你的目标 | 命令 | 说明 |
|---------|------|------|
| **搜索发现**（视频/文章/账号） | `search "关键词"` | 一次搜三类，是三条调研链的公共入口 |
| 下载视频号视频（拿可播放 mp4） | `fetch <url或exportId>` | 完整 pipeline，消耗解密/S3 资源 |
| 只看视频号视频信息，不下载 | `metadata <url或exportId>` | 省资源，先看再决定要不要 fetch |
| 看视频号作品评论 | `video-comments <objectId>` | objectId ≠ exportId，见下方「ID 桥接」 |
| 拿视频号作品分享链接 | `share-url <objectId>` | 同上 |
| 看视频号达人主页 | `creator <username>` | 无粉丝数字段（平台不公开） |
| 看达人发了什么作品 | `creator-videos <username>` | 达人评估的核心数据来源 |
| 看达人直播历史 | `creator-lives <username>` | |
| 在达人主页内搜索作品 | `channel-search <username> <keyword>` | |
| 看公众号文章详情 | `article <url>` | url 用 mp.weixin.qq.com 完整链接 |
| 看文章阅读/点赞/分享数据 | `article-stats <url>` | 软文效果评估用这个 |
| 看文章评论 | `article-comments <url>` | |
| 展开某条评论的楼中楼回复 | `comment-replies <url> <contentId>` | contentId 来自 article-comments |
| 看公众号主页信息 | `mp-account <username>` | 只有 nickname 一个字段 |
| 看公众号历史发文列表 | `mp-articles <username>` | |

---

## 典型场景

当用户说：
- "微信上什么火" / "搜微信 XX" / "视频号搜一下 XX" → `scout wechat search "XX"`（默认 `--type all`）
- "微信选品" / "帮我看看 XX 在微信上的调研" → `search` 起步，视情况分流到视频/达人/文章链
- "视频号达人" / "看看这个达人值不值" + username → 走**达人深挖链**（`creator` → `creator-videos` → 评估口径见下）
- "公众号文章" / "软文调研" / "这篇文章写得怎么样" + 链接 → 走**文章深挖链**（`article` → `article-stats` → `article-comments`）
- "下载这个视频号" + 链接 → `scout wechat fetch <url>`
- "看看这个视频号的信息" / "这个视频号谁发的" → `scout wechat metadata <url>`
- 用户直接贴 `weixin.qq.com/sph/xxx` 链接，无其他说明 → 默认走 `metadata`（避免误烧额度；用户明确说"下载"/"保存"才走 `fetch`）

---

## 重要：输出格式与数据落地（先看这条，否则你会以为"没数据"）

多数子命令 `--format json`（默认值）的输出是**精简摘要**，不是完整数据：

- `fetch` / `metadata` / `share-url`：json 模式下**只打印 `command` 和 `cache_file`，正文数据完全不在 stdout 里**
- `creator-videos` / `creator-lives` / `channel-search` / `video-comments` / `article-comments` / `comment-replies` / `mp-articles`：json 模式只给 `count` / `hasMore` 等计数字段，**列表本身不在 stdout 里**
- `search`：json 模式给的是**前 10 条**（`items.slice(0, 10)`），完整结果数量看 `total`
- `creator`：json 模式给 `nickname / ipRegion / originalCount`，**不含 `signature / authInfo`**
- `article`：json 模式给 `title / author / publishTime`，**不含正文 `contentText`**
- `article-stats` / `mp-account`：json 模式字段已经是全部（这两个命令本来字段就少）

拿完整数据两个途径，任选：
1. 加 **`--format text`**：大部分列表类命令的 text 输出会把关键字段（如 `id`、`contentId`）直接印在屏幕上，能拼后续命令参数
2. **Read 返回的 `cache_file`**：所有命令（包括 json 模式）都会把完整响应写进本地缓存文件并在输出里给出绝对路径，`cache_file` 指向的 JSON 里 `data` 字段是完整原始数据

**判断该用哪种**：只是要给用户念数据 → text 够用；要把某个 ID 接到下一条命令 → 优先看 text 有没有印出来，没有就读 cache_file。

---

## 生态特性 - 如实告知（必须主动告诉用户，不要含糊带过）

1. **视频号没有公开粉丝数和播放量**——这是平台特性，不是我们抓不到。`creator` 主页信息里没有粉丝数字段，`creator-videos` 里也没有播放量字段。评估一个达人只能靠：
   - **近期作品的赞/评/转**（建议看**中位数**而不是单条最高值，避免被一条爆款带偏）
   - **认证信息**（`creator` 返回的 `authInfo`）
   - **评论区质量**（用 `video-comments` 抽查几条，看真实互动还是刷量水军）

   **这个评估口径必须向用户说明**，不要把"近期作品赞评转中位数"包装成"粉丝画像"或类似说法。

2. **公众号账号信息只有 `nickname`**：`mp-account` 命令目前拿不到简介、认证、粉丝量等任何字段，上游本来就不返回。不要暗示还有更多信息可挖。

3. **搜一搜垂类**：`--type` 支持 `all / video / article / account` 且实测都有数据；`live_stream / news` 取值不做参数校验但**实测无数据**，不要引导用户往这两个方向试。

4. **search 的 `account` 类型结果目前拿不到可复用的 username/id**——只有 `title / author / likes`，没有能直接喂给 `creator` / `mp-account` 的标识符。如果用户想深挖 search 结果里出现的某个账号，需要请用户提供该账号的主页链接或 id，不能从搜索结果反推。

---

## 计费提醒

**每个子命令调用一次就计一次上游 API 费用**（TikHub 等）。三条调研链单独一步不贵，但组合深挖（比如达人深挖链一次跑 4 个命令，或文章链里对每条评论都展开楼中楼）调用量会迅速累积。深挖前，先想清楚这条链要跑几步、要不要对每一项都深挖，跟用户确认范围（比如"要不要每个视频都看评论，还是先看点赞排名前 3 的"），不要无差别地把整条链跑满。

---

## URL 解析

### 视频号链接

视频号视频有三种形态，**都直接传给 `fetch`/`metadata` 即可**（命令内置正则解析，不需要自己拆）：

| URL 形态 | 示例 |
|---------|------|
| 短链 | `https://weixin.qq.com/sph/Azn5HYOeb0` |
| 完整链 | `https://channels.weixin.qq.com/finder-preview/pages/sph?id=Azn5HYOeb0` |
| 裸 exportId（10 位短码） | `Azn5HYOeb0` |

```bash
scout wechat metadata https://weixin.qq.com/sph/Azn5HYOeb0
scout wechat metadata Azn5HYOeb0
```

### 公众号文章链接

`article` / `article-stats` / `article-comments` 都直接传完整 `mp.weixin.qq.com` 链接，不需要提取 ID。`comment-replies` 除了 URL 还需要 `contentId`（来自 `article-comments` 的返回）。

**不要用 WebFetch 抓视频号或公众号页面**——视频号视频是加密的，WebFetch 拿不到播放地址；公众号文章走 WebFetch 容易被反爬拦截、且拿不到互动数据，一律走 `scout wechat` 命令。

---

## 三条调研链（核心玩法）

这是这个 skill 最常用的组合方式：`search` 是公共入口，三条链分别往视频、达人、文章三个方向深挖。

### 链 1：视频深挖 —— search（type=video）→ exportId → metadata/fetch → video-comments/share-url

**场景示例**：用户问"视频号上最近讲 XX 的视频火不火，评论区怎么说"

```bash
# 1. 搜视频类结果，拿 exportId
scout wechat search "XX" --type video --sort hot

# 2. 挑一个 exportId，先看 metadata（不想下载就不用 fetch）
scout wechat metadata <exportId> --format text

# 3. 如果要下载视频文件才用 fetch
scout wechat fetch <exportId>
```

**ID 桥接（重要）**：`video-comments` / `share-url` 要的是 `objectId`，**不是** `exportId`——两者是不同的 ID 空间。`exportId` 是 10 位短分享码；`objectId` 是长数字字符串（形如 "14965414974020655263"），与 `search` 结果里的 docID（格式 `finderobjv...` 或 `finderacctv...`）是不同的概念，**不能互用**。如果在 search 的 cache_file 里看到 `finderobjv...` 形态的值，那是 docID，绝不能当 `objectId` 传。`metadata`/`fetch` 的输出（无论 text 还是 json）都不会把 `objectId` 打印在屏幕上，要拿到它必须 **Read 返回的 `cache_file`**，取 JSON 里的 `data.id`（`metadata` 命令）或 `data.metadata.id`（`fetch` 命令）字段：

```bash
scout wechat video-comments <objectId来自cache_file的data.id>
scout wechat share-url <objectId>
```

> 更省事的替代路径：如果这条视频是从**达人深挖链**（下面）里的 `creator-videos` 拿到的，它的 **text 输出会直接印出 `id=...`**（这是真 objectId），可以直接拿来喂 `video-comments`/`share-url`，不用再走 exportId → cache_file 这一步。如果是从 `channel-search` 拿到的，其 `id` 是 exportId，需先 `scout wechat metadata <exportId>` 从 cache_file 的 data.id 拿 objectId 再喂 video-comments/share-url。

### 链 2：达人深挖 —— username → creator/creator-videos/creator-lives/channel-search

**场景示例**：用户给了一个视频号 id，问"这个达人值不值得合作/投广告"

```bash
# 1. 主页信息（认证、简介、原创数——没有粉丝数，如实告知用户）
scout wechat creator <username>

# 2. 近期作品，看赞/评/转（建议看中位数，别被单条爆款带偏）
scout wechat creator-videos <username> --format text

# 3. 有直播的话，看直播历史侧面验证活跃度
scout wechat creator-lives <username>

# 4. 想看这个达人某个品类的历史内容，主页内搜索
scout wechat channel-search <username> "关键词"
```

评估结论要包含：近期作品赞评转中位数 + 认证信息 + （抽查 `video-comments` 后的）评论区质量判断，三者缺一不可，并向用户说明"视频号没有公开粉丝数/播放量，以上是唯一可行的评估口径"。

**username 从哪来**：只能是用户直接提供的视频号 id/主页链接，或已经确认归属的已知账号——search 结果里的 `account` 类型和视频作者昵称都不提供可复用的 username（见上方生态特性第 4 条），不要凭昵称去猜。

### 链 3：文章深挖 —— search（type=article）→ docUrl → article/article-stats/article-comments →（replyCount>0 时）comment-replies

**场景示例**：用户问"这篇公众号软文写得怎么样，读者反馈怎样"

```bash
# 1. 搜文章类结果，拿 docUrl
scout wechat search "XX" --type article

# 2. 看文章内容
scout wechat article <docUrl>

# 3. 看阅读/点赞/分享等效果数据（软文效果评估的核心）
scout wechat article-stats <docUrl>

# 4. 看评论，text 模式会标注哪些评论有楼中楼可展开
scout wechat article-comments <docUrl> --format text
```

`article-comments` 的 text 输出会在有回复的评论后面标注 `(↳N 条回复，可用 comment-replies 展开)` 并带上 `contentId`；只对 `replyCount > 0` 的评论才需要展开：

```bash
scout wechat comment-replies <docUrl> <contentId>
```

不要对每一条评论都无脑展开楼中楼——先看哪几条评论互动最高、`replyCount` 最大，挑重点展开（呼应上面的计费提醒）。

---

## 公众号主页与历史文章

不属于三条链但常配合链 3 使用，用来判断"这篇软文是不是这个号的一贯风格"：

```bash
scout wechat mp-account <username>       # 只有 nickname，别指望更多字段
scout wechat mp-articles <username>      # 历史发文列表，--offset 翻页
```

---

## 限制与注意事项（视频号下载相关，来自原有经验）

1. **画质**：`fetch` 目前只能拿低清版本（约 576×1024，1-3 MB），公开 API 不返回高清版
2. **每次消费额度**：`fetch`/`metadata` 每次调用都计一次上游费用，先 `metadata` 看看有没有必要再 `fetch`
3. **依赖 decrypt server**：`fetch` 的解密步骤依赖外部部署服务，返回 `503` 说明 backend 没配好，应告知用户"视频号下载服务暂未配置，请联系 SRE"，不要重试
4. **错误码语义**：`400` URL 解析失败（链接不对）／`502` 上游波动（可重试 1 次）／`503` 服务未配置（不要重试）／`500` 其它内部异常
5. **`videoUrl` 是一次性签名链接**：`fetch` 拿到后立刻返回给当前用户即可，不要缓存转发给第三方系统，链接会过期
6. **scope 限定**：这个 skill 覆盖视频号 + 公众号，不处理小程序/朋友圈

---

## 跨平台联动

```bash
# 1. 微信发现趋势/软文
scout wechat search "产品关键词" --type article

# 2. 小红书/抖音验证同一话题热度
scout xhs search-notes "产品关键词"
scout douyin search-videos "产品关键词"

# 3. Amazon 验证海外市场需求
scout search "product keyword"

# 4. 1688 找供应商
scout supplier-search "产品中文名"
```

---

## 重要提醒

1. **json 默认输出是摘要，不是全量数据**：要拿列表内容或内部 ID，用 `--format text` 或 Read `cache_file`（见上方专门章节）
2. **exportId ≠ objectId**：视频深挖链里两者不能互用，桥接方式见「链 1」
3. **视频号没有公开粉丝数/播放量**：达人评估口径 = 近期作品赞评转中位数 + 认证 + 评论区质量，必须向用户说明这是平台限制而非我们的抓取能力问题
4. **公众号账号信息只有 nickname**：不要暗示 `mp-account` 还能挖出简介/认证等字段
5. **搜一搜垂类**：`all/video/article/account` 有数据，`live_stream/news` 实测无数据，不要引导用户用
6. **每次调用都计费**：组合链深挖前先跟用户/自己确认范围，不要无差别跑满整条链
7. **不要用 WebFetch** 抓视频号或公众号页面，一律走 `scout wechat` 命令
