mcpField
W
wjs-localizing-video

wjs-localizing-video

github.com/jianshuo创意与媒体137163 次安装今天更新
代码仓库

关于 wjs-localizing-video

wjs-localizing-video 是用于完整视频本地化流程的编排 Skill,面向需要一次完成转写、字幕翻译、配音及字幕处理的工作。它将任务交给四个专用子 Skill,并按请求跳过不需要的步骤。

主要功能

  1. 01编排转写、翻译、配音和字幕处理
  2. 02按任务选择所需步骤
  3. 03通过 TaskCreate 跟踪进度
  4. 04支持字幕或配音等部分流程
  5. 05规定步骤输入输出与文件命名

适用场景

  1. 01将外语视频制作成目标语言字幕和配音
  2. 02只转写并翻译视频字幕
  3. 03已有 SRT 时继续后续本地化
  4. 04在多步骤视频处理期间查看进度

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jianshuo/claude-skills --skill wjs-localizing-video

安装后在 Claude Code 中输入/wjs-localizing-video确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
.publish-manifest.json
LICENSE
README.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 尚未接入时,通过飞书妙记生成仅中文转录的备用路径。

评论

支持 Markdown