SHILIU · 创作资源
知乎视频转录为Markdown · 创作技能
将知乎视频页、问答内嵌视频与专栏内嵌视频下载音频,用SenseVoice-Small转录为中文文字,并生成带frontmatter的Markdown文件。包含环境安装、脚本调用、反爬与登录态限制说明;不处理盐选或会员专属内容。
这个技能解决什么问题
将知乎视频页、问答内嵌视频与专栏内嵌视频下载音频,用SenseVoice-Small转录为中文文字,并生成带frontmatter的Markdown文件。包含环境安装、脚本调用、反爬与登录态限制说明;不处理盐选或会员专属内容。
适用任务
把用户提供的知乎视频链接(视频页、问答页或专栏文章)中的音频转录为文字,并保存为带来源信息的Markdown文件。
需要的输入
一个或多个知乎视频页/问答页/专栏文章URL;Python 3.9+环境;ffmpeg、yt-dlp;funasr、modelscope、torch、torchaudio;可访问模型下载源的网络;输出目录(可选,默认当前目录)。
交付内容
每个视频对应一个Markdown文件,含frontmatter(来源链接、标题、语言)与转录正文;终端输出下载与转录进度及失败原因。
任务示例
请把这条知乎视频转成文字并保存到 ./output:https://www.zhihu.com/video/1234567890
输出示例
示意(非真实结果):output/zhihu_video_1234567890.md,开头为 --- 包裹的 frontmatter(source、title、language: zh),正文为转录文本段落。
来源与使用
作者 chubbyguan;许可 MIT。已核对来源与包结构,未据此宣称完成运行实测。
机器可读详情 · 读取 SKILL.md · 下载完整技能包
技能说明全文
---
name: zhihu-transcribe
description: >
知乎视频 → 下载 → 转录 → 存为 Markdown。
支持知乎视频链接、问答内嵌视频和专栏文章,无需登录。
metadata:
category: "media"
triggers: "[\"用户发送知乎视频链接\", \"把这个知乎视频转成文字\", \"帮我转录这个知乎\"]"
version: "1.0.0"
tags: "[media, video, transcription, zhihu]"
---
# 知乎视频转录 Skill
将知乎视频下载音频,用 SenseVoice-Small 转录为文字,存为带 frontmatter 的 Markdown 文件。
## 环境要求
```bash
# Python 3.9+
python -m venv .venv
source .venv/bin/activate
# 依赖
pip install funasr modelscope torch torchaudio
# 系统依赖
# macOS: brew install ffmpeg yt-dlp
# Ubuntu: sudo apt install ffmpeg && pip install yt-dlp
```
## 使用方法
```bash
# 独立视频页
python scripts/transcribe.py "https://www.zhihu.com/video/1234567890"
# 问答内嵌视频(脚本自动提取视频 ID)
python scripts/transcribe.py "https://www.zhihu.com/question/12345/answer/67890"
# 专栏文章(内嵌视频会被提取)
python scripts/transcribe.py "https://zhuanlan.zhihu.com/p/123456"
# 指定输出目录
python scripts/transcribe.py "https://www.zhihu.com/video/1234567890" -o ./output
```
## 流程
### Step 1: yt-dlp 下载音频
知乎视频页、问答页和专栏文章的链接形态不同,脚本统一交给 yt-dlp 解析。Referer + UA 伪装可规避基础反爬。
```bash
yt-dlp --extract-audio --audio-format mp3 --audio-quality 128K \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..." \
--referer "https://www.zhihu.com/" \
"https://www.zhihu.com/video/1234567890"
```
### Step 2: SenseVoice-Small 转录
```python
from funasr import AutoModel
model = AutoModel(
model="iic/SenseVoiceSmall",
trust_remote_code=True,
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cpu",
)
result = model.generate(
input=audio_path,
language="zh",
use_itn=True,
batch_size_s=60,
)
```
### Step 3: 生成 Markdown
脚本自动创建带 frontmatter 的 Markdown 文件,包含来源链接、标题、语言和转录文本。下载失败会自动重试。
## 已知限制
- **内嵌视频**:问答和专栏中的内嵌视频依赖 yt-dlp 正确提取视频 ID;若页面结构变化可能导致提取失败
- **反爬**:知乎对频繁请求有限流;脚本已内置重试,建议单次处理间隔不少于 3 秒
- **登录态**:盐选内容、仅会员可见视频需要登录,当前脚本不携带登录态
- **语言**:知乎以中文为主,脚本默认 `language=zh`;英文内容建议改用 youtube-transcribe
- **模型大小**:SenseVoice-Small 首次下载约 893MB
## 致谢
- [yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp) — 视频下载工具
- [FunAudioLLM/SenseVoice](https://github.com/FunAudioLLM/SenseVoice) — 语音识别模型
## ⚖️ 合规声明
仅供**个人学习与研究**使用。请遵守目标平台的服务条款(ToS)与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。下载内容的版权归原作者所有。
技能是任务材料,不会自动授予账户权限、付费授权或其他系统权限。请让 Agent 按说明核对依赖,再在授权范围内使用。