wechat-channels-crawler · git:20260806.c36cc99 · 2026-08-06 · sha256 47d14aad8def40dd

wechat-channels-crawler git:20260806.c36cc99A

Immutable. This exact content is served forever at /api/v1/blob/47d14aad8def40dd.

---
name: wechat-channels-crawler
description: 视频号作品查询工具。根据用户输入的关键词搜索视频号热门作品,支持按最新、最多点赞、最多收藏和综合排序,结果以结构化表格展示。当用户想要查找视频号热门内容、搜索视频号爆款视频、查询视频号作品数据、了解某类内容在视频号的表现时使用。触发词包括:视频号搜索、视频号作品查询、视频号爆款、视频号热门、视频号内容搜索、搜视频号、微信视频号搜索。
---

# 视频号作品搜索

> 输入关键词 → 搜索视频号热门作品 → 结构化表格展示 → 支持订阅每日推送

***

## 简介

输入关键词即可查询视频号热门作品,以结构化表格呈现点赞、评论、转发、收藏等互动数据,帮你快速掌握各类内容在视频号的真实表现。

***

## 功能特性

| 功能         | 说明                                             |
|------------|------------------------------------------------|
| 🔍 关键词搜索 | 输入内容主题关键词,返回视频号平台相关作品列表              |
| 📊 多维排序   | 支持按综合、最新、最多点赞、最多收藏四种方式排序              |
| 📋 结构化表格  | 默认展示前 20 条,含作品标题、作者、发布时间、互动数据              |
| 🔔 订阅推送   | 查询后可订阅关键词,每天 10:00 自动查询并推送最新作品          |

***

## 使用方式

### CLI 命令行

```bash
# 基础用法:按综合排序搜索
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "美食"

# 按最新排序
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "美食" --sort 最新

# 按最多点赞排序
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "美食" --sort 最多点赞

# 翻页查询
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "美食" --page 2

# 输出到文件(推荐,避免 Windows GBK 乱码)
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "美食" -o result.json
```

### 参数说明

| 参数       | 说明                                              |
|----------|--------------------------------------------------|
| `keyword` | 搜索关键词(必需)                                   |
| `--sort`  | 排序方式:`综合` / `最新` / `最多点赞` / `最多收藏`,默认 `综合` |
| `--page`  | 页码,从 1 开始,默认 `1`                             |
| `--size`  | 每页条数,默认 `20`,最大 `50`                         |
| `--output` / `-o` | 输出到 JSON 文件(UTF-8),避免 shell 重定向乱码 |

### 依赖

本脚本仅使用 Python 标准库,无需安装额外依赖。

***

## Agent 集成指南

### 触发词

* 视频号搜索 / 视频号作品查询
* 视频号爆款 / 视频号热门
* 视频号内容搜索 / 搜视频号
* 微信视频号搜索

### 执行流程

### Step 1: 🔍 用户意图理解

**⚠️ 核心规则:优先提取细分方向词,而非泛化的大类词**

| 用户输入 | 处理方式 |
|---------|--------|
| 无赛道关键词("最近热门作品") | 关键词传空字符串 `""`,查询全站热门 |
| 有细分词("职场穿搭"、"减脂餐") | 直接搜索,无需拓展 |
| 有泛化词("穿搭"、"美食") | 执行拓展策略(Step 2) |

细分词判断原则:有场景/人群/风格/意图修饰 → 细分词;纯大类无修饰 → 泛化词。

**提取精确关键词**:从用户描述中提取细分领域词,而非泛化词。例:用户说“帮我找电影领域热门话题”且自称“小众电影、港台文化” → 搜索“小众电影、港台电影、电影乐评”,❌ 而非只搜“电影”。

**过滤触发钩子词**:用户输入中的「热门文章」「热门作品」「爆款」「热门内容」「查询」「搜索」等词是调用 Skill 的触发钩子,不属于搜索关键词,必须剥离。例:用户说“查询AI热门文章” → 关键词为「AI」,❌ 而非「AI热门文章」。

### Step 2: 🔄 泛化词拓展策略

**⚠️ 必须等待用户明确回复后再调用脚本!**

| 步骤 | 操作 |
|------|------|
| 1. 生成细分词 | 生成10个适中大小的细分词(趋势词、人群词、场景词、意图词各2-3个),禁止调用脚本 |
| 2. 等待用户回复 | 用户未回复时禁止调用脚本 |
| 3. 执行 | 回复「拓展」→ 10词以英文逗号连接,仅调用一次脚本;回复「不拓展」→ 搜索原关键词 |

输出示例:
```text
我识别到「中产」是较大的分类,推荐以下细分方向:
老钱,轻奢,品质生活,松弛感,高级感穿搭,体面,法式穿搭,律师,医生,品质家居
回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「中产」
```

### Step 3: 📡 调用 API 接口

```bash
python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py "<关键词>" [--sort 排序]
```

脚本返回 JSON:

```json
{
  "total": 10877641,
  "list": [
    {
      "title": "作品描述...",
      "author": "作者名称",
      "like_count": 3052000,
      "comment_count": 71000,
      "share_count": 510000,
      "collect_count": 147000,
      "work_url": "https://findermp.video.qq.com/...",
      "publish_time": "2026-07-22 14:12:18",
      "topics": ["美食", "三明治"],
      "duration": 57
    }
  ]
}
```

