Communitygithub.com

Jamailar/Beav

Ponto de entrada canônico para qualquer solicitação de chat de IA que peça para criar, gerar, planejar ou editar um vídeo, incluindo filmes promocionais, anúncios, vídeos curtos, vídeos de produtos, vídeos com referência de imagem, imagem para vídeo, transições de primeiro/último frame, storyboard/keyframes, vídeos com cabeça falante de personagem, 宣传片, 广告片, 短视频, 视频, 口播视频, 分镜图, 图片转视频 e 商品宣传片. Não invoque cosyvoice-ssml ou tts-director como primeira resposta a uma solicitação de vídeo. Esta skill deve elaborar um roteiro e uma tabela de planos, gerar imagens de pré-visualização do storyboard em formato de contato através de image.generate, pedir que o usuário confirme o roteiro junto com o storyboard, e só então chamar a geração do vídeo.

O que é Beav?

A skill Jamailar/Beav (apelidada de Video Director) é o ponto de entrada único e obrigatório para todas as solicitações de geração de vídeo em um chat de IA, garantindo um fluxo de trabalho estruturado e de alta qualidade. Ela orquestra todo o processo, desde a compreensão do pedido do usuário (seja um vídeo promocional, anúncio, vídeo curto, vídeo com cabeça falante ou imagem para vídeo) até a geração do arquivo final, passando por etapas críticas de planejamento e aprovação. A skill implementa uma máquina de estados que começa com a elaboração de um roteiro e uma tabela de planos (shots), seguida pela geração obrigatória de uma imagem de pré-visualização do storyboard (contato com múltiplos quadros) para que o usuário aprove a direção visual e a continuidade antes de qualquer geração de vídeo. Somente após a confirmação explícita do roteiro e do storyboard pelo usuário, a skill prossegue para a pré-produção (decidindo se o vídeo será um clipe curto, uma sequência longa ou um projeto), síntese de voz (se necessário para personagens com cabeça falante) e, finalmente, a chamada para geração do vídeo propriamente dita. As regras são rigorosas para evitar atalhos: não é permitido gerar o vídeo sem o storyboard aprovado, e a skill impõe o uso de modelos oficiais de IA para vídeo (como wan2.7) com limites de duração por segmento (máximo de 15 segundos), garantindo consistência e qualidade técnica. O suporte a múltiplos modos (texto para vídeo, referência guiada por imagem, primeiro/último frame) e estratégias de produção (vídeo único, fila de vídeo longo, projeto manual) a torna versátil para diversos tipos de solicitação.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jamailar/Beav/tree/HEAD/desktop/builtin-skills/video-director

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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:

  1. 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.
  2. 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 com Operate(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.
  3. 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.
  4. production_prep: Após a confirmação, decida se isso deve ser um único clipe upstream de <=15s, uma solicitação de video_sequence longa, 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.
  5. 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.
  6. video_generate: Somente após a confirmação e qualquer áudio TTS necessário estiver completo, chame Operate(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.generate apenas para "analisar", "extrair", "melhorar" ou recriar a referência do produto.
  • Não chame video.generate até 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 voiceId pronto existe. Não continue analisando ou apresentando-o assim que um voiceId pronto 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:

  1. Roteiro e storyboard primeiro
    • Confirme o roteiro falado final.
    • Confirme o storyboard / tabela de planos.
    • A coluna Som deve conter as falas reais, não rótulos vagos como "角色讲解".
  2. Resolva a voz do personagem
    • Leia o ativo do personagem selecionado antes de gerar mídia.
    • Se o ativo tiver um voiceId / voice_id pronto, trate-o como a voz resolvida e pare de inspecionar amostras de voz. Relate o voiceId resolvido, não o nome do arquivo de áudio de referência.
    • Se o ativo tiver uma amostra de voz, mas nenhum voiceId pronto, chame Operate(resource="voice", operation="clone", input={ ... }) primeiro, aguarde a conclusão e use o voiceId retornado.
    • Se não houver voiceId pronto 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.
  3. Gere a faixa de voz completa com TTS
    • Chame Operate(resource="voice", operation="speech", input={ ... }) com o roteiro falado completo aprovado e o voiceId resolvido.
    • 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-director primeiro com Operate(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-director pode ativar cosyvoice-ssml apenas 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 speed para ritmo, pitch para tom, emotion para humor, pontuação expressiva como ~, ?, !, ……, e marcadores de texto MiniMax como <#0.6#>, (laughs), (sighs) ou (breath) dentro de input somente onde o ritmo da fala precisar deles.
    • Não escreva instruções de controle no texto falado. Por exemplo, passe "emotion":"happy" e speed:1.08 em vez de fazer o personagem dizer “用开心快速的语气”.
    • Se a faixa de voz aprovada precisar de múltiplas batidas emocionais, envie uma chamada voice.speech com segments ordenados; o runtime de mídia gerará cada segmento e mesclará o áudio final. Não faça chamadas voice.speech repetidas 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.
  4. 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 modo reference-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 "音色素材" como drivingAudio.
  • Não confie em generateAudio para 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.json
  • script.md
  • assets.json
  • editor.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-video
    • reference-guided -> wan2.7-r2v-video
    • first-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 15 segundos.
  • Para um vídeo final com mais de 15 segundos, envie uma solicitação video.generate com o durationSeconds final ou videoSegments explícito; a fila de mídia gerará segmentos <=15s e concatenará um ativo de vídeo final.
  • Não chame video.generate repetidamente apenas para contornar o limite de segmento upstream de 15 segundos.
  • 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-3 segundos.
  • Sem aprovação explícita do usuário, qualquer plano único não deve exceder 5 segundos.

Seleção de Modo

  • Use text-to-video quando o usuário fornecer apenas texto e quiser um plano de vídeo novo.
  • Use reference-guided quando 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-frame apenas 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ântica reference-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 15 segundos.
  • 长视频队列模式:

    • Use isto para um vídeo final gerado por IA com mais de 15 segundos.
    • Envie uma solicitação video.generate com durationSeconds > 15; o runtime criará um trabalho de fila video_sequence, dividirá a geração em segmentos <=15s, aguardará cada segmento, concatenará os segmentos e retornará um ativo de vídeo final.
    • Use videoSegments explí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 <=15 segundos e deve corresponder a um grupo coerente de linhas de storyboard aprovadas.
    • Mantenha waitForCompletion: true a menos que o usuário peça explicitamente para executar a geração longa em segundo plano.
  • 手动多视频工程模式:

    • 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]

Habilidades Relacionadas