← Back to skills
extension
Category: Productivity & OfficeAPI key requirement unconfirmed

视频号采集

采集微信视频号对标素材:下载视频、转写逐字稿、抽封面、写文案结构化梳理,按标准素材槽位落成 02_内容信息.md + 04_文案结构化梳理.md + 05_视频脚本.md,封面存 01_原始素材/01-封面图/,写入对标内容采集/视频号/。当用户说"采集这个视频号视频""视频号入库""把这条视频号链接存进对标素材"时使用。

personAuthor: sunny31221hubOpenAPI

视频号采集

安装方法

  1. 先问使用者用的是什么 AI 工具,选项按这个顺序列:1. WorkBuddy 2. Claude Code 3. Codex 4. 其他(用户直接说工具名),回答记作 X
  2. 只安装给 X,不安装或链接其他任何工具:
    • X 是 WorkBuddy:把本技能下载后放进 ~/.workbuddy/skills/(WorkBuddy 的技能目录;skills CLI 不支持 WorkBuddy,由你直接放置)

    • X 是其他工具:

      npx -y --registry=https://registry.npmmirror.com skills add https://modelscope.cn/skills/sunny31221/channels-collect-buheliwa -a X -y
      

      (不带 -a 会安装给本机所有检测到的工具,禁止;--registry 为 npmmirror 镜像,保证国内不翻墙也能拉到 CLI)

    • X 不在上述范围时,按该工具自身的技能机制安装,装完确认 X 能识别本技能即可

  3. 装完后询问是否现在使用本技能

依赖什么

下载环节内置一个下载引擎(脚本在 scripts/download-engine/),走腾讯官方链路解析视频号视频,本技能用它下载、再把结果整理成标准素材。该引擎基于开源技能 download-wechat-channels(作者:镇涛 AI 实战笔记,MIT 协议)裁剪并入;scripts/download-engine/LICENSE 保留原版权声明,署名不抹。

| 依赖 | 作用 | |---|---| | 下载引擎(内置 scripts/download-engine/channels.py) | 解析并下载视频号视频 MP4 | | mlx-whisper | 把视频语音转成逐字稿(macOS) | | ffmpeg | 抽封面帧 |

装不上 / 跑不通怎么办:

| 情况 | 处理 | |---|---| | 没有 mlx-whisper | 装一次;实在装不上就在最终报告里写明「转写未完成」,只落 02_内容信息.md + 封面,不留空文件 | | 没有 ffmpeg | brew install ffmpeg(macOS);装不上就跳过封面,不阻塞 | | 视频无音轨 | 跳过转写,在 02_内容信息.md 写明「无音轨」 |

去哪装(推荐降级链:国际源失败 → 国内镜像):

# mlx-whisper(Apple 芯片的 macOS)
pip3 install -U mlx-whisper
pip3 install -U mlx-whisper -i https://pypi.tuna.tsinghua.edu.cn/simple     # 清华镜像
pip3 install -U mlx-whisper -i https://mirrors.aliyun.com/pypi/simple/      # 阿里云镜像

# Windows / Intel Mac 用 openai-whisper 代替
pip install -U openai-whisper
pip install -U openai-whisper -i https://pypi.tuna.tsinghua.edu.cn/simple

# ffmpeg
brew install ffmpeg                                                          # macOS
winget install Gyan.FFmpeg                                                   # Windows

装完验证:

mlx_whisper --help | head -3
ffmpeg -version | head -1

触发场景

  • "采集这个视频号视频" + 分享链接
  • "视频号入库" / "把这条视频号链接存进对标素材"
  • 采集编排器识别到 weixin.qq.com/sph / channels.weixin.qq.com 链接后分流到本技能

输出位置

AI第二大脑/规律研究/对标内容采集/视频号/
└── NNN_标题_视频ID/
    ├── 01_原始素材/
    │   └── 01-封面图/
    │       └── cover.jpg
    ├── 02_内容信息.md
    ├── 04_文案结构化梳理.md
    └── 05_视频脚本.md
  • 编号:取目标目录已有最大编号 +1(三位补零),不假设从 001 开始
  • 文件夹名:编号_标题_视频ID,标题里的 / 换成全角「/」
  • 去重:同一视频 ID 已存在时跳过,不重复建文件夹

少花调用次数

