抖音短视频全解析
输入一个抖音视频链接 + 一句需求,产出可直接使用的文字稿、拆解报告、分镜脚本、原创脚本或生成提示词。管线:Cue Omni Reader 远程端点(解析)→ 大模型(场景化加工)→ 交付。
隐私与数据传输说明
- 你提供的视频链接会发送至 Cue 远程解析端点(
mcp.cuecue.cn)抓取并解析,解析结果由大模型加工后交付。 - 默认
no_store=true:源文件与解析结果不落盘、不持久化于服务端。 - 本技能不读取、不收集你的浏览器 Cookie、登录态或任何本地敏感数据;降级方案不含登录态/Cookie 操作。
- Cue API Key 仅用于鉴权,推荐用环境变量
CUE_API_KEY传入,避免明文写入配置文件。
六大场景总览(意图路由表)
| # | 场景 | 用户典型说法 | 交付物 | |---|------|------------|--------| | 1 | 视频转文字 | 转文字 / 文字稿 / 字幕 / 转录 / 提取文字 | 净稿(分段+小标题+重点)· 口播全文(分段)· 画面文字稿(分组)· 时间线合并稿 | | 2 | 内容分析总结 | 总结一下 / 讲了什么 / 分析 / 摘要 | 主旨 + 结构分段 + 核心要点 + 金句 + 受众分析 | | 3 | 爆款视频拆解 | 拆解 / 为什么火 / 对标 / 抄作业 / 照着学 | 结构分段表 + 脚本类型 + 爆款归因 + 六维评分报告 + 可抄清单 | | 4 | 视频转脚本 | 转脚本 / 分镜 / 还原脚本 | 分镜脚本表(镜头/运镜/转场/情绪/时间线/屏幕文字)+ 口播净稿 | | 5 | 爆款脚本生成 | 帮我写脚本 / 改写成我的 / 仿写 / 原创脚本 | 多条脚本(分段表 + 口播全文 + 六维质检评分) | | 6 | 视频提示词反推 | 反推提示词 / prompt / 提示词 | 风格提示词 + 分镜提示词序列 + TTS 文案 + 结构化 JSON |
路由规则:
- 仅在用户同时提供抖音视频链接时激活:表中「总结一下 / 分析 / 帮我写脚本」等说法,只有伴随抖音视频链接才触发本技能;无链接的普通对话不激活。
- 命中多个意图可组合执行(如「拆解并改写成我的脚本」= 场景3 → 场景5)。
- 只给 URL 无明确要求:默认执行场景 1(精简版)+ 一段内容速览,然后附场景菜单询问是否深入(「需要我进一步做爆款拆解 / 转脚本 / 改写成你的脚本吗?」),不要擅自跑深度场景。
- 多个 URL:逐个解析(每次一个),报告可合并交付。
- 抖音图文帖 ≠ 视频:抖音除视频外也有「图文」帖(多图无视频)。给的是图文帖链接时,先告知用户「这条是图文帖、没有视频可解析」,不要硬跑。
- 分享文案夹杂乱码:用户常直接粘贴整段分享文案(含
1.76 h@B.gO Mws:/ ... 复制此链接,打开Dou音搜索之类乱码)。先从中只提取干净 URL(v.douyin.com/xxx或iesdouyin.com/...或douyin.com/video/xxx),丢掉其余文字,再进入预处理。
前置依赖(新用户首次使用只需做这一件事)
-
Cue API Key:与 cue-omni-reader 技能共用同一把 Key,无需新建。获取:cuecue.cn/hub/api-key(新账号送 500 积分 + 每天 10 免费积分)。积分不够用:打开 https://cuecue.cn/,点击页面左下角获取你的专属邀请链接,邀请好友加入,每邀请一位再得 500 积分。详见「积分不足专项提示」。推荐用环境变量传入,避免明文写盘:
export CUE_API_KEY="sk你的key"如确需落盘,可写
~/.cue/config.json(格式{"api_key": "sk你的key"})。 -
远程端点直连(无需本地 Bridge、无需配置 MCP):抖音视频解析只走远程端点
https://mcp.cuecue.cn/api/omni-reader/mcp/(streamable-http),鉴权头Authorization: Bearer <Cue Key>。不依赖~/.mcp.json注册 MCP,也不装本地 Bridge;本地 Bridge 仅在降级方案中使用。 -
手动调用依赖:
curl(Python 参考实现另需python3,仅标准库)。实际使用时 Agent 自动完成解析,用户只需给一个抖音视频链接 + 一句需求。 -
抖音链接前置展开依赖
curl(见步骤 0)。部分环境若无curl,可用python3+urllib带浏览器 UA 做等价重定向跟随。
API Key 只能由用户本人创建:Agent 既不能代生成、也无权查看用户的 Key,禁止声称"我去生成/查看"。
检测到未配置或失效时,必须主动把下面三步说全(照这个话术说,别只丢一句"请提供 API Key"):
这个技能要一把 Cue API Key 才能跑,三步就好:
- 打开 cuecue.cn/hub/api-key,登录后创建一把 Key(新账号送 500 积分 + 每天 10 免费积分)
- 把 Key 完整复制下来
- 直接粘贴发给我,我帮你写进配置,然后马上就能跑
用户发来 Key 后,Agent 负责写入
~/.cue/config.json(格式{"api_key": "sk..."}),写完即可重跑,无需重启客户端。Key 纪律:只在用户本机写入,禁止回显到对话、日志或任何文件示例中;用户若把 Key 贴在了对话里,提醒他可以去 cuecue.cn/hub/api-key 轮换一把。
健康检查(跑解析前先验证三件事)
一键诊断(不输出密钥原文):
CUE_KEY=$(python3 -c "import json,os;p=os.path.expanduser('~/.cue/config.json');print(json.load(open(p)).get('api_key','') if os.path.exists(p) else '')" 2>/dev/null || true)
CUE_KEY=${CUE_KEY:-$CUE_API_KEY}
echo "=== 1/3 API Key ===" && { [ -n "$CUE_KEY" ] && echo "已配置" || echo "未配置!"; }
echo "=== 2/3 远程端点 ===" && curl -sS --max-time 10 -X POST "https://mcp.cuecue.cn/api/omni-reader/mcp/" \
-H "Authorization: Bearer $CUE_KEY" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
| grep -q '"result"' && echo "已连接(3 工具)" || echo "连接失败"
echo "=== 3/3 curl ===" && { command -v curl >/dev/null && echo "就绪" || echo "未安装!"; }
| 检查 | 预期 | 异常处理 |
|------|------|---------|
| API Key | 已配置 | 由用户本人前往 cuecue.cn/hub/api-key 生成后复制发给你(Agent 无法代生成,也无权查看);话术见上方引用块 |
| 远程端点 | 已连接(3 工具) | 等 5 分钟重试;仍不通查网络/DNS,或走「降级方案」;报 Authentication required = Key 没带上或已失效 |
| curl | 就绪 | 系统一般自带;缺失时用 python3 + urllib 带浏览器 UA 做等价重定向跟随(见步骤 0) |
配置成功后引导用户跑第一个任务(必须执行)
健康检查三项全绿 = 环境就绪,但这是配置流程的终点,不是任务的终点。三项全绿后若用户还没给出具体任务,必须主动把用户推向第一次真实调用,不要停在"环境已就绪":
环境已就绪 ✅ 下面这些都可以直接跑,比如:
- "帮我解析这个抖音视频 <链接>,把口播转成文字稿并做爆款拆解(六维评分)"
- "拆解这个抖音爆款视频,反推出它的分镜脚本和提示词"
挑一个发给我,或直接把你手头的需求告诉我,我现在就跑。
规则:
- 主动、可复制——示例问题贴合本技能真实用法,可直接复制;别只写"你可以问我任何问题"。
- 不要等用户自己想——用户没开口时也要主动给;否则用户会停在"验证通过"就散场(实测这是新用户流失最集中的一步)。
关键技术事实(必读)
- 抖音 URL 必须走 Cue 远程端点:
https://mcp.cuecue.cn/api/omni-reader/mcp/(streamable-http)。抖音 Web 是强反爬站点,本地 Bridge 提交抖音 URL 会立即被拒(REMOTE_REQUEST_REJECTED);远程端点由 Cue 服务端抓取,可正常解析。 v.douyin.com短链直连解析会失败:实测直接提交https://v.douyin.com/xxxx/会返回PARSE_FAILED(retryable:false、file_uploaded:false),即远程端点连抓取都未成功。原因通常是短链做了反爬跳转/签名校验。必须先展开:用浏览器 UA 跟随重定向取到真实地址https://www.iesdouyin.com/share/video/<video_id>/?...(命令见步骤 0),再提交真实地址。- 真实地址带
share_sign/ts可能过期:iesdouyin.com/share/video/...的ts(Unix 秒)与share_sign是带时效的访问凭证(实测几小时内有效),过期后解析会失败。每次解析前重新展开短链最稳妥;若用户直接给已展开的iesdouyin链接且解析失败,提示其重新复制分享链接。 - Accept 头必带:远程端点要求
Accept: application/json, text/event-stream,否则报Not Acceptable: Client must accept both application/json and text/event-stream。所有调用都必须带此头。 - 远程端点仅 3 个工具:
parse/get_parse_status/cancel_parse,无read_result。结果在get_parse_status返回completed时内联携带(result字段)。 detail只能用text:grounded/layout在远程报UNSUPPORTED_DETAIL。text模式的结果已含关键帧画面文字([画面 mm:ss]标注)+ ASR 口播稿([说话人N mm:ss]标注)。- 信封解析:
tools/call返回是 MCP 信封{content:[{type:"text",text:"<JSON字符串>"}]},必须先取content[].text再json.loads,否则状态字段永远读不到。响应为 SSE 流(data:前缀行)。 - 耗时预期:抖音视频普遍比小红书长——口播/带货常 1–3 分钟,影视解说/剧情常 5–15 分钟。解析耗时通常 3–8 分钟(ASR + 关键帧提取 + 多模态融合);工作日 9:00-10:00 / 16:00-18:00 高峰期可能排队更久。提交前必须告知用户预计等待时长(如「这条约 14 分钟的影视解说,预计 3–8 分钟,高峰期可能排队」),避免用户误判卡死。
- 画面误识别高风险(影视解说/剧情类):抖音大量视频是影视二创——画面为影视剧/电影剪辑片段。视觉模型会把片中人物误判为别的演员、把本剧误判为别的作品(实测《甄嬛传》解说被误识别成《大长今》《王的男人》)。纪律:画面描述里的"这是某剧/某演员"等结论一律不可轻信,剧情与事实以
[说话人]口播稿为准;交付时如引用画面识别内容,需标注「⚠️ 画面识别,可能误判」。
标准工作流
步骤 0:URL 预处理
-
从分享文案中提取干净 URL:忽略
复制此链接,打开Dou音搜索,直接观看视频!等一切多余文字,只取https://...部分。 -
三种可输入的链接形态:
- 分享短链(必须展开并提交真实地址):
https://v.douyin.com/jhSnHUQwe5A/。不要直接提交,先展开(见下)。 - 分享页真实地址(可直接提交):
https://www.iesdouyin.com/share/video/<video_id>/?region=CN&mid=...&share_sign=...&ts=...。保留全部参数(尤其share_sign、ts),不要清理——或干脆重新展开短链拿最新有效参数。 - Web 详情页(可尝试提交):
https://www.douyin.com/video/<video_id>。远程端点通常可抓取,但若失败优先改用iesdouyin.com/share/video/<id>/形态。
- 分享短链(必须展开并提交真实地址):
-
短链展开(必须用浏览器 UA 跟随重定向):
UA="Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1" curl -sS -L --max-time 20 -A "$UA" -o /dev/null -w "%{url_effective}\n" "https://v.douyin.com/<短码>/" # 输出形如:https://www.iesdouyin.com/share/video/7674946589839969542/?region=CN&mid=...&share_sign=...&ts=...取该真实地址作为后续
parse的source。 -
图文 vs 视频判断:拿到的是抖音图文帖(多图、无视频)时,本技能不适用,直接告知用户。
-
时长预判:短视频直接提交;遇到超长视频(>20 分钟)先告知用户解析耗时更长,让其确认。
步骤 1:提交解析(远程端点)
告知用户等待时长后,调用 parse(参考实现见「解析调用手册」)。返回 {"status":"processing","operation_id":"op_..."},记下 operation_id。
步骤 2:轮询取回
循环调用 get_parse_status(wait_ms: 20000),status=completed 后从 result 字段取出全文。解析结果的三类原料:
[画面 mm:ss] ...—— 关键帧画面 OCR 文字与视觉描述(注意误识别风险,见事实 9)[说话人N mm:ss] ...—— ASR 口播全文(权威来源)- 其余结构化段落 —— 结构化 OCR
步骤 3:场景化加工(大模型)
按「场景交付规范」用解析原料生成对应交付物。事实纪律:口播、画面文字、时间戳一律以解析结果为准;镜头、运镜、转场、情绪等解析结果中没有的信息,由大模型基于画面文字与叙事推断,必须标注「⚠️ 推断」。禁止编造视频中不存在的内容。
步骤 4:交付
- 输出为 Markdown,存工作区,命名
<video_id或短码>_<场景>.md(如7674946589839969542_爆款拆解.md)。 - 含表格的结果主动问一句:「需要转成 Excel / Word / PPT 吗?」——先确认再生成。
- 长报告先给「一屏速览」(结论先行),再给全文。
- 影视解说/剧情类:在交付物显著位置提醒「画面识别可能误判剧中人物/作品,关键剧情以口播稿为准」。
场景交付规范
场景 1:视频转文字
格式铁律:禁止输出"一整坨"文字。口播稿、净稿、画面文字稿都必须分段、都必须有小标题、都必须标出重点。把 ASR 结果原样贴出来(几百行
[说话人N mm:ss] xxx,无分段、无重点)是本技能收到最多的差评,不接受。
三件套,按用户需要给全或给精简
A. 口播全文(分段存档稿):保留 [说话人N mm:ss] 时间戳锚点,但按语义分段,不是按 ASR 行机械切。
- 每段开头单独给一行小标题:
### 【起止时间】本段主题,主题自己概括、≤15 字(如### 【00:15–01:02】反转:他其实早就知道) - 段内合并碎片行:同一句话被 ASR 切成几行的,拼回完整一句再写
- 每段至少 1 处加粗:结论、数字、专有名词、产品名/价格
断段依据(满足任一即分段):话题/论点/剧情切换 · 说话人切换 · 明显停顿 · 结构标识词(「第一 / 接下来 / 另外 / 总结一下 / 最后」)。
B. 净稿(可直接当文案):在 A 基础上去时间戳、去「嗯 / 啊 / 这个 / 那个」等语气词、补标点断句成文;但分段、小标题、加粗重点全部保留。这是用户最常直接复制带走的一件——不许退化成不分段的大段文字。
C. 画面文字稿:按 [画面 mm:ss] 取屏幕文字(标题卡、字幕条、贴纸、价格牌等),按主题分组(如「封面标题卡」/「剧情字幕条」/「贴纸与价格牌」),不要逐帧罗列;同一内容在多个关键帧重复出现的,合并为一条并保留首次出现的时间戳。画面识别类内容一律标注「⚠️ 画面识别,可能误判人物/作品」,关键剧情以口播稿为准。
D. 时间线合并稿(表格,用户要"全量"时给):
| 时间 | 段落主题 | 口播(要点) | 屏幕文字 | |------|---------|------------|---------|
精简版 vs 全量
- 精简版(默认,「意图路由」里说的就是它):B 净稿(已分段 + 已加粗)+ 一段内容速览。
- 全量:A + B + C + D,或按用户点名的某一件单独给。
输出骨架(照这个结构写)
## 口播全文(分段)
### 【00:00–00:15】开场钩子
[说话人1 00:00] 千万别买这个,除非你先看完**这三条**……
### 【00:15–01:02】反转:他其实早就知道
[说话人1 00:15] ……
交付前自检(必须过一遍)
- [ ] 口播稿有 ≥3 个
###分段小标题(视频短于 1 分钟则按实际段数) - [ ] 每一段至少 1 处加粗
- [ ] 净稿同样有分段 + 小标题 + 加粗,不是一大坨
- [ ] 无残留碎片行(被 ASR 切散的句子已拼回)
- [ ] A 稿的时间戳锚点保留
- [ ] 画面识别内容已带「⚠️」标注
场景 2:内容分析总结
- 一句话主旨
- 结构分段:时间轴 → 每段讲了什么(3-6 段)
- 核心要点:≤10 条,保留关键数字/结论
- 金句摘录:3-5 句可直接引用的原话(注明时间戳)
- 目标受众与观看价值
- 结尾 CTA:视频如何引导关注/行动
场景 3:爆款视频拆解(照着学、照着抄)
-
基本盘:标题 / 时长 / 博主 / 标签(来自解析结果与用户提供;点赞收藏评论等数据用户提供了才写)。
-
结构分段表(核心)——按视频实际逻辑二选一或混合:
- 流量逻辑:冷启动钩子(0-5s) → 悬念留存 → 价值交付 → 情绪高潮 → 互动引导 → 转化钩子
- 带货逻辑:痛点唤醒 → 需求放大 → 方案引入 → 信任证明(证言/对比/演示)→ 价格锚点 → 逼单 → 售后兜底
- 影视解说逻辑(抖音高频):悬念钩子(抛出反常识问题)→ 剧情速览(关键情节)→ 深度解读(人物动机/伏笔)→ 金句升华 → 系列引流(下期预告)
| 时间轴 | 段落功能 | 时长 | 手法 | 话术摘录 | |--------|---------|------|------|---------|
-
脚本类型判定:口播干货型 / 剧情演绎型 / 混剪解说型(影视解说多属此类)/ 教程演示型 / 测评种草型 / vlog记录型 / 直播切片型……给出判定依据。
-
爆款归因(两层):
- 算法层:完播率设计、互动钩子(评论引导/争议点)、转发触发点
- 内容层:选题命中、结构节奏、情绪势能、人设信任
-
六维评分报告:见「六维评分体系」,表格 + 总分 + 评级(S/A/B/C)+ 每维一句依据。
-
抄作业清单:可复用的骨架模板(占位符化)、钩子公式、话术库、节奏参数(每段时长配比)。
场景 4:视频转脚本
还原为可拍摄的分镜脚本表:
| 时间线 | 镜头(景别/机位)⚠️推断 | 运镜 ⚠️推断 | 转场 ⚠️推断 | 画面内容 | 屏幕文字 | 口播/台词 | 情绪 | 备注 | |--------|------|------|------|---------|---------|----------|------|------|
- 时间线、屏幕文字、口播 = Omni 实测;镜头/运镜/转场/情绪 = 大模型推断(表头已标注)。
- 表格之后附口播净稿(去语气词、断句成文)。
- 若用户要拿去翻拍,主动提示结合场景 5 做改写。
场景 5:爆款视频脚本生成
两种模式,先确认用户要哪种:
- 模式 A · 骨架改写:先跑场景 3 拿到原片骨架 → 保留钩子结构与节奏配比,替换主题/商品/人设/话术 → 产出「你的版本」。
- 模式 B · 原创生成:让用户给出 方向 / 目的(涨粉·带货·种草·科普·影视解说)/ 商品或主题 / 受众 / 目标时长 → 生成 2-3 条差异化脚本(不同钩子角度)。
每条脚本交付:
- 分段表:段落功能 | 时长预算 | 口播要点 | 屏幕文字建议
- 口播全文:成稿,带语气与停顿标记
- 六维质检评分:生成后自检;任一维度 < 7 分必须改写一轮再交付,并附改写说明
场景 6:视频提示词反推
把画面和内容转成 agent / 生成式 AI 可直接使用的提示词:
- 整体风格提示词(一段式):主体 / 场景 / 风格 / 构图 / 色调 / 光线 / 画幅。
- 分镜提示词序列(表格):镜号 | 时长 | 画面 prompt(主体-动作-镜头-风格四段式) | 运镜 | 适配工具提示(即梦 / 可灵 / Vidu / Runway / Pika)。
- 口播 TTS 文案:带停顿(
/)与重音(**加粗**)标记。 - 结构化 JSON 版:
{"style_prompt": "...", "shots": [...], "narration": "..."},供 agent 自动化流水线直接调用。
六维评分体系(场景 3 与场景 5 共用)
| 维度 | 考察点 | 评分 1-10 | |------|--------|----------| | 钩子力 | 前 3-5 秒留人能力(悬念/冲突/利益点前置) | | | 节奏密度 | 信息与画面切换频率,无冗余 | | | 情绪势能 | 情绪唤起与曲线(共鸣/好奇/焦虑/爽感) | | | 价值密度 | 观众实际获得感(干货/娱乐/情绪价值) | | | 转化引导 | CTA 清晰度与行动驱动力(关注/点赞/下单) | | | 可复制性 | 结构与话术可模板化程度(越高越容易抄) | |
- 总分 = 六维平均;评级:≥8.5 S / ≥7.5 A / ≥6 B / <6 C。
- 评分必须附依据(引用具体时间戳与话术),不许拍脑袋。
解析调用手册
curl 三步
# 0)先从分享文案提取短链,并用浏览器 UA 展开为真实地址(关键!v.douyin.com 直连会 PARSE_FAILED)
UA="Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"
REAL=$(curl -sS -L --max-time 20 -A "$UA" -o /dev/null -w "%{url_effective}" "https://v.douyin.com/<短码>/")
# ① 提交解析(记下返回的 operation_id;务必带 Accept 头)
curl -sS -X POST "https://mcp.cuecue.cn/api/omni-reader/mcp/" \
-H "Authorization: Bearer $(python3 -c "import json;print(json.load(open('$HOME/.cue/config.json'))['api_key'])")" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"parse\",\"arguments\":{\"source\":\"$REAL\",\"detail\":\"text\"}}}"
# ② 轮询(每 15-20 秒一次,直到 status=completed)
# arguments 换成 {"operation_id":"op_xxx","wait_ms":20000}
# ③ completed 后取 result 字段文本 = 解析全文
Python 参考实现(展开短链 → 提交 → 轮询 → 取结果)
import json, subprocess, time, os, re
KEY = json.load(open(os.path.expanduser("~/.cue/config.json")))["api_key"]
EP = "https://mcp.cuecue.cn/api/omni-reader/mcp/"
UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"
def call(name, args, timeout=90):
body = json.dumps({"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":name,"arguments":args}}).encode()
p = subprocess.run(["curl","-sS","--max-time",str(timeout),"-X","POST",EP,
"-H",f"Authorization: Bearer {KEY}","-H","Content-Type: application/json",
"-H","Accept: application/json, text/event-stream","--data-binary",body],
capture_output=True, text=True)
for line in p.stdout.splitlines():
line = line.strip()
if line.startswith("data: "): line = line[6:]
if line.startswith("{"):
r = json.loads(line)
if "result" in r:
txt = "".join(c.get("text","") for c in r["result"].get("content",[]))
try: return json.loads(txt) # 拆信封后再解析
except Exception: return {"_raw": txt}
raise RuntimeError(json.dumps(r.get("error","unknown"), ensure_ascii=False))
raise RuntimeError("无响应")
def resolve_real(url):
"""v.douyin.com 短链必须展开;已是 iesdouyin/douyin 真实地址则原样返回。"""
if "v.douyin.com" in url:
out = subprocess.run(["curl","-sS","-L","--max-time","20","-A",UA,
"-o","/dev/null","-w","%{url_effective}",url],
capture_output=True, text=True).stdout.strip()
return out or url
return url
url = resolve_real("<用户给的抖音URL>")
st = call("parse", {"source": url, "detail": "text"}) # 提交
op = st.get("operation_id")
if not op:
raise RuntimeError("提交失败:" + json.dumps(st, ensure_ascii=False))
while st.get("status") == "processing": # 轮询
time.sleep(min(st.get("poll_after_seconds", 10) or 10, 15))
st = call("get_parse_status", {"operation_id": op, "wait_ms": 20000})
r = st.get("result")
text = r if isinstance(r, str) else (r or {}).get("text") or st.get("text") or ""
# text 即解析全文(含 [说话人 mm:ss] 与 [画面 mm:ss])
错误处理
| 错误码 | 含义 | 处理 |
|--------|------|------|
| PARSE_FAILED(file_uploaded:false,提交 v.douyin.com 短链时高发) | 短链未展开,远程端点连抓取都没成功 | 用浏览器 UA 展开短链为 iesdouyin.com/share/video/<id>/ 后重试;retryable:false 但换真实 URL 可成功 |
| REMOTE_REQUEST_REJECTED | 多半是误走了本地 Bridge,或 URL 非规范抖音链接 | 确认走远程端点、URL 已预处理展开 |
| SERVICE_TEMPORARILY_UNAVAILABLE | 服务临时不可用(retryable:true) | 等 10 秒重新提交同一请求 |
| UNSUPPORTED_DETAIL | 传了 grounded/layout | 改回 detail:"text" |
| SOURCE_TOO_LARGE / 超长视频 | 超出上限 | 引导用户确认是否继续(抖音长解说偶发) |
| INSUFFICIENT_CREDITS | 积分不足 | 按「积分不足专项提示」主动引导(充值 / 邀请好友得积分 / 等次日免费额度) |
积分不足专项提示(必须执行)
检测到积分不足(INSUFFICIENT_CREDITS 或任何"积分不足/余额不够"提示)时,不要只丢错误码,必须主动给用户一条拿积分最快的路径:
你的 Cue 积分不足,本次任务未能启动。两个办法:
- 邀请好友得 500 积分(推荐):打开 https://cuecue.cn/,点击页面左下角「获取专属邀请链接」,分享给好友——好友加入后你再得 500 积分。
- 直接充值:前往 cuecue.cn/pay 订阅(首次充值有优惠);或等次日免费额度。
规则:
- 提示要主动、简短、可点——把「首页」和「左下角」两个关键动作说清楚,不要让用户自己找入口。
- 积分不足不要重试(
retryable: false)。 - 用户回复已充值/已邀请后,用完全相同的命令/请求重跑。
降级方案(远程端点长时间不可用时)
远程端点不可达时,本技能无免登录公开直链降级路径——抖音视频直链需平台登录态与签名,涉及浏览器 Cookie/登录态的本地下载方式本技能不采用。建议:
- 稍后重试:
SERVICE_TEMPORARILY_UNAVAILABLE(retryable:true)时等 10 秒重新提交同一请求;偶发过载通常几分钟内恢复。 - 换时段:避开工作日 9:00-10:00 / 16:00-18:00 高峰,错峰解析更稳。
- 若为本地已有视频文件,可经本地 Bridge(
OMNI_ALLOWED_ROOTS授权目录内)以detail:"text"解析,需用户确认文件路径。
首选仍是远程端点;本技能不读取、不收集浏览器 Cookie 或登录态。
质量与合规
- 拆解 ≠ 搬运:结构、手法可学;逐字洗稿发布有版权与平台风险,商用需获授权。
- 影视解说版权红线:抖音影视解说大量使用受版权保护的影视片段,二创与商用需遵守平台与版权方规则;交付物中明确指出"本视频含影视二创素材",不协助规避版权保护的技术措施。
- 带货脚本红线:功效宣称遵守广告法(禁「最/第一/根治」类绝对化用语),事实性内容提示用户人工核查。
- 推断必标注:分镜的镜头/运镜/情绪等推断信息一律带 ⚠️,与 Omni 实测数据区分。
- 画面误识别警示:影视解说/剧情类视频的画面识别(剧中人物/作品)极易出错,交付时提醒用户以口播稿为准。
- 不解析:涉密、明显侵权、违反平台规则的内容。
FAQ
Q: 用户直接丢了一整段抖音分享文案(含乱码 h@B.gO 之类)? 只从中提取 https://... 部分的干净 URL(通常是 v.douyin.com/xxx 或 iesdouyin.com/...),丢掉其余文字再解析。
Q: 提交 v.douyin.com/xxx 直接报 PARSE_FAILED? 抖音短链直连解析会失败(file_uploaded:false)。必须先用浏览器 UA 跟随重定向展开为 www.iesdouyin.com/share/video/<id>/?... 真实地址再提交,重试即可成功。
Q: 展开后的 iesdouyin 链接又解析失败了? 该链接的 ts/share_sign 是带时效的访问凭证,可能已过期。让用户重新在抖音 App 复制分享链接,再走一遍展开流程。
Q: 解析结果里把《甄嬛传》识别成了《大长今》/别的韩剧? 这是影视解说类视频的典型误识别——画面是二创剪辑素材,视觉模型会把片中人物/作品张冠李戴。关键剧情与事实以 [说话人] 口播稿为准,画面描述仅作辅助并标注「⚠️ 可能误判」。
Q: 解析结果只有口播没有画面文字? 该视频可能没有文字版面(纯真人出镜口播,或画面文字太花识别不出)。detail:"text" 已是画面信息最全的模式,layout/grounded 当前不可用,勿再尝试。
Q: 视频很长(>15 分钟)? 抖音影视解说经常 5–15 分钟甚至更长。若遇到,先告知用户解析耗时更长(可能 8 分钟以上),确认后再提交。
Q: 积分/额度? 与 cue-omni-reader 共用:新用户 500 积分 + 每天 10 免费积分,同一视频重复解析会复用结果不重复扣费。提示积分不足时,两个办法:推荐邀请好友——打开 https://cuecue.cn/,点击页面左下角获取专属邀请链接,好友加入后你再得 500 积分;或前往 cuecue.cn/pay 充值(首次充值有优惠),也可等次日免费额度。
Q: 想要的不是转录稿,而是爆款脚本? 用场景 5:先说「改写成我的脚本」或给方向/目的/商品,或先跑场景 3 拿骨架再改写。
参考
- 解析底座:cue-omni-reader 技能(远程端点调用规范、错误码总表)
- 同族技能:xiaohongshu-video-studio / bilibili-video-studio(场景化加工规范可互参)
- 在线体验:https://cuecue.cn/hub/omni-reader
- API Key 管理:https://cuecue.cn/hub/api-key
- 订阅付费页面:https://cuecue.cn/pay
微信扫一扫