抖音视频采集技能 v2
功能
在抖音上筛选高互动视频,下载视频文件并提取口播文案,输出到指定目录。
核心能力
- 🔍 筛选:按点赞/评论/分享数据筛选高互动视频
- 📥 下载:下载视频文件到本地
- 📝 文案提取:双层方案——API字幕优先,faster-whisper ASR 兜底
- ℹ️ 信息查询:查看视频互动数据、字幕轨信息等
前置条件
必需
- Python 3.10+
- Chrome 浏览器已安装并已登录抖音
- 已安装 httpx:
pip install httpx
ASR 文案提取(可选,无字幕视频需要)
- 已安装 FFmpeg:
brew install ffmpeg(macOS)或下载 Windows 版 - 已安装 faster-whisper:
pip install faster-whisper
目录结构
抖音视频采集技能v2/
├── SKILL.md ← 技能定义(本文件)
├── config.json ← 配置文件(筛选规则、输出目录等)
└── douyin_fetch.py ← 主脚本
AI 操作指引
当用户提出以下需求时,AI 应按以下流程操作:
流程一:筛选+下载(用户说"帮我筛选抖音视频"、"找爆款"等)
- 检查
config.json中filter.candidates是否有候选视频 - 如果没有,提示用户提供候选视频列表(格式:
视频ID, 标题, 作者, 点赞, 评论, 收藏, 分享) - 如果用户想临时调整筛选阈值,用命令行参数覆盖:
python douyin_fetch.py filter --min-digg 10000 --min-comment 0 --min-share 0 - 执行脚本并汇报结果
流程二:下载指定视频(用户提供视频ID或链接)
- 从用户输入中提取 video_id(纯数字,如
7611489793444171048) - 如果用户给的是链接(
https://www.douyin.com/video/xxx),提取xxx部分 - 记录搜索关键字(如有),用于目录分组和文件命名
- 执行:
python douyin_fetch.py download <video_id> --keyword <搜索关键字> - 汇报:视频文件路径、文案内容、互动数据
流程三:仅提取文案(用户说"提取文案"、"转文字"等)
- 如果用户已有本地视频文件:
python douyin_fetch.py transcript <video_id> --file /path/to/video.mp4 - 如果没有本地文件:
python douyin_fetch.py transcript <video_id> - 将提取到的文案内容直接展示给用户
流程四:仅查看信息(用户说"看看这个视频数据"等)
python douyin_fetch.py info <video_id>
使用 Chrome MCP 获取更准确的数据(推荐)
当脚本方式获取失败(如需要登录态),AI 应改用 Chrome MCP 操作:
- 用
navigate_page打开https://www.douyin.com/video/{video_id} - 用
list_network_requests查找包含aweme/v1/web/aweme/detail/的请求 - 用
get_network_request获取该请求的响应体(JSON) - 将 JSON 数据通过
parse_aweme_api_response()函数解析 - 或者直接从 JSON 中手动提取所需字段
使用方式
# 筛选+下载(使用配置文件的候选列表和规则)
python douyin_fetch.py filter
# 临时降低筛选门槛
python douyin_fetch.py filter --min-digg 10000 --min-comment 0 --min-share 0
# 下载指定视频
python douyin_fetch.py download 7611489793444171048
# 仅提取文案
python douyin_fetch.py transcript 7611489793444171048
# 仅提取文案(指定本地视频文件用于ASR)
python douyin_fetch.py transcript 7611489793444171048 --file ./video.mp4
# 仅查看视频信息
python douyin_fetch.py info 7611489793444171048
输出产物
按搜索关键字分组存储,目录名即为搜索关键字:
~/抖音下载/AI新闻/
├── 2026-04-19 一周AI大事盘点.mp4 ← 视频文件
└── 2026-04-19 一周AI大事盘点.txt ← 口播文案
~/抖音下载/赚钱干货/
├── 2026-04-20 打破信息茧房.mp4
└── 2026-04-20 打破信息茧房.txt
文件命名规则:yyyy-MM-dd 关键字.mp4 / yyyy-MM-dd 关键字.txt
yyyy-MM-dd取自视频的发布日期(create_time)- 关键字从视频标题中自动提取(前12个有效字符)
文案文件格式:
视频ID: 7611489793444171048
标题: 打破信息茧房之后才知道之前都在傻干活
作者: Ai破壁人小彭
互动: 👍68,575 💬218 ⭐35,416 🔗6,410
文案来源: API字幕
==================================================
【口播文案】
(文案内容)
配置说明
所有配置项均在 config.json 中,支持空值使用智能默认值。
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| output_dir | 输出根目录 | ~/抖音下载/ |
| ffmpeg_path | FFmpeg 路径 | 系统 PATH 中的 ffmpeg |
| filter.rules.min_digg | 最低点赞数 | 20000 |
| filter.rules.min_comment | 最低评论数 | 5000 |
| filter.rules.min_share | 最低分享数 | 5000 |
| filter.process_count | 每次处理几个视频 | 1 |
| filter.candidates | 候选视频列表 | [] |
| browser.wait_timeout | 页面等待时间 | 10秒 |
| download.timeout | 下载超时 | 90秒 |
| subtitle.method | 文案策略:api_first 或 asr_only | api_first |
候选视频格式
{
"filter": {
"candidates": [
{
"video_id": "7611489793444171048",
"desc": "打破信息茧房之后才知道之前都在傻干活",
"author": "Ai破壁人小彭",
"digg_count": 68575,
"comment_count": 218,
"collect_count": 35416,
"share_count": 6410
}
]
}
}
技术原理
- 获取视频信息:请求抖音视频页面,解析 SSR 渲染数据(
RENDER_DATA) - 视频下载:从 API 响应中提取视频 URL(优先 VE 混合轨道),httpx 异步下载
- 文案提取(双层方案):
- 第一层:API 字幕轨(
subtitle_infos中的 VTT/SRT 文件)→ 解析为纯文本 - 第二层:faster-whisper 本地 ASR(FFmpeg 提取音频 → 模型推理)
- Chrome MCP 增强:当脚本方式受限时,通过 Chrome MCP 拦截网络请求获取更完整的 API 数据
注意事项
- 视频需要有口播内容才能提取文案
- API 字幕仅对带字幕的视频有效(部分视频可能无内置字幕)
- ASR 需要安装 FFmpeg 和 faster-whisper 依赖
- 下载可能因网络或抖音限制失败,可重试
- 大量下载可能触发反爬,建议控制频率
- 首次使用 faster-whisper 会自动下载模型(tiny 约 75MB),请确保网络通畅(或设置 HF_ENDPOINT 镜像)
常见问题
| 问题 | 解决方案 |
|------|----------|
| "无法获取视频信息" | 使用 Chrome MCP 方式获取,或检查网络 |
| "API字幕内容为空" | 自动进入 ASR 兜底,确保已安装 SenseVoice |
| "FFmpeg 提取音频失败" | 检查 ffmpeg 是否已安装:ffmpeg -version |
| "faster-whisper 未安装" | 运行 pip install faster-whisper |
| 下载的视频无声音 | 抖音对部分视频分离了音视频轨道,尝试 Chrome MCP 获取更完整的 URL |
扫码联系在线客服