Diretor de Vídeo
Use esta skill antes de chamar Operate(resource="video", operation="generate", input={ ... }) para trabalhos de vídeo.
Para o chat de IA, esta skill é o ponto de entrada único para geração de vídeos. Se o usuário disser "做一个口播视频", "生成一个视频", "产品宣传片", "广告片", "数字人视频", ou qualquer solicitação similar de vídeo, invoque video-director primeiro. Não comece por cosyvoice-ssml; essa skill é uma subetapa interna de TTS para humano digital e não deve conduzir o fluxo de trabalho de vídeo.
Se esta skill foi carregada porque o usuário anexou uma imagem e pediu um filme promocional / 宣传片 / 视频, trate a imagem anexada como uma referência de produto ou visual para o fluxo de trabalho de vídeo. Não gere uma imagem de produto substituta como uma etapa de "análise".
Fluxo de Trabalho Padrão
Trate o fluxo de trabalho como uma máquina de estados com portões. Não pule ou reordene os estados:
plan_draft: Esclareça o modo de vídeo pretendido a partir do objetivo e dos ativos do usuário, depois elabore um roteiro de vídeo conciso, porém detalhado, e uma tabela de planos.storyboard_preview: Imediatamente após a tabela de planos existir, gere uma ou mais imagens de pré-visualização do storyboard em formato de contato comOperate(resource="image", operation="generate", input={ ... }). A imagem do storyboard é uma prévia dos planos previstos, não um pôster de produto independente, uma renderização substituta de produto, imagem de capa ou quadro-chave final do vídeo.user_review: Mostre o roteiro, a(s) imagem(ns) de pré-visualização do storyboard e as especificações explícitas do vídeo juntos. Peça ao usuário para confirmar ou revisar todo o plano.production_prep: Após a confirmação, decida se isso deve ser um único clipe upstream de<=15s, uma solicitação devideo_sequencelonga, ou uma montagem manual de projeto/editor. Use um pacote de projeto de vídeo somente se o usuário pedir explicitamente por um fluxo de trabalho de projeto/pacote/editor, ou se a tarefa já estiver vinculada a um pacote existente.tts_if_needed: Se a tarefa confirmada for um vídeo de cabeça falante de personagem / 口播, conclua o fluxo de trabalho TTS primeiro, conforme abaixo.video_generate: Somente após a confirmação e qualquer áudio TTS necessário estiver completo, chameOperate(resource="video", operation="generate", input={ ... }).
Se o usuário ainda não confirmou o roteiro, não gere o vídeo.
Se o usuário ainda não viu e aprovou a(s) imagem(ns) de pré-visualização do storyboard, não gere o vídeo.
Se a tabela de planos existe, mas nenhuma imagem de storyboard em formato de contato foi gerada ainda, a próxima chamada de ferramenta deve ser image.generate para a pré-visualização do storyboard, não video.generate, voice.speech, tts-director ou cosyvoice-ssml.
A pré-visualização do storyboard em formato de contato é obrigatória após o primeiro roteiro de planos ser escrito. Não é o mesmo que quadros-chave finais do vídeo; é uma prova visual rápida da sequência de planos planejada para que o usuário possa aprovar direção, composição, posicionamento do produto e continuidade antes da geração do vídeo.
Para vídeos promocionais de produto a partir de uma imagem anexada/de referência:
- A primeira chamada
image.generate, se houver, deve ser para um storyboard em formato de contato após o roteiro e a tabela de planos existirem. - O prompt do storyboard deve dizer explicitamente que é uma pré-visualização do storyboard em múltiplos painéis para o vídeo, e deve preservar a forma visível, material, cor e detalhes distintivos do produto anexado/de referência.
- Não chame
image.generateapenas para "analisar", "extrair", "melhorar" ou recriar a referência do produto. - Não chame
video.generateaté que o usuário confirme a direção do storyboard.
Regra de Cabeça Falante de Personagem da Biblioteca de Ativos
Quando o usuário quiser um vídeo de cabeça falante / 口播 / apresentador / boas-vindas de live stream usando um personagem da biblioteca de ativos, a imagem do personagem é apenas a referência de identidade visual. Não é a faixa de fala.
Mantenha estas três entradas separadas:
voiceId: a identidade de voz clonada reutilizável armazenada no ativo do personagem. Este é o campo de voz principal para futuras chamadas TTS.- amostra de voz / áudio de referência: material de origem de fallback para clonagem quando nenhum
voiceIdpronto existe. Não continue analisando ou apresentando-o assim que umvoiceIdpronto for encontrado. - ativo de áudio TTS gerado: o roteiro falado completo. Este é o único áudio que deve conduzir um vídeo de cabeça falante de personagem.
Use esta ordem exata:
- Roteiro e storyboard primeiro
- Confirme o roteiro falado final.
- Confirme o storyboard / tabela de planos.
- A coluna
Somdeve conter as falas reais, não rótulos vagos como "角色讲解".
- Resolva a voz do personagem
- Leia o ativo do personagem selecionado antes de gerar mídia.
- Se o ativo tiver um
voiceId/voice_idpronto, trate-o como a voz resolvida e pare de inspecionar amostras de voz. Relate ovoiceIdresolvido, não o nome do arquivo de áudio de referência. - Se o ativo tiver uma amostra de voz, mas nenhum
voiceIdpronto, chameOperate(resource="voice", operation="clone", input={ ... })primeiro, aguarde a conclusão e use ovoiceIdretornado. - Se não houver
voiceIdpronto e nenhuma amostra de voz utilizável, pare e peça ao usuário para fornecer ou escolher uma voz. Não recorra silenciosamente a uma voz genérica.
- Gere a faixa de voz completa com TTS
- Chame
Operate(resource="voice", operation="speech", input={ ... })com o roteiro falado completo aprovado e ovoiceIdresolvido. - Prefira um ativo de áudio completo para todo o segmento de cabeça falante, a menos que o usuário peça explicitamente clipes separados.
- Para narração expressiva, scripts longos, poesia, anúncios ou qualquer performance multi-emocional dentro deste fluxo confirmado de humano digital / VideoRetalk, ative
tts-directorprimeiro comOperate(resource="skills", operation="invoke", input={ "name": "tts-director" }), depois use suas orientações para dividir o roteiro aprovado em batidas semânticas e atribuir controles de entrega apropriados ao modelo. - Se o modelo TTS selecionado for CosyVoice,
tts-directorpode ativarcosyvoice-ssmlapenas aqui, após o fluxo de trabalho do video-director ter confirmado que este é um vídeo de cabeça falante de humano digital / VideoRetalk / biblioteca de ativos e o roteiro mais a voz do papel estão resolvidos. - Adicione controles de entrega contidos quando eles melhorarem a performance aprovada: use
speedpara ritmo,pitchpara tom,emotionpara humor, pontuação expressiva como~,?,!,……, e marcadores de texto MiniMax como<#0.6#>,(laughs),(sighs)ou(breath)dentro deinputsomente onde o ritmo da fala precisar deles. - Não escreva instruções de controle no texto falado. Por exemplo, passe
"emotion":"happy"espeed:1.08em vez de fazer o personagem dizer “用开心快速的语气”. - Se a faixa de voz aprovada precisar de múltiplas batidas emocionais, envie uma chamada
voice.speechcomsegmentsordenados; o runtime de mídia gerará cada segmento e mesclará o áudio final. Não faça chamadasvoice.speechrepetidas e depois mescle manualmente. - Aguarde até que o resultado do TTS contenha um caminho de ativo de áudio utilizável, URL ou id do ativo.
- Não inicie a geração de vídeo enquanto o trabalho TTS estiver apenas na fila ou em execução.
- Chame
- Gere vídeo com referência visual mais áudio gerado
- Use a imagem do personagem selecionado como referência visual.
- Use o ativo de áudio TTS completo recém-gerado como
drivingAudio. - Identifique-o no prefácio do prompt como áudio de fala gerado, por exemplo
Audio 1: fala Jamba TTS gerada para sincronia labial / ritmo de fala. - Em seguida, chame
Operate(resource="video", operation="generate", input={ ... }), normalmente no modoreference-guided.
Isso é obrigatório porque o modelo de vídeo precisa de uma forma de onda de áudio finalizada alinhada com o roteiro aprovado. Um voiceId de personagem não é áudio. Uma amostra de voz não é a linha falada aprovada. O texto falado dentro do prompt de vídeo não é um substituto para TTS.
Atalhos proibidos:
- Não chame a geração de vídeo para personagem 口播 apenas com a imagem do personagem e um roteiro.
- Não passe
voiceId, áudio de amostra de voz, ou "音色素材" comodrivingAudio. - Não confie em
generateAudiopara criar a voz do personagem para trabalho de cabeça falante. - Não descreva a fala pretendida apenas no prompt de vídeo e espere que o modelo de vídeo a sintetize.
- Não divida o TTS por linha de storyboard a menos que o usuário peça por clipes de áudio editáveis separadamente ou o vídeo será montado a partir de vários clipes de fala independentes.
Forma de carga útil TTS recomendada:
{
"voiceId": "voice_xxx",
"segments": [
{
"input": "完整、已确认的口播开场。<#0.5#>",
"speed": 0.98,
"pitch": 0,
"emotion": "calm"
},
{
"input": "自然地进入更有感染力的重点(laughs)。",
"speed": 1.05,
"pitch": 0,
"emotion": "happy"
}
],
"title": "Jamba welcome voiceover",
"waitForCompletion": true
}
Forma de carga útil de vídeo recomendada após a conclusão do TTS:
{
"generationMode": "reference-guided",
"referenceImages": ["/absolute/path/to/jamba.png"],
"drivingAudio": "/absolute/path/to/generated-jamba-tts.mp3",
"drivingAudioLabel": "Generated Jamba TTS speech from the approved script",
"storyboardShots": [
{
"time": "0-3s",
"picture": "Jamba faces camera in the livestream room and smiles naturally.",
"sound": "欢迎来到直播间,今天给大家准备了一个超实用的好物。",
"shot": "Medium close-up, stable presenter framing."
}
]
}
Regra do Pacote de Projeto de Vídeo
Um pacote de projeto de vídeo não é o caminho padrão.
Crie um apenas quando:
- o usuário pedir explicitamente por um 视频项目 / 视频工程 / 项目包
- o usuário pedir explicitamente para continuar depois dentro do editor de vídeo / bancada de projeto
- a tarefa já estiver vinculada a um pacote de projeto de vídeo existente
Não crie um apenas porque a solicitação tem múltiplos planos, contexto longo, risco de continuidade, necessidades de storyboard ou possíveis revisões.
Quando for explicitamente necessário, crie-o com:
Operate(resource="video", operation="create", input={ "explicitProjectWorkflow": true, "title": "...", "duration": "...", "aspectRatio": "...", "mode": "..." })
A pasta do projeto reside em:
manuscripts/video/<project-name>/
Ela deve ser usada para manter estes arquivos juntos:
manifest.jsonscript.mdassets.jsoneditor.project.json- imagens de referência importadas / quadros-chave / clipes gerados / saída final
Após o pacote ser criado:
- escreva o briefing do usuário e o roteiro aprovado de volta na pasta do projeto de vídeo
- mantenha quadros-chave, clipes e saídas posteriores no mesmo pacote sempre que possível
Caso contrário, mantenha o planejamento no chat, chame video generate diretamente e deixe a saída viver na biblioteca de mídia gerada.
Regras Rígidas
- A geração de vídeo está bloqueada na rota oficial de vídeo configurada pelo aplicativo.
- Não escolha endpoints de vídeo arbitrários ou modelos de vídeo de terceiros.
- Use apenas estes mapeamentos oficiais de modelo:
text-to-video->wan2.7-t2v-videoreference-guided->wan2.7-r2v-videofirst-last-frame->wan2.7-i2v-video
- Trate transições de primeiro/último frame como um subtipo de trabalho de imagem para vídeo.
- Um segmento único de geração de vídeo upstream não deve exceder
15segundos. - Para um vídeo final com mais de
15segundos, envie uma solicitaçãovideo.generatecom odurationSecondsfinal ouvideoSegmentsexplícito; a fila de mídia gerará segmentos<=15se concatenará um ativo de vídeo final. - Não chame
video.generaterepetidamente apenas para contornar o limite de segmento upstream de15segundos. - Não pule a etapa de revisão do roteiro apenas porque a solicitação parece óbvia.
- A menos que o usuário peça explicitamente por um plano contínuo mais longo, um único plano deve geralmente ter
1-3segundos. - Sem aprovação explícita do usuário, qualquer plano único não deve exceder
5segundos.
Seleção de Modo
- Use
text-to-videoquando o usuário fornecer apenas texto e quiser um plano de vídeo novo. - Use
reference-guidedquando o usuário fornecer uma ou mais imagens de referência e quiser que o vídeo absorva elementos do assunto, dicas de estilo, adereços, motivos de cena ou pistas de composição dessas imagens. - Use
first-last-frameapenas quando duas imagens tiverem semântica explícita de início/fim, como "de A para B", "首帧/尾帧", "开头/结尾" ou "起始状态/结束状态". - Se o usuário fornecer duas imagens, mas elas forem apenas referências de estilo, não use
first-last-frame; permaneça com a semânticareference-guided.
Estratégia de Produção
-
单视频模式:- Use um clipe de vídeo gerado.
- Padrão quando a solicitação é simples, a ação é curta e a ideia completa cabe dentro de um clipe coerente.
- Um único clipe gerado não deve exceder
15segundos.
-
长视频队列模式:- Use isto para um vídeo final gerado por IA com mais de
15segundos. - Envie uma solicitação
video.generatecomdurationSeconds > 15; o runtime criará um trabalho de filavideo_sequence, dividirá a geração em segmentos<=15s, aguardará cada segmento, concatenará os segmentos e retornará um ativo de vídeo final. - Use
videoSegmentsexplícito quando o storyboard precisar de controle cena por cena, batida por batida, imagem de referência, primeiro/último frame ou áudio de condução. - Cada item
videoSegments[]deve ter<=15segundos e deve corresponder a um grupo coerente de linhas de storyboard aprovadas. - Mantenha
waitForCompletion: truea menos que o usuário peça explicitamente para executar a geração longa em segundo plano.
- Use isto para um vídeo final gerado por IA com mais de
-
手动多视频工程模式:- Use isto apenas quando o usuário pedir explicitamente por clipes separados, um fluxo de trabalho de projeto/editor, montagem de clipes importados, pós-produção manual ou saídas editáveis separadamente.
- No chat/agente normal de geração de vídeo, não gere manualmente um clipe por vez e concatene com
ffmpeg; use长视频队列模式em vez disso. - Quando a montagem manual for explicitamente necessária, gere cada clipe deliberadamente e depois os concaten na ordem do storyboard após todos os clipes terem sucesso.
-
Se a solicitação tiver múltiplos planos, requisitos claros de continuidade ou risco de deriva visual, faça mais uma pergunta após mostrar a pré-visualização do storyboard:
- se quadros-chave de storyboard separados também devem ser gerados antes da produção do vídeo.
-
Se quadros-chave de storyboard separados forem gerados, a geração de vídeo posterior deve usar preferencialmente modos baseados em imagem, e para segmentos com muitas transições deve preferir
first-last-frame.
Regra do Storyboard Primeiro
Toda tarefa de vídeo precisa de uma pré-visualização do storyboard em formato de contato após a tabela do roteiro e antes da confirmação do usuário...
[truncado para tradução]