返回 Skill 列表
extension
分类: 数据与分析无需 API Key

douyin-blogger1-distill

抖音博主主页内容批量抓取与知识蒸馏流水线。当用户要求抓取/采集某抖音博主的主页视频口播稿与文案、批量蒸馏博主全部作品为知识卡片、生成博主内容库 Excel 总表时使用。触发词:抖音蒸馏、抓取抖音博主、抖音博主全部作品、抖音内容蒸馏、抓口播稿、博主知识卡片。基于浏览器登录态,优先走 aweme post API 拿全量数据(含发布时间),DOM 滚动法降级,产出主题知识卡片写入 knowledge-base/思维蒸馏.md 并归档原始文案。

person作者: user_bd3583c4hubcommunity

抖音博主内容批量抓取与知识蒸馏

把一个抖音博主的全部作品抓取下来,蒸馏成结构化知识卡片,归档原始文案。

适用场景

  • 用户给出抖音博主主页链接/名称,要求抓取其视频内容(口播稿、文案)
  • 用户要求把某博主内容蒸馏为知识卡片、思维导图素材、方法论总结
  • 用户要求建立某博主的全量作品库(MD 存档 + Excel 总表)

排除:仅下载单条视频文件(不适用)、非抖音平台(不适用)、仅写入知识库不涉及抓取(用 knowledge-distill 技能)。

前置条件

  1. 浏览器已登录抖音(有登录态,否则主页数据不完整且 API 拒绝)
  2. 目标博主主页 URL,形如 https://www.douyin.com/user/xxx(xxx 为 sec_user_id,可从主页 URL 直接取得)
  3. 环境注意(Windows):无 Python 运行时,脚本任务用 Node.js(C:\Program Files\nodejs\);Excel 生成用 exceljs(需先 npm install exceljs)

五阶段工作流

阶段1:进入博主主页(绕过重定向)

直接 navigate 到 /user/xxx 常被重定向到 /jingxuan(精选页)。解法:在页面内执行

history.pushState(null, '', '/user/目标sec_user_id');
location.reload();

详细代码见 reference.md §1。

阶段2:抓取数据(双路,优先 API 法)

API 法(推荐,可拿全量 + 精确点赞数 + 发布时间):在博主主页的页面上下文内 fetch(带 credentials,同源无需 a_bogus 签名):

https://www-hj.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=xxx&max_cursor=0&count=35

用返回的 max_cursor 循环翻页,直到 has_more=0。已验证可拿全量(实测 605/687 条——差额为仅 App 可见/受限作品,网页端拿不到,需向用户说明)。

DOM 法(降级):主页视频卡片为 li 元素,innerText 含「点赞数+标题+完整口播稿」。遍历 li、按标题前30字去重存 window.__videos。懒加载触发陷阱:纯滚到底无效,必须先在 .route-scroll-container 容器上回滚 600px 再滚到底并 dispatch scroll 事件,一轮约新增35条;网页端列表上限约466条后显示"暂时没有更多了"。

详细代码见 reference.md §2、§3。

阶段3:导出与存档

javascript_tool 单次返回有约 50KB 上限。大数据导出:在页面内构造 Blob + a.download 触发浏览器下载(实测 626KB 成功),或分批取回。原始文案按条存 MD 存档(标题+发布时间+点赞+全文)。

阶段4:分批蒸馏(子代理)

每批约 30 条派一个子代理蒸馏为知识卡片。卡片格式(每张):

### 主题名
**核心观点**:一句话
**方法/步骤**:...
**金句**:原文引用
**热度**:点赞数 / 发布时间
**来源**:视频标题(发布日期)

⚠️ 子代理防卡死约束(实战教训,必写进子代理提示):

  • 单个子代理读取总量 ≤ 约 130KB(曾有代理读 190KB/240张卡后卡死 4-16 小时无产出)
  • 提示中写明「逐文件读取、最少工具调用、读完全部后一次性写输出文件」
  • 合并去重阶段必须拆成小份分阶段做(如先早期批、再近期批,最后跨期整合),跨期整合若输入仍大则由主会话自己完成
  • 派代理后若 30 分钟无产出,判定卡死,改派或自己做

阶段5:整合与归档

跨期合并去重后,把最终知识卡片库写入 ~/knowledge-base/思维蒸馏.md(该目录归 knowledge-distill 技能管理,遵循其写入前向用户展示预览的约束)。可选产出 Excel 总表(exceljs,三个 sheet:全部作品 / 统计 / 爆款TOP50)。

Pitfalls

  • 直连 /user/xxx → 被重定向 /jingxuan:用 pushState + reload 绕过(见阶段1)
  • WebFetch 抓抖音被反爬拦截:不要尝试,直接走浏览器登录态
  • DOM 懒加载滚到底无效:先回滚 600px 再滚到底 + dispatch scroll 事件
  • 网页端列表上限约 466 条:要全量必须走 API 法
  • API 法差额:网页端 API 不返回仅 App 可见/受限作品,条数 < 页面显示总数属正常
  • javascript_tool 50KB 上限:用页面内 Blob + download 下载绕过
  • 子代理超 130KB 输入易卡死:分批 + 严格约束提示 + 超时改自己做
  • Windows 无 Python:Excel/数据处理用 Node.js + exceljs

验证

  1. 抓取条数核对:API 法以 has_more=0 + 无重复(按 aweme_id 或标题去重)为准;向用户说明与页面显示总数的差额原因
  2. 时间跨度核对:最早/最新发布时间应在博主实际活跃区间内
  3. 蒸馏卡片核对:每张卡字段齐全(核心/方法/金句/热度/来源),跨批次重复主题已合并
  4. 文件落盘检查:MD 存档、Excel、思维蒸馏.md 写入均 ls/stat 确认存在且大小合理