抖音知识搜集器 v3.1.2
从抖音批量搜索采集视频 → CDP提取音频URL → Whisper转录 → 生成结构化知识库。
v3.1→v3.1.1 修复(2026-07-04)
基于金融事件交叉验证实战(3关键词×8视频=24条,270.6MB音频)的关键修复:
| 问题 | 旧版 | v3.1 |
|------|------|------|
| CDP WebSocket被拒 | 无 --remote-allow-origins=* | Chrome启动必须加此参数 |
| CDP navigate无响应 | 未确认Page.enable | cdp_enable_confirm 先enable确认再navigate |
| jload空文件报错 | 返回空list | jload(path, fallback_type) 按用途返回dict或list |
| 验证码误判 | 无检测 | 自动检测verifycenter tab + 等待用户处理 |
| 视频间无间隔 | 连续请求 | --video-interval 默认15秒 |
| 每关键词无上限 | 搜到多少取多少 | --max-per-kw 默认8 |
| SPA加载时间不足 | 8秒 | 18秒等待 + Page.loadEventFired + 5秒延迟URL收集 |
| 已下载文件重下 | 不跳过 | >1MB智能跳过缓存 |
| Python输出不实时 | 缓冲 | 提示用 python -u |
| QClaw shim污染python | 未提及 | 提示用绝对路径 |
| scrolls=0搜索0结果 | JS只在scroll循环内执行 | 循环前先提取初始ID |
| Windows GBK emoji崩溃 | print含✅❌⚠️ | 替换为ASCII [OK][FAIL][WARN] |
| 未登录导致0结果 | 文档只说风控 | 补充登录前置条件 |
适用场景
- 行业实操知识采集(民宿经营、健身训练、编程教学等)
- 竞品分析:采集某类视频提炼打法
- 话题深度调研:从短视频提取系统性知识
- 金融事件交叉验证:从短视频观点与网页数据交叉对比
- 任何想从抖音视频里"挖知识"的场景
前置要求
- Chrome 浏览器(已登录抖音)
- Python 3.12+ +
openai-whisper+websocket-client - curl(Windows自带)
- ffmpeg(whisper依赖)
安装依赖
# ⚠️ 如果QClaw shim污染了python命令,用绝对路径:
C:\Python312\python.exe -m pip install openai-whisper websocket-client
# ffmpeg
# Windows: winget install Gyan.FFmpeg
# Mac: brew install ffmpeg
启动 Chrome CDP
# Windows(⚠️ --remote-allow-origins=* 是必须的!)
Start-Process "C:\Program Files\Google\Chrome\Application\chrome.exe" -ArgumentList \
"--remote-debugging-port=9222","--remote-allow-origins=*","--user-data-dir=C:\temp\chrome_debug","https://www.douyin.com"
# 或用启动脚本:
powershell -File scripts/start_chrome_debug.ps1
# Mac/Linux(同样需要 --remote-allow-origins=*)
google-chrome --remote-debugging-port=9222 --remote-allow-origins=* --user-data-dir=/tmp/chrome_debug https://www.douyin.com
启动后扫码登录抖音,登录态保存在用户数据目录。
⚠️ 关键提醒:--remote-allow-origins=* 是Chrome 111+的必须参数,不加此参数所有CDP WebSocket连接会被拒绝!
使用流程
Step 1: 搜索+提取URL+下载
# ⚠️ QClaw环境:用绝对python路径 + -u无缓冲
C:\Python312\python.exe -u scripts/search_and_extract.py \
--keywords "民宿经营,民宿运营,民宿创业" \
--output-dir ./output \
--cdp-port 9222 \
--pause 30 \
--max-per-kw 8 \
--video-interval 15
# 标准环境:
python -u scripts/search_and_extract.py \
--keywords "民宿经营,民宿运营,民宿创业" \
--output-dir ./output \
--pause 30 \
--max-per-kw 8 \
--video-interval 15
参数说明:
| 参数 | 默认 | 说明 |
|------|------|------|
| --keywords | 必填 | 逗号分隔的搜索关键词 |
| --output-dir | ./output | 输出目录 |
| --cdp-port | 9222 | Chrome CDP端口 |
| --pause | 55 | 关键词间暂停秒数(防封) |
| --max-per-kw | 8 | 每关键词最大视频数 |
| --video-interval | 15 | 视频间间隔秒数 |
| --scrolls | 2 | 每关键词滚动次数 |
| --scroll-pause | 12 | 滚动等待秒数 |
| --extract-timeout | 15 | URL提取超时秒数 |
| --skip-large-mb | 0 | 跳过大于此MB的文件(0=不跳过) |
| --auto-wait-verify | 120 | 验证码自动等待秒数 |
Step 2: 批量转录
# ⚠️ -u 无缓冲输出,否则看不到进度
C:\Python312\python.exe -u scripts/transcribe_batch.py \
--audio-dir ./output/audio \
--output-dir ./output/transcripts \
--model base \
--language zh
# 可选:提供关键词→视频ID映射,转录完成后自动按关键词组织
C:\Python312\python.exe -u scripts/transcribe_batch.py \
--audio-dir ./output/audio \
--output-dir ./output/transcripts \
--model base \
--language zh \
--kw-map ./output/kw_map.json
kw_map.json格式(可选,由Agent在Step 1后生成):
{
"民宿经营": ["765xxx", "765yyy"],
"民宿运营": ["765zzz"],
"民宿创业": ["765aaa"]
}
Step 3: 生成知识库(Agent完成)
将 transcripts/ 下所有文本合并 → 按主题分段 → 去重提炼 → 写结构化知识库MD。
转录质量提示:
- whisper base模型中文识别率约85%
- 常见错误:谐音("伊朗"→"一朗")、繁简混用、专业术语错识别
- Agent需要人工修正提炼,不能直接把原始转录当知识库使用
建议知识库结构:
- 概述/背景
- 核心观点汇总(按关键词分组)
- 与其他来源交叉验证(如网页搜索数据)
- 分歧点分析(散户vs机构vs博主)
- 数据质量说明(转录准确率、覆盖范围)
输出文件:
knowledge_base_full.md:原始转录合并(带时间戳)knowledge_base_refined.md:Agent提炼版(去谐音错误、结构化)
技术原理
搜索:CDP连接已登录Chrome → cdp_enable_confirm 确认Page/Runtime → navigate搜索页 → 等待18秒(SPA加载) → 滚动加载 → JS提取视频ID
URL提取:CDP PUT /json/new 创建新tab → cdp_enable_confirm 确认Page/Network/Runtime → navigate视频页 → Network.requestWillBeSent 拦截 douyinvod URL → Page.loadEventFired后额外等5秒 → 关闭新tab
下载:curl + Referer: https://www.douyin.com/ + User-Agent header。优先DASH音频流(media-audio),其次完整mp4。>1MB已下载文件智能跳过。
转录:openai-whisper base 模型,CPU上1分钟音频约30秒,中文准确率~85%。不跳过大文件——内容越丰富越值得转录。
验证码:脚本每处理一个视频前检查CDP tabs是否包含 verifycenter。检测到后打印警告,自动等待最多120秒让用户在Chrome中手动完成验证。
常见问题速查
| 问题 | 原因 | 解决 |
|------|------|------|
| CDP WebSocket连接失败 | 缺 --remote-allow-origins=* | Chrome启动必须加此参数 |
| navigate无响应 | 未确认Page.enable | v3.1已自动处理 |
| 搜索0结果 | 未登录 / 抖音风控 | 先确认Chrome已登录抖音,再增大pause到65-80秒 |
| 验证码拦截 | 频繁请求 | 增大video-interval到15-20秒 |
| URL提取0个 | SPA加载慢 | extract-timeout增大到20-30秒 |
| jload AttributeError | 空文件返回list | v3.1已修复fallback_type |
| Python输出不实时 | stdout缓冲 | 用 python -u |
| python 命令被QClaw shim污染 | shim替换 | 用 C:\Python312\python.exe |
| 下载403 | 缺Referer | 脚本已内置 |
| 转录慢 | CPU模式 | base模型已最快 |
| video.src不可用 | blob URL | 必须用Network拦截douyinvod |
输出结构
output/
├── all_video_ids.json ← 视频ID累积(含关键词标记)
├── audio_urls.json ← URL映射(dict格式)
├── dl_progress.json ← 下载进度(dict格式)
├── collection_results.json ← 采集结果摘要
├── kw_map.json ← 关键词→视频ID映射(可选,Agent生成)
├── audio/ ← 音频/视频文件
│ └── {video_id}.mp4
├── transcripts/ ← 转录文本
│ ├── {video_id}.txt ← 单条转录(带时间戳)
│ ├── {video_id}.txt.failed ← 失败标记
│ └── organized_by_keyword.json ← 按关键词组织(有kw-map时自动生成)
└── knowledge_base/
├── knowledge_base_full.md ← 原始转录合并
└── knowledge_base_refined.md ← Agent提炼版
采集节奏建议
| 场景 | pause | video-interval | max-per-kw | scrolls | |------|-------|---------------|-----------|---------| | 快速验证 | 30 | 10 | 5 | 1 | | 标准采集 | 30 | 15 | 8 | 2 | | 深度采集 | 55 | 20 | 12 | 3 | | 防封谨慎 | 80 | 30 | 5 | 1 |
原则:宁可慢一点,不要触发验证码。验证码一旦触发,当前关键词的采集基本就废了。
注意事项
- 必须先在Chrome中登录抖音(扫码登录),否则搜索页只显示登录弹窗,0结果
- 关键词间隔至少30秒防封,敏感关键词建议55秒以上
- 每关键词最多8-12个视频,贪多容易触发风控
- 搜索和提取URL用不同CDP tab,互不干扰
- 转录用
base(快),需更高准确率换small - 下载优先音频流(0.5-5MB/个),视频流更大(5-50MB)
- 中断后重跑自动跳过已完成项(>1MB视为有效缓存)
- 验证码触发后等用户处理,超时则跳过当前关键词
- CDP导航前必须
Page.enable确认,否则navigate不会执行 - Chrome启动必须加
--remote-allow-origins=*
📋 案例展示:金融事件交叉验证
用本技能搜索「美伊冲突股市影响、黄金暴跌金价分析、半导体暴跌AI算力」3个关键词,每关键词8个视频,采集24条视频转录后生成的知识库:
美伊冲突与股市
- 有限升级态势:军事冲突后停火,特朗普不满停火细节
- 市场反应平淡:A股4112+0.44%,美伊主要通过油价和美元传导
- 霍尔木兹海峡是关键变量:海峡开放→油价跌→通胀弱→加息缓
黄金暴跌与机构逆向
- 半年暴跌30%:创13年最大季度跌幅
- 瑞银报告:60%家族办公室计划加仓黄金(2%→3%=400亿美元≈300吨)
- 黄金害怕的是实际利率:不是地缘风险,是利率
- 去美元化:74家央行减美元增黄金,3-5年趋势不变
半导体暴跌与AI叙事切换
- 7月1日创业板-1.89%:中芯港股-10.1%
- Meta卖算力:叙事从"缺算力"切换到"算力过剩"
- 不是趋势终结:科技主线不变,非科技做强靠增量不是科技释放
交叉验证结果
- 所有核心观点与网页搜索数据一致
- 散户vs机构分歧:黄金(恐慌vs越跌越买)、半导体(终结vs调整)
- 三个事件构成一条传导链:美伊→油价→通胀→利率→黄金→科技估值
🐕 以上内容来自24个抖音视频,经whisper base转录+人工修正提炼+网页数据交叉验证而成。完整知识库包含3主题×8视频转录+交叉验证表+分歧点分析,约3000字提炼版。
📋 案例展示:高考备战知识采集
用本技能搜索「高考备战、高考冲刺、高考复习方法」3个关键词,每关键词5个视频,采集14条视频转录后生成的结构化知识库:
采集规模
| 指标 | 数值 | |------|------| | 关键词 | 3个(高考备战/高考冲刺/高考复习方法) | | 下载视频 | 14条(218MB) | | 转录字符 | 31,815 | | 有效原创 | 7条优质方法论 + 3条案例分享 |
核心发现(七大章节)
一、心态篇:撕掉标签→日目标拆解→短期成就感循环→复读生白纸心态
二、一轮总策略:三轮本质(夯实/专题/保温) → 文理分策(语英刷套卷+数理只做专题) → 时间优先级
三、各科方法:英语(扔掉单词书·文章中翻译中背词) / 数学(笔记本体系+命题套路) / 物理(50分以下断舍离) / 化生(思维导图)
四、复读生五大铁律:回归课本→错题分类→碎片检索→跨科知识树→限时训练
五、志愿填报:压线本科三策略(冷门专业组/新增公办/征集志愿名单)
六、案例数据:5组真实涨分案例(370→598名/463→580/380→一本/模考未600→620)
七、采集质量评估:模板引流占28%,建议加宽关键词覆盖+增加max-per-kw
🐕 完整案例:
references/case_高考备战.md(从原始转录到结构化知识库的全流程)
版本历史
- v3.1.3:2026-07-04 新增实战案例
- 新增高考备战案例展示(3关键词14视频→31K字符→结构化七大章节)
- 补充案例文件
references/case_高考备战.md
- v3.1.2:2026-07-04 品牌更新
- 显示名改为「抖音知识搜集器」
- 作者改为 zhaoxiaobin1982
- slug 改为 douyin-knowledge-collector
- v3.1.1:2026-07-04 bug修复
- scrolls=0时先提取初始ID再滚动追加
- print emoji→ASCII防Windows GBK崩溃
- 文档补充抖音登录前置条件
- troubleshooting新增Windows编码章节
- v3.1.0:2026-07实战优化
- CDP
--remote-allow-origins=*必须 cdp_enable_confirm导航前确认jloadfallback_type 修复- 验证码检测+自动等待
--max-per-kw/--video-interval参数- SPA 18秒等待 + loadEventFired + 5秒延迟
-
1MB智能跳过缓存
python -u输出提示- QClaw shim提醒
- 转录后按关键词自动组织
- CDP
- v3.0.4:原始版本
Scan to join WeChat group