Communitygithub.com

jianshuo/claude-skills

輕量級編排器,負責端到端影片本地化:依序調用轉寫音訊 → 翻譯字幕 → 配音影片 → 燒錄字幕。擁有 131★ 的完整工具套件。

claude-skills 是什麼?

此技能作為一個輕量級編排器,協調完整的影片本地化流程,將原本超過 1300 行的單一腳本拆分為四個專門的子技能:音訊轉寫(/wjs-transcribing-audio)、字幕翻譯(/wjs-translating-subtitles)、影片配音(/wjs-dubbing-video)以及字幕燒錄與混合(/wjs-burning-subtitles)。它專為 Claude Code 等 AI 代理設計,讓使用者能用單一請求執行端到端的「轉寫 → 翻譯 → 配音 → 燒錄」管線,或直接呼叫子技能處理個別步驟。其核心價值在於提供清晰的進度檢查清單(透過 TaskCreate),將長時間運行的多步驟處理程序轉變為即時更新的 UI 體驗,避免使用者面對無回應的等待。此技能支援從任何來源語言轉寫音訊,並透過火山引擎或 Azure TTS 進行配音,最後保留原始音訊作為低音量背景音。檔案命名規範採用 BCP-47 後綴,方便管理多語言輸出。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jianshuo/claude-skills/tree/main/wjs-localizing-video

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 未配置時,透過飛書妙記提供的備選中文轉寫路徑。

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

相關技能