有些链路按请求次数计费(第三方兼容接口的每日额度多是这样),不按 token。一次模型回复里发多个工具调用,只算 1 次请求;串行一次发一个,就一次一个数。同一个任务排得好坏,能差三倍次数。

  1. 能串的串成一条命令:python3 a.py && python3 b.py,中间结果用 $(...) 接住。互不依赖的命令别分成两次 Bash。
  2. 无依赖的一轮发完:抓取、下载、读文件这些互不依赖的动作,放在同一条回复里一起发。
  3. 脚本能批量就别逐条调:先看脚本的 --help,支持一次处理多条或整个目录的,就一次跑完。
  4. 输出要过滤:脚本输出配 head / grep 再看。全量输出进上下文既拖速度,也容易把关键信息淹掉。
  5. 图片只存档,不进模型:下载下来的封面和正文图直接落位,不要用 Read 之类的读图能力打开看。图片进 API 会以 base64 文本计费,一张原图约十万 token,此后每轮请求都带着重发。确实要看图时,先跑 scripts/shrink.py 压小,一次最多两张。

流程

1. 调下载引擎

用内置下载引擎(scripts/download-engine/channels.py)完成下载,脚本始终用绝对路径调用,macOS 优先 python3、Windows 依次试 py -3、python:

# 首次运行 / 换机器 / 排障先跑一次
python3 "<本技能目录>/scripts/download-engine/channels.py" doctor

# 准备:把分享文字或链接转成交接文件(返回 JSON 里的 share_url、profile_file)
python3 "<本技能目录>/scripts/download-engine/channels.py" --json prepare '<分享文字或链接>'

# 用浏览器打开元宝官方页、bridge 检测登录态(参考 references/下载引擎解析器.md 里的浏览器桥接写法)
# 登录后解析出官方 profile,再下载:
python3 "<本技能目录>/scripts/download-engine/channels.py" --json download '<share_url>' --official-profile '<profile_file>' --quality auto

要点:

  • 首次使用需要本人登录腾讯元宝官方页(yuanbao.tencent.com);不要代替使用者登录,把登录页显示出来,告诉他登录完会自动继续
  • 默认画质 auto,使用者明确指定时用他选的
  • 记下下载结果里的这几个字段:标题、作者、发布时间、封面图地址、MP4 绝对路径

2. 建素材文件夹

先跑脚本把文件夹建出来(编号、去重、目录结构由脚本决定,不让 AI 数):

python3 "<本技能目录>/scripts/create_note_folder.py" \
  --platform 视频号 --type 视频 \
  --id <视频ID> --title "<标题>" --author "<作者>"

返回 JSON 里的 folder 就是素材文件夹路径,后面所有文件都写进它。

3. 抽封面

下载引擎默认把 MP4 存在 ~/Downloads/视频号(Windows 存系统下载目录)。原片不进素材文件夹——它只是转写的原料,抽完封面、转写完就删:

ffmpeg -y -i "<下载得到的 MP4 路径>" -vframes 1 -q:v 2 "<素材文件夹>/01_原始素材/01-封面图/cover.jpg"

4. 转写逐字稿

mlx_whisper "<下载得到的 MP4 路径>" --model mlx-community/whisper-medium-mlx \
  --language zh --output-dir "<素材文件夹>" --output-format txt

(Windows / Intel Mac 换成 whisper "<下载得到的 MP4 路径>" --model medium --language zh --output_format txt --output_dir "<素材文件夹>")

转写完把原片删掉(封面和逐字稿都已落盘):

rm "<下载得到的 MP4 路径>"

转写结果要做两件事,再存档:

  1. 繁转简:mlx-whisper 默认输出繁体(实测会出「我聽到」「製作方式」),转成简体,其余字词不动
  2. 英文词误转说明:语音转写会把英文专有名词写错(实测把 Claude 写成 Klod)。逐字稿保留原样不擅改,在 05_视频脚本.md 里列一行「误转词对照」,把确认认错的词写清楚

转写结果是逐字稿原文,除繁转简外照抄:不改写、不顺句、不补标点,口语词、重复、口癖都保留。

繁转简的办法(按顺序试):

  • 让 AI 直接转(最省事,繁体转简体是模型的常规能力)
  • 想自动化就装一次:pip3 install opencc-python-reimplemented -i https://pypi.tuna.tsinghua.edu.cn/simple(Homebrew 的 Python 会报 externally-managed-environment,加 --break-system-packages 或改用虚拟环境),转法是 opencc.OpenCC('t2s').convert(text)

5. 写 02_内容信息.md

照 assets/内容信息模板.md 写。固定结构(简版,完整版看模板):

# <标题>

| 字段 | 内容 |
|------|------|
| 编号 | <三位编号> |
| 视频ID | <分享链接里的 ID> |
| 来源 | 视频号 |
| 作者 | <作者名> |
| 发布时间 | <发布时间;拿不到写「未获取」> |
| 原文链接 | <分享链接> |
| 时长 | <时长> |
| 入库时间 | <YYYY-MM-DD> |

