Back to skills
extension
Category: Data & AnalyticsNo API key required

抖音知识搜集器

抖音视频批量搜索→CDP音频提取→Whisper转录→知识库生成。v3.1.3:新增高考备战案例(14视频31815字符→结构化七大章节)。

personAuthor: user_ed25382dhubcommunity

抖音知识搜集器 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结果 | 文档只说风控 | 补充登录前置条件 |

适用场景

  • 行业实操知识采集(民宿经营、健身训练、编程教学等)
  • 竞品分析:采集某类视频提炼打法
  • 话题深度调研:从短视频提取系统性知识
  • 金融事件交叉验证:从短视频观点与网页数据交叉对比
  • 任何想从抖音视频里"挖知识"的场景

前置要求

  1. Chrome 浏览器(已登录抖音)
  2. Python 3.12+ + openai-whisper + websocket-client
  3. curl(Windows自带)
  4. 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需要人工修正提炼,不能直接把原始转录当知识库使用

建议知识库结构

  1. 概述/背景
  2. 核心观点汇总(按关键词分组)
  3. 与其他来源交叉验证(如网页搜索数据)
  4. 分歧点分析(散户vs机构vs博主)
  5. 数据质量说明(转录准确率、覆盖范围)

输出文件

  • 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 导航前确认
    • jload fallback_type 修复
    • 验证码检测+自动等待
    • --max-per-kw / --video-interval 参数
    • SPA 18秒等待 + loadEventFired + 5秒延迟
    • 1MB智能跳过缓存

    • python -u 输出提示
    • QClaw shim提醒
    • 转录后按关键词自动组织
  • v3.0.4:原始版本