wjs-localizing-video (오케스트레이터)
이 스킬은 분할되었습니다. 이전에는 1300줄짜리 하나의 스킬이었지만, 이제 4개의 집중된 하위 스킬로 나뉘었습니다. 사용자가 전체 파이프라인을 한 번에 요청할 때만 이 오케스트레이터를 사용하세요. 개별 단계가 필요하다면 해당 하위 스킬로 직접 라우팅하세요.
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를 통한 소프트 먹싱(soft-mux)으로 끝납니다. 대부분의 "더빙 전용" 작업은 3단계 후에 끝납니다.
이 오케스트레이터를 호출해야 하는 경우 vs 하위 스킬을 직접 호출해야 하는 경우
이 스킬(wjs-localizing-video) 을 호출해야 하는 경우: 사용자가 전체 체인을 한 번에 요청할 때
- "帮我把这个西班牙语视频做成中文字幕和中文配音" (이 스페인어 영상을 중국어 자막과 더빙으로 만들어 줘)
- "translate this Spanish video to English with dubbing" (이 스페인어 영상을 영어로 더빙해서 번역해 줘)
- "全套:转写、翻译、烧字幕、配音、混音" (전체 세트: 전사, 번역, 자막 굽기, 더빙, 믹싱)
하위 스킬을 직접 호출해야 하는 경우: 사용자가 한 단계만 요청할 때
- "转写一下这个音频" (이 오디오 전사해 줘) →
/wjs-transcribing-audio - "把这个 SRT 翻译成中文" (이 SRT를 중국어로 번역해 줘) →
/wjs-translating-subtitles - "给这个视频配个中文音" (이 비디오에 중국어 음성 넣어 줘) →
/wjs-dubbing-video - "把字幕烧进视频" (자막을 비디오에 굽기) →
/wjs-burning-subtitles
하위 스킬은 더 집중적이며 입출력 계약을 더 엄격하게 문서화합니다. 단일 단계가 요청의 전부라면 이 오케스트레이터를 통해 라우팅하지 마세요. 필요 없는 문서를 읽게 될 뿐입니다.
진행 상황 체크리스트 (모든 하위 스킬보다 먼저 이 작업을 수행하세요)
파이프라인은 최대 4단계까지 있으며 몇 분 동안 실행됩니다. 사용자는 침묵 끝에 완성된 파일만 보는 것이 아니라 실시간 진행 상황을 보고 싶어 합니다. 첫 번째 하위 스킬을 호출하기 전에 계획된 단계를 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단계 — 스페인어 원본 전사
비디오와 함께 `/wjs-transcribing-audio`를 호출하고 `--language es`를 전달합니다.
하위 스킬 처리: 청킹, 단어 수준 타임스탬프, 구두점 경계에서의 큐 조립, 루프 가드, 재시도. 출력: entrevista.srt (스페인어, 원본 언어).
2단계 — 간체 중국어로 번역
스페인어 SRT와 대상 언어 `zh-CN`으로 `/wjs-translating-subtitles`를 호출합니다.
하위 스킬 처리: 구두점에서 큐 재분할, 필러 대명사 최소화, 줄 길이 제한, 화자 톤 유지. 출력: entrevista.zh-CN.srt.
3단계 — (선택) 중국어 더빙
비디오 + entrevista.zh-CN.srt + 음성 ID로 `/wjs-dubbing-video`를 호출합니다.
성숙하고 명상적인 여성용 기본값: zh_female_gaolengyujie_moon_bigtts (Volcano 高冷御姐, --rate -8% +0Hz). Volcano 자격 증명이 없는 경우: 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 정적 빌드 폴백, Fontsize 보정, 전체 렌더링 전 프레임 확인, 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가 올 때 적용됩니다.)
파일 이름 규칙 (원래 스킬에서 유지)
입력: 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, 음성: 高冷御姐 -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이 연결되지 않은 경우 飞书妙记를 통한 대체 중국어 전용 기록 경로.