下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-qe1es2ua--douyin-video-extractor.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-qe1es2ua/douyin-video-extractor。抖音文案提取(抖音文案、口播文案、逐字稿、视频转文字)、抖音视频下载(抖音下载、去水印)。 输入一条抖音(Douyin / 抖音短视频)视频分享链接,短链也能直接解析,输出:无水印的原片 MP4(可直接播放)、高清封面图、封面文案、以及按语义智能分段的逐字稿(视频文案 / 口播文案 / 语音转写 / 转文字)。适用于提取抖音视频文案、整理逐字稿、保存抖音视频、拆解爆款短视频、做内容二创素材。
基于公开可见的作品数据,无需 API Key、无需登录账号、无需额外配置。
阅读全文 (展开查看完整说明)
概述
输入一条抖音视频分享链接,返回无水印的原片视频 + 封面 + 封面文案 + 逐字稿。
怎么用(面向用户)
用户只需要把一条抖音视频的分享链接发过来就行。
上手前提:零门槛 —— 基于公开可见的作品数据,不需要 API Key、不需要登录账号、不需要额外配置。
支持的输入形式:
| 形式 | 例子 | 支持 |
|---|---|---|
| 分享短链 | v.douyin.com/xxxxxxx/ | ✅ 推荐 |
| 视频直链 | www.douyin.com/video/7444xxxxxxxxxxxxx | ✅ |
| 分享文案整段 | 从 App 复制的「标题 + 链接」整段文字 | ✅ 自动提取链接 |
怎么拿到分享链接:在抖音里打开视频 → 点右侧「分享」→「复制链接」,然后把链接(或整段分享文案)贴进来。
用户会得到什么:
| 得到 | 说明 |
|---|---|
| 视频文件 | 无水印的原片 MP4,可直接播放,已下载到本地 |
| 封面图 | 视频封面,已下载到本地 |
| 视频逐字稿 | 视频里说的话,已智能分段(按语音停顿与口语标记切段) |
| 封面文案 | 封面图上的文字(服务端 OCR 识别) |
| 作品信息 | 作者 / 发布时间 / 时长 / 点赞评论分享收藏 / 字数 |
| 交付文档 | 一份 Markdown |
费用:本技能为付费技能,调用时会向用户申请微信支付授权,金额以支付时显示为准。付款成功后服务端才开始提取内容。
产物位置:<当前工作目录>/douyin_video/<作品标题>/
前置检查:当前智能体是否支持微信 AI 支付(官方四步指令的第一步,必须先做)
发起下单前,先检查你的可用工具列表中是否存在名称包含 weixinpay_ 的工具(如 mcp__weixinpay__weixinpay_register;工具名带前缀也算,存在任意一个即视为支持)。
只以你的工具列表为证据,本文档中提到的工具名不算;无法确认时按「不支持」处理。
- 支持 → 静默继续本技能的后续流程,不向用户提及本检查。
- 不支持 → 终止流程,不要发起下单。只向用户说明结论与解决办法(无需解释你如何检查、不要出现具体工具名),按智能体类型提示:
- 合作智能体(如 WorkBuddy):请升级智能体到最新版本后重试。
- 开放智能体(如 OpenClaw / DeepSeek Harness):请升级智能体到最新版本后重试。
- 无法判断类型:请升级智能体或安装微信支付 AI 支付插件后重试。
⚠️ 判据是工具名里含
weixinpay_前缀,不是去判断「某个插件/扩展是否已安装」—— 智能体看不到宿主装了哪些插件,只能看自己的工具列表。不同宿主的工具集不同(WorkBuddy 是
weixinpay_retry_pay等,OpenClaw 是weixinpay_pay等),所以只认前缀,不要认具体名字。🔴 本检查只回答「支持不支持」;至于要不要由你来调支付工具,看第二步 —— 取决于你的工具表里有没有
weixinpay_pay。
服务接口(服务声明 · 审核可见)
本技能为 SkillHub Pay Skill,付费与内容交付由服务端完成。服务信息如下:
| 项 | 值 |
|---|---|
| 资源接口 | POST https://api.aigctxj.cn/api/dyv/resource |
| 计费 | 微信支付 · 微信 AI 专属卡(X402 协议,按次付费;金额与发布表单标价一致,以支付时显示为准) |
| 未支付响应 | HTTP 402 + 响应头 WeixinPay-Required(其值为支付凭据点,交给宿主的支付工具申请授权) |
| 支付回调 | POST https://api.aigctxj.cn/api/dyv/pay/notify(微信支付 v3 异步回调:验签 + 解密后标记已支付) |
| 退款回调 | POST https://api.aigctxj.cn/api/dyv/refund/notify |
| 健康检查 | GET https://api.aigctxj.cn/health |
| 运行日志上报 | POST https://api.aigctxj.cn/api/dyv/ack(匿名运行日志:只报运行是否成功、卡在哪一步、素材下载成功/失败数量;不含作品内容、标题、链接原文与任何个人信息。可用环境变量 DOUYIN_VIDEO_TELEMETRY=0 关闭) |
| 履约方式 | 服务端履约(拉取内容 / OCR / 转写 → 返回结果);同一订单幂等,重复请求不会重复扣费 |
调用链:资源接口首次请求 → 未支付则返回 402 + 支付凭据 → Agent 把凭据点交给宿主自身的支付工具申请授权(该不该由 Agent 主动调取决于宿主:工具列表里有相应工具才调,否则宿主自动弹卡)→ 用户付款 → Agent 用完全相同的请求重试(携带订单号与凭据点)→ 服务端确认已支付并返回内容。
工作流程
第一步:请求资源
node scripts/request.mjs --url "<抖音视频分享链接>"第二步:处理 402 响应
如果脚本以退出码 10 结束,说明需要付费。脚本会打印如下 JSON:
{
"exit_code": 10,
"code": "PAYMENT_REQUIRED",
"out_trade_no": "<order_no>",
"amount": "<服务端返回的应付金额>",
"currency": "CNY"
}脚本输出里还会同时带一份支付凭据(响应头 WeixinPay-Required,值为一个不透明字符串,与订单号一起打印)。这段输出就是支付触发信号 —— 按你的工具表分两种情况处理:
情况 1 · 工具表里有 weixinpay_pay(开放智能体:OpenClaw / DeepSeek Harness)
→ 工具表里有 weixinpay_pay 时,立即调用它:把凭据的值原样作为 paymentCode 传入(即 weixinpay_pay({ paymentCode: "<凭据的值>" }))。不解码、不改写、不附带其他内容。随后由用户在支付页面上确认付款。
情况 2 · 工具表里没有 weixinpay_pay(合作智能体:WorkBuddy / QClaw)
→ 什么都不用做。宿主会自动拦下这段输出并弹出支付卡,用户点确认即完成付款。🔴 不要再去调任何支付工具:这类宿主上没有该工具,手动调用会失败,或与宿主的流程重复触发。
🔴 凭据每轮只取一份、只用一次:不要复用历史轮次的凭据,也不要反复打印 / 重复调用 —— 一轮只触发一次支付。
例外(唯一该由你调工具的场景):用户在上次支付里取消/关闭了,现在想对同一笔订单再付一次。
此时服务端不会再自动返回凭据,把上次那份支付凭据原样交给宿主提供的「重新支付」工具即可(工具名随宿主而异,如
weixinpay_retry_pay),不用重新下单。
等用户确认付款完成后,进入第三步重试;订单号与支付凭据原样从脚本输出里取值带上。
⏰ 支付凭据最长 15 分钟内有效(微信 AI 支付平台规定的一次性凭证上限;底层微信订单本身约 2 小时过期)。
如果用户拖了很久才付,凭据可能已经失效 —— 此时重新按第一步发起即可,
脚本会自动换一张新单并给出新凭据(不会重复扣费,也不会重复下单);
不要拿一张放了几十分钟的旧凭据反复尝试。
⚠️ 只有当退出码是
10时才去付款。若退出码是3(如NOT_PAID/REQUEST_MISMATCH),说明不该付款,按第四步对应处理;打印的 JSON 里
exit_code字段与真实退出码一致,可放心参考。
第三步:支付成功后重试(⚠️ 必须执行,最容易被遗漏)
支付成功后必须重新请求。用与第一次完全相同的链接,并把订单号与支付码带上:
node scripts/request.mjs --url "<同第一步完全相同的链接>"
--out-trade-no "<out_trade_no>"
--payment-code "<payment_code>"脚本会以退出码 0 结束,把交付内容保存为 Markdown 文件,并打印文件路径。
💡 单号会自动记住:脚本把「链接指纹 → 订单号」存在本机(用户主目录下的
.douyin-video/orders.json)。同一条链接再次运行时,即使你手上没有单号,脚本也会自动用回上次那一单 ——
不会重复下单,也不会让用户为同一条视频付两次钱。
所以「重试」必须用同一条链接、原样再跑一遍,不要换链接、不要换个说法重新发起。
⏳ 脚本会自己等:如果服务端回「正在处理」,脚本会自动每 5 秒问一次、最多等 60 秒,
你不用自己 sleep 或猜时长;它等完还没好,才需要按第四步再来一次。
👀 脚本运行时会给过程提示,你要看懂它在干什么:
- 打印「服务端正在处理,脚本自动等待」+「…已等 N 秒」→ 脚本在主动等我们这边处理完。
这期间不要中断、不要另起一次请求、不要让用户重新付款;等它自己结束再按退出码处理。
- 退出码
0= 内容已拿到;3= 还没拿到(按第四步再来一次);10= 需要付款。
打印的 JSON 里还会有:
saved_to/transcript_markdown_path:逐字稿 Markdown 的文件路径(两个字段同值)assets:已下载的素材路径(video/cover)assets_failed:下载失败的素材列表(非空时要在回复里如实说明哪些没下来,不要把失败当成成功)
注意:链接必须与第一步逐字相同,否则服务端会拒绝(提示
REQUEST_MISMATCH)。
第四步:处理异常返回
| 返回 | 含义 | 你要做的 |
|---|---|---|
NOT_PAID | 两种情况:① 已付款、服务端还在处理 ② 确实还没付完 | ① 脚本已自动等过 60 秒仍没有 → 等 15 秒用同一订单号再跑一次第三步;② 若 trade_state 是 NOTPAY / USERPAYING,说明还没付,回第二步让用户付款。两种情况都不要重新建单、不要重复付款 |
REFUNDED | 服务异常,已自动原路退款 | 告知用户「该服务暂时无法提供内容,已自动退款」;不要再次支付或重试 |
FULFILL_AND_REFUND_FAILED | 服务异常且退款失败 | 建议用户联系客服 |
REQUEST_MISMATCH | 链接与首次不一致 | 用与第一次完全相同的链接重试 |
ORDER_NOT_FOUND | 订单不存在 | 回到第一步重新发起 |
交付物内容
返回的 Markdown 结构:
- 标题(作品描述)
- 作品信息表:作者 / 日期 / 时长 / 点赞 / 评论 / 分享 / 收藏 / 封面文案 / 字数
- 视频文案(逐字稿):视频中说的话,已按语音停顿 + 口语标记智能分段;无语音时明确标注
- 来源与声明:原作者 / 原始作品链接 / 作品 ID / 版权归属
封面文案:封面图上的文字(服务端 OCR 识别)。封面没有文字时这一行不出现(不编造)。
交付文档不含下载地址 —— 视频与封面由脚本直接保存到本地,路径见结果 JSON 的
assets字段。
⚠️ 铁律:必须把内容发到聊天框
拿到交付内容后,必须把 Markdown 的核心内容直接回复到聊天框,不能只回一句「已保存到某路径」让用户自己去开文件。
具体做法:
- 先发内容:把「视频文案(逐字稿)」按原顺序完整发出来;超长时按原顺序分段连续发送,不得擅自改写成摘要。
- 再发文件清单:最后附上本地保存路径与已下载的素材文件(视频 / 封面)。
- 若某类内容缺失(如视频无语音、封面无文字),如实说明,不要编造。
本地保存与素材下载
脚本会把内容与素材保存到本地:
<当前工作目录>/douyin_video/
└── <作品标题>/ ← 每个作品一个文件夹(标题已净化:去全角标点/# 等)
├── <作品编号>.mp4 ← 视频(可直接播放)
├── <作品编号>_cover.<扩展名> ← 封面(扩展名随源站:jpg / webp)
└── douyin_<作品编号>_<标题>.md ← 交付 Markdown(逐字稿)输出根目录固定为
<当前工作目录>/douyin_video/。
--out-dir <目录>可直接指定输出目录(仅调试用);--no-download则只落盘 Markdown,不下载素材。已存在的文件会自动跳过,可安全重跑。
退出码对照
| 退出码 | 含义 |
|---|---|
0 | 成功,已交付并落盘 |
10 | 需要支付 —— 工具表里有 weixinpay_pay 就立即调它;没有就等宿主自动弹卡(见第二步) |
2 | 参数或配置错误 |
3 | 业务异常(含已退款、未完成支付、链接不一致等) |
4 | 网络错误 |
注意事项
- 前置检查:工具列表里存在名称含
weixinpay_前缀的工具才算支持;没有或无法确认就终止、不下单,并按智能体类型给出「升级宿主」的指引 - 收到 402 后:工具表里有
weixinpay_pay就立即调它;没有就什么都别做,等宿主自动弹卡 - 支付成功后立刻重试(0~3 秒内),链接与首次完全一致;脚本会自动等最多 60 秒
- 🔴 重试节奏严格按这个来,不要自己估时长:
- 付款确认 → 立即跑第三步
- 脚本等满 60 秒仍是
NOT_PAID→ 等 15 秒再跑一次(用同一个订单号) - 最多重复 4 次(累计约 2 分钟);仍无结果就告诉用户「处理中,稍后再试」,不要重复付款
- 🔴 同一条链接没拿到内容之前,禁止新建订单:脚本本地已存了「链接 → 订单号」,
重跑同一条链接会自动复用;输出里给了订单号时也必须原样带上。换链接 / 换说法 = 会多建单
- 转写 + OCR 需要时间(实测 13~56 秒,长视频更久),不要因为觉得慢就重新提交
- 视频链接失效 / 视频已删除时服务端会自动退款,如实告知用户即可
- 同一订单重复重试是安全的(幂等),会返回相同结果,不会重复扣费
- 不支持的输入:主页链接、图文(多图)作品、私密/付费/已删除作品 —— 会明确报错
- 🔴 必须把交付内容的核心正文直接发到聊天框(见上文「铁律」节),不能只回文件路径
- 文档里凡是出现支付凭据字段的地方故意只写字段名、不写值(例如那行 JSON 示例)—— 这是防误弹卡的,不要「补全」它
- 🔴 不要在技能里引导安装任何外部包(审核红线)