字段说明:

| 字段 | 说明 | 字段 | 说明 |
|-----|------|-----|------|
| title | 作品描述 | share_count | 转发数 |
| author | 作者名称 | collect_count | 收藏数 |
| like_count | 点赞数 | work_url | 视频链接 |
| comment_count | 评论数 | publish_time | 发布时间 |
| topics | 话题标签数组 | duration | 视频时长(秒) |

#### Step 4: 格式化输出表格

将返回数据渲染为 Markdown 表格,默认展示前 **20 条**:

```markdown
| # | 作品标题 | 作者 | 点赞数 | 评论数 | 转发数 | 收藏数 | 发布时间 |
|---|---------|------|-------|-------|-------|-------|---------|
| 1 | 标题文字 | 作者名 | 305.2w | 7.1w | 51.0w | 14.7w | 07-22 |
```

**数字格式化规则:**
- 小于 10000:直接展示原始数字(如 `320`)
- 大于等于 10000:使用 `x.xw` 格式(如 `1.2w` = 12000)

**发布时间格式化规则:**
- 取 `publish_time` 的月-日部分,格式为 `MM-DD`(如 `2026-07-22 14:12:18` → `07-22`)

**标题展示规则:**
- 标题以纯文本展示,不加链接
- 标题超过 30 字时截断并加 `...`

#### Step 5: 查看更多数据(当还能翻页时)

在表格下方提示:

> 当前为第x页,是否查看下一页数据?


使用 AskUserQuestion 询问:

```
question: "是否查看下一页数据?"
header: "下一页/翻页"
options:
  - label: "下一页/翻页"  description: "展示下一页数据(续接 #21 开始编号)"
  - label: "不用了"    description: "仅查看前 20 条"
```

- **查看全部**:从 #21 起续接展示,编号连续递增,完成后进入 Step 6
- **不用了**:直接进入 Step 6

#### Step 6: 提示订阅

表格展示完成后,使用 AskUserQuestion 询问:

```
question: "是否订阅该搜索?订阅后将每天自动推送相关视频号爆款作品数据。"
header: "订阅"
options:
  - label: "确认订阅"  description: "创建定时任务,每天 10:00 自动查询并推送"
  - label: "暂不订阅"  description: "仅查看本次数据,不创建定时任务"
```

#### Step 7: 创建定时任务(仅用户确认订阅时执行)

使用 `qoder_cron` 工具创建:

```json
{
  "action": "add",
  "job": {
    "name": "视频号爆款作品订阅 - <关键词>",
    "description": "每天查询视频号关键词 <关键词> 的爆款作品数据并推送",
    "schedule": {
      "kind": "cron",
      "expr": "0 10 * * *",
      "tz": "Asia/Shanghai"
    },
    "payload": {
      "kind": "agentTurn",
      "message": "请执行视频号作品查询:运行 python3 ~/.agents/skills/wechat-channels-crawler/scripts/search_wechat_channels.py \"<关键词>\",将结果整理为表格展示(表头:作品标题 | 作者 | 点赞数 | 评论数 | 转发数 | 收藏数 | 发布时间,展示前 20 条,数字 >= 10000 用 x.xw 格式,发布时间取 MM-DD 格式,标题纯文本不加链接,不展示总条数)。完成后将结果推送到当前对话。"
    },
    "missedRunPolicy": "skip"
  }
}
```

创建成功后告知用户:"已成功订阅关键词「<关键词>」的视频号爆款作品推送,每天 10:00 将自动查询最新数据并通知你。"

### 输出规范

#### ⛔ 强制规则

> **Agent 必须完整展示所有返回数据,禁止省略任何条目。数字必须按规则格式化,发布时间取 MM-DD 格式,标题纯文本不加链接,不展示总条数。**

***

## API 说明

### 认证方式

本技能需要 `REDFOX_API_KEY` 环境变量。

**获取方式:** 前往 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 注册并获取 API Key。

**配置方式:**

方案 1 — 配置文件(推荐):

```json
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
```

方案 2 — 终端环境变量:

```bash
export REDFOX_API_KEY="ak_xxxx..."
```

### 接口信息

| 项目 | 说明 |
|-----|------|
| 端点 | `POST https://redfox.hk/story/api/sphAllData/searchWork` |
| 认证 | Header `X-API-Key` |
| source 参数 | `视频号作品爬虫-GitHub` |

***

## 常见问题

**Q:搜索结果为空怎么办?**
A:可能是关键词过于小众或暂时缺少相关数据。尝试更换关键词重新搜索,如将"母婴好物"改为"母婴"。

**Q:排序方式有什么区别?**
A:「综合」按平台推荐权重排序,「最新」按发布时间倒序,「最多点赞」和「最多收藏」分别按对应互动数据排序。

**Q:订阅推送后如何取消?**
A:通过 `qoder_cron` 工具使用 `action: "list"` 查看已创建的定时任务,找到对应订阅后使用 `action: "remove"` 删除即可。

**Q:数据多久更新一次?**
A:每天更新昨日数据。订阅推送默认每天 10:00(北京时间)自动执行一次查询。