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 後完成。
何時呼叫此編排器 vs. 直接呼叫子技能
呼叫此技能 (wjs-localizing-video) 當使用者一次要求完整流程時:
- "帮我把这个西班牙语视频做成中文字幕和中文配音"
- "translate this Spanish video to English with dubbing"
- "全套:转写、翻译、烧字幕、配音、混音"
直接呼叫子技能 當使用者只要求一個步驟時:
- "转写一下这个音频" →
/wjs-transcribing-audio - "把这个 SRT 翻译成中文" →
/wjs-translating-subtitles - "给这个视频配个中文音" →
/wjs-dubbing-video - "把字幕烧进视频" →
/wjs-burning-subtitles
子技能更專注,且其輸入/輸出合約文件更嚴謹。當使用者只要求單一步驟時,不要透過此編排器路由——你只會讀到不需要的文件。
進度檢查清單(請先執行此步驟,再呼叫任何子技能)
此管線最多包含四個步驟,需執行數分鐘。使用者希望看到即時進度,而不是一段無回應的等待後突然出現完成的檔案。在呼叫第一個子技能之前,請將計劃的步驟建立為 TaskCreate 檢查清單。 當你開始每個步驟時,將其任務更新為 in_progress;完成後標記為 completed。Claude Code 會在使用者介面中將此渲染為會即時打勾的檢查清單。
要建立哪些任務
根據使用者的要求決定將執行哪個步驟子集:
| 使用者要求 | 要建立的任務 |
|---|---|
| 完整本地化(字幕 + 配音 + 最終混合) | ① 轉寫 ② 翻譯 ③ 配音 ④ 燒錄字幕 + 混音 |
| 僅字幕(無語音變更) | ① 轉寫 ② 翻譯 ③ 燒錄字幕(或軟封裝) |
| 僅配音(無燒錄) | ① 轉寫 ② 翻譯 ③ 配音 |
| 使用者已有來源 SRT | 跳過 ①;僅建立其餘步驟 |
| 使用者已有目標 SRT | 跳過 ① 和 ②;僅建立其餘步驟 |
不要為你不會執行的步驟建立任務——最後一個未勾選的項目看起來像「我們忘了做」,而不是「我們跳過了」。
如何命名任務主題
使用你將在下方「最終回應範本」中使用的相同標籤,讓進行中的檢查清單與完成摘要看起來像同一組成果:
轉寫 <source-lang>(例如轉寫 西班牙語)翻譯 → <target-lang>(例如翻譯 → 中文)配音 <target-lang>(例如配音 中文 (高冷御姐 -8%))燒錄字幕 + 原聲底層 <bed>(例如燒錄字幕 + 原聲底層 0.18)
對於 activeForm,使用現在進行式變體(轉寫中…、翻譯中…、配音中…、合成中…)。
狀態紀律
- 僅將目前正在執行的任務標記為
in_progress(一次一個)。 - 當子技能返回其輸出檔案時立即標記為
completed,不要批次處理。 - 如果某個步驟出現需要釐清的問題或失敗,保持其為
in_progress,讓使用者能清楚看到管線暫停的位置。不要將完成一半的步驟標記為已完成。 - 如果使用者在管線途中改變方向(例如「跳過配音」),更新其餘任務:刪除不再適用的任務,保留其他任務。不要默默地忽略這些任務。
標準端到端管線(西班牙語 → 中文,含配音 + 背景音 + 燒錄)
這是原始的「驗證場景」——將西班牙語瑜珈/心靈內容轉換為中文,用於微信視頻號/小紅書。完整走過 4 個子技能。
步驟 1 — 轉寫西班牙語來源
呼叫 /wjs-transcribing-audio,使用影片和 `--language es`。
該子技能負責:分段、字級時間戳、依標點邊界組合提示、循環防護、重試。輸出:entrevista.srt(西班牙語,來源語言)。
步驟 2 — 翻譯為簡體中文
呼叫 /wjs-translating-subtitles,使用西班牙語 SRT 和目標 `zh-CN`。
該子技能負責:在標點處重新分段提示、減少填充性指示詞、限制行長、保留說話者語氣。輸出:entrevista.zh-CN.srt。
步驟 3 —(可選)配音為中文
呼叫 /wjs-dubbing-video,使用影片 + entrevista.zh-CN.srt + 一個語音 ID。
適用於成熟內省女性的預設語音:zh_female_gaolengyujie_moon_bigtts(火山引擎高冷御姐,--rate -8% +0Hz)。若無火山引擎憑證:zh-CN-XiaoxiaoNeural --rate -8% --pitch -10Hz。該子技能會先取樣,再執行。
輸出:entrevista_zh_dub.mp4。
步驟 4 — 燒錄字幕 + 將配音混合為背景音
呼叫 /wjs-burning-subtitles,使用 --video entrevista.mp4 --srt entrevista.zh-CN.srt --dub entrevista_zh_dub.mp4
該子技能負責:libass 可用性檢查、evermeet 靜態建置回退、字型大小校準、完整渲染前的畫面檢查、0.18 音訊背景音混合。
輸出:entrevista_zh_final.mp4(可直接發布)。
使用者已標準化的預設值
這些設定適用於整個管線;每個子技能會強制執行其對應的部分:
- 中文語音辨識優先路由到豆包(火山引擎);Whisper 作為備援。 在
/wjs-transcribing-audio中強制執行。 - 除非使用者明確提到多位說話者,否則整個配音使用單一語音。 在
/wjs-dubbing-video中強制執行。 - 任何配音下方保留原始音訊作為低音量背景音(0.15–0.25)。 在
/wjs-burning-subtitles中強制執行。 - 微信視頻號/抖音使用內嵌燒錄;其他情況預設使用軟封裝。 在
/wjs-burning-subtitles中強制執行。 - 頻道 CTA 名稱(若加入描述):王建碩 — 絕不使用嘉賓名稱。(來自
~/.claude/CLAUDE.md的全局規則;當此管線後接/wjs-uploading-video時適用。)
檔案命名規則(沿用原始技能)
輸入: entrevista.mp4
中文管線:
來源 SRT entrevista.srt
中文 SRT entrevista.zh-CN.srt
中文配音(僅音訊) entrevista_zh_dub.mp4
中文最終版(字幕+配音) entrevista_zh_final.mp4
英文管線:
英文 SRT entrevista.en.srt
英文配音 entrevista_en_dub.mp4
英文最終版 entrevista_en_final.mp4
雙語字幕:
西班牙語 + 中文 entrevista.es-zh.srt
西班牙語 + 英文 entrevista.es-en.srt
三語 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 未配置時,透過飛書妙記提供的備選中文轉寫路徑。