关于 wjs-localizing-video
wjs-localizing-video 是用于完整视频本地化流程的编排 Skill,面向需要一次完成转写、字幕翻译、配音及字幕处理的工作。它将任务交给四个专用子 Skill,并按请求跳过不需要的步骤。
主要功能
- 01编排转写、翻译、配音和字幕处理
- 02按任务选择所需步骤
- 03通过 TaskCreate 跟踪进度
- 04支持字幕或配音等部分流程
- 05规定步骤输入输出与文件命名
适用场景
- 01将外语视频制作成目标语言字幕和配音
- 02只转写并翻译视频字幕
- 03已有 SRT 时继续后续本地化
- 04在多步骤视频处理期间查看进度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jianshuo/ claude-skills --skill wjs-localizing-video安装后在 Claude Code 中输入/wjs-localizing-video确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignore.publish-manifest.jsonLICENSEREADME.md详细介绍
wjs-localizing-video(编排器)
此技能已拆分。 原先包含 1300 行内容的万能技能现已拆分为 4 个专注的子技能。仅当用户在一次请求中要求执行完整流程时,才使用此编排器。对于单个步骤,请直接调用对应的子技能。
四个子技能
| 步骤 | 技能 | 输入 | 输出 |
|---|---|---|---|
| 1. ASR | /wjs-transcribing-audio | 音频 / 视频 + 源语言 | 源语言 SRT |
| 2. 翻译 | /wjs-translating-subtitles | 源 SRT + 目标语言 | 目标 SRT(按标点划分) |
| 3. 配音(可选) | /wjs-dubbing-video | 视频 + 目标 SRT + 声音 | *_<lang>_dub.mp4(已替换为 TTS 音频) |
| 4. 烧录 / 混音(可选) | /wjs-burning-subtitles | 视频 + SRT +(可选配音) | 最终 MP4(单次编码) |
步骤 3 和 4 均为可选,且彼此独立——大多数“仅字幕”任务会在步骤 2 后,通过 /wjs-burning-subtitles 进行软封装。大多数“仅配音”任务会在步骤 3 后结束。
何时调用此编排器,何时直接调用子技能
在用户一次性要求执行完整流程时,调用此技能(wjs-localizing-video):
- “帮我把这个西班牙语视频做成中文字幕和中文配音”
- “把这个西班牙语视频翻译成英语并配音”
- “全套:转写、翻译、烧字幕、配音、混音”
用户只要求一个步骤时,直接调用子技能:
- “转写一下这个音频” →
/wjs-transcribing-audio - “把这个 SRT 翻译成中文” →
/wjs-translating-subtitles - “给这个视频配个中文音” →
/wjs-dubbing-video - “把字幕烧进视频” →
/wjs-burning-subtitles
子技能的职责更明确,且输入 / 输出约定也更精确。用户只要求一个步骤时,不要经过此编排器——否则你只会阅读并不需要的文档。
进度清单(在调用任何子技能前,先执行此项)
此流程最多包含四个步骤,执行时间可能长达数分钟。用户希望看到实时进度,而不是长时间没有反馈后突然收到完成的文件。调用第一个子技能前,先用 TaskCreate 列出计划步骤,创建任务清单。 每当开始一个步骤,将其任务更新为 in_progress;完成后,标记为 completed。Claude Code 会在 UI 中显示此清单,并实时勾选完成项。
要创建哪些任务
根据用户的请求,决定将执行以下 4 个步骤中的哪些:
| 用户的请求 | 要创建的任务 |
|---|---|
| 完整本地化(字幕 + 配音 + 最终混音) | ① 转写 ② 翻译 ③ 配音 ④ 烧字幕 + 混音 |
| 仅字幕(不更换声音) | ① 转写 ② 翻译 ③ 烧字幕(或软封装) |
| 仅配音(不烧录字幕) | ① 转写 ② 翻译 ③ 配音 |
| 用户已有源 SRT | 跳过 ①;仅创建剩余步骤 |
| 用户已有目标 SRT | 跳过 ① 和 ②;仅创建剩余步骤 |
不要为不会执行的步骤创建任务——结束时未勾选的项目会让人觉得“我们忘了”,而不是“我们跳过了”。
任务标题的措辞
使用下方“最终回复模板”中的相同标签,这样执行中的清单和完成摘要就会呈现为同一份内容:
转写 <source-lang>(例如,转写 西班牙语)翻译 → <target-lang>(例如,翻译 → 中文)配音 <target-lang>(例如,配音 中文 (高冷御姐 -8%))烧字幕 + 原声底层 <bed>(例如,烧字幕 + 原声底层 0.18)
对于 activeForm,使用表示正在进行的形式(转写中…、翻译中…、配音中…、合成中…)。
状态管理规范
- 仅将当前正在执行的任务标记为
in_progress(一次只能有一个)。 - 子技能返回输出文件后,立即将对应任务标记为
completed,不要批量更新。 - 如果某个步骤提出需要澄清的问题或执行失败,保持其状态为
in_progress,让用户准确看到流程停在哪里。不要将未完成的步骤标记为已完成。 - 如果用户在流程中途更改要求(例如“跳过配音”),请更新剩余任务:删除不再适用的任务,保留其余任务。不要悄悄删掉任务。
规范的端到端流程(西班牙语 → 中文,包含配音 + 底音 + 烧录)
这是原始的“验证场景”——将西班牙语瑜伽 / 灵性内容转换为中文,用于微信视频号 / 小红书。涵盖全部 4 个子技能。
步骤 1 — 转录西班牙语源内容
Invoke /wjs-transcribing-audio with the video and `--language es`.
该子技能负责:分块、词级时间戳、在标点边界组装字幕段、循环保护、重试。输出:entrevista.srt(西班牙语,源语言)。
步骤 2 — 翻译为简体中文
Invoke /wjs-translating-subtitles with the Spanish SRT and target `zh-CN`.
该子技能负责:在标点处重新分段、尽量减少填充性指示词、限制行长、保留说话者语气。输出:entrevista.zh-CN.srt。
步骤 3 —(可选)配制中文配音
Invoke /wjs-dubbing-video with the video + entrevista.zh-CN.srt + a voice ID.
成熟、沉静的女性声音默认使用:zh_female_gaolengyujie_moon_bigtts(Volcano 高冷御姐,--rate -8% +0Hz)。如果没有 Volcano 凭据:zh-CN-XiaoxiaoNeural --rate -8% --pitch -10Hz。该子技能会先采样,然后再提交。
输出:entrevista_zh_dub.mp4。
步骤 4 — 烧录字幕 + 将配音混入原声作为背景音
Invoke /wjs-burning-subtitles with --video entrevista.mp4 --srt entrevista.zh-CN.srt --dub entrevista_zh_dub.mp4
该子技能负责:检查 libass 是否可用、使用 evermeet 静态构建版本作为备用方案、校准字体大小、完整渲染前检查帧、以 0.18 的音量混入背景音。
输出:entrevista_zh_final.mp4(可直接交付)。
用户已标准化的默认设置
这些设置适用于整个流水线;每个子技能负责落实其中与自身相关的部分:
- 中文 ASR 优先使用豆包 (Volcano);Whisper 作为备用方案。 在
/wjs-transcribing-audio中落实。 - 除非用户明确提到多个说话者,否则整段配音使用同一个声音。 在
/wjs-dubbing-video中落实。 - 任何配音下方都保留低音量(0.15–0.25)的原始音频作为背景音。 在
/wjs-burning-subtitles中落实。 - 微信视频号 / 抖音使用烧录字幕;其他平台默认使用软封装。 在
/wjs-burning-subtitles中落实。 - 频道 CTA 名称(如果添加到描述中):王建硕 — 绝不能使用嘉宾的姓名。(来自
~/.claude/CLAUDE.md的全局规则;当此流水线后续接入/wjs-uploading-video时适用。)
文件命名约定(沿用原始技能中的约定)
input: entrevista.mp4
Chinese pipeline:
source SRT entrevista.srt
Chinese SRT entrevista.zh-CN.srt
Chinese dub (audio only) entrevista_zh_dub.mp4
Chinese final (subs+dub) entrevista_zh_final.mp4
English pipeline:
English SRT entrevista.en.srt
English dub entrevista_en_dub.mp4
English final entrevista_en_final.mp4
Bilingual subtitles:
Spanish + Chinese entrevista.es-zh.srt
Spanish + English entrevista.es-en.srt
three-language entrevista.es-zh-en.srt
采用 BCP-47 风格的后缀,可让多种目标语言的输出文件并排存放,并能一眼看出目标语言。
此编排器不会执行的操作
- 它不会重新实现任何功能。每个步骤都会委托给一个子技能。
- 它不会打包脚本。
dub.py位于/wjs-dubbing-video/scripts/,render.py位于/wjs-burning-subtitles/scripts/,visual_diarize.py位于/wjs-dubbing-video/scripts/。如果你在wjs-localizing-video/scripts/下看到过时副本,请优先使用对应子技能中的规范位置。
最终回复模板
完整流水线运行结束后,使用用户的语言简短回复。按照用户熟悉的原始“完成”模板:
已完成:
- 西班牙语转写 (/wjs-transcribing-audio)
- 中文翻译 (/wjs-translating-subtitles)
- 中文配音 (/wjs-dubbing-video, voice: 高冷御姐 -8%)
- 烧入字幕 + 原声底层 0.18 (/wjs-burning-subtitles)
输出:
- entrevista.srt
- entrevista.zh-CN.srt
- entrevista_zh_dub.mp4
- entrevista_zh_final.mp4
不确定片段:
- 00:01:23–00:01:26 背景噪音较大,原文可能不完全准确。
如果没有不确定的部分,请删去第二个列表。
另请参阅
/wjs-segmenting-video— 将长视频剪成独立的短片段(使用其自带的 SRT 切片器;与此流水线互不相关)。/wjs-overlaying-video— 通过 HyperFrames 在片段上添加 HTML/CSS 字幕。不要与/wjs-burning-subtitles结合使用 — 每个输出只能选择一种字幕系统。/wjs-uploading-video— 将最终的 MP4 上传到 YouTube。/lark-minutes— 当本地豆包 ASR 尚未接入时,通过飞书妙记生成仅中文转录的备用路径。