O que wjs-localizing-video (orquestrador) faz?
Este skill foi dividido. O que antes era um único skill de 1300 linhas agora são 4 sub-skills focados. Use este orquestrador apenas quando o usuário solicitar o pipeline completo em uma única requisição. Para etapas individuais, roteie diretamente para o sub-skill.
Os quatro sub-skills
| Etapa | Skill | ENTRADA | SAÍDA |
|---|---|---|---|
| 1. ASR | /wjs-transcribing-audio | áudio / vídeo + idioma de origem | SRT no idioma de origem |
| 2. Traduzir | /wjs-translating-subtitles | SRT de origem + idioma de destino | SRT de destino (limitado por pontuação) |
| 3. Dublar (opcional) | /wjs-dubbing-video | vídeo + SRT de destino + voz | *_<lang>_dub.mp4 (áudio TTS substituído) |
| 4. Queimar / mixar (opcional) | /wjs-burning-subtitles | vídeo + SRT + (dublagem opcional) | MP4 final (uma codificação) |
As etapas 3 e 4 são opcionais e independentes — a maioria dos trabalhos "apenas legendas" para após a etapa 2 + mux suave via /wjs-burning-subtitles. A maioria dos trabalhos "apenas dublagem" para após a etapa 3.
Quando invocar este orquestrador vs. um sub-skill diretamente
Invoque este skill (wjs-localizing-video) quando o usuário solicitar a cadeia completa de uma só vez:
- "帮我把这个西班牙语视频做成中文字幕和中文配音"
- "translate this Spanish video to English with dubbing"
- "全套:转写、翻译、烧字幕、配音、混音"
Invoque um sub-skill diretamente quando o usuário solicitar uma única etapa:
- "转写一下这个音频" →
/wjs-transcribing-audio - "把这个 SRT 翻译成中文" →
/wjs-translating-subtitles - "给这个视频配个中文音" →
/wjs-dubbing-video - "把字幕烧进视频" →
/wjs-burning-subtitles
Os sub-skills são mais focados e documentam seus contratos de entrada/saída de forma mais restrita. Não roteie através deste orquestrador quando uma única etapa for toda a solicitação — você estará apenas lendo documentação desnecessária.
Lista de verificação de progresso (faça isso PRIMEIRO, antes de qualquer sub-skill)
O pipeline tem até quatro etapas e leva vários minutos para ser executado. O usuário quer ver progresso ao vivo, não uma parede de silêncio seguida por um arquivo finalizado. Antes de invocar o primeiro sub-skill, apresente as etapas planejadas como uma lista de verificação TaskCreate. Ao iniciar cada etapa, atualize sua tarefa para in_progress; quando terminar, marque como completed. O Claude Code renderiza isso como uma lista de verificação na interface que é marcada em tempo real.
Quais tarefas criar
Decida a partir da solicitação do usuário qual subconjunto das 4 etapas será executado:
| Usuário solicitou | Tarefas a criar |
|---|---|
| Localização completa (legendas + dublagem + mixagem final) | ① Transcrever ② Traduzir ③ Dublar ④ Queimar legendas + mixar |
| Apenas legendas (sem troca de voz) | ① Transcrever ② Traduzir ③ Queimar legendas (ou mux suave) |
| Apenas dublagem (sem queimar) | ① Transcrever ② Traduzir ③ Dublar |
| Usuário já possui SRT de origem | pular ①; criar apenas as etapas restantes |
| Usuário já possui SRT de destino | pular ① e ②; criar apenas as restantes |
Não crie tarefas para etapas que não serão executadas — um item não marcado no final parece "esquecemos", não "pulamos".
Como formular os nomes das tarefas
Use os mesmos rótulos que você usará no "Modelo de resposta final" abaixo, para que a lista de verificação em andamento e o resumo de conclusão pareçam o mesmo artefato:
Transcrever <idioma-origem>(ex.:Transcrever espanhol)Traduzir → <idioma-destino>(ex.:Traduzir → chinês)Dublar <idioma-destino>(ex.:Dublar chinês (voz fria e madura -8%))Queimar legendas + fundo original <volume>(ex.:Queimar legendas + fundo original 0.18)
Para activeForm, use a variante de gerúndio (Transcrevendo…, Traduzindo…, Dublando…, Sintetizando…).
Disciplina de estado
- Marque
in_progressapenas a tarefa atualmente em execução (uma de cada vez). - Marque
completedimediatamente quando o sub-skill retornar seu arquivo de saída — não agrupe. - Se uma etapa levantar uma pergunta esclarecedora ou falhar, deixe-a como
in_progresspara que o usuário veja exatamente onde o pipeline parou. Não marque uma etapa incompleta como concluída. - Se o usuário redirecionar no meio do pipeline (ex.: "pule a dublagem"), atualize as tarefas restantes: exclua as que não são mais aplicáveis, mantenha as demais. Não as descarte silenciosamente.
Pipeline canônico completo (Espanhol → Chinês, com dublagem + fundo + queima)
Este é o "cenário de validação" original — conteúdo espanhol de yoga/espiritual para 微信视频号 / 小红书. Percorre todos os 4 sub-skills.
Etapa 1 — Transcrever a fonte em espanhol
Invocar /wjs-transcribing-audio com o vídeo e `--language es`.
O sub-skill lida com: divisão em chunks, timestamps no nível da palavra, montagem de legendas nos limites de pontuação, proteção contra loop, retry. Saída: entrevista.srt (espanhol, idioma de origem).
Etapa 2 — Traduzir para chinês simplificado
Invocar /wjs-translating-subtitles com o SRT em espanhol e destino `zh-CN`.
O sub-skill lida com: resegmentação das legendas nos limites de pontuação, minimização de demonstrativos de preenchimento, limite de comprimento de linha, preservação do tom do falante. Saída: entrevista.zh-CN.srt.
Etapa 3 — (Opcional) Dublar em chinês
Invocar /wjs-dubbing-video com o vídeo + entrevista.zh-CN.srt + um ID de voz.
Padrão para voz feminina madura contemplativa: zh_female_gaolengyujie_moon_bigtts (Volcano 高冷御姐, --rate -8% +0Hz). Se não houver credenciais Volcano: zh-CN-XiaoxiaoNeural --rate -8% --pitch -10Hz. O sub-skill amostra primeiro, depois executa.
Saída: entrevista_zh_dub.mp4.
Etapa 4 — Queimar legendas + mixar dublagem sobre o original como fundo
Invocar /wjs-burning-subtitles com --video entrevista.mp4 --srt entrevista.zh-CN.srt --dub entrevista_zh_dub.mp4
O sub-skill lida com: verificação de disponibilidade do libass, fallback para build estático evermeet, calibração de tamanho de fonte, verificação de quadro antes da renderização completa, mixagem de áudio de fundo em 0.18.
Saída: entrevista_zh_final.mp4 (pronto para envio).
Padrões que o usuário padronizou
Estes se aplicam em todo o pipeline; cada sub-skill aplica sua própria parte:
- ASR em chinês roteia para 豆包 (Volcano) primeiro; Whisper é fallback. Aplicado em
/wjs-transcribing-audio. - Voz única para toda a dublagem, a menos que o usuário mencione explicitamente múltiplos falantes. Aplicado em
/wjs-dubbing-video. - Áudio original mantido como fundo em volume baixo (0.15–0.25) sob qualquer dublagem. Aplicado em
/wjs-burning-subtitles. - Queima para 微信视频号 / 抖音; mux suave para todo o resto por padrão. Aplicado em
/wjs-burning-subtitles. - Nome do CTA do canal (se adicionado à descrição): 王建硕 — nunca o nome de um convidado. (Regra global de
~/.claude/CLAUDE.md; aplica-se quando este pipeline é seguido por/wjs-uploading-video.)
Convenção de nomenclatura de arquivos (preservada do skill original)
entrada: entrevista.mp4
Pipeline chinês:
SRT de origem entrevista.srt
SRT chinês entrevista.zh-CN.srt
Dublagem chinesa (só áudio) entrevista_zh_dub.mp4
Final chinês (legendas+dub) entrevista_zh_final.mp4
Pipeline inglês:
SRT inglês entrevista.en.srt
Dublagem inglesa entrevista_en_dub.mp4
Final inglês entrevista_en_final.mp4
Legendas bilíngues:
Espanhol + Chinês entrevista.es-zh.srt
Espanhol + Inglês entrevista.es-en.srt
Três idiomas entrevista.es-zh-en.srt
Sufixos no estilo BCP-47 mantêm múltiplas saídas de idioma de destino lado a lado e tornam o destino óbvio à primeira vista.
O que este orquestrador NÃO faz
- Ele não reimplementa nada. Cada etapa delega para um sub-skill.
- Ele não agrupa os scripts.
dub.pyvive em/wjs-dubbing-video/scripts/,render.pyvive em/wjs-burning-subtitles/scripts/,visual_diarize.pyvive em/wjs-dubbing-video/scripts/. Se você vir cópias desatualizadas emwjs-localizing-video/scripts/, prefira os locais canônicos dos sub-skills.
Modelo de resposta final
Quando o pipeline completo terminar, responda brevemente no idioma do usuário. Corresponda ao modelo "Done" original que o usuário está acostumado:
已完成:
- 西班牙语转写 (/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 背景噪音较大,原文可能不完全准确。
Se não houver partes incertas, remova a segunda lista.
Veja também
/wjs-segmenting-video— cortar vídeos longos em clipes curtos independentes (usa seu próprio fatiador de SRT; ortogonal a este pipeline)./wjs-overlaying-video— legendas HTML/CSS em um clipe via HyperFrames. Não combine com/wjs-burning-subtitles— escolha um sistema de legendas por saída./wjs-uploading-video— enviar o MP4 final para o YouTube./lark-minutes— caminho alternativo de transcrição apenas em chinês via 飞书妙记 quando o ASR local 豆包 não estiver configurado.