
Social Account Doctor
- 18 installs
- 166 repo stars
- Updated June 21, 2026
- juneyaooo/social-account-doctor
Helps with marketing & seo tasks.
About
social-account-doctor is a Claude Code skill for marketing & seo. It helps solo builders move faster with AI-assisted coding.
- social-account-doctor
- Marketing & SEO
- AI-coding skill
Social Account Doctor by the numbers
- 18 all-time installs (skills.sh)
- +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #1,481 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/juneyaooo/social-account-doctor --skill social-account-doctorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 18 |
|---|---|
| repo stars | ★ 166 |
| Last updated | June 21, 2026 |
| Repository | juneyaooo/social-account-doctor ↗ |
What it does
Helps with marketing & seo tasks.
Files
social-account-doctor — 找对标 / 拆爆款 / 套自己
不挖钩子建仓库,不写诊断报告。
直接对着具体爆款 → 输出我的下一条笔记初稿(标题 + 封面大字 + 首段 + CTA)。
---
0A. 交付质量硬规则(防伪装完成)
这些规则适用于 find / crack / adapt / diagnostic。违反时不要硬写报告;在对话里明说缺哪一步、为什么缺、用户可以怎么补。
H1 — find 必须有真对标搜索
find模式至少跑过 1 次平台搜索,并拿到真实账号或作品候选:小红书xiaohongshu_app_search_notes/ 抖音账号搜索或视频搜索 / 快手kuaishou_app_search_video_v2/ 视频号wechat_channels_fetch_search_ordinary/ B 站bilibili_web_fetch_general_search。- 只拿了我的账号信息或作品列表就写“对标结论” = 违规。没有对标搜索,就只能标成“仅基于我方数据的初步判断”。
H2 — 视觉判断必须先跑多模态
- 报告里只要出现“封面模板 A/B/C/D/E”“大字比例”“真人出镜/实物展示/表格截图”“封面公式”“首帧钩子”等判断,就必须先用
scripts/analyze_image.py分析本地封面/首帧。 - 我方账号诊断优先跑 top 3 + bottom 3;完整诊断最好覆盖近 7 条。对标可只跑 top 3,不能零调用。
- 报告正文必须嵌入我方/对标封面图,至少让用户能图文对照。无图的视觉诊断只能算口头评价。
H3 — 半成品要显式标注
- 搜索 API 挂、tikhub 不通、对标不足 3 条、截图字段不全、音频转写失败,都不能静默跳过。
- 报告开头或对话里必须标注完整度:
完整/部分(缺 Layer X)/仅 L1。 - 对标为 0 条时写:
本次未能获取有效对标数据,以下结论仅基于账号自身数据,可能不够准确。
H4 — 标题干净,状态放正文
- 用户可见 H1 不写
(补充版)、(无对标)、(技术分析)、(Gemini 分析)这类内部状态词。 - 状态说明放在标题下方引用块或 TL;DR 上方。
H5 — 账号定位不清晰要警告
- 账号简介为空/模糊、近 30 条覆盖 4 个以上不相关赛道、作品数 < 10、简介和内容明显不符时,必须在报告开头提示“定位风险”。
- 涉及账号定位、简介改写、人设切换、粉丝画像、变现模式时,缺硬数据就写“数据不足,暂不下结论”,不要凭感觉改号。
H6 — 报告语言面向非技术用户
- 用户报告里不要出现脚本名、模型名、API 名、命令行、JSON、ffmpeg、OCR bbox 等技术实现细节。
- 写“从封面设计来看……”“在平台上搜索同赛道内容发现……”,不要写“通过 analyze_image.py / tikhub 接口 / Gemini 得出……”。
H7 — 诊断默认给行动,不默认写脚本
- 用户问“为什么不爆 / 账号怎么调 / 完整诊断”时,默认输出漏斗判断、对标差距、内容结构、视觉标准、复盘指标、P0/P1/P2 行动。
- 只有用户明确说“下一条发什么 / 帮我写脚本 / 给案例”时,才写下一条可发布初稿或逐字脚本。
- 如果账号内容明显是 AI 视频 / AI 插画 / 数字人口播,必须加一节“AI 视频表达差距”:首帧冲突、人物连续性、场景连续性、字幕安全区、模板感、可信度、时长承载能力。
H8 — PDF 按需,但排版要自检
- 默认只写
.md。用户明确要 PDF 时再跑scripts/render_report_pdf.py。 - PDF 报告避免超宽表格、手机长截图整张塞入、Markdown 表格包在 HTML 容器里。生成后至少检查文件存在、页数合理、图片没有明显丢失。
---
0. 闭环图
[我的原始素材(文档 / 图片 / 视频 / 非平台链接)] ← 新入口(compose)
│
▼ ⓪ compose (多模态解析 → 核心事实/独家要素/金句清单 → 5 维本质 → 信息缺口)
│
[我的账号 / 选题方向 / compose 画像]
│
▼ ① find (多模态识别本质 → 矩阵搜 → 相似度过滤)
[5-10 个真对标爆款]
│
▼ 人工勾选 3-5 条 ✋
[选定对标]
│
▼ ② crack
[每条 4 维钩子拆解(视觉/文字/口播/剧情)+ 综合权重 + 骨架 + 封面 + 标签]
│
▼ ③ adapt (有素材时:每个产出必须溯源到"对标公式 + 素材条目")
[3 标题 + 3 封面大字 + 1 段首段 + 1 个 CTA] → 可发副产品(可选,必须问):crack 跑完后主动问用户「要把这些钩子积累到 ./assets/hooks-{platform}.md 吗?」 — 用户答 yes 才追加。不会自动写。库的质量由你把关,跑多了自然形成弹药库。
---
1. 输入路由
| 用户说什么 | 走哪个命令 |
|---|---|
| "找对标" / "我这个号有什么对标" / "扫一下同赛道" | find |
| "拆这条爆款" / "这条为什么爆" / "提取这条的钩子" | crack(单条) |
| "对着这条仿写" / "下一条该怎么写" / "套这条的钩子写一条" | crack + adapt |
| "我想发 XX 主题,有什么参考" / "缺爆款选题" | find + crack + adapt(全闭环) |
| "我有素材帮我写一条能爆的" / "这份文档/这组图/这段视频能出一条爆款吗" / "基于这些材料做一条" | compose + find + crack + adapt(素材打底全闭环) |
---
1A. compose 命令 SOP(素材 → 初稿的新入口)
触发:用户带着自己的原始素材(本地文档 / 图片 / 视频 / 非平台链接)+ 一句"帮我写一条能爆的"。
作用:跑在 find 之前,把一堆散素材炼成"5 维本质 + 独家要素清单 + 信息缺口",让下游 find/crack/adapt 有的放矢、且不乱编素材。输入
- 必选 1-N 份原始素材(任意组合):
- 本地文档
.md/.txt/.pdf→scripts/analyze_document.py <path>(md/txt 也可以直接 Read;pdf 走脚本) - 图片
.jpg/.png→scripts/analyze_image.py - 视频
.mp4/.mov→scripts/analyze_video.py - 非平台链接(文章 / 博客 / 新闻 / 自己的官网/产品页)→
WebFetch取正文 - 必选:我的账号定位(一句话)+ 目标平台
- 可选:我想强调的卖点 / 情绪 / 必须保留的关键词
- 不走本命令:小红书 / 抖音 / 快手 / 视频号 / B 站 / 公众号链接 — 那些是"别人的爆款",直接走
crack
Step 1 逐份解析(多模态必跑,跟 find Step 1 对称)
每份素材都跑一次对应脚本,不要看一份就下结论。汇总成素材画像,5 个字段:
| 字段 | 说明 | 来源要标到具体素材 |
|---|---|---|
| 核心事实 | 3-5 条原子事实 | 每条标 [素材 X · 段落/时间戳] |
| 独家要素 | 其他人没有的点:人物 / 数据 / 画面 / 场景 / 金句 | adapt 强制嵌入,必须标来源 |
| 视觉素材候选 | 图片 / 视频帧 / 文档配图 | adapt 的封面直接从这里挑 |
| 情绪基调 | 全部素材汇总出的情绪色 | 后续 Step 2 的 5 维输入 |
| 信息缺口 | adapt 想成立但素材没覆盖的点 | 明文列,问用户不要编 |
Step 2 炼 5 维本质(复用 find Step 1 框架)
基于素材画像,按 find 的 5 维(载体形态 / 情绪锚点 / 审美风格 / 内容结构 / 反差点)推断这条内容应该长成什么样。输出形容词三元组 + 一句话定位。
这 5 维直接喂给 find → find 可以跳过自己的 Step 1(已经有 5 维了),从 Step 2 矩阵搜索开始。
Step 3 交棒 find → crack → adapt(素材模式)
后面三步的差异:
find:跳过 Step 1,直接用 compose 的 5 维跑 Step 2-5crack:完全复用 SOPadapt(素材模式,强制项):
1. 标题 / 首段 / CTA 各至少嵌入 1 条素材独家要素 2. 封面大字优先从素材画像的"候选金句"里选 3. 每个产出除了现有的"抄了对标什么 + 改了什么",加一行 用了素材:[素材 X · 具体要素] 4. 素材覆盖不到、只能走通用话术的位置,必须 ⚪ 推断 标记 — 用户看到就知道这块是脑补 5. 缺口明显影响成稿时(例:素材里没有具体数字但对标都有)→ 停下来问用户补,不要编一个假数字
compose 的输出
落盘到 ./reports/{YYYYMMDD-HHMM}-compose-{素材短码}.md,含:
- 素材清单(文件名 + 字/帧/时长)
- 5 维本质 + 形容词三元组
- 独家要素清单(编号)
- 候选金句 / 视觉素材清单
- 信息缺口清单 → 给用户的补充素材请求(如有)
完整闭环跑完后,adapt 报告里必须含"素材溯源列" — 没有这一列视同半成品,不写盘。
compose 的铁律
1. 素材全吃完再下结论:N 份素材全跑完解析再炼 5 维,不要跑到第 2 份就开写 2. 不编独家要素(对齐全局 feedback 账号资料修改要斟酌 的铁律 — 素材没给的不要凭空加):adapt 想写但素材没给 → 问用户或标 ⚪ 推断 3. 素材优先于通用话术:adapt 的每一行能从素材抠出来的,就不要用通用公式兜底 4. 每一行要能双向溯源:对标公式(抄了什么)+ 素材条目(用了什么)两头都挂得上钩
---
2. find 命令 SOP(5 步铁律)
输入
我的账号链接 / 我的某条笔记链接 / 一个选题方向("我想发 XX")
输出
5-10 个对标爆款链接 — 不是关键词搜出来的,是按内容本质过滤过的。
5 步(每一步都不能省)
Step 1 内容本质识别(必跑多模态)
输入是我的账号 / 笔记 → 调 analyze_image.py(封面)+ analyze_video.py(视频)→ 提取 5 个本质维度:
| 维度 | 例子(橘猫做大酱那条) |
|---|---|
| 载体形态 | AI 拟人化小动物(不是真人 / 真宠物) |
| 情绪锚点 | 怀旧 / 家乡味道 / 童年记忆 |
| 审美风格 | 暖阳 + 慢镜头 + 烟火气 |
| 内容结构 | 教程类(原料 → 成品全流程) |
| 反差点 | 可爱角色 × 硬核农活(核心爆点) |
输出:5 个维度的描述(每个 1 句话)+ 形容词三元组(如:AI 萌宠 / 怀旧 / 反差教程)。
Step 2 生成搜索词矩阵
5 个本质维度交叉组合 → 4-6 个搜索词:
维度1:「AI萌宠」 / 「拟人猫」 / 「萌宠成精」
维度2:「乡村美食」/ 「老家味道」/ 「童年回忆」
维度3:「治愈」 / 「烟火气」
维度4:「教程」 / 「手作」
维度5:「反差萌」 / 「猫师傅」⚠️ 铁律:搜索词 = 单一 2-4 字本质维度词。
- 不要用宽泛选题词("东北大酱"会搜出真人假对标)
- 不要带空格组合("猫师傅 美食" 在 V1/V2 接口会 HTTPStatusError,要拆成 4-6 个单词分次搜)
Step 3 矩阵词并行搜索
每个矩阵词调一次 search → 按互动量倒序取 top 10 → 汇总到候选池(20-50 条,去重)。
工具:
- 小红书
xiaohongshu_app_search_notes(只用这个,V2/Web V2 全挂 — 见 §9.1) - 抖音优先
douyin_billboard_fetch_hot_account_search_list --cursor 0找账号;再用douyin_app_v3_fetch_hashtag_search_result→douyin_app_v3_fetch_hashtag_video_list反查作者;douyin_app_v3_fetch_video_search_result_v2只做补充且必须加超时 - 快手
kuaishou_app_search_video_v2 - 视频号
wechat_channels_fetch_search_ordinary(综合)+wechat_channels_fetch_search_latest(最新)双源对比 — 见 §9.2
接口失败兜底:连续 3 次 retry 失败 → 不再硬刚,让用户手甩 3-5 个对标链接 → 直接 fetch_feed_notes_v2(小红书)/ fetch_video_detail(视频号)→ 跳到 crack。
视频号特殊铁律:视频号客户端不输出可复制的链接 / 视频 ID(分享出去是卡片)。唯一入口是账号名/关键词搜索 → 锁定本号视频 → 拿 id。不要让用户提供"视频号链接",他给不出。
Step 4 多模态相似度过滤(必跑多模态)
候选池每条抽首图 → analyze_image.py → 按 5 维打分(0-1)→ ≥ 3 维相似才留。
⚠️ 代价警告:这一步 20-50 次 multimodal 调用,token 不便宜,但不能省 — 否则 find 出来的全是表面假对标,后面 crack/adapt 全白做。
Step 5 体量 + 活跃度过滤
| 条件 | 标准 |
|---|---|
| 粉丝量 | 我 ×1 ~ ×10(伙伴/榜样档,删大佬级和小白级) |
| 近 30 天发文 | ≥ 8 条(不活跃删) |
| 单条互动 | ≥ 该号近 30 天均值 × 3(爆款不是日常) |
| 排除 | 官方蓝 V / 单条 100w+ 异常爆(不可复制) |
→ 输出 5-10 个真对标 + 每个贴一句"为什么是真对标"(5 维相似度命中哪几维)。
find 的人工卡点
最后一步必须给用户看清单 → 用户勾选 3-5 条 → 没勾的不进 crack。
---
3. crack 命令 SOP
输入
1 个或 N 个对标爆款链接(一般是 find 勾选出来的)。
输出
对每条吐 4 维钩子拆解 + 3 行结构元素(不写诊断报告,不打分,只罗列可抄元素):
对标:@xxx 的「东北橘猫做大酱」(50w 赞 / 1.2k 评 / 30s)
钩子(4 维拆解):
├ 视觉钩:拟人猫脸大特写 + 田间背景,0.5s 内出"猫看着你"的目光
├ 文字钩:封面中部一行字(OCR bbox 366,604,546x71)+ 标题「人!」感叹号
├ 口播钩:「人!其实快乐很简单,跟me下乡吧!」— 拟人猫"对人喊话"的反差
├ 剧情钩:第一秒就破壁(猫张嘴说"人!")— 把"猫"和"观众"的层级倒过来
└ 综合:视觉 ×0.4 + 口播 ×0.6 = 治愈系反差钩 ← 主驱动力
骨架:原料展示 → 工艺过程 → 成品 → 情绪升华(4 段,命中骨架 A 场景+冲突+解决)
封面公式:D 实物展示 + 暖色高对比 + 主体居中(无大字) [🟢 跑了 multimodal / ⚪ 推断]
标签组合:#AI萌宠 #东北美食 #怀旧 #反差萌(4-5 个)
复用提示:[一句话 — 这条最值得抄的一个具体动作]为什么 4 维:钩子不是"那一句标题",而是视觉+文字+口播+剧情的整体开场设计。综合权重决定仿写时的精力分配方向(哪一维占比 ≥ 0.5 = 死磕那一维)。
钩子积累(可选,必须问 — 不要自动存)
crack 跑完所有对标后,把完整 4 维钩子单元(不是单句)汇总打给用户看,主动问:
本次 crack 提取了 N 条 4 维钩子单元:
1. @xxx「跟me下乡」(9k 赞, 治愈系反差钩, 主驱动力=口播 0.6)
2. @yyy「比熊求职」(13k 赞, 共鸣型反差钩, 主驱动力=文字 0.7)
...
要积累到 ./assets/hooks-{platform}.md 吗?
- yes:4 维拆解格式全存
- "1,3":只存指定条
- no:本次不存(默认)只有用户明确说要存,才 mkdir -p ./assets + 追加(按情绪锚点分类,再按主驱动力二级索引;追加不覆盖;首次创建时建好"索引 + 速查"骨架)。 不要默认存 — 自动堆出来的钩子库都是垃圾,库的价值在于人工把关。
crack 用到的术语
封面 ABCDE / 标题 1-10 / 骨架 ABC / 钩子 1-7 → 全部对齐 references/scoring-vocab.md。
---
4. adapt 命令 SOP
输入
- 我的账号定位(一句话,必须)
- crack 输出(1-N 个对标的元素清单,必须)
- 我想发的方向(可选,没有就基于 crack 推荐)
输出
直接给可发的:
标题候选(3 个,每个标注命中哪个公式):
1. 「[文案]」 — 公式 4 怕错避坑 + 改了 XX
2. 「[文案]」 — 公式 2 反认知 + 改了 XX
3. 「[文案]」 — 公式 6 身份共鸣 + 改了 XX
封面大字(3 个,4 字以内):
1. 「[大字]」 — 套对标的 D 模板,加大字升级到 A+D 混合
2. ...
3. ...
首段文案(≤ 50 字,命中钩子模板 N 号):
「[文案]」 — 抄了对标的 XX,我做了 YY 改动
CTA(命中互动钩子模板):
「[文案]」 — 套对标的"评论扣 X 送 Y"结构adapt 的铁律
- 标题 / 封面 / 首段 / CTA 必须命中
references/scoring-vocab.md里的至少 1 个公式 - 每个产出必须标注「抄了对标什么 + 我做了什么改动」 — 防止抄到不可复制的部分
- 不要 4 个候选,就 3 个(多了用户选不动)
---
5. 输出位置铁律
完整闭环(find → crack → adapt)跑完,必须落盘到当前工作目录:
./reports/
{YYYYMMDD-HHMM}-compose-{素材短码}.md # compose 模式才有:素材画像 + 5 维 + 缺口清单
{YYYYMMDD-HHMM}-find-{我的账号末8位}.md # 5-10 对标 + 为什么是真对标
{YYYYMMDD-HHMM}-crack-{对标末8位}.md # 每条 4 行清单
{YYYYMMDD-HHMM}-adapt-{选题短码}.md # 标题 + 封面 + 首段 + CTA(compose 模式必须含"素材溯源列")
./assets/ # 副产品,跨任务累积
hooks-xhs.md / hooks-douyin.md / hooks-kuaishou.md写盘前 mkdir -p ./reports ./assets。只跑了 1 个命令、半成品、接口失败 → 不写盘,只在对话里说。
5.1 PDF 输出(按需,不默认)
铁律:默认只输出 .md,不要主动生成 PDF。只有用户明确说「整理成 PDF / 出 PDF / 出一份 pdf 版」等才跑:
python3 ~/.claude/skills/social-account-doctor/scripts/render_report_pdf.py \
./reports/{report}.md
# 输出 ./reports/{report}.pdf (同名同位)脚本特性:
- A4 + 思源黑体 (CJK 必装 Source Han Sans SC) + 粉色诊断主题
- md 中本地图片
自动 base64 内嵌(PDF 自包含,可单文件传播) - 富排版(卡片式 top N 对标 / TL;DR 红框 / 三图横排)需在 md 里直接写 inline HTML,CSS 已经准备好对应 class:
<div class="tldr"><div class="verdict">...</div>...</div>— TL;DR 高亮框<div class="card"><div class="card-img"><img/></div><div class="card-body">...</div></div>— 对标卡片<div class="user-img"><img/><div class="caption">...</div></div>— 三图横排- 想保留中间 HTML 自己改样式:加
--keep-html
何时主动询问 PDF:用户说「分享给客户」「打印」「存档」「发出去」等需要可携带版本的语义时,可以主动问一句「要不要顺便出一份 PDF?」 — 不要不问就出。
---
6. L2 诊断模式(按需,不主推)
只在用户明确说这些话时触发 → 调 references/diagnostic-mode.md:
- "这条为什么不爆"
- "完整诊断"
- "我这个号该往哪调"
- "卡在哪一层"
→ 走 6 维评分 + 三层诊断 + 平台阈值表(完整流程,被降级为兜底)。
否则不要主动跑诊断。 生产闭环是 find→crack→adapt,诊断是数据回收后的事后反思工具。
---
7. 工具速查
tikhub CLI(按平台 × 任务)
调用走tikhub <platform> <tool> --args(CLI 自包含在仓库tikhub/目录,纯 Python stdlib + HTTP JSON-RPC + session 缓存)。不知道工具名时tikhub list <platform> <关键词>模糊查;看完整 schema 用tikhub describe <platform> <tool>。
参数类型铁律(防"看着对其实数据被破坏"):
- CLI 默认所有
--key=value按 string 透传,只true/false/null/none字面量被 coerce - ID 字段(
user_id/photo_id/note_id/sec_user_id/aweme_id)几乎都是 string schema — 直接 `--user_id 4253294011`,不要包:int - 真要 int 用显式 tag:
--page:int=1/--count:int=20;复杂结构用--json '{...}' - 看到
validation error ... input_type=int→ 检查是不是手贱加了:int
| 任务 | 小红书 | 抖音 | 快手 | B 站 |
|---|---|---|---|---|
| find Step 3 关键词搜 | xiaohongshu_app_search_notes(笔记) / xiaohongshu_web_search_users(用户) | douyin_billboard_fetch_hot_account_search_list --cursor 0(账号优先) / douyin_app_v3_fetch_hashtag_search_result(话题) / douyin_app_v3_fetch_video_search_result_v2(视频补充) | kuaishou_app_search_video_v2 | bilibili_web_fetch_general_search |
| find Step 5 账号信息 | xiaohongshu_app_get_user_info | douyin_web_handler_user_profile | kuaishou_app_fetch_one_user_v2 | bilibili_web_fetch_user_profile + _user_up_stat + _user_relation_stat |
| crack 笔记/视频详情(最稳兜底) | xiaohongshu_app_get_note_info(需 xsec_token) / xiaohongshu_web_get_note_info_v7 | douyin_app_v3_fetch_one_video | kuaishou_app_fetch_one_video | bilibili_web_fetch_one_video |
| crack 拿封面/视频 | 用笔记详情返回的 image_list URL;不要用已挂的独立 image 接口 | douyin_app_v3_fetch_video_high_quality_play_url | kuaishou_app_fetch_one_video(含 play_url) | bilibili_web_fetch_video_subtitle(字幕拆口播) |
| crack 拿评论 | xiaohongshu_app_get_note_comments | douyin_app_v3_fetch_video_comments | kuaishou_app_fetch_one_video_comment | bilibili_web_fetch_video_comments + _comment_reply |
| B 站独家:弹幕 | — | — | — | bilibili_web_fetch_video_danmaku(4 类信号见 platforms/bilibili.md §3) |
| 解析分享链接 | xiaohongshu_web_get_note_id_and_xsec_token | douyin_app_v3_fetch_one_video_by_share_url | kuaishou_web_fetch_one_video_by_url | bilibili_web_bv_to_aid(bv ↔ aid 转换) |
视频号(独立路径 — 没分享链接)
视频号客户端不输出可复制的链接 / 视频 ID(分享出去是卡片,不是 URL)。所以任何视频号任务的入口都是账号名/关键词搜索,跟其他三平台流程不一样:
| 任务 | 工具 | 注意 |
|---|---|---|
| find Step 3 关键词搜(综合) | wechat_channels_fetch_search_ordinary | 算法综合排序,含权重 + 关系链 |
| find Step 3 关键词搜(最新) | wechat_channels_fetch_search_latest | 时间序,与综合求差集找蓝海窗口 |
| find Step 5 账号搜索 | wechat_channels_fetch_user_search | ⚠️ 实测易 503 — fallback:用 _search_ordinary 精确匹配 nickname |
| crack 视频详情 | wechat_channels_fetch_video_detail(id 优先于 exportId) | 含完整互动数据 + feed_count(账号总作品数) |
| crack 拿评论 | wechat_channels_fetch_comments | — |
| 账号主页 / 直播回放 | wechat_channels_fetch_home_page / wechat_channels_fetch_live_history | — |
| 热榜 / 抢窗口 | wechat_channels_fetch_hot_words | 视频号专属:朋友圈关系链 + 热榜双驱动 |
视频号 find 的 5 步要做两个调整: 1. Step 3 关键词搜要双源跑(ordinary + latest),交集 = 已被算法验证的爆款,差集 = 新发未推 / 老爆款长尾 2. Step 5 账号信息时,user_search 503 是常态 — fallback 是从 search_ordinary 结果里按 nickname 精确匹配 + 头像 url 校验
B 站(横版 + 三连 + 弹幕,跟其他四平台都不同)
B 站是 16:9 横屏 + 长视频文化,算法核心信号是三连率(点赞 + 投币 + 收藏 / 播放),不是完播率,也不是收藏比。弹幕是其他平台都没有的实时情绪流,每条对标必跑:
| 任务 | 工具 | 注意 |
|---|---|---|
| 关键词搜(综合 / 时间窗口) | bilibili_web_fetch_general_search | order 用 totalrank/click/pubdate/stow(收藏) 等;蓝海词监控用 pubtime_begin_s |
| 视频详情 | bilibili_web_fetch_one_video | 含 cid(拉弹幕用)+ stat 全字段(投币 / 收藏 / 弹幕) |
| 弹幕(独家信号) | bilibili_web_fetch_video_danmaku --cid <cid> | 4 类信号:梗 / 问题 / 打卡 / 吐槽 — 详见 platforms/bilibili.md §3 |
| 字幕(拆口播结构) | bilibili_web_fetch_video_subtitle --aid --cid | AI 字幕(如有) |
| UP 主(双统计) | bilibili_web_fetch_user_profile + _user_up_stat + _user_relation_stat | 三个分别拿基本信息 / 总播放点赞 / 粉丝关注 |
| UP 主投稿 + 动态 | bilibili_web_fetch_user_post_videos + _user_dynamic | 动态看是否在 B 站外引流 / 预告 |
| bv ↔ aid 转换 | bilibili_web_bv_to_aid | URL 输入支持用 bilibili_web_fetch_one_video_v3 |
B 站 find 关键差异: 1. 按三连率排序而不是播放量:拉到结果后算 (coin + favorite + like) / view,按这个排 2. 每条对标必拉弹幕:弹幕里的"打卡时间戳"直接告诉你哪一段是高潮(剪短视频投抖音/小红书复用素材) 3. 看 UP 主 = 看分区垂直度:分区跨度 ≥ 3 个的 UP 主算法不推
详见 references/platforms/bilibili.md。
平台细节(阈值、6 维评分细则)在 references/platforms/{平台}.md,find/crack/adapt 主流程不用看,L2 诊断时才读。
多模态脚本(scripts/)
analyze_image.py <封面1> [封面2 ...] [--concurrency 1] [--timeout 600]:拿 5 变量 + 5 模板归类 + 钩子识别;支持多图批量,默认串行,确认额度充足时再手动调高并发analyze_video.py <视频> [--mode auto/talking/visual/keyframe]:三模式自动路由;visual/talking 默认按视频配置走,本地片段存在且未禁用时发 video_url;设VIDEO_ANALYSIS_USE_VIDEO_URL=0或没有可用视频片段时才走代表帧兜底analyze_document.py <文档> [--json]:compose 用,吃.md/.txt/.pdf→ 全文 + 章节 + 候选金句 + 字数;PDF 依赖 pdfplumber / pypdf / fitz / pdftotext 任一(四选一,都没有时会提示装)ocr_screenshot.py <截图>:用户给后台数据截图时用;非 JPEG 默认转 JPEG,可用VIDEO_ANALYSIS_NORMALIZE_IMAGES=0关闭dispatch_account.py <账号URL>:链接 → platform + user_idrender_report_pdf.py <md> [-o out.pdf] [--keep-html]:md 报告 → PDF(按需,不默认,详见 §5.1)
---
9. 接口稳定性表(按平台分小节)
9.1 小红书(复测 2026-04-23 — 用户作品列表切 Web V2 `fetch_home_notes_app`;其余 App V1 首选)
⚠️ 2026-04-23 增量更新:用户作品列表的 App V1 (xiaohongshu_app_get_user_notes) 复测也挂,app_v2_get_user_posted_notes仍挂。当前只有xiaohongshu_web_v2_fetch_home_notes_app能跑通并拿到 cover / title / like / collect。虽然官方说 Web V2 停止维护,但这一行目前没得选。
>
⚠️ 旧结论(2026-04-22):除用户作品列表外,search / note_info / comments / user_info 仍优先用 App V1。App V2 全系列实测 RetryError;Web V2 能用的也按“备用、随时可能挂”处理。
>
官方明确弃用:xiaohongshu_app_search_notes_v2、xiaohongshu_app_get_video_note_info、xiaohongshu_app_get_notes_by_topic、xiaohongshu_app_search_users。见到这些不要用。
| 任务 | ✅ 首选 | ⚠️ 备选 | ❌ 不要用 |
|---|---|---|---|
| 关键词搜笔记 | xiaohongshu_app_search_notes | xiaohongshu_web_search_notes(Web V1,限流时切) | app_v2_search_notes / web_v2_fetch_search_notes / app_search_notes_v2 |
| 关键词搜用户 | — | xiaohongshu_web_search_users(Web V1,唯一能用) | app_search_users / app_v2_search_users / web_v2_fetch_search_users |
| 笔记详情 | xiaohongshu_app_get_note_info(需 xsec_token) | xiaohongshu_web_get_note_info_v7 / xiaohongshu_web_v2_fetch_feed_notes_v2(备用) | app_v2_get_image_note_detail / app_v2_get_video_note_detail |
| 笔记评论 | xiaohongshu_app_get_note_comments | xiaohongshu_web_v2_fetch_note_comments(备用) | app_v2_get_note_comments |
| 二级评论 | xiaohongshu_app_get_sub_comments | xiaohongshu_web_v2_fetch_sub_comments(备用) | app_v2_get_note_sub_comments |
| 账号信息 | xiaohongshu_app_get_user_info | — | app_v2_get_user_info / web_get_user_info_v2 |
| 用户作品列表 | xiaohongshu_web_v2_fetch_home_notes_app(2026-04-23 唯一能用) | — | xiaohongshu_app_get_user_notes / app_v2_get_user_posted_notes / web_v2_fetch_home_notes |
| 拿封面/图片 | 用 app_get_note_info / web_get_note_info_v7 返回里的 image_list URL | — | web_v2_fetch_note_image |
| 分享链接解析 | xiaohongshu_web_get_note_id_and_xsec_token | xiaohongshu_app_extract_share_info / app_get_user_id_and_xsec_token | — |
铁律:
- ✅ search / note_info / comments / user_info 首选 App V1;用户作品列表目前只用
web_v2_fetch_home_notes_app - ⚠️ Web V2 官方说停止维护,只在 App V1 挂且没替代时用;报告里标注“备用接口,数据可能延迟或随时下线”
- ❌ App V2 全系列实测挂,不要再试
- ❌ 同一接口连续 3 次 HTTPStatusError → 换备选 / 让用户截图代替
- ❌ 小红书不支持按话题标签搜索笔记,只支持关键词;用户问“搜 #XX 标签”时说明限制
- 📅 实测日期写在标题里,3 个月后必须重测一次
并发与限流(实测 2026-04-21):
- 当前 tikhub RPS 上限 = 10/s(用户提供)—— 单次诊断的搜索批量调用要节制,建议并发不超过 3,串行更稳
- 触发限流时返回
RetryError[HTTPStatusError](与"接口本身不稳"的报错一样,容易误判) - App V1 (
xiaohongshu_app_search_notes) 限流后冷却时间长;Web V1 (`xiaohongshu_web_search_notes`) 抗限流更强,App V1 被限时优先切 Web V1(同样是 V1,不是 V2)
9.2 视频号(实测 2026-04-21)
| 任务 | ✅ 用这个 | ⚠️ 注意 |
|---|---|---|
| 关键词综合搜索 | wechat_channels_fetch_search_ordinary | 稳。结果里的 source.title 可能是带 <em class="highlight"> 的高亮 HTML,处理时要剥标签 |
| 关键词最新搜索 | wechat_channels_fetch_search_latest | 偶发 503,retry 1 次即可 |
| 账号搜索 | wechat_channels_fetch_user_search | 实测高频 503。fallback:用 _search_ordinary(账号名) 取首条 + 校验 nickname/头像 url |
| 视频详情 | wechat_channels_fetch_video_detail | 稳。优先传 `id` 而非 exportId;返回的 contact.feed_count 是账号总作品数(冷启诊断关键字段) |
| 评论列表 | wechat_channels_fetch_comments | 稳 |
| 用户主页 | wechat_channels_fetch_home_page | 依赖 user_search 提供 user 上下文,user_search 挂时连带挂 |
| 热门话题 | wechat_channels_fetch_hot_words | 稳 |
视频号铁律:
- ❌ 不要让用户提供视频号链接 / 视频 ID — 视频号客户端只支持卡片分享,根本不输出 URL/ID
- ❌ user_search 503 时不要 retry 超过 1 次 — 直接 fallback 到
_search_ordinary+ nickname 精确匹配 - ✅ 综合搜索结果里真号常常只有 1 条(同名/同主题号会被高亮但来自其他号),按
source.title剥<em>后 完全等于 目标账号名才算真号 - ✅
video_detail.contact.feed_count == 1+like/comment/forward 全 0= 冷启失败号,可直接出诊断结论 - 📅 实测日期写在标题里,3 个月后重测
9.3 抖音(局部复测 2026-06 — 对标搜索优先走账号搜索)
🟡 状态:2026-06 复测确认,抖音找对标不要只依赖视频搜索。douyin_billboard_fetch_hot_account_search_list --keyword <词> --cursor 0 可用于账号搜索;douyin_app_v3_fetch_video_search_result_v2 偶发长时间无响应,只做补充且必须加超时。
实测命令(用 tikhub CLI):
tikhub --health
tikhub list douyin search
tikhub douyin douyin_billboard_fetch_hot_account_search_list \
--keyword 宝宝情绪 --cursor 0
tikhub douyin douyin_app_v3_fetch_hashtag_search_result \
--keyword 宝宝情绪 --offset 0 --count 10
tikhub douyin douyin_app_v3_fetch_video_search_result_v2 \
--keyword 宝宝情绪 --offset 0 --count 10| 任务 | 实测结果 | 备注 |
|---|---|---|
douyin_billboard_fetch_hot_account_search_list | 可用 | 找账号对标首选;cursor 必传 |
douyin_app_v3_fetch_hashtag_search_result | 可用 | 可先找话题,再拉话题视频反查作者 |
douyin_app_v3_fetch_video_search_result_v2 | 不稳定 | 可能卡住;加超时,失败后换账号/话题搜索 |
douyin_web_handler_user_profile | 可用 | 适合拿公开主页基础信息 |
douyin_web_fetch_user_post_videos | 部分受登录限制 | 普通号可能返回空,必要时结合后台截图 |
推荐调用顺序(找对标时): 1. 从账号简介和近 10 条作品提取 4-6 个关键词 2. 账号搜索首选 douyin_billboard_fetch_hot_account_search_list --cursor 0 3. 账号搜索不够时,用话题搜索拿 ch_id,再用 douyin_app_v3_fetch_hashtag_video_list --ch_id <id> 反查高互动作者 4. 视频搜索只做补充;超时 1 次就换账号搜索或话题搜索,不要连续卡住 5. 新号优先找 3-5 个 500-1W 粉的同赛道号,再补 1-2 个更高粉账号看方法论
不要误判为无对标的情况:
- 某个 search 工具 schema 为空 / 参数不明:先
tikhub list douyin search或tikhub describe查清楚 - 视频搜索挂了但账号搜索可用:L2 仍可完成
- 用户给的是短链:先解析
sec_uid/aweme_id,再用主页信息提关键词
9.4 快手(待实测,同 9.3)
🟡 状态:同 §9.3,未在本轮做接口稳定性实证。
实测命令:
tikhub --health
tikhub list kuaishou search
tikhub kuaishou kuaishou_app_search_video_v2 --keyword Cursor --page 1实测后回填:
| 任务 | 实测结果 | 备注 |
|---|---|---|
kuaishou_app_search_video_v2 | 待测 | — |
kuaishou_app_fetch_one_user_v2 | 待测 | — |
kuaishou_app_fetch_one_video | 待测 | — |
kuaishou_app_fetch_one_video_comment | 待测 | — |
kuaishou_web_fetch_one_video_by_url | 待测 | — |
---
1. find 必须 5 步走:本质识别 → 矩阵搜 → 多模态过滤 → 体量过滤 → 人工勾选。任何一步都不能省。 2. 不要单一宽泛词搜对标(如"东北大酱")。永远是 4-6 个本质维度词矩阵。 3. search 关键词必须是单一中文词,2-4 字最稳,禁止空格组合(带空格的组合词在 V1/V2 接口都易 HTTPStatusError — 拆成多个单词分次搜更稳)。 4. crack 输出 4 维钩子拆解(视觉/文字/口播/剧情 + 综合权重),不是单句钩子。综合权重决定仿写时的精力分配。 5. adapt 必须命中 scoring-vocab.md 公式,且必须标注"抄了什么 + 改了什么"。 6. 诊断不主推。除非用户明确说"为什么不爆",否则不要走 L2。 7. multimodal 不省:find Step 1 看我的、find Step 4 看候选 — 都要调。token 贵但不能省。
- 退化兜底:当
fetch_note_image不可用时,可以用feed_notes_v2返回里的video_info_v2.media.video.bbox.ocr_v2/v3字段(含封面文字位置)+ desc + 标签推断封面公式,必须明文标 ⚪ 推断 / 🟢 高可信。
8. 完整闭环跑完才落盘,半成品只在对话里说。 9. 钩子库要问过用户才追加。crack 完成后主动问"要存吗",用户答 yes 才写 assets/hooks-{platform}.md,按 4 维拆解格式存(不是单句)。禁止自动追加。 10. 环境自检 + 缺失透明(最重要的一条 — 防"伪装完成"):
开干前必做:列出本次任务依赖的工具,逐个 ping。
find依赖:tikhub CLI(tikhub --health)+ analyze_image.py + analyze_video.pycrack依赖:tikhub CLI(笔记/视频/评论详情)+ multimodal 脚本adapt依赖:纯 LLM(无外部依赖)- L2 完整诊断依赖:tikhub CLI(搜对标 + 账号信息)+ multimodal
缺哪个明说哪个(在第一句话就说,不要默默缩范围):
⚠️ 本次需要 tikhub CLI(小红书)调数据,环境检查发现:
- tikhub --health 不通 / TIKHUB_API_KEY 没配 / 连续 retry 失败
两个选择:
① 修复 ~/.claude/.env 的 TIKHUB_API_KEY 或 PATH(详见仓库 `tikhub/README.md`),再来一次
② 你直接给我 N 个对标链接 / 截图 — 我跳过搜索阶段,从 crack 开始禁止偷工:
- 跑了 1/3 不能说"诊断完成"
- 跑完后必须明文标注:「本次只完成 Layer X,因为 Y 工具不可用 / Y 数据缺失」
- 半成品不写盘(不污染 reports/ 目录)
- 接口连续 3 次 retry 失败 → 视同工具不可用 → 进入上面的话术
11. tikhub 调用走 CLI,不走 `claude mcp add`:所有 tikhub 数据抓取通过 tikhub <platform> <tool> --args CLI 命令调用。CLI 自包含在仓库 `tikhub/` 目录(不依赖外部 skill)。*不要再 `claude mcp add tikhub-`**:
- HTTP 端点是
https://mcp.tikhub.io/{xiaohongshu|douyin|kuaishou|wechat|bilibili}/mcp,所有平台共用一个 CLI、一个 API key - 不需要重启 claude,不污染全局工具列表
- session id 自动缓存(5 min TTL),不用关心连接管理
环境自检:
tikhub --health # {"status":"healthy",...} → OK
tikhub list xiaohongshu search # 工具目录可读
ls ~/.claude/.env # API key 存这里(chmod 600)新机器初始化(git clone 之后一次性):
cd ~/.claude/skills/social-account-doctor
ln -sf "$(pwd)/tikhub/bin/tikhub" ~/.local/bin/tikhub # 让 tikhub 命令在 PATH
echo "TIKHUB_API_KEY=YOUR_KEY" >> ~/.claude/.env
chmod 600 ~/.claude/.env详见 tikhub/README.md。
---
9. 数据时效性说明
references/platforms/*.md 里所有平台阈值(完播率 / CTR / CES 等)均为行业经验值(蝉妈妈 / 千瓜 / 新红 / COO 公开发言等多源),非平台官方公告。
📅 采集日期:2026-04|建议复核:每 6 个月
诊断时用作"方向判断",不是"绝对死线"。生产闭环(find/crack/adapt)不依赖这些数字。
# =============================================================
# Multimodal analysis (cover / video / screenshot OCR)
# Gemini 3.1 Pro via OpenAI-compatible proxy
# =============================================================
VIDEO_ANALYSIS_API_KEY=sk-your-gemini-proxy-key
VIDEO_ANALYSIS_BASE_URL=https://your-gemini-proxy.example.com/v1
VIDEO_ANALYSIS_MODEL_NAME=gemini-3-pro
# Optional multimodal controls
VIDEO_ANALYSIS_TIMEOUT_SECONDS=600
VIDEO_ANALYSIS_NORMALIZE_IMAGES=1
# unset/1 = use video_url when a local video segment is available; 0 = representative-frame fallback
# VIDEO_ANALYSIS_USE_VIDEO_URL=0
# =============================================================
# Audio transcription (only required for `analyze_video.py --mode talking`)
# SenseVoice / Whisper via OpenAI-compatible proxy
# =============================================================
AUDIO_TRANSCRIPTION_API_KEY=sk-your-asr-proxy-key
AUDIO_TRANSCRIPTION_BASE_URL=https://your-asr-proxy.example.com/v1
AUDIO_TRANSCRIPTION_MODEL=sensevoice
AUDIO_TRANSCRIPTION_TIMEOUT_SECONDS=600
# =============================================================
# tikhub MCP keys are configured in Claude Code settings.json,
# NOT here. See README.md "Install · Step 2".
# Apply at: https://tikhub.io/
# =============================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
# Vendored CLI lib (本仓库自带, 不能被上面的 lib/ 规则过滤掉)
!tikhub/lib/
!tikhub/lib/**
# 但 lib/ 下的 __pycache__ / .pyc 仍要忽略 (上面 *.py[codz] 已覆盖)
tikhub/lib/__pycache__/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#uv.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
#poetry.toml
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
#pdm.lock
#pdm.toml
.pdm-python
.pdm-build/
# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
#pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/
# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
# Ruff stuff:
.ruff_cache/
# PyPI configuration file
.pypirc
# Cursor
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
# refer to https://docs.cursor.com/context/ignore-files
.cursorignore
.cursorindexingignore
# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/
# Skill 运行时产物 — 用户诊断报告 / 钩子库 / 临时素材, 不入库
reports/
assets/
social-account-doctor — Agent 自助安装指南
这份文件是给 AI agent 读的。用户把它的 URL 丢给你(Claude Code / OpenClaw / Codex / Cursor / Trae / Hermes Agent 等),你照着做即可完成安装。
你要做的事
1. Clone 仓库到用户当前工作目录(或 ~/src/ 之类合理位置):
git clone https://github.com/JuneYaooo/social-account-doctor.git
cd social-account-doctor2. 跑安装脚本:
bash install_as_skill.sh脚本会:
- 把仓库内容拷贝到
~/.claude/skills/social-account-doctor/ - 安装 Python 依赖(
pip install -r requirements.txt) - 软链
tikhubCLI - 交互式引导配置
.env
3. 帮用户填 3 个 key(脚本会问,但你也可以提前跟用户确认):
| key | 必选? | 用途 | 去哪搞 |
|---|---|---|---|
TIKHUB_API_KEY | ✅ 必选 | 抓小红书/抖音/快手/视频号/B 站 数据 | https://tikhub.io/ |
OPENAI_API_KEY + OPENAI_BASE_URL | ✅ 必选 | 看图 / 看视频的多模态大模型(推荐 Gemini 3.1 Pro,OpenAI 协议兼容中转站都行) | 用户自己的 key 或代理站 |
SENSEVOICE_API_KEY 或 WHISPER_API_KEY | ⚪ 可选 | 拆"真人口播"视频时做语音转写 | SiliconFlow / OpenAI |
key 写到 ~/.claude/skills/social-account-doctor/.env(脚本自动创建)。
4. 确认系统依赖:
- Python 3.10+
ffmpeg—— Linux:apt install ffmpeg,macOS:brew install ffmpeg
5. 提示用户重启 Claude Code(或当前 agent 宿主),skill 才会被识别。
装完怎么验证
让用户说一句「帮我扫一下 [小红书账号链接] 的同赛道」,如果 Claude 能路由到 find 命令并调 tikhub 抓数据,就装好了。
如果用户已经装过
install_as_skill.sh 会检测 ~/.claude/skills/social-account-doctor/ 是否存在并询问是否覆盖。覆盖不会丢 .env(脚本会保留)。
不要做的事
- ❌ 不要把 key 写到
~/.claude/skills/social-account-doctor/之外的任何.env(skill 只读这一个) - ❌ 不要改
SKILL.md的name/descriptionfrontmatter,那是 agent 识别入口 - ❌ 不要用
sudo跑安装脚本
#!/bin/bash
##############################################################################
# social-account-doctor -- Claude Code Skill 安装脚本
#
# 把当前仓库内容拷贝到 ~/.claude/skills/social-account-doctor/
# 并安装 Python 依赖 + tikhub CLI 软链 + 引导配置 .env。
#
# 用法:bash install_as_skill.sh
##############################################################################
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
print_info() { echo -e "${BLUE}(i) $1${NC}"; }
print_success() { echo -e "${GREEN}[OK] $1${NC}"; }
print_warning() { echo -e "${YELLOW}(!) $1${NC}"; }
print_error() { echo -e "${RED}[X] $1${NC}"; }
print_header() { echo ""; echo "========================================"; echo "$1"; echo "========================================"; echo ""; }
command_exists() { command -v "$1" >/dev/null 2>&1; }
main() {
print_header "social-account-doctor -- 安装"
SKILL_DIR="$HOME/.claude/skills/social-account-doctor"
print_info "目标目录: $SKILL_DIR"
if [ -d "$SKILL_DIR" ]; then
print_warning "Skill 目录已存在: $SKILL_DIR"
read -p "是否覆盖?(y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
print_info "取消"
exit 0
fi
if [ -f "$SKILL_DIR/.env" ]; then
cp "$SKILL_DIR/.env" "/tmp/social-account-doctor.env.bak"
print_info "已备份现有 .env 到 /tmp/social-account-doctor.env.bak"
fi
rm -rf "$SKILL_DIR"
fi
print_info "创建 Skill 目录..."
mkdir -p "$SKILL_DIR"
print_success "目录已创建"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
print_info "复制项目文件..."
rsync -a \
--exclude='.git' \
--exclude='reports' \
--exclude='assets' \
--exclude='venv' \
--exclude='.venv' \
--exclude='__pycache__' \
--exclude='.env' \
"$SCRIPT_DIR/" "$SKILL_DIR/"
print_success "文件复制完成"
if [ -f "/tmp/social-account-doctor.env.bak" ]; then
mv "/tmp/social-account-doctor.env.bak" "$SKILL_DIR/.env"
print_success "已恢复用户 .env"
fi
print_info "检查 Python 环境..."
if ! command_exists python3; then
print_error "未找到 python3,请先安装 Python 3.10+"
exit 1
fi
print_success "Python: $(python3 --version)"
print_info "安装 Python 依赖..."
if command_exists pip3; then
pip3 install -q -r "$SKILL_DIR/requirements.txt"
else
pip install -q -r "$SKILL_DIR/requirements.txt"
fi
print_success "依赖安装完成"
print_header "配置 tikhub CLI"
chmod +x "$SKILL_DIR/tikhub/bin/tikhub" 2>/dev/null || true
mkdir -p "$HOME/.local/bin"
ln -sf "$SKILL_DIR/tikhub/bin/tikhub" "$HOME/.local/bin/tikhub"
print_success "已软链 tikhub -> ~/.local/bin/tikhub"
if ! echo ":$PATH:" | grep -q ":$HOME/.local/bin:"; then
print_warning "~/.local/bin 不在 PATH 中,请把下面一行加进 shell rc:"
print_info " export PATH=\"\$HOME/.local/bin:\$PATH\""
fi
print_header "配置 API 密钥"
if [ -f "$SKILL_DIR/.env" ]; then
print_info "已存在 .env,跳过"
else
cp "$SKILL_DIR/.env.example" "$SKILL_DIR/.env"
print_success "已生成 $SKILL_DIR/.env"
print_warning "请编辑该文件填入 VIDEO_ANALYSIS_* / AUDIO_TRANSCRIPTION_* 等密钥"
fi
if [ ! -f "$HOME/.claude/.env" ] || ! grep -q "TIKHUB_API_KEY" "$HOME/.claude/.env" 2>/dev/null; then
print_warning "未检测到 TIKHUB_API_KEY,请执行:"
print_info " echo 'TIKHUB_API_KEY=YOUR_KEY' >> ~/.claude/.env && chmod 600 ~/.claude/.env"
print_info " 申请 key: https://tikhub.io/"
fi
print_header "安装完成"
print_success "已装到 $SKILL_DIR"
echo ""
print_info "下一步:"
print_info " 1. 编辑 .env 填多模态 API key: nano $SKILL_DIR/.env"
print_info " 2. 配置 tikhub: nano ~/.claude/.env"
print_info " 3. 重启 Claude Code 让 skill 生效"
print_info " 4. 直接对 Claude 说:"找对标 / 拆这条爆款 / 对着这条仿写""
echo ""
print_info "冒烟测试(可选):"
print_info " tikhub --health"
print_info " tikhub list xiaohongshu search"
echo ""
}
trap 'print_error "安装过程出错"; exit 1' ERR
main
MIT License
Copyright (c) 2026 JuneYaooo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
social-account-doctor
小红书 / 抖音 / 快手 / 视频号 / B 站 自媒体的账号体检 + 爆款拆解工具。
给它一个账号链接,它告诉你:你的号在同赛道什么位置、top 在做什么你没做、这条为什么不爆、下一步该往哪改。顺手出一版可粘贴的仿写初稿。
<p align="center"> <img src="docs/images/demo-page-01.png" width="32%" alt="这条会爆吗 — TL;DR"> <img src="docs/images/demo-page-04.png" width="32%" alt="六维拆解评分"> <img src="docs/images/demo-page-05.png" width="32%" alt="封面三图诊断"> </p>
它帮你解决什么
- 不知道自己的号卡在哪 → 扫同赛道,告诉你离 top 差在调性、选题还是执行
- 不知道爆款为什么爆 → 逐条拆:钩子在第几秒、封面哪种模板、结构清单体还是故事体
- 发了但没人看 → 给后台截图,逐项诊断是封面、标题、时间还是人群定位的问题
- 有素材不知道能不能发 → 一份 PDF / 一组图 / 一段视频,先判断能不能出爆款再说怎么写
它在做什么 —— 账号诊断 + 爆款分析
这不是"把你的想法润色成笔记"的工具,核心是帮你看懂自己和同赛道:
- 看得懂账号 —— 你的号当前处在什么阶段、同赛道 top 是什么调性、你离他们差在哪
- 看得懂爆款 —— 一条爆款为什么爆:钩子在第几秒、封面用的哪种模板、结构是清单体还是故事体、评论区在聊什么
- 看得懂视频 —— 给一条视频链接,它会看完画面 + 听完字幕再拆,不是只读标题
看懂之后顺手出一版可粘贴的仿写初稿 —— 只是分析的副产品,不是目的。
怎么用 —— 直接跟 Claude 说
| 你说 | 它做什么 |
|---|---|
| 「扫一下我这个号的同赛道」+ 账号主页链接 | 吐 5-10 条真对标,说明每条为什么是对标 |
| 「拆这条爆款」+ 笔记或视频链接 | 钩子 / 开头 / 结构 / 封面 / 话题,4 行内拆完 |
| 「对着这条仿写」 | 3 标题 + 3 封面大字 + 开头 + CTA,可直接粘贴 |
| 「我这份 PPT / 这组图 / 这段视频能出一条笔记吗」 | 素材打底 → 找对标 → 仿写,一条龙 |
| 「我这条为什么不爆」+ 后台截图 | 逐项诊断(封面 / 标题 / 时间 / 互动钩) |
📸 案例演示
下面是对一条 AI 赛道的真实小红书笔记跑完全流程的报告 —— 笔记发布 21 分钟、3 赞 1 评 2 收藏,结论是 9 成扑街概率、3 个一票否决项、5 分钟内可抢救的动作。
1. 先扫同赛道 —— 找到"真对标"而不是"同关键词"
<p align="center"> <img src="docs/images/demo-page-03.png" width="72%"> </p>
自动归纳赛道特征:头部 2k+ 赞已经成型、收藏比 ≥ 0.5(干货教程调性)、评论区普遍 50-200 条。用户这条被定性为"无差异化跟风"。
2. 三张封面逐张体检 —— 钩子被埋到第 3 张
<p align="center"> <img src="docs/images/demo-page-05.png" width="72%"> </p>
第 1 张只是"放了张产品图",没有钩子;第 3 张才是大字报 + 人群锚定,真正有 CTR。封面顺序反了 → 小红书用户只看第 1 张就划走 → 直接判死刑。
3. 行动清单 —— 不是"建议",是可粘贴的改写
<p align="center"> <img src="docs/images/demo-page-06.png" width="72%"> </p>
P0(5 分钟内):把第 3 张设为封面 + 正文补关键信息 + 标题按"数字 + 人群 + 效果"公式重写,直接给出 3 个候选。P1 / P2 覆盖 24 小时互动钩和账号月度转型方向。
🚀 安装
方式一:让 AI 自己装(推荐)
把下面这段 prompt 丢给你的 AI 助手(Claude Code / OpenClaw / Codex / Cursor / Trae 都行),它会自己 clone、跑脚本、问你要 API key、提示你重启:
帮我安装 social-account-doctor:
https://raw.githubusercontent.com/JuneYaooo/social-account-doctor/main/docs/install.md方式二:手动安装
git clone https://github.com/JuneYaooo/social-account-doctor.git
cd social-account-doctor
bash install_as_skill.sh脚本会把 skill 装到 ~/.claude/skills/social-account-doctor/,重启 Claude Code 后自动识别。
⚙ 配置三把钥匙
安装脚本会引导你填这些,也可以手动编辑 ~/.claude/skills/social-account-doctor/.env 和 ~/.claude/.env:
1. [tikhub.io](https://tikhub.io/) 的 API key —— 抓各平台数据用,一个 key 通吃五平台 2. 一个会看图 / 看视频的大模型 key —— 推荐 Gemini 3.1 Pro,OpenAI 协议兼容的代理站都行 3. 一个语音转写 key(可选) —— 只有当你要拆"真人口播"类视频时才需要(SenseVoice / Whisper 均可)
🔒 脚本只读 skill 目录下的.env和~/.claude/.env,不会翻项目里的.env,不用担心误吃无关密钥。
系统依赖:Python 3.10+,ffmpeg(apt install ffmpeg / brew install ffmpeg)。
🛠 在 Claude Code 里怎么用
装完直接跟 Claude 说人话就行,见上面 怎么用 —— 直接跟 Claude 说 表格。Claude 会自己路由到 find / crack / adapt / compose 命令,跑完把报告路径告诉你。
🧑💻 想自己写脚本调 CLI 而不走 agent? 看 SKILL.md —— 命令闭环、输入路由、每个脚本的参数和文件布局都在那;scripts/ 下的 analyze_image.py / analyze_video.py / analyze_document.py / render_report_pdf.py 也可以独立调。
📂 输出在哪
跑完之后,当前目录下会出现:
reports/—— 本次的对标扫描 / 爆款拆解 / 仿写初稿,markdown 可直接看,按需可导出 PDF(思源字体 + A4 打印版)assets/—— 钩子库、标题库,跨任务累积复用
💡reports/通常含账号和选题信息,建议加进.gitignore别公开;assets/是长期资产,建议 commit。
⚠ 关于内置的平台数据
内置的平台阈值(完播率、CTR、收藏比等)是行业经验值,不是平台官方公告。信息时点 2026-04,建议每 6 个月复核。主流程(找对标 / 拆爆款 / 仿写)不依赖这些数字,只在诊断模式下用作方向判断。
License
MIT © 2026 JuneYaooo
diagnostic-mode — 完整诊断(L2 兜底,按需调用)
⚠️ 这不是主流程。主流程是 SKILL.md 的 find / crack / adapt 三命令闭环。>
本文件只在用户明确说这些话时调用:
- "为什么我这条不爆"
- "完整诊断"
- "我这个号该往哪调"
- "卡在哪一层"
>
它提供:6 维评分 / 三层诊断框架 / 平台阈值表 / 完整报告模板。生产闭环跑顺了不需要这套。
>
配套阈值数据在 references/platforms/{xhs,douyin,kuaishou}.md。评分术语在 references/scoring-vocab.md(本文件 §5 是冗余备份,保留方便单独阅读)。---
⚠️ 环境自检铁律(开干前必做)
完整诊断三层都要跑,每层依赖的工具不一样。任何一层工具不可用就当场告诉用户,不要默默跳过假装跑完了。
| Layer | 依赖工具 | 不可用时的话术 |
|---|---|---|
| L1 漏斗自检 | 截图 OCR (ocr_screenshot.py + VIDEO_ANALYSIS_API_KEY) 或 用户文字补齐数据 | 截图 OCR 失败 → 让用户文字给数字 |
| L2 对标扫描 | tikhub <platform> *(搜笔记 / 搜用户 / 拿账号信息) | 见下方话术 |
| L3 六维拆解 | tikhub CLI(拿对标笔记详情)+ analyze_image.py + analyze_video.py | 见下方话术 |
L2 / L3 工具不可用的标准话术(第一句就说,不要拖到末尾才说):
⚠️ 本次诊断需要 tikhub CLI({平台}),环境检查失败:
- tikhub --health 不通 / TIKHUB_API_KEY 没配 / 连续 retry 失败
我现在能做:Layer 1 漏斗自检(基于你给的截图数据)
我现在不能做:Layer 2 对标扫描 + Layer 3 六维拆解
两个选择:
① 修复 ~/.claude/.env 的 TIKHUB_API_KEY 或仓库内 `tikhub/bin/tikhub` 的 PATH,再来一次完整诊断
② 你直接给我 3-5 个你眼中的对标账号/笔记链接 — 我跳过搜索,直接进 Layer 3 拆解写报告时必须明文标注:
- ✅ 完整诊断:三层都跑了 → 报告标题正常,开头说明数据来源和完整度
- ⚠️ 部分诊断:跑了 1-2 层 → 报告开头用引用块标注「部分诊断,缺 Layer X,原因:Y」,主标题不要写内部状态
- ❌ 不完整诊断不写盘(不污染 reports/ 目录),只在对话里说
---
social-account-doctor — 账号 / 内容诊断引擎(自包含版)
截图 / 链接进,「卡在哪一层 + 怎么调」的可执行诊断报告出。
不是 "AI 看了下你的账号觉得还行",是 平台专属阈值 × 对标差距 × 可抄模板 的三段式判决书。
本 skill 完全自包含:tikhub MCP 调数据 + Gemini 多模态做拆解 + 本文档自带评分术语。
---
0. 内容时效性说明(先读这个)
本 skill 的内容按时效性分四档,使用 / 维护时按档处理:
| 档 | 内容 | 时效 | 维护策略 |
|---|---|---|---|
| A. 永不过时 | §1 三层诊断框架、§5 评分术语(5 封面/10 标题/3 骨架/7 钩子)、§3 视频分析三 mode、平台调性定性结论 | 基于人性 + 方法论,多年稳定 | 不动 |
| B. 季度级波动 | platforms/*.md 里所有具体数字(完播率、CTR、CES 系数、互动率、搜索占比等) | 平台算法迭代会改,半年内可能偏移 ±20% | 采集日期:2026-04;建议每 6 个月用 §0 数据来源重新校准一次 |
| C. 可能随时失效 | tikhub MCP 工具名(§8 速查表)、抖音星图 API "仅星图收录账号"限制、平台后台截图 OCR 字段名 | API 升级或平台改版即失效 | 最后核对:2026-04;调用前先用 1 个测试账号验证工具能跑通 |
| D. 高风险主张(默认怀疑) | 任何"X 月起停推""新规死刑线""算法刚刚改了"等说法 | 99% 是博主推测,不是平台官方 | 看到先疑,要求官方公告链接。本 skill 已删除"抖音 2026 新规<40%停推"这种主张,未来不要再加 |
铁律:方法论可以照搬,数字必须复核。如果你(Claude)下次诊断时发现某个阈值已经明显跟当前实战不符,告诉用户"该校准 B 档数字了",而不是硬套旧阈值。
---
1. 三层诊断框架(所有平台通用骨架)
①漏斗自检 → 用平台专属阈值,定位卡在哪一层(曝光/点击/完播/互动)
②对标扫描 → 同赛道 5k-50k 粉账号 3-5 个,找爆款率 / 扑街率 / 选题分布
③六维拆解 → 我 vs 对标 6 维评分(定位/选题/封面/标题/正文/节奏)Layer 1:漏斗自检(卡在哪一层)
通用四指标(平台专属阈值见 platforms/{平台}.md):
| 指标 | 计算 | 卡住意味着 |
|---|---|---|
| 曝光率 | 曝光 / 粉丝数 | 账号权重低 / 标签错乱 / 限流 |
| 点击率 (CTR) | 点击 / 曝光 | 封面 + 标题不及格 |
| 完播率 / 读完率 | 完播 / 点击 | 钩子 + 结构问题 |
| 互动率 | (赞+藏+评) / 曝光 | 选题没打到痛点 / 没埋互动钩子 |
关键铁律:阶梯流量池机制 — 任何一层跌破阈值,系统立即停推,先定位是哪一层卡住,再去调那一层。 不要看到不爆就先改定位,那是放弃治疗。
Layer 2:对标扫描(同赛道在做什么)
第一步:找候选(先攒 10-15 个,候选池要够厚)
| 方法 | 怎么用(直接调 tikhub MCP) |
|---|---|
| 同领域博主搜索 | xiaohongshu_web_search_users / douyin_billboard_fetch_hot_account_search_list --cursor 0 / kuaishou_app_search_user_v2 |
| 行业关键词搜作品反查作者 | xiaohongshu_app_search_notes / 抖音 hashtag_search_result → hashtag_video_list / kuaishou_app_search_video_v2 按互动量倒序;抖音视频搜索只做超时受控补充 |
| 平台热榜锁定头部 | xiaohongshu_web_v2_fetch_hot_list / douyin_app_v3_fetch_hot_search_list / kuaishou_web_fetch_kuaishou_hot_list_v2 |
| 关注页 + 推荐小三角 | 看自己/已知对标账号的"相似推荐",抖音用 douyin_xingtu_v2_get_recommend_for_star_authors |
| 第三方数据工具 | 蝉小红 / 新红 / 灰豚数据,查赛道 top 100(人工) |
| 爆款作品反查 | 抖音可用 hashtag_video_list 反查;小红书只用关键词搜笔记,不能按 hashtag 维度搜 → 按互动量倒序找重复出现的作者 |
第二步:粉丝量匹配阶梯(不要找比自己高 100 倍的对标 — 学不到)
| 你当前粉丝量 | 对标粉丝量区间 |
|---|---|
| 0 - 1k | 2000 - 5000 |
| 1k - 3k | 1W - 2W |
| 3k - 1W | 2W - 5W |
| 1W - 5W | 5W - 20W |
| 5W+ | 20W+ |
第三步:三级分类(不同级别学不同的东西)
| 级别 | 粉丝量 vs 你 | 数量 | 学什么 |
|---|---|---|---|
| 伙伴级 | 同量级或略高(×1 - ×3) | 3-5 个 | 选题 / 节奏 / 评论运营 — 可以照抄实操 |
| 榜样级 | 高 1 个数量级(×5 - ×10) | 2-3 个 | 内容结构 / 封面公式 / 人设打法 — 学方法论 |
| 大佬级 | 头部(×100+) | 1-2 个 | 战略方向 / 商业模式 / 长期节奏 — 看趋势不学动作 |
第四步:可复制性筛选
候选 10-15 个 → 按下面 4 条过滤 → 留 3-5 个 可复制对标 进 Layer 3 拆解:
- 同赛道(同人群 + 同场景)
- 近 30 天活跃发文(≥ 8 条)
- 不是蓝 V / 官方号 / MCN 大流水线(学不动)
- 没有"单笔记 100w+ 异常爆"(不可复制)
爆款率 / 扑街率:
爆款率 = 互动量 ≥ 5× 该账号平均的笔记数 / 总笔记数
扑街率 = 互动量 ≤ 0.3× 该账号平均的笔记数 / 总笔记数健康账号:爆款率 ≥ 15%,扑街率 ≤ 30%。低于这个的对标,别学。
Layer 3:六维拆解(我 vs 对标)
每一维 1-5 分打分(5 = 对标都做到了 + 我也做到了;1 = 对标在做我没做):
| 维度 | 看什么(评分标准见 §5 评分术语速查) | 我得分 | 对标得分 | 差距 |
|---|---|---|---|---|
| 账号定位 | 人群 + 场景 + 价值(三位一体) | |||
| 选题角度 | 命中赛道高频痛点 / 长尾词布局 | |||
| 封面公式 | §5.1 五种封面命中率 | |||
| 标题钩子 | §5.2 10 公式命中率 | |||
| 正文骨架 | §5.3 三骨架(场景冲突 / 人设故事 / 数据对比) | |||
| 发布节奏 | 频率 + 时段 + 矩阵化 |
差距 ≥ 2 分的维度,就是首要改进项。
6 维 vs "粉丝画像 / 变现模式":粉丝画像 和 变现模式 不进 6 维评分(避免把"结果指标"和"商业层选择"和"内容动作"混在同一张评分表里),而是走 §1.6 诊断附加项。
---
1.5 数据复盘优化矩阵(跨平台快查表)
漏斗任何一层卡住,先来这张表对一下"典型根因 + 通用修法",再去 platforms/*.md 拿平台专属修法。
矩阵是急救包,平台手册是手术刀。
| 漏斗指标卡住 | 典型根因 | 通用优化方向 | 平台专属深挖 |
|---|---|---|---|
| 3-5s 完播率低 | 开头无信息密度 / 自我介绍废话 / 首帧静止 | 切换有吸引力开头,开头即巅峰:把视频结尾最炸的金句/画面前置 | 抖音 §2.2 |
| 整体完播率低 | 视频时长过长 / 中段某片段突兀 / 节奏断 | 选优质片段重剪多版本测试;卖点出现前每 3-5 秒一个钩子 | 抖音 §1.1 完播分档、快手 §2.1 |
| 25% / 50% / 75% 进度跳水 | 中间出现反感片段 / 信息密度断崖 | 看跳水时间点 → 砍掉 / 重剪那段 → 补一个反转或数据点 | 抖音 §2.2、小红书 §2.3 阅读完成率 |
| 互动率低(赞/评/藏) | 没埋互动钩子 / 内容没"槽点" | 故意留一个槽点 / 争议点吸引评论;结尾抛开放性问题 | 小红书 §2.3 CES、快手 §3.3 评论质量 |
| 数据好但转化率低 | 评论区没维护 / 没转化路径 | 评论必回带 @,加引导路径(关注/私信/小程序/简介导流) | 小红书 §6 私域承接、快手 §3.3 |
| 播放时长长但转化率低 | 引入部分太长,用户走时还没看到转化点 | 缩短引入,把转化引导前置到中段而不是结尾 | 小红书 §3 |
用法:先用 §1 漏斗自检定位到具体那一行 → 看通用方向心里有数 → 去对应 platforms/*.md 拿平台经验阈值 + 工具链 + 5 根因清单 → 出 P0/P1/P2 行动。
---
1.6 诊断附加项(不进 6 维评分,但完整诊断必查)
| 附加项 | 怎么查 | 为什么不进 6 维 |
|---|---|---|
| 粉丝画像 | 抖音:tikhub douyin douyin_billboard_fetch_hot_account_fans_portrait_list(仅星图收录账号有数据,普通账号会空);小红书:靠笔记评论 + 关注列表反推;快手:API 不给,看后台 | 是结果指标,反映前 6 维做得对不对 — 画像与目标人群偏离 ≥ 30% = 前 6 维出问题 |
| 变现模式 | 看主页挂载(小黄车/购物车/简介引流话术) | 是商业层选择,不是内容诊断范畴 — 但变现链路断了,前 6 维做再好也是白干 |
判定:粉丝画像与目标人群偏离 ≥ 30% → 倒推查"账号定位 + 选题角度"是否飘了;变现链路缺失 → 加进 P1 行动清单(小红书必有评论区导流话术 / 抖音挂车 / 快手主页引流)。
⚠️ 账号资料层保守铁律(同 §9.13):粉丝画像 / 变现模式 / 账号定位重写 / 简介改写 这类改了影响整个号未来推荐的建议,缺硬数据就不下结论。粉丝画像 API 空(普通抖音号常见)→ 写「画像数据不可得,跳过」,不要靠"评论里看着像 25-35 女性"自己推一个;变现挂载没看到 → 写「未观察到挂载」,不要默认建议"应该挂车"。详见 §9.13。
---
2. 输入路由(用户给的什么形态,怎么处理)
输入 A:截图(笔记数据后台截图,链接可选)
1. 先看截图:曝光 / 点击 / 完播 / 互动 数据是否完整
2. 调 scripts/ocr_screenshot.py <截图路径> → 拿结构化 JSON(Gemini 3.1 Pro OCR)
{
"platform_guess": "xiaohongshu / douyin / kuaishou / unknown",
"metrics": {"impressions": ..., "ctr": ..., "completion": ..., ...},
"raw_text": "OCR 全文"
}
3. 如果用户也给了笔记链接 → 调对应平台 tikhub MCP "笔记/视频详情" 工具
拿封面 + 标题 + 评论
4. 跳到 §4 平台专属诊断输入 B:账号链接(自己 + 对标,可能多个对标)
1. 调 scripts/dispatch_account.py <account_url> → 拿到 platform + user_id + tikhub 工具表
2. 用对应 tikhub MCP 工具,分别拿:
- 我方:账号信息 + 最近 30 条笔记互动数据
- 对标:账号信息 + 最近 30 条笔记互动数据
3. 计算各自的爆款率 / 扑街率 / 互动均值(Layer 2)
4. 抽样:我方 top 3 爆款 + bottom 3 扑街,对标 top 5 爆款,
逐条调 §3 多模态分析(封面 → analyze_image,视频 → analyze_video)
5. 跳到 §4 平台专属诊断输入 C:只给账号链接,没对标("帮我找几个对标")
1. 拿到账号信息 → 提取人群 / 赛道关键词
2. 调对应 tikhub MCP 的"关键词搜笔记"+"按互动量排序"
3. 从结果里挑 3-5 个 5k-50k 粉账号,过滤掉:
- 蓝 V / 官方号
- 单笔记 100w+ 异常爆(不可复制)
- 近 30 天发文 < 8 条(不活跃)
4. 把对标候选交给用户确认 → 用户点头 → 跳到输入 B 流程输入 D:只给一张截图,没链接没账号
1. ocr_screenshot.py 提数据
2. 调 §1 Layer 1 通用阈值(不用平台专属,因为不知道平台)
3. 输出"建议先告诉我平台 / 账号链接,我才能给对标差距诊断"
4. 对话补齐---
3. 多模态分析能力(Gemini 3.1 Pro,本 skill 内置)
所有视觉/视频分析都走环境变量 VIDEO_ANALYSIS_API_KEY,对应 OpenAI 兼容协议的 Gemini 代理。三个脚本统一在 scripts/ 目录,输出严格 JSON,对齐 §5 评分术语速查。3.1 截图 OCR(数据后台截图 → 结构化指标)
python3 ~/.claude/skills/social-account-doctor/scripts/ocr_screenshot.py <截图路径>
→ 输出 JSON:platform_guess + screenshot_type + metrics{impressions/ctr/completion/...} + raw_text + warnings适用:用户截图后台数据(创作者中心、蒲公英商家后台、笔记数据页)。 铁律:OCR 不可信时(warnings 非空 / 关键字段为 null)必须让用户文字补齐或提供链接。
3.2 封面 / 首帧图分析(拿封面 5 变量 + 5 模板归类 + 钩子识别)
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_image.py <图片1> [图片2 ...] --concurrency 1 --timeout 600
→ 输出 JSON:
cover_variables{ratio, big_text, big_text_ratio, human_presence, color_contrast, info_density}
template_classification{matched: A/B/C/D/E, name, confidence, reason}
hook_detection{audience_lock, benefit_promise, curiosity_gap}
title_formula_hint{matched_formula_id: 0-10, reason}
weakness(一句话点出 CTR 维度短板)适用:拆解笔记封面(小红书)、视频首帧(抖音/快手都把首帧当封面)。 用法:对我方 top 3 + bottom 3 + 对标 top 5 都跑一遍,找共性模板和差距。
3.3 视频分析(三种 mode:talking / visual / keyframe + auto 自动判定)
核心理念:不同内容类型的视频,分析路径完全不一样。三条路径:
| Mode | 适用内容 | 分析重心 | 关键产物 |
|---|---|---|---|
| talking | 教程口述 / 知识科普 / 播报 / 真人说话头 | 口播稿(ASR)+ 轻量视觉分段 | transcript_analysis(首句钩子 / 信息密度 / CTA / 标题公式) |
| visual | vlog / 表演 / 美食拍摄 / 转场剪辑 | 密集分段视觉拆解(每 90s 一段) | visual_analysis(钩子/节奏/情绪弧)+ key_moments |
| keyframe | PPT 录屏 / 知识截图 / 思维导图 / 教程截屏 | ffmpeg 场景变化抽关键帧 + 每帧 OCR/拆解 | keyframe_analysis(OCR + 知识点 + 视觉模板) |
关键帧上限按时长动态:≤3 分钟抽 10 张 / 3-10 分钟抽 20 张 / >10 分钟抽 30 张。
用法:
# 默认 auto 模式:抽 5 张代表帧 + 前 30s 音轨喂 Gemini 自动判定 content_type
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_video.py <视频路径>
# 强制走某条路径(已知内容类型时省一次判定调用)
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_video.py <视频路径> --mode talking
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_video.py <视频路径> --mode visual
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_video.py <视频路径> --mode keyframe输出 JSON 公共字段:video_path / duration_seconds / mode_requested / mode_used / mode_detection(auto 模式额外有)。 模式专属字段:见上表"关键产物"列。
铁律(澄清旧"绝不抽帧"):
- 默认按视频配置:visual / talking 模式本地视频片段存在且未禁用时发送 video_url payload;设
VIDEO_ANALYSIS_USE_VIDEO_URL=0或没有可用视频片段时,才按时间顺序抽 6 张代表帧兜底 - 不要只抽一张封面帧:钩子/节奏/情绪弧是时序信息,单帧会丢光 → 至少按时间顺序抽多帧
- 必须抽场景帧:keyframe 模式下画面是稳定文字载体(PPT / 截图),时序信息少 → ffmpeg
select='gt(scene,0.3)'抽场景变化关键帧 → 每帧单独 OCR + 拆知识点 - talking 模式 ASR 必须跑通:没设
AUDIO_TRANSCRIPTION_API_KEY直接报错退出(口播主导视频没 ASR = 没法分析)
用法建议:
- 抖音 / 快手的"完播率有问题"的视频 → auto 一般会判 visual,重点看前 5s 钩子
- 小红书的"教程类长图文视频" → auto 一般会判 keyframe,重点看每张关键帧的 OCR + 信息密度
- 知识口播号 / 播客切片 → auto 一般会判 talking,重点看首句口播 + CTA
3.4 评论拉取 + 痛点聚类(文本分析,不走 Gemini,但走 LLM 推理)
1. 用 tikhub MCP 拉评论:
- 抖音:tikhub douyin douyin_app_v3_fetch_video_comments
- 小红书:tikhub xiaohongshu xiaohongshu_app_get_note_comments
- 快手:tikhub kuaishou kuaishou_app_fetch_one_video_comment
2. 取前 50-100 条评论,让 Claude 做痛点聚类 + 情绪分布
3. 输出:top 5 高频痛点 + 评论情绪分布(正/负/求资源/吐槽)适用:判断"内容打到痛点了吗",对标爆款必跑(看观众真实反馈,不只看赞数)。
3.5 媒体下载小贴士
# 抖音视频高画质播放地址
tikhub douyin douyin_app_v3_fetch_video_high_quality_play_url(aweme_id=...)
→ 拿到 URL 后用 curl/wget 下载到 /tmp/account_diag/{aweme_id}/video.mp4
# 小红书笔记图片
# 没有独立的 image 接口可用 (web_v2_fetch_note_image 实测挂)
# 改用 app_get_note_info 返回里的 image_list URL
tikhub xiaohongshu xiaohongshu_app_get_note_info(note_id=..., xsec_token=...)
→ 从 image_list 字段拿 URL 列表
# 快手视频
tikhub kuaishou kuaishou_app_fetch_one_video(photo_id=...)
→ 拿到 play_url---
4. 平台专属诊断(每个平台 2 大主逻辑)
每个平台都有自己的子手册,里面有:阈值表、工具映射、6 维评分细则、行动建议清单。
Claude 读完本节先跳到对应 platforms/*.md 加载平台细节,再继续报告。
| 平台 | 子手册 | ⭐ 算法核心信号(命门) | 主逻辑 1 | 主逻辑 2 |
|---|---|---|---|---|
| 抖音 | platforms/douyin.md | 完播率(5s → 全程) | 5s完播率诊断(行业合格线 ~50%) | 钩子诊断(前 3 帧 + 首句口播) |
| 小红书 | platforms/xiaohongshu.md | 互动率(CES:评 / 转 / 关高权重) | CES + 封面 CTR 诊断 | 搜索分发诊断(近 70% 月活有搜索行为) |
| 快手 | platforms/kuaishou.md | 跳出 / 留存 + 关注转化 | 完播 + 关注转化率诊断(老铁经济) | 同城分发 + 评论质量诊断 |
| 视频号 | platforms/wechat-channels.md | 分享率(社交关系链分发) | 分享率诊断(4 种分享触发点) | 三段式分发诊断(关注页 → 朋友推荐 → 机器推荐) |
⭐ 诊断铁律:差距 ≥ 1 档时优先修该平台的核心信号项,再修其他维度。每个平台 §0.5 顶部有 T0/T1 速查表,第一屏可见。
⚠️ 阈值数据来源声明:本 skill 所有平台阈值(完播率/CTR/CES/互动率等)均为 行业经验值(来自蝉妈妈/千瓜/新红/新浪财经 COO 公开演讲等多源),非平台官方公告。具体出处见各 platforms/*.md 顶部的"数据来源"小节。诊断时用作"方向判断",不是"绝对死线"。
---
5. 评分术语速查(自包含 — 6 维评分都对齐这套)
这一节是本 skill 的"内置词典",所有平台手册的"封面公式 / 标题钩子 / 正文骨架 / 视频钩子"都引这里。
没有这一节,6 维评分就没共同语言。
5.1 五种封面模板(A/B/C/D/E)
| 编号 | 名称 | 特征 | 典型场景 |
|---|---|---|---|
| A | 大字报型 | 整张图 50%+ 是大字标语,颜色高对比 | 教程 / 干货 / 避坑(小红书最常见) |
| B | 对比型 | Before/After 左右或上下分屏,箭头/对勾突出差异 | 减肥 / 美妆 / 装修 / 改造 |
| C | 真人出镜型 | 真人脸 + 表情夸张 + 大字配文 | 吃播 / 测评 / 故事号 |
| D | 实物展示型 | 产品/物品居中,无人或仅手出镜,干净背景 | 好物推荐 / 商品种草 / 工具展示 |
| E | 表格截图型 | 文字密集,表格/清单/聊天截图直接当封面 | 资源贴 / 攻略 / 数据对比 |
评分:5 分 = 命中模板 + 大字 ≥ 1/4 + 高对比 + 人群锚定;1 分 = 随便截一张 / 无字 / 同色系。
5.2 10 个标题公式
| 编号 | 名称 | 模板 | 例子 |
|---|---|---|---|
| 1 | 数字+人群+效果 | 「N 个 [动作],[人群] [效果]」 | "3 个动作,新手妈妈 1 小时哄睡" |
| 2 | 反认知钩子 | 「原来 [认知反例]」 | "原来卸妆油才是闷痘元凶" |
| 3 | 极端体验 | 「[极端形容词] + [对象]」 | "一辈子只用这一支防晒" |
| 4 | 怕错避坑 | 「千万别 [行为],否则 [后果]」 | "千万别空腹喝美式,胃要烂" |
| 5 | 答案前置 | 「[问题] 答案是 [反差答案]」 | "脸黄到底是什么原因?不是肝" |
| 6 | 身份共鸣 | 「我是 [身份],我 [行为/选择]」 | "我是 985 学姐,我从不背单词" |
| 7 | 升维加码 | 「不是 [常规],是 [升级版]」 | "不是减肥餐,是不易胖的代谢餐" |
| 8 | 资源诱饵 | 「[数字] 份 [资源],[条件领取]」 | "100 份小红书选题表,评论扣 1" |
| 9 | 时间锚定 | 「[时长] 学会 / 改变 [事]」 | "30 天,从 1k 到 1W 粉" |
| 10 | 对比反差 | 「[A] vs [B],差别 [惊人结果]」 | "学渣 vs 学霸笔记,差的不是字" |
评分:5 分 = 命中 1 个明确公式 + 数字/人群/利益齐全;1 分 = 平铺直叙 / 无钩子。
5.3 三种正文骨架
| 编号 | 名称 | 结构 | 适用 |
|---|---|---|---|
| A | 场景+冲突+解决 | 设场景 → 抛冲突/痛点 → 给解决方案 → 升华/CTA | 教程类 / 痛点解决 |
| B | 人设+故事+产品 | 立人设 → 讲个人故事 → 自然带出产品/方法 → 邀请互动 | 故事号 / 种草 |
| C | 数据对比+结论 | 摆数据/对比 → 分析差异 → 给结论 → 转化引导 | 评测 / 攻略 / 干货 |
评分:5 分 = 命中骨架 + 首句钩子 + 中段不塌 + 结尾有 CTA;1 分 = 流水账 / 无结构。
5.4 七种视频开头钩子(前 3-5 秒)
| 编号 | 名称 | 模板 | 例子(首句口播) |
|---|---|---|---|
| 1 | 提问钩 | 「你是不是也 [痛点]?」 | "你是不是也吃完就困?" |
| 2 | 反差钩 | 「以为 [常识],其实 [反例]」 | "都说蛋白粉伤肾,错了" |
| 3 | 数字钩 | 「[数字] + [利益/效果]」 | "3 招让你的简历过 BOSS 直聘" |
| 4 | 承诺钩 | 「看完这条视频,你就能 [结果]」 | "1 分钟教会你拍出大片" |
| 5 | 悬念前置 | 直接放结尾最炸的一帧/金句,倒叙开始 | "(前/后对比图)这是怎么做到的?往下看" |
| 6 | 身份锁定 | 「如果你是 [人群],这条必看」 | "30+ 女性,这 5 个补剂别吃错" |
| 7 | 利他诱饵 | 「我帮你做完了 [事],免费拿」 | "我整理了 200 个小红书选题,评论扣 1" |
评分:5 分 = 前 3 帧 = 利益+人群+好奇三合一 + 首句口播命中公式 + 封面/首帧一致;1 分 = "大家好今天给大家分享" / 静止画面 / 无钩子。
---
6. 抓取深度决策(自动决定分析多少条)
不要"全抓全分析",token 浪费。按账号体量分档:
| 账号笔记总数 | 我方笔记抓取 | 对标账号抓取(每个) | Gemini 多模态深度拆解条数 |
|---|---|---|---|
| < 50 | 全部 | 全部 | 我方 top 3 + bottom 3,对标 top 3 |
| 50 - 200 | 最近 30 + 历史 top 10 | 最近 30 + top 5 | 我方 top 3 + bottom 3,对标 top 5 |
| 200 - 500 | 最近 30 + top 10 + bottom 10 | 最近 30 | 我方 top 3 + bottom 3,对标 top 5 |
| > 500 | 最近 30 + top 10 + bottom 10 | 最近 30 | 我方 top 5 + bottom 5,对标 top 5 |
单次诊断 Gemini 多模态深度拆解上限:15 条。再多就分批,给用户阶段性报告。
---
7. 输出格式(严格按这个模板)
铁律:完整诊断必须同时做两件事 — ① 在对话里输出报告给用户看;② 落盘到 ./reports/{platform}-{id}-{YYYYMMDD-HHMM}.md(相对于当前工作目录)。>
-{platform}=xhs/douyin/kuaishou
-{id}= 笔记 ID(截图诊断用screenshot)/ 账号 ID 末 8 位
- 文件路径示例:./reports/xhs-2800ab54-20260421-1645.md- 写盘前用 mkdir -p ./reports 确保目录在- 报告写完后必须告诉用户文件路径
- 半成品诊断不写盘(接口失败、信息严重不全时只在对话里说明,避免污染报告目录)
# 账号诊断报告 — @[账号名]
## 0. TL;DR(先给结论)
- **卡在哪一层**:曝光 / 点击 / 完播 / 互动(命中其中 1-2 层)
- **首要改进项**:6 维里差距 ≥ 2 分的维度(按差距倒序)
- **本周行动 3 件事**:具体到"改封面成 X 模板 / 标题套 N 号公式 / 加一句首句钩子"
## 1. 账号体检(漏斗自检)
| 指标 | 我的实际值 | 平台阈值 | 判定 |
|---|---|---|---|
| 曝光率 | | | ✅ / ⚠️ / ❌ |
| CTR | | | |
| 完播率 / 读完率 | | | |
| 互动率 | | | |
→ **结论**:卡在 X 层。原因初判:…
## 2. 对标扫描
### 2.1 候选概览(带级别)
| 对标账号 | 粉丝数 | 级别(伙伴/榜样/大佬) | 近 30 天爆款率 | 扑街率 | 高频选题 | 主用封面模板 |
|---|---|---|---|---|---|---|
| @A | | 伙伴 | | | | |
| @B | | 榜样 | | | | |
| @C | | 大佬 | | | | |
### 2.2 深度拆解矩阵(维度 × 对标)
| 维度 | 对标 A(伙伴) | 对标 B(榜样) | 对标 C(大佬) | 我方现状 |
|---|---|---|---|---|
| 账号定位(人群+场景+价值) | | | | |
| 选题角度(高频痛点 / 长尾词) | | | | |
| 笔记封面公式 | | | | |
| 标题钩子公式 | | | | |
| 开头钩子 / 结尾设计 | | | | |
| 粉丝画像(推测 or 实测) | | | | |
| 变现模式(挂载 / 私域 / 直播) | | | | |
| **可借鉴 3 条**(具体动作) | 1.… 2.… 3.… | 1.… 2.… 3.… | 1.… 2.… 3.… | — |
→ **结论**:赛道在做什么 X、Y、Z;我没在做的是 W。
→ **可抄清单**:从伙伴抄动作 N 条;从榜样学方法 M 条;从大佬看趋势 L 条。
## 3. 六维拆解(我 vs 对标平均)
| 维度 | 我 | 对标平均 | 差距 | 短板诊断 |
|---|---|---|---|---|
| 账号定位 | | | | |
| 选题角度 | | | | |
| 封面公式 | | | | |
| 标题钩子 | | | | |
| 正文骨架 | | | | |
| 发布节奏 | | | | |
## 4. 平台专属诊断(按 platforms/*.md 套用)
**主逻辑 1:[平台主指标] 诊断**
- 我的实际值:…
- 阈值:…
- 判定 + 根因:…
**主逻辑 2:[平台第二主逻辑] 诊断**
- …
## 5. 单条深度拆解(Gemini 多模态报告摘要)
### 我方 top 1:[标题]
- 命中模板:封面 X / 标题 N 号 / 骨架 Y / 钩子 Z
- 评论质量:✅ 有效爆 / ❌ 无效爆
- 可复用元素:…
### 我方 bottom 1:[标题]
- 短板:…
- 对照对标 top X,差在 …
### 对标 top 1:[标题]
- 可抄什么:…
## 6. 行动清单(优先级排序)
**P0(本周改)**
1. ……
**P1(本月调)**
1. ……
**P2(季度沉淀)**
1. ……
## 7. 30 / 60 / 90 验证指标
- 30 天:曝光率提升 X% / 完播率达到 Y%
- 60 天:单月爆款 ≥ N 条
- 90 天:粉丝从 a 到 b---
8. tikhub MCP 工具速查(按平台 × 任务)
三大平台都有完整 tikhub MCP,本 skill 全部直接调用,不依赖任何其他 search skill。
抖音(tikhub douyin )
| 任务 | 工具 | 关键参数 |
|---|---|---|
| 账号信息 | douyin_web_handler_user_profile (基本) / _v4(带性别+直播等级) | sec_user_id |
| 用户作品列表 | douyin_web_fetch_user_post_videos | sec_user_id + count |
| 视频详情 | douyin_app_v3_fetch_one_video | aweme_id |
| 视频统计(播放/赞/转/下) | douyin_app_v3_fetch_video_statistics | aweme_ids |
| 视频高画质播放 URL | douyin_app_v3_fetch_video_high_quality_play_url | aweme_id 或 share_url |
| 视频评论 | douyin_app_v3_fetch_video_comments | aweme_id |
| 关键词搜作者(找对标) | douyin_billboard_fetch_hot_account_search_list | keyword + cursor=0 |
| 关键词搜作者 fallback | douyin_app_v3_fetch_user_search_result | keyword |
| 关键词搜话题(反查高互动作者) | douyin_app_v3_fetch_hashtag_search_result → douyin_app_v3_fetch_hashtag_video_list | keyword / ch_id |
| 关键词搜视频(找选题,补充) | douyin_app_v3_fetch_video_search_result_v2 | keyword,必须加调用超时 |
| 短链解析(v.douyin.com) | douyin_app_v3_fetch_one_video_by_share_url | share_url |
| 粉丝画像(深度诊断) | douyin_billboard_fetch_hot_account_fans_portrait_list(仅星图收录账号有数据,普通账号会空) | sec_uid |
| 热搜榜 | douyin_app_v3_fetch_hot_search_list | — |
小红书(tikhub xiaohongshu ) — 接口选择见 SKILL.md §9.1(实测 2026-04-23)
| 任务 | 工具 | 关键参数 |
|---|---|---|
| 账号信息 | xiaohongshu_app_get_user_info (App V1, 首选) | user_id |
| 用户笔记列表 | xiaohongshu_web_v2_fetch_home_notes_app(当前唯一能用) | user_id + cursor |
| 笔记详情 | xiaohongshu_app_get_note_info (App V1, 需 xsec_token) | note_id + xsec_token |
| 笔记图片 | 用 app_get_note_info 返回的 image_list URL (web_v2_fetch_note_image 实测挂) | — |
| 笔记评论 | xiaohongshu_app_get_note_comments (App V1) | note_id |
| 评论子回复 | xiaohongshu_app_get_sub_comments (App V1) | note_id + comment_id |
| 关键词搜笔记 | xiaohongshu_app_search_notes (App V1) | keyword + sort_type |
| 关键词搜用户 | xiaohongshu_web_search_users (Web V1, 唯一可用) | keyword + page |
| 热榜 | xiaohongshu_web_v2_fetch_hot_list (⚠️ 官方说 Web V2 已停维护,暂时能用) | — |
| 分享链接解析 | xiaohongshu_web_get_note_id_and_xsec_token (短链 → note_id+xsec_token) | share_link |
⚠️ 不要用 (官方弃用 / 实测全挂): app_v2_* 全系列实测 RetryError; app_search_notes_v2 / app_search_users / app_get_video_note_info / app_get_notes_by_topic 官方明确弃用; web_v2_fetch_user_info/feed_notes_v2/note_comments/sub_comments/home_notes 官方说停止维护, 暂能用但别长期依赖。
快手(tikhub kuaishou )
| 任务 | 工具 | 关键参数 |
|---|---|---|
| 账号信息 | kuaishou_app_fetch_one_user_v2 / kuaishou_web_fetch_user_info | user_id |
| 用户作品列表 | kuaishou_app_fetch_user_post_v2 | user_id + pcursor |
| 用户热门作品 | kuaishou_app_fetch_user_hot_post | user_id |
| 视频详情 | kuaishou_app_fetch_one_video | photo_id |
| 视频评论 | kuaishou_app_fetch_one_video_comment | photo_id |
| 用户直播信息 | kuaishou_app_fetch_user_live_info | user_id |
| 关键词搜视频 | kuaishou_app_search_video_v2 | keyword + page |
| 关键词搜用户 | kuaishou_app_search_user_v2 | keyword + page |
| 综合搜索 | kuaishou_app_search_comprehensive | keyword |
| 热榜 | kuaishou_web_fetch_kuaishou_hot_list_v2 | board_type=1 |
| 分享链接解析 | kuaishou_web_fetch_one_video_by_url / kuaishou_web_fetch_get_user_id | url / share_link |
本地脚本(scripts/)
| 任务 | 工具 |
|---|---|
| 截图 → 数据 | scripts/ocr_screenshot.py <截图路径> |
| 链接 → 平台+ID | scripts/dispatch_account.py <账号URL> |
| 封面/首帧 → 5 变量+模板 | scripts/analyze_image.py <图片路径> |
| 视频 → 分段拆解+转写 | scripts/analyze_video.py <视频路径> |
---
9. 关键铁律(必读)
1. 先定位漏斗层,再谈改什么。看到不爆就先改定位 = 放弃治疗。 2. 对标必须 5k-50k 粉,同赛道,活跃。学不到的对标不是好对标。 3. 6 维评分要给数字(1-5),别说"还可以 / 一般"。差距 ≥ 2 才动。 4. 平台阈值是经验值,不是官方死刑线。所有数字都是蝉妈妈/千瓜/新红等行业拆解的中位数(见 platforms/.md 顶部"数据来源"),用作方向判断,不要写"低于 X 必死"这种绝对话,会误导用户。 5. 截图 OCR 不可信时强制要求链接。后台截图字段经常糊 / 截不全 / 不同后台版本字段不一样。 6. 不分析"为什么对方爆"(那是单条拆解的活),只分析"我和对方差在哪"。 7. 抓取深度按 §6 表执行,单次拆解上限 15 条。token 不是免费的。 8. 行动清单按 P0 / P1 / P2 排,给用户清楚的优先级,不要给一串平等的建议。 9. 找对标候选要 10-15 个,留 3-5 个"可复制对标"。三级分类(伙伴/榜样/大佬)各有所学:伙伴学动作、榜样学方法、大佬看趋势 — 别全学伙伴,也别全学大佬。 10. 数据卡住先查 §1.5 优化矩阵,再去 platforms/.md 拿平台修法。矩阵是急救包,平台手册是手术刀,顺序别反。 11. 视频分析按 mode 路由(见 §3.3):talking 看口播稿、visual 走分段视觉,keyframe 抽场景关键帧。auto 模式自动判定。时序内容不能只看单帧;visual/talking 默认按视频配置走,本地片段存在且未禁用时发 video_url,设 `VIDEO_ANALYSIS_USE_VIDEO_URL=0` 或没有可用视频片段时才用代表帧兜底。图文密集类必须抽场景关键帧(PPT / 知识截图画面是稳定文字载体)。 12. 评分术语全部用 §5 速查表。别自己造词,否则 6 维评分和对标对不上。 13. 脚本层信任、账号资料层保守**(防"AI 自信地把账号带偏"):
- 脚本/内容层(标题 / 封面大字 / 首段 / CTA / 钩子 / 骨架 / 选题 / 单条改写 / 视频脚本)→ 按流程直接吐,不必反复"建议确认"。错了下条改回来成本低。
- 账号资料层(账号定位重写 / 简介改写 / 人设调整 / 赛道切换 / 粉丝画像判定 / 变现模式建议)→ 保守输出,缺数据宁可不说也不编:
- 缺数据时直接写「数据不足,暂不下结论」,不要凭"行业经验"补一个定位
- 给修改建议必须标注依据(哪条数据 / 哪个对标 / 哪条评论证明),没依据就不写
- 多给"试一下看反馈"的方向,少给"必须改成 X"的断言
- 报告里 Layer 3 「账号定位」维度评分 + §1.6 粉丝画像 / 变现模式 + P0/P1/P2 行动清单里涉及账号资料的项 → 要么有硬数据支撑,要么明确标 ⚪ 推断 + 「建议先观察 N 周再动」
- 任何「建议把简介改成 X」/「你应该重新定位为 Y」先在对话里跟用户对齐「我手里只有 Z 数据,这条结论你觉得靠谱吗」再写盘
- 接口失败 / 数据缺失时,账号资料相关诊断直接跳过,不要"基于经验推断"凑数
Why:内容层错了下条改回来成本低;账号资料一改影响所有未来推荐 + 标签,反复横跳会污染账号权重。看似自信但其实是 AI 推断的"账号建议"会把整个号带偏。
B 站账号 / 内容诊断子手册
主 skill:social-account-doctor。本手册被 §3 平台专属诊断章节调用。B 站核心特性:三连率(点赞 + 投币 + 收藏 / 播放)是算法独家高权重信号,远比单纯播放重要。弹幕是其他平台没有的实时情绪信号 — 黄金 3 秒高潮位 / 共鸣梗 / 痛点求教程都能从弹幕里直接捞。
---
0. 数据来源声明
B 站官方公开的算法细节极少,本手册阈值均为行业经验值 + 创作者社区共识:
- B 站官方创作者中心公开口径("流量推荐机制"、"创作激励规则")
- B 站 100T+ / 充电计划等公开活动里 UP 主分享的"反推算法"经验
- 飞瓜 / 新榜 / 卡思数据 — UP 主公开数据反推
- 火山引擎 / 知乎深度学习 UP 主公开拆解(学习赛道高密度,可观察性强)
B 站独家信号:
- 三连率 = (point + coin + favorite) / view —— 投币尤其稀缺(每天免费 1 枚,要拿出来给)
- 弹幕密度 = danmaku / view ×100 —— 强情绪触发器
- 完播率 + 时长甜区 —— B 站允许长视频,但完播门槛比抖音高
⚠️ B 站算法不透明度极高,本手册数字仅作方向判断;核心定性结论"三连 > 一切"在多源反复验证,是稳的。
📅 数据采集日期:2026-04 / 建议复核周期:6 个月。B 站 2025 主推「三连激励」+「中长视频流量倾斜」,半年以上不更新阈值会偏。
---
0.5 算法规则速查 — T0/T1(可执行版)
⭐ 算法核心信号 = 三连率(投币 + 收藏 + 点赞)。差距 ≥ 1 档时优先于其他维度修 — B 站算法对投币/收藏权重极高(投币是用户每天的稀缺资源),跟抖音「完播率为王」、小红书「收藏 ≈ 点赞」逻辑都不同。
>
T0 = 不做就死;T1 = 不做次推。
| 级 | 规则 | 怎么做(动作) | 不做的代价 |
|---|---|---|---|
| ⭐ T0 | 内容必须有"投币驱动力"(信息密度 / 干货 / 收藏价值) | 教程类 / 干货类 / 长视频 / 整理类,结尾明确 CTA "三连支持" | 三连率 < 5%,B 站算法判定低质,进不到下一池 |
| ⭐ T0 | 完播率门槛比抖音高(B 站长视频文化) | 短视频(< 3min)跑通完播 ≥ 50%;中视频(3–10min)≥ 30%;长视频(10min+)≥ 20% | 完播低 → 信任度低 → 三连低 |
| ⭐ T0 | 标题对话感 + 信息钩子,不抖音腔 | 「我把 XX 跑通了」「真没想到 XX」「XX 完整教程」;不要「3 个技巧让你 XXX」 | 信息流点击率 < 5%,进不了二级流量池 |
| T0 | 封面 16:9 大字 + 视觉冲击 | 大字 ≥ 1/3 + 强对比 + 主体居中;不要竖版(B 站全部 16:9 横屏) | CTR < 5%,分发停滞 |
| T1 | 黄金 3 秒口播 + 频道开屏 | 首句直接钩子;UP 主固定开屏 / 片头不超过 3 秒 | 跳出率高 |
| T1 | 视频时长甜区:5–15 分钟 | 学习党 / 深度内容 = 8–20 分钟;快剪 / vlog = 3–8 分钟 | < 3min 信息密度感不强;> 30min 完播门槛高 |
| T1 | 简介加章节时间戳 + tag 完整 | 时间戳让用户 jump,提升二刷率;tag ≥ 8 个分发友好 | 长尾流量减半 |
---
1. 阈值表(行业经验值,非官方)
| 指标 | 计算 | 偏低 | 合格 | 优秀 | 卡住意味着 |
|---|---|---|---|---|---|
| 曝光率 | 24h 曝光 / 粉丝数 | < 0.5 | 0.5–2.0 | > 2.0 | 标签错乱 / 限流 / 账号权重低 |
| 点击率 (CTR) | 点击 / 曝光 | < 5% | 5–10% | > 12% | 封面 + 标题不及格 |
| 三连率(命门) | (赞 + 币 + 藏) / 播放 | < 3% | 3–8% | > 10% | 没"投币驱动力",算法判定低质 |
| 投币率 | 投币 / 播放 | < 1% | 1–3% | > 3% | 内容没干货,用户不愿出血 |
| 收藏率 | 收藏 / 播放 | < 2% | 2–5% | > 5% | 没"留着用"价值 |
| 完播率(短) | 完整看完 / 点击(< 3min) | < 35% | 35–55% | > 55% | 节奏断 / 中段塌 |
| 完播率(中) | < 10min | < 20% | 20–35% | > 35% | 中段密度不足 |
| 完播率(长) | > 10min | < 12% | 12–25% | > 25% | 节奏 + 干货密度问题 |
| 弹幕密度 | 弹幕数 / 播放 ×100 | < 0.3 | 0.3–1.5 | > 1.5 | 没情绪 / 没梗 / 没共鸣 |
| 关注转化率 | 新关注 / 曝光 | < 0.1% | 0.1–0.5% | > 0.5% | 人设模糊 |
经验铁律:B 站看三连率 > 看播放量 > 看完播率。一条 1 万播放三连率 10% 的视频,比一条 10 万播放三连率 1% 的更值钱(前者会被算法持续推,后者就是流量泡沫)。
---
2. 主逻辑 1:三连率诊断(B 站头号信号)
2.1 怎么定位是不是卡在这一层
1. 漏斗看到 三连率 < 3%(投币率 < 1% 或 收藏率 < 2%)→ 直接进本节
2. 调 tikhub bilibili bilibili_web_fetch_one_video --bv_id <id>
→ 拿 stat(view/like/coin/favorite/share/danmaku/reply)+ desc + tag
3. 算分项:投币率 / 收藏率 / 弹幕密度 → 看哪一项掉了
4. 对照 §2.2 五种三连失败模式定位根因2.2 三连率崩盘的五种典型根因
| 根因 | 现象 | 修法 |
|---|---|---|
| 没干货 / 信息密度低 | 投币率 < 1%(用户不愿出血) | 加技术细节、参数、对比图、可下载资源;标题加"完整教程/全流程/实测" |
| 没收藏价值 | 收藏率 < 2% | 改成清单 / 教程 / 速查;视频内提示"建议收藏,二刷会用到" |
| 标题抖音腔 | "3 个技巧让你 XXX" 这种带货腔 | 改对话感:"我把 XX 跑通了"/"真没想到 XX"/"XX 实测一周后" |
| 章节断裂 | 完播率低 + 弹幕集中前 30s | 加章节时间戳;中段每 2-3 分钟一个反转 / 数据点 |
| CTA 不明 | 结尾没有"三连"提示 | 结尾 5s 明确说"觉得有用就点个三连支持下";UP 主头像旁有"投币" UI 提示 |
2.3 三连率分项诊断
| 分项偏低 | 含义 | 修法 |
|---|---|---|
| 投币率 < 1% 但点赞 > 5% | 内容好但不够"硬" | 加技术深度 / 实测数据 / 行业对比 |
| 收藏率 < 2% 但点赞 > 5% | 有趣但没"留着用"价值 | 改成清单/教程/资源贴 |
| 点赞 < 收藏 / 投币 | 流量没起,但触达的用户认可 | 修封面 / 标题让流量先起来 |
| 三项都低 + 完播 < 30% | 选题或表达问题 | 重新定位:要么换选题,要么换 UP 主表达方式 |
---
3. 主逻辑 2:弹幕分析(B 站独家信号)
弹幕是其他平台没有的实时情绪流,比评论更直接:
3.1 拉弹幕 + 切词
1. 调 tikhub bilibili bilibili_web_fetch_one_video --bv_id <id> → 拿 cid
2. 调 tikhub bilibili bilibili_web_fetch_video_danmaku --cid <cid> → 弹幕原文 + 出现时间
3. 切词、统计高频词 + 时间分布3.2 弹幕信号分类(4 类必看)
| 弹幕类型 | 例子 | 反映 | 怎么用 |
|---|---|---|---|
| 梗弹幕 | "笑死" / "awsl" / "前方高能" / "+1" | 共鸣 / 强情绪触发 | 出现位置 = 最该剪的高潮 + 复用素材 |
| 问题弹幕 | "这是啥?" / "求教程" / "怎么装的" | 用户痛点 / 信息缺口 | 直接生成下一条选题("上条评论区最多人问:XXX,今天解答") |
| 打卡弹幕 | "03:21 这里" / "我就为这一段来的" | 黄金时段位置 | 该位置剪短视频投抖音 / 小红书 |
| 吐槽弹幕 | "这都不会" / "前面 5 分钟没用" | 节奏 / 干货问题 | 看时间分布 → 砍那段或重剪 |
---
4. tikhub-bilibili 工具映射表
调用走tikhub bilibili <tool> --args(CLI 自包含在仓库tikhub/目录)。
41 个 endpoint 分 web / app 两套后端。首选 web;遇RetryError时切 app。完整目录:tikhub list bilibili。
| 任务 | 首选 | Fallback |
|---|---|---|
| 综合搜索(关键词) | bilibili_web_fetch_general_search | bilibili_app_fetch_search_all |
| 分类搜索(视频/UP/番剧) | bilibili_app_fetch_search_by_type | — |
| 单视频详情(bvid) | bilibili_web_fetch_one_video | bilibili_app_fetch_one_video → bilibili_web_fetch_one_video_v3(URL 输入) |
| 视频字幕(拆口播结构) | bilibili_web_fetch_video_subtitle | — |
| 视频弹幕(独家) | bilibili_web_fetch_video_danmaku | — |
| 视频评论 + 二级回复 | bilibili_web_fetch_video_comments / bilibili_web_fetch_comment_reply | bilibili_app_* |
| UP 主信息 + 双统计 | bilibili_web_fetch_user_profile + _user_up_stat + _user_relation_stat | bilibili_app_fetch_user_info |
| UP 主投稿列表 | bilibili_web_fetch_user_post_videos | bilibili_app_fetch_user_videos |
| UP 主动态流 | bilibili_web_fetch_user_dynamic | — |
| 综合热门 / 热搜词 | bilibili_web_fetch_com_popular / _hot_search | bilibili_app_fetch_popular_feed |
| 直播间 / 分区 | bilibili_web_fetch_live_room_detail / _all_live_areas / _live_streamers | — |
| bv → aid 转换 | bilibili_web_bv_to_aid | — |
4.1 推荐调用顺序(输入 = 视频链接 / bvid 时)
1. tikhub bilibili bilibili_web_fetch_one_video --bv_id <id>
→ stat / desc / tag / cid / UP 主 uid
2. tikhub bilibili bilibili_web_fetch_video_subtitle --aid <aid> --cid <cid>
→ AI 字幕(如有)拆结构
3. tikhub bilibili bilibili_web_fetch_video_danmaku --cid <cid>
→ 弹幕(按 §3 4 类分析)
4. tikhub bilibili bilibili_web_fetch_video_comments --bv_id <id>
→ 一级评论 + top 5 调 _comment_reply 拿子回复
5. 对 UP 主 → tikhub bilibili bilibili_web_fetch_user_profile --uid <uid>
+ _user_up_stat / _user_relation_stat → 拿粉丝 + 总播放
6. tikhub bilibili bilibili_web_fetch_user_post_videos --uid <uid> --order pubdate
→ 最近 30 条算 三连率均值 / 爆款率4.2 搜索参数速查
bilibili_web_fetch_general_search:
keyword:必填order:totalrank(综合) /click(最多播放) /pubdate(最新) /dm(最多弹幕) /stow(最多收藏) /scores(最多评论)page/page_size:默认 page_size=20duration:0(全部) /1(<10min) /2(10-30min) /3(30-60min) /4(>60min)pubtime_begin_s/pubtime_end_s:UNIX 秒,时间窗口(蓝海词监控关键参数)
---
5. B 站版六维评分细则
| 维度 | B 站特化指引 |
|---|---|
| 账号定位 | 看 UP 主主页:分区垂直度(3 个月内主分区占比 ≥ 70%)+ 简介人群锁定 + 是否有"专攻 XX"标签词 |
| 选题角度 | 必须有干货 / 收藏价值(B 站算法不奖励"轻"内容)。教程 / 实测 / 行业拆解 > 段子 / 鸡汤 |
| 封面公式 | 16:9 横版,大字 ≥ 1/3 + 高对比 + 视觉冲击。不要竖版 / 9:16(B 站全平台横屏体验,竖版会被边裁) |
| 标题钩子 | 对话感 + 信息钩子。"我把 XX 跑通了" / "真没想到 XX" / "XX 完整教程"。禁止抖音知识带货腔("3 个技巧让你 XXX") |
| 正文骨架 | 黄金 3 秒口播 + 章节结构 + 干货密度 + 结尾三连 CTA。长视频 = 加章节时间戳让用户 jump |
| 发布节奏 | B 站长尾性极强,频率 1-3 条/周即可。时段:晚 19-22 黄金;周末 14-22 全天可用 |
---
6. 行动清单(按 P0/P1/P2 排)
P0(本周必须改)
- [ ] 如果三连率 < 3%:内容加干货深度 / 收藏价值(清单 / 教程 / 资源),结尾明确"三连支持"
- [ ] 如果完播率跌出分档:缩短视频或加章节时间戳;首句砍废话直接钩子
- [ ] 如果 CTR < 5%:换 16:9 横版封面 + 大字(≥ 1/3 占比)+ 高对比
- [ ] 如果弹幕密度 < 0.3:选题没情绪触发点 → 加金句 / 共鸣点 / 反差
P1(本月调)
- [ ] 三连分项失衡 → 按 §2.3 单独修薄弱项
- [ ] 弹幕"问题弹幕"高频词 → 直接做下条选题("上条最多人问 XXX,今天解答")
- [ ] UP 主分区垂直度 < 70% → 收敛主分区,停发跨分区杂项
P2(季度沉淀)
- [ ] 矩阵化:主号 + 子号(不同细分赛道,互相导流;B 站允许小号关联主号)
- [ ] 充电 / 大会员 / 课堂 → 变现闭环(B 站独家变现路径,比抖音 / 小红书更深)
- [ ] 跨平台:B 站长视频 → 抖音 / 小红书短视频切片复用(黄金 3 秒位置见 §3 弹幕分析)
---
7. 关键铁律(B 站专属)
1. 三连 > 一切。投币率 + 收藏率比播放量、点赞重要 10 倍。 2. B 站允许长视频,但完播门槛比抖音高。短视频要狠抓节奏,长视频要加章节让用户 jump。 3. 横版封面铁律。9:16 竖版在 B 站会被裁,CTR 直接掉 30%+。 4. 弹幕是独家信号,其他平台没有。每条对标必拉弹幕分析(§3 4 类)。 5. 不要套抖音知识带货腔。「3 招让你 XXX」在 B 站会被当成营销号。 6. 学习党 / AI 工具 / 长视频深度内容是 B 站天然甜区。如果你做这些赛道,B 站的 LTV 比抖音 / 小红书都高。 7. 算法不透明,定性结论稳,定量数字疑。本手册数字仅供方向判断,每 6 个月复核。
抖音账号 / 内容诊断子手册
主 skill:social-account-doctor。本手册被 §3 平台专属诊断章节调用。核心特性:完播率(特别是 5s 完播率)是抖音冷启动的核心权重之一。注意:抖音从未公开过"低于 X% 停推"的硬阈值,本手册所有数字都是行业经验值(蝉妈妈/知乎多源),用作方向判断而非绝对死线。
---
0. 数据来源声明
本手册阈值均为行业经验值(非平台官方),主要来源:
- 蝉妈妈数据 — 完播率话题 / 核心数据指标 / 完播率多少算正常
- 知乎运营拆解 — 5s完播率定义 / 完播率视频时长 / 运营关键指标 / 2025 抖音算法首次公开
- 鸟哥笔记 — 比起完播率更重要的指标
- 巨量算数 — trendinsight.oceanengine.com(官方但未公开账号诊断阈值表)
⚠️ 网传"2026 新规 5s完播<40%自动停推"在所有可查源中均无官方背书,本手册按"经验合格线 50%"处理。
📅 数据采集日期:2026-04 / 建议复核周期:6 个月。抖音算法每年迭代 2-3 次(特别是完播率分档与互动权重),过期数字会误导诊断。复核方法:用上述来源重跑一遍,对比偏移 > 20% 就更新阈值表。
---
0.5 算法规则速查 — T0/T1(可执行版)
⭐ 算法核心信号 = 完播率(5s 完播 → 全程完播)。差距 ≥ 1 档时优先于其他维度修 — 抖音冷启动池子能不能跑出去全靠 5s 完播,其他维度没及格也救不回来。
>
T0 = 不做就死;T1 = 不做次推。
| 级 | 规则 | 怎么做(动作) | 不做的代价 |
|---|---|---|---|
| ⭐ T0 | 首帧(0:00-0:01)放结果画面或最炸的一帧 | 倒叙结构:把视频结尾最炸的金句 / 画面前置到第 0 秒 | 5s 完播 < 40%,冷启动池出不去 |
| ⭐ T0 | 首句口播禁用"大家好 / 今天给大家" | 砍前 1.5 秒废话,首句直接钩子(提问 / 承诺 / 反差 / 数字之一,套 §5.4 七模板) | 5s 完播 -20%,进不到下一流量池 |
| ⭐ T0 | 视频时长 ≤ 30 秒(新手期) | 跑通 30s 完播 ≥ 35% 再加长 | 完播天然偏低,被算法判定低质 |
| T1 | 黄金 7 秒密度点(每 7 秒 1 个反转 / 数据 / 画面切) | 中段禁止 ≥ 5s 静止镜头或重复 | 25% / 50% / 75% 进度位看到完播跳水 |
| T1 | 首帧 = 封面(不是描述区那张图) | 把"大字 + 利益承诺"做进 0:00 视频帧本身 | 信息流不点开 = CTR < 3% |
| T1 | 稳定日更,≥ 3 条/周 + 固定时段 | 早 7-9 / 中 12-13 / 晚 19-22 三选一固定 | 标签衰减,账号权重下降 |
| T1 | 优化顺序:完播 > 互动 > 关注 | 先调首帧 / 首句(完播)→ 再调互动钩子 → 最后调人设;顺序不能反 | 投入产出比差 10 倍 |
---
1. 阈值表(行业经验值,非官方)
| 指标 | 计算 | 偏低 | 合格 | 优秀 | 卡住意味着 |
|---|---|---|---|---|---|
| 曝光率 | 24h 曝光 / 粉丝数 | < 0.3 | 0.3-1.0 | > 1.0 | 限流 / 标签错乱 / 账号权重低 |
| 点击率 (CTR) | 点击 / 曝光 | < 3% | 3-6% | > 8% | 封面 + 标题不及格 |
| 5s完播率 | 看到 5s 的人数 / 点击数 | < 40% | 40-55% | > 55% | 钩子崩了,前 3 帧或首句口播没抓住 |
| 完播率(按时长分档) | 完整看完 / 点击 | 见 §1.1 | 节奏断了 / 中段无信息密度点 | ||
| 互动率 | (赞+评+藏+转) / 曝光 | < 1% | 1-3% | > 3-5% | 选题没共鸣 / 没埋互动钩子 |
| 关注转化率 | 新增关注 / 曝光 | < 0.05% | 0.1-0.3% | > 0.3% | 人设模糊 / 无复购理由 |
| 2跳率 | 看了第二条 / 看了第一条的同账号粉丝 | < 5% | 5-15% | > 15% | (注:此指标定义和阈值在公开源中无统一标准,仅供参考) |
1.1 完播率分档阈值(经验值,非官方)
| 视频时长 | 偏低 | 合格 | 优秀 |
|---|---|---|---|
| ≤ 30 秒 | < 35% | 35-55% | > 55% |
| 30 - 60 秒 | < 20% | 20-35% | > 35% |
| 60 - 180 秒 | < 12% | 12-25% | > 25% |
| > 180 秒 | < 8% | 8-15% | > 15% |
经验铁律:抖音算法对完播率的权重确实高,视频越长越拼"留住人的能力"。新手默认 ≤ 30 秒,跑通完播再加长。具体阈值因品类波动较大(剧情类天然完播低,干货类天然完播高),用区间不要用绝对值。
---
2. 主逻辑 1:5s完播率诊断(行业普遍认为是头号关注指标)
2.1 怎么定位是不是卡在这一层
1. 漏斗看到 5s完播率 < 40-50% → 直接进本节
2. 调 tikhub douyin douyin_app_v3_fetch_one_video(aweme_id)
→ 拿 video_url + cover_url + 完播率 + 5s留存
3. 把 video_url 下载到 /tmp/account_diagnostic/{aweme_id}/video.mp4
4. 调 scripts/analyze_video.py(默认按视频配置走;本地视频片段存在且未禁用时发 video_url,如需代表帧兜底设 `VIDEO_ANALYSIS_USE_VIDEO_URL=0`)
→ 拿前 5s 的画面变化、口播文字、信息密度点分布
5. 对照 §2.2 五种钩子失败模式定位根因2.2 5s完播率崩盘的五种典型根因
| 根因 | 现象 | 修法 |
|---|---|---|
| 首帧无信息 | 黑屏 / 慢推镜头 / 平台 logo 占满 3 秒 | 首帧直接放结果画面(前/后对比,最炸的一帧) |
| 首句口播废话 | "大家好今天我来给大家分享…" | 首句必须是钩子句,砍掉自我介绍 |
| 画面静止 | 5 秒内只有一个固定镜头 | 每 1.5 秒切一个画面(叠字/缩放/转场) |
| 信息密度低 | 前 5 秒没给到任何"利益承诺" | 把视频结尾的"金句"前置到第 1 秒,倒叙结构 |
| 目标人群不清 | 通用开头,谁都能看,谁都不留 | 首句锁人群:"如果你是 [人群],看完能省 [数字]" |
2.3 工具调用链(5s完播率诊断专用)
tikhub douyin douyin_web_fetch_user_post_videos(sec_user_id, count=30)
→ 拿最近 30 条 aweme_id
# 取 top 3 完播率最高 + bottom 3 完播率最低
tikhub douyin douyin_app_v3_fetch_one_video(aweme_id)
→ 拿单条数据 + 媒体 URL
# 下载视频前 10s
ffmpeg -i video.mp4 -t 10 -c copy /tmp/.../prefix.mp4
# 让 Gemini 拆前 5s
python3 ~/.claude/skills/social-account-doctor/scripts/analyze_video.py prefix.mp4
→ 输出:首帧描述 / 口播 ASR / 画面切换次数 / 信息密度点位
# 对比 top vs bottom:差距在哪---
3. 主逻辑 2:钩子诊断(前 3 帧 + 首句口播)
3.1 钩子诊断三件套
| 维度 | 拆什么 | 工具 |
|---|---|---|
| 前 3 帧画面 | 是否锁人群?是否给利益?是否制造好奇? | scripts/analyze_image.py(截 0s/1s/2s 三帧) |
| 首句口播 | SKILL.md §5.4 七大钩子模板命中哪种? | analyze_video.py 拿 ASR 文本 → 套公式比对 |
| 封面 vs 视频首帧一致性 | 封面承诺的 X,视频首帧给到了吗? | 同时跑两个 analyze_image,对比 big_text 字段 |
3.2 钩子打分细则(1-5 分)
| 分数 | 描述 |
|---|---|
| 5 | 前 3 帧 = 利益+人群+好奇三合一;首句口播命中 SKILL.md §5.4 七大钩子公式;封面/首帧一致 |
| 4 | 三项命中两项 |
| 3 | 三项命中一项 |
| 2 | 有意识做钩子但执行差(比如有口播钩子但首帧黑屏) |
| 1 | 完全无钩子(自我介绍开头 / 静止画面 / 封面与视频脱节) |
差距 ≥ 2 分 时,钩子直接进 P0 行动清单。
---
4. tikhub-douyin 工具映射表
首选 / Fallback。首选挂时按列依次重试。
| 任务 | 首选 | Fallback |
|---|---|---|
| 账号信息(昵称/粉丝/认证) | douyin_web_handler_user_profile | douyin_app_v3_handler_user_profile → douyin_web_handler_user_profile_v4(带性别+直播等级) |
| 账号粉丝/关注关系 | douyin_web_fetch_user_relation_stat (无此工具时) → douyin_web_fetch_user_following_list | douyin_app_v3_fetch_user_following_list |
| 用户作品列表 | douyin_web_fetch_user_post_videos | douyin_app_v3_fetch_user_post_videos |
| 用户喜欢列表(看口味) | douyin_web_fetch_user_like_videos | douyin_app_v3_fetch_user_like_videos |
| 视频详情 | douyin_app_v3_fetch_one_video | douyin_app_v3_fetch_one_video_v2 → _v3 → douyin_web_fetch_one_video |
| 视频统计(播放/点赞/转发/下载) | douyin_app_v3_fetch_video_statistics | douyin_app_v3_fetch_multi_video_statistics(批量) |
| 视频高画质播放地址 | douyin_app_v3_fetch_video_high_quality_play_url | douyin_web_fetch_video_high_quality_play_url |
| 视频评论 | douyin_app_v3_fetch_video_comments | douyin_web_fetch_video_comments |
| 关键词搜索作者(找对标) | douyin_billboard_fetch_hot_account_search_list --cursor 0 | douyin_app_v3_fetch_user_search_result → douyin_web_fetch_user_search_result_v3 |
| 关键词搜索视频(找选题/对标作品) | douyin_app_v3_fetch_video_search_result_v2(必须加超时) | douyin_app_v3_fetch_general_search_result |
| 关键词搜话题(反查高互动作者) | douyin_app_v3_fetch_hashtag_search_result | douyin_app_v3_fetch_hashtag_video_list --ch_id <id> |
| 短链解析(v.douyin.com) | douyin_app_v3_fetch_one_video_by_share_url | douyin_app_v3_fetch_share_info_by_share_code |
| 创作者中心粉丝画像(深度诊断) | douyin_billboard_fetch_hot_account_fans_portrait_list(仅星图收录账号有数据,普通账号会返回空) | douyin_billboard_fetch_hot_account_fans_interest_topic_list |
4.1 推荐调用顺序(输入 = 账号链接时)
1. dispatch_account.py <url> → 拿到 sec_user_id
2. douyin_web_handler_user_profile(sec_user_id) → 账号基础信息
3. douyin_web_fetch_user_post_videos(sec_user_id, count=30) → 最近 30 条 aweme_id 列表
4. 计算每条互动数据(avg_play, avg_like, avg_comment)→ 算爆款率/扑街率
5. 取 top 3 + bottom 3 → 对每条调 douyin_app_v3_fetch_one_video → 拿完整指标
6. 对 top 3 + bottom 3 → analyze_video.py 拆前 5s 钩子
7. 关键词搜索 → 找对标候选(新号优先 500-1W 粉,进阶号用 5k-50k 粉,活跃,同赛道)4.2 推荐调用顺序(找对标时)
抖音搜索接口变化频繁,不要一次失败就写“无对标参考”。
1. 从账号简介和近 10 条作品提取 4-6 个关键词
例:宝宝情绪 / 育儿情绪 / 宝宝打人 / 宝宝抢玩具 / 分离焦虑宝宝
2. 账号搜索首选:
tikhub douyin douyin_billboard_fetch_hot_account_search_list \
--keyword <关键词> --cursor 0
注意:cursor 必传;返回后按 nickname / signature / 粉丝数 / 作品数筛掉泛领域号。
3. 账号搜索不够时:
- 用 `douyin_app_v3_fetch_hashtag_search_result --keyword <词> --offset 0 --count 10`
- 取相关 ch_id,再用 `douyin_app_v3_fetch_hashtag_video_list --ch_id <id>`
- 按点赞 / 评论 / 收藏 / 分享排序,反查重复出现的作者
4. 视频搜索只做补充:
`douyin_app_v3_fetch_video_search_result_v2` 可能长时间无响应,必须给 shell/脚本超时。
超时 1 次就换账号搜索或话题搜索,不要连续卡住。
5. 最终对标池:
新号优先找 3-5 个 500-1W 粉的同赛道号,再补 1-2 个更高粉账号看方法论。不要误判为无对标的情况:
- 某个 search 工具 schema 为空 / 参数不明:先
tikhub list douyin search或tikhub describe查工具详情 - 视频搜索挂了但账号搜索可用:仍然算 L2 可完成
- 用户给的是短链:先解析 sec_uid / aweme_id,再用主页信息提关键词,不能只围绕单条视频标题搜
---
5. 抖音版六维评分细则
| 维度 | 抖音特化指引 |
|---|---|
| 账号定位 | 看主页 9 宫格风格统一性 + 简介人群锁定 + 前 5 条视频是否同主题 |
| 选题角度 | 是否命中赛道高频词(用 douyin_app_v3_fetch_video_search_result 验证)+ 长尾差异化 |
| 封面公式 | 抖音的"封面"是动态首帧,不是静态大字报。看首帧是否高反差 / 大字 / 真人锚点 |
| 标题钩子 | 抖音标题(描述)作用低于小红书,但仍要套 SKILL.md §5.2 10 个标题公式(数字+人群+效果) |
| 正文骨架 | 前 3 秒口播 + 黄金 7 秒密度点(每 7 秒一个反转/数据/画面切)。MrBeast 公式 |
| 发布节奏 | 抖音算法偏爱"稳定日更"。频率 < 3 条/周 → 标签衰减 |
---
5.1 AI 视频 / AI 插画号专项评分
如果作品是 AI 生成视频、AI 插画轮播、数字人口播或强模板视频,六维之外必须补这组判断:
| 维度 | 看什么 | 低分表现 | 优化动作 |
|---|---|---|---|
| 首帧冲突 | 0-2 秒是否看懂具体行为 | 只有温馨插画,看不出打人/抢玩具/哭闹 | 首帧直接画冲突动作,大字写妈妈动作 |
| 人物连续性 | 妈妈/宝宝/主角/家庭场景是否稳定 | 每条像不同素材拼接 | 固定人物设定和家庭场景,至少连续 20 条不乱换 |
| 画面承载时长 | AI 素材能否撑住视频长度 | 1-2 分钟内画面变化少,用户疲劳 | 新号先做 20-40 秒,每条 3-5 个有效镜头 |
| 大字安全区 | 列表缩略图里文字是否完整 | 大字被裁切、字数太长 | 封面大字 ≤10 字,放中上安全区 |
| 可信度 | AI 感是否削弱专业/育儿/知识信任 | 过度可爱、抽象、像模板 | 多用生活场景、可照做话术、稳定视觉设定 |
| 模板感 | 是否像批量套模板 | 背景、角色、运镜每条都随机 | 建账号级视觉规范:角色、色调、字幕、镜头节奏统一 |
AI 视频不是原罪。对标也可能用 AI 插画,关键差距通常在“标题/首帧/话术是否服务同一个具体场景”。
---
6. 行动建议清单(按 P0/P1/P2 排)
P0(本周必须改 — 直接卡漏斗的项)
- [ ] 如果 5s完播率 < 40%:把首帧换成"结果画面"(最炸的一帧前置),首句口播改成钩子句
- [ ] 如果 完播率 跌出分档合格区间:砍视频时长到 ≤ 30 秒,跑通再加
- [ ] 如果 2跳率 > 15%:第二条视频明显不吸引同账号粉丝,全账号选题对齐 top 1 风格
- [ ] 如果 CTR < 3%:换封面(首帧),用 scripts/analyze_image.py 跑 top 3 对标的封面 5 变量
P1(本月调 — 系统性短板)
- [ ] 钩子六维评分 ≤ 2 → 强制套 SKILL.md §5.4 七公式,每条视频一个
- [ ] 选题维度差距 ≥ 2 → 用
douyin_app_v3_fetch_video_search_result扫赛道 top 50,提炼 10 个共性选题模板 - [ ] 评论互动率 < 1% → 视频结尾埋问题钩子("你们怎么看?评论区扣 1")
P2(季度沉淀)
- [ ] 矩阵化:主号 + 2-3 个垂直子号(不同人设/不同细分赛道,互导粉丝)
- [ ] 粉丝画像验证:调
douyin_billboard_fetch_hot_account_fans_portrait_list(注意:仅星图收录账号有数据,普通账号无法用此 API,需要用户提供后台截图代替),看实际粉丝是否=目标人群 - [ ] 2跳率持续 > 15% → 重新审视账号定位(人群+场景+价值三位一体)
---
7. 关键铁律(抖音专属)
1. 5s完播率是冷启动核心权重之一。多源经验值合格线 ~50%,<40% 视为偏低需重点优化。注意:网传"<40% 自动停推"无官方背书,不要当真理。 2. 完播率比互动率重要。点赞高但完播低,下条照样不推。 3. 视频越长,合格线越低,但天花板更高。新手 ≤ 30 秒,进阶 30-60 秒,人设号 60s+。 4. 首帧是封面。不要在描述区写"封面失败",封面就是 0:00 那一帧。 5. 不要用"大家好"开头。直接砍掉前 1.5 秒的废话。 6. 2跳率指标定义在业界没有统一标准,本手册仅作辅助参考;首选指标永远是完播率 + 关注转化率。
openai>=1.40.0
Pillow>=10.0.0
markdown-it-py>=3.0.0 # for scripts/render_report_pdf.py (md → PDF, 按需)
tikhub/ — bundled HTTP CLI
This directory bundles the tikhub HTTP CLI wrapper so social-account-doctor is fully self-contained — no external skill dependency.
tikhub/
├── bin/tikhub # CLI entry point (chmod +x)
├── lib/tikhub_client.py # HTTP JSON-RPC + SSE + session cache (pure stdlib)
├── references/tools-{platform}.json # cached /tools/list catalogs (5 platforms, ~330KB)
└── scripts/refresh_tools.py # rebuild references/ from live tikhubWhy bundled?
Earlier the wrapper lived in a separate tikhub-api skill at ~/.claude/skills/tikhub-api/. That skill is not published on github. To make social-account-doctor standalone for distribution, the wrapper is copied here.
Quick install (after git clone social-account-doctor)
# 1. API key in ~/.claude/.env (chmod 600)
mkdir -p ~/.claude
cat >> ~/.claude/.env <<'EOF'
TIKHUB_API_KEY=YOUR_KEY_FROM_https://tikhub.io
EOF
chmod 600 ~/.claude/.env
# 2. Symlink to PATH
ln -sf "$(pwd)/tikhub/bin/tikhub" ~/.local/bin/tikhub
# 3. Verify
tikhub --health
tikhub list xiaohongshu searchUsage
tikhub <platform> <tool_name> --key1 value1 --key2 value2
tikhub <platform> <tool_name> --json '{"k":"v"}'
tikhub list <platform> [substring] # browse cached tool catalog
tikhub describe <platform> <tool_name> # full input schema
tikhub --health # connectivity check
tikhub --platforms # list available tikhub platformsSupported platforms (cached): xiaohongshu / douyin / kuaishou / wechat / bilibili. Add others (tiktok, instagram, weibo, youtube, zhihu, etc.) with:
python3 tikhub/scripts/refresh_tools.py tiktokProtocol notes
- HTTP endpoint:
https://mcp.tikhub.io/{platform}/mcp - MCP
2024-11-05over HTTP:initializereturnsMcp-Session-Idheader →tools/list/tools/call - Response is SSE (
text/event-stream); wrapper parsesdata: {...}lines - Session cached at
/tmp/.tikhub-session-{platform}.json(5 min TTL); invalid → re-init + retry once - Must send
User-Agentheader (Cloudflare blocks defaultPython-urllib/3.x)
Errors
| Symptom | Fix |
|---|---|
missing TIKHUB_API_KEY | Check ~/.claude/.env; chmod 600 ~/.claude/.env |
HTTP 401 | Bad/expired key → regenerate at https://user.tikhub.io |
HTTP 429 | Rate limit (10 RPS); cap concurrency ≤ 3 |
RetryError[<HTTPStatusError>] | Upstream tikhub flakiness; rotate to fallback tool (see search skill docs) |
tool 'X' not found in catalog | Cache stale → python3 tikhub/scripts/refresh_tools.py <platform> |
Debugging
TIKHUB_DEBUG=1 tikhub <platform> <tool> ... # log requests to stderrLicense + provenance
Vendored from tikhub-api skill, MIT. Original: see https://github.com/JuneYaooo/social-account-doctor.