1. 刷到爆款视频却拆不出提示词,问题到底卡在哪
短视频创作者大概都经历过这个瞬间:刷到一条萌宠拟人或者变装转场的 AI 视频,画面、节奏、情绪全都在线,评论区一堆人问“求提示词”,你翻半天也没人给。就算有人好心发了一段,你拿去生成,出来的东西跟原片差得远——角色不对、镜头不对、风格也不对。
核心矛盾在于:视频理解模型能告诉你“视频里有什么”,但没法直接给你“怎么复刻出来”。前者是描述,后者是创作素材。中间缺的那一环,是把视频拆成文生视频提示词、角色设定、风格关键词、分镜描述、台词字幕这一整套可复用的东西。
我试过手动拆:暂停、截图、逐帧看、记笔记,一条 15 秒的视频能拆半小时,拆完还不一定准。后来想明白了,这件事本质上是“视频理解 + 结构化输出 + 提示词工程”的组合,完全可以做成一个 OpenClaw skill 自动跑。
这篇要讲的就是这个 skill——xfc-video-understand。你给它一个抖音分享链接或者在线视频真实地址,它自动解析、理解、反推,最后吐出一套能直接拿去生成视频的素材。适合谁?做 AI 短视频的、想二创爆款的、懒得每次手动拆片的。下面从架构到配置到验证,一步步跟做。
2. TaoToken 统一通道接入:把视频理解 endpoint 收口到一个地方
先说清楚为什么要接 TaoToken。这个 skill 要调两类接口:一类是把抖音分享链接解析成真实视频地址,另一类是视频理解模型(默认走通义千问的 qwen-vl-max-latest)。如果你每个接口都单独配 key、单独记 base_url,换环境的时候就是灾难。
TaoToken 在这里的作用是统一通道:把模型调用的 endpoint 收口到一个兼容 OpenAI 协议的地址,key 也只管一份。这样 skill 的 config.json 里,模型相关的配置就变成“一个 base_url + 一个 key + 一个 model id”三件套,切换模型或者换环境只改这三行。
具体来说,模型对话走https://taotoken.net/api,兼容 OpenAI 的/v1/chat/completions格式。视频理解模型本质上也是多模态对话请求,把 video_url 和 prompt 一起塞进 messages 里就行,所以完全能走这个通道。
你需要准备的东西:
- 一个 TaoToken 的 API Key,在控制台的 API Keys 页面生成
- 视频理解模型的 Model ID(比如 qwen-vl-max-latest 这类多模态模型)
- Base URL 填
https://taotoken.net/api
拿 Key 的入口在这里:API Keys 页面https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite。生成之后先复制存好,后面 config.json 要用。
如果你只是想先验证模型能不能正常返回,可以先去模型对话页面https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite发一条带图片或视频链接的消息,确认通道通了再往下配。
这一步别跳过。很多人后面报 401 或者 model not found,回头查半天,其实就是在这一步 key 没存对或者 model id 写错了。
3. 可复制配置:skill 目录、config.json 与核心脚本
先把目录结构建出来。整个 skill 收敛成一个核心脚本,结构很干净:
xfc-video-understand/ ├── SKILL.md ├── config.json ├── requirements.txt └── scripts/ └── understand_video.py按这个结构创建文件夹,然后逐个填内容。
3.1 SKILL.md:调用入口定义
SKILL.md 是这个 skill 的说明书,OpenClaw 靠它判断什么时候调用、按什么步骤执行。编写思路如下:
# xfc-video-understand ## 调用场景 用户传入抖音分享链接或在线视频真实地址,并且需要分析视频内容或反推视频提示词。 ## 执行步骤 1. 如果用户传入的是抖音分享链接,先调用解析接口提取真实视频地址 2. 调用 scripts/understand_video.py 解析视频内容 3. 将视频解析结果整理成提示词、台词、分镜返回给用户3.2 config.json:统一管理 API Key
配置文件把模型调用收口到 TaoToken 通道,字段和说明如下:
| 字段名 | 是否必填 | 作用说明 | 示例值 / 备注 |
|---|---|---|---|
| api_key | 是 | 调用视频理解模型的 Key | 在 TaoToken 控制台生成 |
| base_url | 否 | 模型接口地址,走统一通道 | https://taotoken.net/api |
| model | 否 | 视频理解模型名称 | qwen-vl-max-latest |
| tikhub_api_token | 是(走抖音分享链接时) | 把分享链接解析成真实视频地址 | Bearer Token |
对应的 config.json 片段:
{ "api_key": "sk-你的TaoToken密钥", "base_url": "https://taotoken.net/api", "model": "qwen-vl-max-latest", "tikhub_api_token": "你的TikhubToken" }注意 base_url 这里不要带/v1后缀,脚本里拼接路径时统一处理,避免出现/v1/v1/chat/completions这种双前缀。这是我自己踩过的坑,报 404 的时候先看这里。
3.3 understand_video.py:核心逻辑
脚本的设计思路分三段:读配置 → 判断输入类型 → 调模型理解。核心结构:
import json import requests def load_config(): with open("config.json", "r", encoding="utf-8") as f: return json.load(f) def resolve_douyin_share_url(share_url, token): # 调用解析接口,从返回体里提取真实视频地址 headers = {"Authorization": f"Bearer {token}"} resp = requests.post( "https://api.tikhub.io/api/v1/douyin/web/fetch_video", json={"share_url": share_url}, headers=headers, timeout=30, ) data = resp.json() return data["data"]["video_url"] def analyze_video(api_key, video_url, prompt, model, base_url): # 构造 OpenAI 兼容请求,走 TaoToken 统一通道 headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } payload = { "model": model, "messages": [ { "role": "user", "content": [ {"type": "video_url", "video_url": {"url": video_url}}, {"type": "text", "text": prompt}, ], } ], } resp = requests.post( f"{base_url}/v1/chat/completions", json=payload, headers=headers, timeout=120, ) return resp.json()["choices"][0]["message"]["content"] def run(payload): config = load_config() video_url = payload.get("video_url") share_url = payload.get("share_url") if share_url and not video_url: video_url = resolve_douyin_share_url(share_url, config["tikhub_api_token"]) result = analyze_video( config["api_key"], video_url, payload["prompt"], config["model"], config["base_url"], ) return {"text": result, "video_url": video_url}resolve_douyin_share_url()负责把分享链接变成可直接访问的地址,analyze_video()负责把视频丢给模型做理解,run()把两段串起来。三件套(Base URL + Key + Model ID)全部从 config.json 读,改一处就够。
3.4 集成到 OpenClaw
把整个 skill 文件夹上传到 OpenClaw 服务器的工作目录:
scp -r xfc-video-understand root@你的服务器:/root/.openclaw/workspace/skills/回到 OpenClaw 会话界面,确认 skill 已加载。如果列表里能看到xfc-video-understand,就可以直接发链接调用了。
4. 端到端验证:发一条抖音链接看它吐出什么
配置完别急着高兴,先跑一次完整验证。这一步的目的是确认三件事:分享链接能解析、模型能返回、输出结构能用。
4.1 准备一条测试视频
找一条你最近刷到的、想复刻的 AI 视频,复制它的抖音分享链接。链接长这样:
https://v.douyin.com/xxxxxxx/4.2 发起调用
在 OpenClaw 会话里直接发:
帮我反推这个视频的提示词:https://v.douyin.com/xxxxxxx/skill 会按 SKILL.md 定义的步骤执行:先解析分享链接拿到真实视频地址,再把地址和提示词一起发给视频理解模型。
4.3 期望的成功结果
正常情况下,你会拿到一份结构化输出,包含:
- 一句话核心提示词
- 更完整的详细 prompt
- 可直接拿去生成视频的分镜描述
- 风格关键词和负面提示词
- 角色设定
- 角色台词和字幕文案
如果返回里能看到这些字段,说明整条链路通了。如果只返回一段泛泛的视频描述,说明 prompt 模板没生效,检查 SKILL.md 里的执行步骤是不是被正确读取。
4.4 人工审核这一步不能省
模型生成的提示词必须人工过一遍。AI 全自动生成的提示词有时候细节不到位,比如角色形象描述不够具体、镜头运动方向模糊。提示词写得越精准,后面生成时抽卡次数越少。
我的做法是:拿到反推结果后,先固定角色形象(用参考图或者更细的文字描述),再微调分镜里的动作和情绪词,最后才拿去生成。纯靠 AI 文字描述生成的角色,形象经常跑偏。
5. 常见报错排查:401、local proxy failed、reading choices
跑不通的时候,对照下面几个真实报错定位。
401 Unauthorized
最常见。原因就两个:key 没填对,或者 key 前面多了空格。检查 config.json 里的api_key字段,确认是从 TaoToken 控制台完整复制的。如果 key 是对的还报 401,看 base_url 是不是写成了别的地址。
local proxy failed / connection refused
这个报错通常出现在请求根本没发出去的时候。检查两点:一是 base_url 是不是https://taotoken.net/api,别写成带端口或者带路径的;二是服务器能不能正常访问外网。如果是本地跑脚本,确认没有奇怪的网络配置拦截请求。
reading 'choices' / KeyError: 'choices'
这个报错说明请求发出去了,但返回体里没有choices字段。原因一般是:模型名写错了,或者请求格式不对。先打印完整返回体看看,通常是{"error": {"message": "model not found"}}这类。检查 config.json 里的model字段,确认 Model ID 拼写正确。另外确认 payload 里 messages 的结构符合多模态格式,video_url 和 text 要放在同一个 content 数组里。
OAuth / token expired
如果用的是需要 OAuth 的接口,token 过期会报这个。TaoToken 的 key 是长期有效的,出现这个报错一般是 Tikhub 那边的 token 问题,重新生成一个换上。
视频地址解析失败
抖音分享链接解析偶尔会失败,尤其是链接过期或者视频被删。换一条视频重试,或者直接传在线视频的真实地址绕过解析步骤。
排查顺序建议:先确认 key 和 base_url → 再确认 model id → 再确认请求格式 → 最后看网络。大部分问题在前两步就能解决。
6. 把反推能力接进你的创作流
这个 skill 真正的价值不是“又一个视频理解工具”,而是把一段断掉的工作流接上了。以前刷到好视频,只能停在“这个真不错”;现在刷到好视频,顺手就能拆成自己的下一条素材。
几个实用建议:
第一,反推结果里的负面提示词别丢。很多人只抄正向 prompt,结果生成时画面乱飘。负面提示词是控制稳定性的关键,尤其是做角色一致性的时候。
第二,分镜描述可以拆开单独用。一条视频拆出 5 个分镜,你可以只取其中 2 个,混进自己的脚本里,比整条照搬更有原创性。
第三,长期做 AI 视频的话,建议把模型调用固定走 Coding Plan 通道https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite,批量跑反推任务时额度更稳,不用每次担心 key 的调用限制。
第四,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,遇到接口格式问题先翻这里,比到处搜答案快。
最后一步,把 skill 跑通之后,试着连续反推 3 条同类型的爆款视频,对比它们的提示词结构。你会发现爆款之间是有共性的——镜头语言、节奏、情绪词都有套路。把这些共性沉淀成你自己的模板库,下次生成就不用从零开始了。