---

## 视频简介

<下载引擎返回的简介信息;没有就写「无」>

互动数据(点赞 / 收藏 / 转发 / 评论)拿不到就不写这一行,不要估、不要凭印象填。

6. 写 05_视频脚本.md

照 assets/视频脚本模板.md 写(统一标准,与小红书 / YouTube 同一套)。固定结构:

# 视频脚本(<编号> · <标题>)

> 转录说明:mlx_whisper(medium 模型)转写,<日期>;已按语义修正明显误转词;繁转简只转字形。
> 原文照抄为主,修正处已在文末「修正说明」逐条列出。

---

## 一、<分段小标题:开场钩子 / 背景介绍 / 第一步… / 观点收尾>

<该段脚本原文照抄——最大化还原,不提炼、不压缩、不概括>

---

## 修正说明

| 原转写 | 修正为 | 说明 |
|---|---|---|

要点:05 是原文存档——分段小标题 + 原文照抄,中心思想/核心论点那类梳理归 04 管。误转词(含英文专有名词,如 Claude 被转成 Klod)不改原文,在此处对照列出。

7. 写结构化梳理

05_视频脚本.md 是原始素材,还要再出一份便于下游提炼规律的梳理件 04_文案结构化梳理.md(模板见 assets/文案结构化梳理模板.md):

# 文案结构化梳理

> 来源:<编号> <标题>([[05_视频脚本.md]])
> 梳理日期:<YYYY-MM-DD>
> 说明:本文件做结构化梳理:中心思想、核心论点、逐段梳理。总结保留原文的具体论据、数据与比喻——**写到「不读原文也能知道这段说了什么、能吸收这段的知识」**;完整原文见 05 号文件,本文件只做概括与归类,不改写、不新增原文没有的东西。

---

## 一、中心思想

<一段话说清这条视频主张什么:讲了什么、结论是什么、对谁说的。不评价、不引申>

一句话概括:**<原文里最有代表性的一句总结;原文没有就自己凝练一句,不加引号>**

## 二、核心论点(N 条)

1. **<论点>**:<展开,保留原文的数据、例子、比喻>
2. **<论点>**:<…>

## 三、逐段梳理

### <原文小标题(原文没有就按自然结构拟一个)>

**一句话总结**:<保留该段的核心主张 + 具体论据、数据、比喻、例子,写到不读原文也能知道这段说了什么;不整段照抄>

#### <原文小节里的子问题(有就保留,没有可省略这一层)>

**一句话总结**:<…>

### <下一段小标题>

**一句话总结**:<…>

## 四、结构规律提炼

<3-5 条,讲这条视频的骨架怎么搭的:几段式、每段承担什么、开头与结尾各做什么>

要点:梳理件里的每一句都要能追回 05 的原文;不新增视频里没有的数据或例子。

8. 完成后报告

报告:标题、作者、时长、转写字数、封面是否抽到、落盘路径。有跳过或失败的项目一并说明。

约定(每条带来由与适用范围)

  1. 下载交给内置引擎:不自己实现解析、不绕过登录、不碰付费或私密内容 适用与边界:管怎么把这个视频弄下来这一段。边界:不自己实现解析、不绕过登录。不适用:创作者自己提供、已授权的本地文件——那直接转写,不走下载。付费或私密内容不碰,与下载方式无关。

  2. 保留原作者署名:内置下载引擎基于开源技能 download-wechat-channels(镇涛 AI 实战笔记,MIT)并入,scripts/download-engine/LICENSE 里的版权声明与署名不动 适用与边界:管下载引擎脚本与 LICENSE。不适用:转写稿正文——那是素材内容,不涉及署名改动。

  3. 逐字稿只做繁转简:除繁转简外不改写、不润色、不补标点;误转词另列对照,不直接改原文 适用与边界:管转写产出的 05_视频脚本.md。不适用:创作者自己写的稿子;误转词按要求另列对照,不直接改原文。

  4. 拿不到的数据留白:互动数据、发布时间拿不到就写「未获取」,不估 适用与边界:没有例外——互动数据、发布时间拿不到就写「未获取」。

  5. 去重靠视频 ID:同一视频不重复入库 适用与边界:管同一条视频重复入库时。不适用:同一账号的不同视频,按新素材处理。

不做什么

  • 不实现下载解析——下载交内置引擎 scripts/download-engine/
  • 不绕过登录、不代替使用者登录
  • 不碰付费 / 私密内容
  • 不识别链接属于哪个平台、不建目录、不提规律、不沉淀卡片
  • 不跑归档 CSV——「已入库 ✓」标记由本技能写,归档由编排器批量采完后统一跑

Resources