¿Qué hace wjs-localizing-video (orquestrador)?
Este skill fue dividido. Lo que antes era un monolito de 1300 líneas ahora son 4 sub-skills enfocados. Usa este orquestador solo cuando el usuario solicite el pipeline completo en una sola petición. Para cualquier paso individual, enruta directamente al sub-skill correspondiente.
Los cuatro sub-skills
| Paso | Skill | ENTRADA | SALIDA |
|---|---|---|---|
| 1. ASR | /wjs-transcribing-audio | audio / video + idioma de origen | SRT en idioma de origen |
| 2. Traducir | /wjs-translating-subtitles | SRT origen + idioma destino | SRT destino (delimitado por puntuación) |
| 3. Doblar (opcional) | /wjs-dubbing-video | video + SRT destino + voz | *_<lang>_dub.mp4 (audio TTS reemplazado) |
| 4. Quemar / mezclar (opcional) | /wjs-burning-subtitles | video + SRT + (doblaje opcional) | MP4 final (una codificación) |
Los pasos 3 y 4 son opcionales e independientes; la mayoría de los trabajos "solo subtítulos" terminan después del paso 2 + mux suave mediante /wjs-burning-subtitles. La mayoría de los trabajos "solo doblaje" terminan después del paso 3.
Cuándo invocar este orquestador vs. un sub-skill directamente
Invoca este skill (wjs-localizing-video) cuando el usuario solicite toda la cadena de una sola vez:
- "帮我把这个西班牙语视频做成中文字幕和中文配音"
- "translate this Spanish video to English with dubbing"
- "全套:转写、翻译、烧字幕、配音、混音"
Invoca un sub-skill directamente cuando el usuario solicite un solo paso:
- "转写一下这个音频" →
/wjs-transcribing-audio - "把这个 SRT 翻译成中文" →
/wjs-translating-subtitles - "给这个视频配个中文音" →
/wjs-dubbing-video - "把字幕烧进视频" →
/wjs-burning-subtitles
Los sub-skills son más enfocados y documentan sus contratos de entrada/salida de manera más estricta. No enrutes a través de este orquestador cuando un solo paso sea toda la solicitud; solo estarías leyendo documentación innecesaria.
Lista de verificación de progreso (haz esto PRIMERO, antes de cualquier sub-skill)
El pipeline tiene hasta cuatro pasos y se ejecuta durante varios minutos. El usuario quiere ver progreso en vivo, no un muro de silencio seguido de un archivo terminado. Antes de invocar el primer sub-skill, describe los pasos planificados como una lista de verificación de TaskCreate. A medida que inicies cada paso, actualiza su tarea a in_progress; cuando termine, márcala como completed. Claude Code renderiza esto como una lista de verificación en la interfaz que se va marcando en tiempo real.
Qué tareas crear
Decide a partir de la solicitud del usuario qué subconjunto de los 4 pasos se ejecutará:
| Usuario solicitó | Tareas a crear |
|---|---|
| Localización completa (subs + doblaje + mezcla final) | ① 转写 ② 翻译 ③ 配音 ④ 烧字幕 + 混音 |
| Solo subtítulos (sin cambio de voz) | ① 转写 ② 翻译 ③ 烧字幕 (o mux suave) |
| Solo doblaje (sin quemar) | ① 转写 ② 翻译 ③ 配音 |
| El usuario ya tiene el SRT de origen | saltar ①; crear solo los pasos restantes |
| El usuario ya tiene el SRT destino | saltar ① y ②; crear solo los pasos restantes |
No crees tareas para pasos que no ejecutarás; un elemento sin marcar al final se lee como "olvidamos", no como "omitimos".
Cómo redactar los títulos de las tareas
Usa las mismas etiquetas que usarás en la "Plantilla de respuesta final" a continuación, para que la lista de verificación en curso y el resumen de finalización se lean como un mismo artefacto:
转写 <idioma-origen>(ej.,转写 西班牙语)翻译 → <idioma-destino>(ej.,翻译 → 中文)配音 <idioma-destino>(ej.,配音 中文 (高冷御姐 -8%))烧字幕 + 原声底层 <nivel>(ej.,烧字幕 + 原声底层 0.18)
Para activeForm, usa la variante de presente continuo (转写中…, 翻译中…, 配音中…, 合成中…).
Disciplina de estado
- Marca
in_progresssolo la tarea que se está ejecutando actualmente (una a la vez). - Marca
completedinmediatamente cuando el sub-skill devuelva su archivo de salida; no agrupes. - Si un paso plantea una pregunta aclaratoria o falla, déjalo como
in_progresspara que el usuario pueda ver exactamente dónde se detuvo el pipeline. No marques un paso a medio terminar como completado. - Si el usuario redirige a mitad del pipeline (ej., "salta el doblaje"), actualiza las tareas restantes: elimina las que ya no sean aplicables, conserva las demás. No las elimines silenciosamente.
Pipeline canónico completo (Español → Chino, con doblaje + fondo + quemado)
Este es el "escenario de validación" original: contenido espiritual/yoga en español a chino para 微信视频号 / 小红书. Recorre los 4 sub-skills.
Paso 1 — Transcribir la fuente en español
Invoca /wjs-transcribing-audio con el video y `--language es`.
El sub-skill maneja: fragmentación, marcas de tiempo a nivel de palabra, ensamblaje de señales en límites de puntuación, bucle de guardia, reintento. Salida: entrevista.srt (español, idioma de origen).
Paso 2 — Traducir al chino simplificado
Invoca /wjs-translating-subtitles con el SRT en español y destino `zh-CN`.
El sub-skill maneja: re-segmentación de señales en puntuación, minimización de demostrativos de relleno, límite de longitud de línea, preservación del tono del hablante. Salida: entrevista.zh-CN.srt.
Paso 3 — (Opcional) Doblaje al chino
Invoca /wjs-dubbing-video con el video + entrevista.zh-CN.srt + un ID de voz.
Predeterminado para mujer madura y contemplativa: zh_female_gaolengyujie_moon_bigtts (Volcano 高冷御姐, --rate -8% +0Hz). Si no hay credenciales de Volcano: zh-CN-XiaoxiaoNeural --rate -8% --pitch -10Hz. El sub-skill muestra una muestra primero, luego se compromete.
Salida: entrevista_zh_dub.mp4.
Paso 4 — Quemar subtítulos + mezclar doblaje sobre original como fondo
Invoca /wjs-burning-subtitles con --video entrevista.mp4 --srt entrevista.zh-CN.srt --dub entrevista_zh_dub.mp4
El sub-skill maneja: verificación de disponibilidad de libass, fallback de compilación estática evermeet, calibración de tamaño de fuente, verificación de fotograma antes de renderizado completo, mezcla de fondo de audio a 0.18.
Salida: entrevista_zh_final.mp4 (listo para enviar).
Valores predeterminados que el usuario ha estandarizado
Estos aplican a lo largo del pipeline; cada sub-skill aplica su propia parte:
- El ASR para chino enruta a 豆包 (Volcano) primero; Whisper es el respaldo. Aplicado en
/wjs-transcribing-audio. - Una sola voz para todo el doblaje a menos que el usuario mencione explícitamente múltiples hablantes. Aplicado en
/wjs-dubbing-video. - El audio original se conserva como un fondo de bajo volumen (0.15–0.25) debajo de cualquier doblaje. Aplicado en
/wjs-burning-subtitles. - Quemado para 微信视频号 / 抖音; mux suave para todo lo demás por defecto. Aplicado en
/wjs-burning-subtitles. - Nombre de CTA del canal (si se agrega a la descripción): 王建硕 — nunca el nombre de un invitado. (Regla global de
~/.claude/CLAUDE.md; aplica cuando este pipeline es seguido por/wjs-uploading-video.)
Convención de nombres de archivos (preservada del skill original)
entrada: entrevista.mp4
Pipeline en chino:
SRT origen entrevista.srt
SRT chino entrevista.zh-CN.srt
Doblaje chino (solo audio) entrevista_zh_dub.mp4
Final chino (subs+doblaje) entrevista_zh_final.mp4
Pipeline en inglés:
SRT inglés entrevista.en.srt
Doblaje inglés entrevista_en_dub.mp4
Final inglés entrevista_en_final.mp4
Subtítulos bilingües:
Español + Chino entrevista.es-zh.srt
Español + Inglés entrevista.es-en.srt
Tres idiomas entrevista.es-zh-en.srt
Los sufijos de estilo BCP-47 mantienen múltiples salidas de idioma destino lado a lado y hacen evidente el destino de un vistazo.
Qué NO hace este orquestador
- No reimplementa nada. Cada paso delega a un sub-skill.
- No agrupa los scripts.
dub.pyvive en/wjs-dubbing-video/scripts/,render.pyvive en/wjs-burning-subtitles/scripts/,visual_diarize.pyvive en/wjs-dubbing-video/scripts/. Si ves copias obsoletas bajowjs-localizing-video/scripts/, prefiere las ubicaciones canónicas del sub-skill.
Plantilla de respuesta final
Cuando el pipeline completo termine, responde brevemente en el idioma del usuario. Usa la misma plantilla "Hecho" a la que el usuario está acostumbrado:
已完成:
- 西班牙语转写 (/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 背景噪音较大,原文可能不完全准确。
Si no hay partes inciertas, omite la segunda lista.
Ver también
/wjs-segmenting-video— corta videos de larga duración en clips cortos independientes (usa su propio cortador de SRT; ortogonal a este pipeline)./wjs-overlaying-video— subtítulos HTML/CSS en un clip mediante HyperFrames. No combines con/wjs-burning-subtitles— elige un sistema de subtítulos por salida./wjs-uploading-video— sube el MP4 final a YouTube./lark-minutes— ruta alternativa de transcripción solo en chino mediante 飞书妙记 cuando el ASR local 豆包 no está configurado.