# Douyin Doubao Analyzer

> 抖音视频链接 → 豆包内容分析。收到抖音视频链接（v.douyin.com 短链、www.douyin.com/video 链接、iesdouyin 分享链接或含链接的分享口令文本）且带分析需求时触发。豆包（doubao.com，抖音账号登录、免费）因背靠抖音数据管道，能解析其他 AI 无法解析的抖音视频内容；本技能负责：清洗并展开链接提取视频元信息 → 按场景生成两段式豆包提示词（先发口令触发视频识别，再在同一会话要结构化输出）→ 投喂豆包（人工粘贴为主，Playwright 半自动桥接为辅）→ 等豆包分析完成 → 回收返回内容做校验、去噪、结构化整理并落盘。适用："帮我分析这个抖音链接""抖音视频总结""拆解这条抖音""抖音爆款分析""这个抖音视频讲了什么""用豆包分析抖音视频""抖音选题对标"等请求。只做个人创作学习参考，不批量抓取、不绕过平台限制。

- Skill: `songlitong521-oss/douyin-doubao-analyzer` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add songlitong521-oss/douyin-doubao-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/songlitong521-oss/douyin-doubao-analyzer/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: songlitong521-oss (https://skillmd.com/u/songlitong521-oss)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/songlitong521-oss/douyin-doubao-analyzer

---


# 抖音链接 → 豆包分析（douyin-doubao-analyzer）

把"抖音链接 + 分析需求"变成一份**经过豆包真实解读、由你整理交付**的结构化成果。

核心链路（五阶段）：

```text
① 链接预处理 → ② 需求解析 → ③ 提示词撰写 → ④ 投喂豆包 → ⑤ 结果回收整理
   清洗/展开/元信息    识别场景      按模板生成       人工粘贴 或        校验/去噪/结构化
    scripts/expand…  5 个场景      一次到位提示词    Playwright 桥接    落盘 douyin-analyses/（工作区根）
```

豆包网页版凭抖音账号登录即可免费使用，粘贴抖音链接即可做视频总结/转文案。官方 API（火山方舟）无法解析抖音链接、逆向 API 属灰色地带，本技能都不依赖——只走豆包官方网页版。

## 触发与场景识别

用户给出以下任一 + 分析意图时执行本技能：

- 抖音短链：`https://v.douyin.com/xxxx/`
- 完整链接：`https://www.douyin.com/video/{视频ID}`、`https://www.iesdouyin.com/share/video/{视频ID}`
- 分享口令文本（含"复制此链接，打开Dou音搜索…"等文案）

分析意图映射到 5 个场景（可组合；话术↔场景对照与完整模板见 `references/prompt-templates.md`）：

① 视频总结（默认） ② 爆款拆解 ③ 选题复用（需先向用户索取赛道信息） ④ 对标分析（需先索取对标语境） ⑤ 脚本提取

未指明场景时默认场景 1；多个需求时以主场景为主、其余作附加小节，合并成一份提示词，避免多次投喂。

## 阶段 1：链接预处理

规则详见 `references/link-preprocessing.md`。执行步骤：

1. 从用户输入中提取链接（正则见该文件）；同时保留分享口令中的**标题/作者/互动数**文本（后续校验用）。
2. 运行展开脚本：

```bash
py scripts/expand_douyin_link.py "<链接或整段分享文本>"
```

（Windows 上若 `python` 不可用就用 `py`；macOS/Linux 用 `python3`。）

3. 脚本输出 JSON：`video_id`、`final_url`、`page_title` 等。记录为 `link_meta`。
4. 兜底：脚本拿不到 video_id 时，请用户补发完整链接 `www.douyin.com/video/{id}` 或直接说明无法解析。
5. **结果缓存检查**：video_id 拿到后先查 `douyin-analyses/`（工作区根下，可用环境变量 `DOUYIN_ANALYSES_DIR` 覆盖）是否已有该 ID 的落盘结果；有则告知用户已有分析（附路径），问"复用 / 重新分析"再继续——避免重复投喂豆包消耗免费额度。

> 阶段 1 完成前不要进入提示词撰写：没有 video_id 就无法校验豆包是否答对了视频。

## 阶段 2：需求解析

- 确定场景（上表）；多场景按"主场景优先，其余作为附加小节"合并成一份提示词，避免多次投喂。
- 场景 3（选题复用）和 4（对标分析）需要用户侧信息：**先问用户要**"我的赛道/账号定位/对标对象"，信息齐了再生成提示词。
- 其余场景直接进入阶段 3。

## 阶段 3：提示词撰写（两段式，实测结论）

规则与 5 个场景完整模板见 `references/prompt-templates.md`。**必须生成两段，分两次投喂**：

> 对照实验结论（2026-08-14，4 组单/双段消息对照）：单段组合发送（口令+完整分析指令，口令在前/在后都试过）**不会触发**豆包的视频识别管道——轻则"无法访问"，重则**静默退化**为"仅依据口令配文整理"的浅层回答（声称"无法调取视频画面、无具体数据"，内容失真但不报错）。只有"口令/短链 + ≤2 行简短指令"作为独立消息才能触发识别，分析要求必须放第二段。

1. **第一段（触发识别 + 详细记录）**：简短指令在前（"请详细记录…保留原话/数字/步骤/案例，800 字左右"）+ 分享口令/短链。不放小节结构（大段指令会导致"无法访问"）；详细指令失败则退化为最短触发语。
2. **第二段（结构化）**：不带链接；开头引用"请直接基于这条抖音视频本身的完整内容（不要只依据刚才那段简短总结，避免遗漏或失真）…"，按场景模板要小节输出，末尾附"通用约束块"。
3. 第一段回复过简（<300 字）或两段细节冲突时，追加**补采第三段**（模板见 `references/prompt-templates.md`）。
4. 链接形态优先级：分享口令原文 > 短链 > 带参分享链接 > 裸 video 链接（见 `references/link-preprocessing.md` 第 6 节）。
5. 校验清单：第一段只有简短指令 + 口令/链接触发语；第二段无链接、场景小节齐全、场景 3/4 的用户赛道信息已填。

## 阶段 4：投喂豆包

### 调用策略（默认桥接优先，人工兜底）

1. **优先走路径 B 半自动桥接**（本环境 Node + Playwright + 登录态已就绪；登录态缺失时先执行 `login` 让用户扫码一次）。
2. **人机验证不是回退信号**：桥接检测到验证弹窗时不关窗、不停手，提示用户在弹窗里手动完成验证，完成后自动继续提取回复。
3. **回退路径 A 的触发条件**（满足任一）：
   - 登录态失效且用户暂不愿重新扫码登录；
   - 用户不想在弹窗里完成人机验证；
   - 桥接因选择器漂移/会话失效等报错（脚本已存截图）；
   - 用户明确要求人工。
4. **回退时无需重新生成提示词**：两段提示词本就按人工路径设计，直接把第 1/2 段代码块交给用户即可；用户贴回豆包回复后继续阶段 5。

### 路径 A：人工粘贴（兜底，始终可用）

1. 输出两段提示词（各放一个代码块，标注"第 1 段 / 第 2 段"）。
2. 指引用户：打开 `https://www.doubao.com/chat/` → **抖音账号登录**（一次即可）→ **同一对话框**先贴第 1 段、等豆包给出总结后贴第 2 段；若豆包弹出"视频总结"卡片，请用户把卡片内容一并复制回来。
3. **明确告诉用户"把豆包的两段回复都贴回来，我再整理"**；没有豆包返回内容之前，不得编造分析结果。

### 路径 B：Playwright 半自动桥接（默认）

脚本需 Node 18+；首次使用请 `npm install` 安装 playwright-core。**playwright-core 只负责驱动、不下载浏览器**：若启动时报缺浏览器，需先安装 Chromium（如 `npm i -D playwright` 后执行 `npx playwright install chromium`，或使用系统已装浏览器）。脚本 `scripts/doubao_bridge.mjs` 用持久化浏览器配置驱动 doubao.com 已登录会话（send 默认有头窗口，风控对无头交互敏感）：

```bash
# 首次：弹出浏览器窗口，人工登录豆包（抖音扫码），登录成功后手动关闭窗口即保存登录态
node scripts/doubao_bridge.mjs login

# 第一段：发口令触发识别；回复和会话 URL 自动保存（outPath.url）
node scripts/doubao_bridge.mjs send --file step1.md --out doubao_bridge_output/step1-answer.md

# 第二段：用 --url 延续同一会话发结构化要求
node scripts/doubao_bridge.mjs send --file step2.md --url <会话URL> --out doubao_bridge_output/step2-answer.md
```

- 脚本检测到人机验证弹窗时**不关窗**：提示用户在窗口里手动完成验证，完成后自动继续提取（见上方调用策略第 2 条）。
- 脚本报错（选择器漂移/会话失效/未登录且不重登）时按调用策略回退路径 A，不要反复重试。
- 登录态目录 `.doubao-profile` 含用户凭证，勿提交、勿分享、勿拷贝到工作区外。

### 等待与失败处理

- **第一段就"无法访问"**：先自查是否误发裸 `www.douyin.com/video/{id}` 链接（若是，换成分享口令/短链重发一次）；口令/短链也失败 → 视频可能已删除、私密或不可见，如实报告"视频不可访问"，不再重试。
- 豆包回复明显答非所问（标题/作者对不上）时：判定为失败，重新生成提示词重试一次，仍失败则如实报告。
- **额度与节奏**：豆包免费版有每日对话条数限制；每条视频 = 2 段消息。批量分析时逐条进行、控制节奏，失败后不要立即连续重试（间隔 ≥ 30 秒），避免触发限流/风控。

## 阶段 5：结果回收与整理

规则与交付模板见 `references/result-organizing.md`。要点：

1. **校验**：豆包返回的视频标题/作者与阶段 1 的 `link_meta` 比对；不一致标注"⚠ 疑似答错视频"。
2. **去噪**：删除豆包的开场客套、免责声明、追问话术、格式残留。
3. **结构化**：按场景套用交付模板（总结报告 / 拆解卡片 / 选题建议 / 脚本素材）。
4. **落盘**：

```text
{DOUYIN_ANALYSES_DIR}\{YYYYMMDD}-{视频ID}-{slug}.md
```

   `DOUYIN_ANALYSES_DIR` 默认 `douyin-analyses/`（工作区根下），可用环境变量覆盖。
   文件头带 YAML：来源链接、视频 ID、分析时间、工具（豆包网页版/免费）、场景。
5. 向用户交付摘要 + 落盘路径；如需进一步产出（如小红书笔记），可提示用已安装的 space-xhs-writer / xhs-html 承接——仅提示、不自动串联；下游技能未安装时不要假设其可用。

## 合规边界

- 仅用于个人创作学习与运营参考：单条链接分析，不批量抓取、不绕过平台反爬、不刷量、不传播侵权内容。
- 只用用户本人抖音账号登录的豆包免费版；不共享账号、不破解登录、不使用逆向接口。
- 引用豆包结论时注明"由豆包基于抖音视频内容生成"；关键事实建议与视频原文复核后再对外使用。

## 快速参考

| 步骤 | 动作 |
|---|---|
| 展开链接 | `py scripts/expand_douyin_link.py "<链接/口令>"` |
| 模板 | `references/prompt-templates.md` |
| 链接规则 | `references/link-preprocessing.md` |
| 整理规范 | `references/result-organizing.md` |
| 桥接登录 | `node scripts/doubao_bridge.mjs login`（登录成功后手动关窗） |
| 桥接发送 | `node scripts/doubao_bridge.mjs send --file prompt.md --out a.md`（第二段加 `--url <会话URL>`） |
| 落盘目录 | `douyin-analyses/`（默认，工作区根下；可用 `DOUYIN_ANALYSES_DIR` 覆盖） |

