Install
openclaw skills install @xiao2769433/douyin-textUse when the user wants to extract spoken text from a Douyin video link and produce a corrected, readable Chinese transcript
openclaw skills install @xiao2769433/douyin-text从抖音视频中提取语音内容:Python 只负责下载视频和 Whisper 原始转录;Claude Code 基于原始转录完成动态校对、自然分段、核心观点提炼,并一次性生成最终 Markdown 文档。
每次用户调用 /douyin-text,必须严格按以下 4 步执行:
Python 提取原始转录
Claude 读取 Python 输出的 JSON
transcription_raw 原始转录文本Claude 完成动态校对、自然分段、核心观点
Claude 一次性生成最终 Markdown 文件
Write 工具直接创建成品文档不需要额外配置 Claude API 或 OpenAI API。 AI 动态校对由当前 Claude Code 会话完成。
/douyin-text <抖音视频链接>
示例:
/douyin-text https://v.douyin.com/xxxxx
url:抖音视频链接,必填
https://v.douyin.com/xxxxxhttps://www.douyin.com/video/xxxxx--whisper-model:Whisper 模型大小,可选 tiny/base/small/medium/large,默认 small--desc:仅提取视频描述文字,不下载视频--cookies-browser:从浏览器导入 cookies,默认 chrome--cookies-file:使用 cookies.txt 文件--no-cookies:不使用 cookies--update-ytdlp:更新 yt-dlp当用户调用:
/douyin-text <链接>
Claude 必须严格按以下 4 步执行。绝对禁止跳步、合并步骤,或直接使用 Python 生成的旧版完整 Markdown。
在 skill 目录运行(必须带 --raw-json 参数):
cd C:/Users/10911/.claude/skills/douyin-text && python extract.py --raw-json '<用户提供的链接>'
如果用户传了 --whisper-model 等参数,要原样传给 extract.py:
cd C:/Users/10911/.claude/skills/douyin-text && python extract.py --raw-json --whisper-model medium 'https://v.douyin.com/xxxxx/'
这一步的职责仅限于:
这一步不会生成任何 Markdown 文档、不会生成"整理后文案"、不会生成"核心观点"。
--raw-json 模式会向 stdout 输出 JSON,结构如下:
{
"url": "https://v.douyin.com/xxxxx",
"author": "作者昵称",
"description": "视频描述文字",
"transcription_raw": "Whisper 原始转录全文",
"error": null
}
Claude 必须:
error 不为 null 或 transcription_raw 为空,立即向用户报告错误并停止;不得编造内容output/ 目录下任何已有 Markdown 文件Claude 基于 transcription_raw 完成以下处理(全部在 Claude 侧,不再调用 Python):
3.1 动态校对
3.2 自然分段
3.3 提炼核心观点
Claude 使用 Write 工具一次性创建最终 Markdown 文件。
绝对禁止:
文件路径规则:
C:/Users/10911/.claude/skills/douyin-text/output/douyin_<YYYYMMDD_HHMMSS>_<作者>.md
\ / : * ? " < > |,并截断到 20 字符douyin_<时间戳>.md文件内容结构(严格按以下格式生成):
📹 抖音视频语音文案
══════════════════════════════════════════════════
🔗 链接:<url>
👤 作者:@<author>
📝 视频描述:<description>
══════════════════════════════════════════════════
🎤 原始语音转录(<字数> 字)
──────────────────────────────────────────────────
<transcription_raw,保持原文不动,含 Whisper 输出的换行>
══════════════════════════════════════════════════
✨ 整理后文案
──────────────────────────────────────────────────
<Claude 校对、自然分段后的版本,段落间用空行分隔>
══════════════════════════════════════════════════
💡 核心观点
──────────────────────────────────────────────────
1. <观点一>
2. <观点二>
3. <观点三>
══════════════════════════════════════════════════
transcription_raw,不得做任何替换、整理或省略author 或 description 为空,对应行可省略,但其余结构必须完整保留len(transcription_raw)最终回复必须包含:
明显由语音识别造成的错误,例如:
| Whisper 可能输出 | 应修正为 |
|---|---|
| 普提祖师 | 菩提祖师 |
| 普提老祖 | 菩提老祖 |
| 西邮季 | 西游记 |
| 金斗云 | 筋斗云 |
| 七十二遍 | 七十二变 |
| 斗战圣佛 | 斗战胜佛 |
| 元风五年 | 元丰五年 |
| 被扁黄周 | 被贬黄州 |
| 回首向来消瘦处 | 回首向来萧瑟处 |
| 规去也无风雨也无情 | 归去,也无风雨也无晴 |
这些只是示例。实际执行时,Claude 应根据上下文动态判断,不局限于固定规则表。
如果某个词可能有多种解释,不要强行改。
例如:
“整理后文案”必须自然分段。
菩提祖师是孙悟空非常重要的师父。在《西游记》里,他是真正教给孙悟空本领的人。
孙悟空的名字,是菩提祖师给的;孙悟空的筋斗云、七十二变,也都是菩提祖师传授的。
相比之下,唐僧给孙悟空的更多是一路上的磨炼和约束。唐僧没有教孙悟空本领,却让他在取经路上经历约束、受苦和修行。
所以,菩提祖师给的是本事和根基,唐僧给的是磨炼和修行。两个人对孙悟空都重要,只是重要的方式不同。
我问你个问题,孙悟空的师父是谁? 唐僧,普提老祖。你怎么知道是普提祖师? 他叫他本领。大多数人会认为是唐僧。但是你看,在孙悟空整个西邮季的这一百回里面...
问题:
如果原始转录很长,Claude 仍应完整处理 transcription_raw 全文。
如果单次处理上下文过长:
transcription_raw 全文必须原样写入"原始语音转录"区域,不得截断。Write 生成最终 Markdown 文件。不要只整理前 300 字就结束。 不要分多次 Edit 同一个最终文件。
| 内容长度 | 控制台行为 | 文件保存 |
|---|---|---|
| ≤ 1000 字 | 可在回复中展示较完整内容 | 保存校对后的完整版 |
| > 1000 字 | 回复摘要 + 文件路径 + 典型纠错 | 保存校对后的完整版 |
| 情况 | 处理方式 |
|---|---|
| Python 脚本下载失败 | 如实报告错误,提示确保浏览器已登录抖音,或尝试 cookies |
| Whisper 未安装 | 提示安装 openai-whisper |
| moviepy 未安装 | 提示安装 moviepy |
| 找不到 ffmpeg | 提示安装 ffmpeg 或 imageio-ffmpeg |
| Whisper 转录失败 | 如实报告错误,不编造文案 |
| Claude 后处理时不确定某个词 | 保留原词,或在最终回复中说明“疑似” |
| 原始转录过长 | 分段校对后合并,但仍一次性 Write 生成最终文件 |