Tools

Geração de vídeo

Os agentes do OpenClaw podem gerar vídeos a partir de prompts de texto, imagens de referência ou vídeos existentes. Dezesseis backends de provedor são compatíveis, cada um com diferentes opções de modelo, modos de entrada e conjuntos de recursos. O agente escolhe o provedor correto automaticamente com base na sua configuração e nas chaves de API disponíveis.

O OpenClaw trata a geração de vídeo como três modos de runtime:

  • generate - solicitações de texto para vídeo sem mídia de referência.
  • imageToVideo - a solicitação inclui uma ou mais imagens de referência.
  • videoToVideo - a solicitação inclui um ou mais vídeos de referência.

Os provedores podem oferecer suporte a qualquer subconjunto desses modos. A ferramenta valida o modo ativo antes do envio e informa os modos compatíveis em action=list.

Início rápido

  • Configurar autenticação

    Defina uma chave de API para qualquer provedor compatível:

    bash
    export GEMINI_API_KEY="your-key"
  • Escolher um modelo padrão (opcional)

    bash
    openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  • Pedir ao agente

    Gere um vídeo cinematográfico de 5 segundos de uma lagosta amigável surfando ao pôr do sol.

    O agente chama video_generate automaticamente. Não é necessário permitir explicitamente a ferramenta.

  • Como a geração assíncrona funciona

    A geração de vídeo é assíncrona. Quando o agente chama video_generate em uma sessão:

    1. O OpenClaw envia a solicitação ao provedor e retorna imediatamente um id de tarefa.
    2. O provedor processa o trabalho em segundo plano (normalmente de 30 segundos a vários minutos, dependendo do provedor e da resolução; provedores lentos baseados em fila podem executar até o tempo limite configurado).
    3. Quando o vídeo está pronto, o OpenClaw reativa a mesma sessão com um evento interno de conclusão.
    4. O agente informa o usuário e anexa o vídeo finalizado. Em conversas de grupo/canal que usam entrega visível apenas por ferramenta de mensagem, o agente retransmite o resultado pela ferramenta de mensagem em vez de o OpenClaw publicá-lo diretamente.

    Enquanto um trabalho está em andamento, chamadas duplicadas de video_generate na mesma sessão retornam o status da tarefa atual em vez de iniciar outra geração. Use openclaw tasks list ou openclaw tasks show <taskId> para verificar o progresso pela CLI.

    Fora de execuções de agente respaldadas por sessão (por exemplo, invocações diretas de ferramenta), a ferramenta recorre à geração inline e retorna o caminho da mídia final no mesmo turno.

    Arquivos de vídeo gerados são salvos no armazenamento de mídia gerenciado pelo OpenClaw quando o provedor retorna bytes. O limite padrão de salvamento de vídeos gerados segue o limite de mídia de vídeo, e agents.defaults.mediaMaxMb o aumenta para renders maiores. Quando um provedor também retorna uma URL de saída hospedada, o OpenClaw pode entregar essa URL em vez de falhar a tarefa se a persistência local rejeitar um arquivo grande demais.

    Ciclo de vida da tarefa

    Estado Significado
    queued Tarefa criada, aguardando o provedor aceitá-la.
    running O provedor está processando (normalmente de 30 segundos a vários minutos, dependendo do provedor e da resolução).
    succeeded Vídeo pronto; o agente reativa e o publica na conversa.
    failed Erro do provedor ou tempo limite; o agente reativa com detalhes do erro.

    Verifique o status pela CLI:

    bash
    openclaw tasks listopenclaw tasks show <taskId>openclaw tasks cancel <taskId>

    Se uma tarefa de vídeo já estiver queued ou running para a sessão atual, video_generate retorna o status da tarefa existente em vez de iniciar uma nova tarefa. Use action: "status" para verificar explicitamente sem acionar uma nova geração.

    Provedores compatíveis

    Provedor Modelo padrão Texto Ref. de imagem Ref. de vídeo Autenticação
    Alibaba wan2.6-t2v Sim (URL remota) Sim (URL remota) MODELSTUDIO_API_KEY
    BytePlus (1.0) seedance-1-0-pro-250528 Até 2 imagens (somente modelos I2V; primeiro + último quadro) - BYTEPLUS_API_KEY
    BytePlus Seedance 1.5 seedance-1-5-pro-251215 Até 2 imagens (primeiro + último quadro via função) - BYTEPLUS_API_KEY
    BytePlus Seedance 2.0 dreamina-seedance-2-0-260128 Até 9 imagens de referência Até 3 vídeos BYTEPLUS_API_KEY
    ComfyUI workflow 1 imagem - COMFY_API_KEY ou COMFY_CLOUD_API_KEY
    DeepInfra Pixverse/Pixverse-T2V - - DEEPINFRA_API_KEY
    fal fal-ai/minimax/video-01-live 1 imagem; até 9 com referência para vídeo do Seedance Até 3 vídeos com referência para vídeo do Seedance FAL_KEY
    Google veo-3.1-fast-generate-preview 1 imagem 1 vídeo GEMINI_API_KEY
    MiniMax MiniMax-Hailuo-2.3 1 imagem - MINIMAX_API_KEY ou OAuth do MiniMax
    OpenAI sora-2 1 imagem 1 vídeo OPENAI_API_KEY
    OpenRouter google/veo-3.1-fast Até 4 imagens (primeiro/último quadro ou referências) - OPENROUTER_API_KEY
    Qwen wan2.6-t2v Sim (URL remota) Sim (URL remota) QWEN_API_KEY
    Runway gen4.5 1 imagem 1 vídeo RUNWAYML_API_SECRET
    Together Wan-AI/Wan2.2-T2V-A14B 1 imagem - TOGETHER_API_KEY
    Vydra veo3 1 imagem (kling) - VYDRA_API_KEY
    xAI grok-imagine-video 1 imagem de primeiro quadro ou até 7 reference_images 1 vídeo XAI_API_KEY

    Alguns provedores aceitam variáveis de ambiente de chave de API adicionais ou alternativas. Consulte as páginas de provedor individuais para detalhes.

    Execute video_generate action=list para inspecionar provedores, modelos e modos de runtime disponíveis em tempo de execução.

    Matriz de recursos

    O contrato de modo explícito usado por video_generate, testes de contrato e a varredura ao vivo compartilhada:

    Provedor generate imageToVideo videoToVideo Lanes ao vivo compartilhadas hoje
    Alibaba generate, imageToVideo; videoToVideo ignorado porque este provedor precisa de URLs de vídeo http(s) remotas
    BytePlus - generate, imageToVideo
    ComfyUI - Não está na varredura compartilhada; a cobertura específica de workflow fica com os testes do Comfy
    DeepInfra - - generate; os esquemas de vídeo nativos da DeepInfra são de texto para vídeo no contrato incluído
    fal generate, imageToVideo; videoToVideo somente ao usar referência para vídeo do Seedance
    Google generate, imageToVideo; videoToVideo compartilhado ignorado porque a varredura atual do Gemini/Veo baseada em buffer não aceita essa entrada
    MiniMax - generate, imageToVideo
    OpenAI generate, imageToVideo; videoToVideo compartilhado ignorado porque este caminho de org/entrada atualmente precisa de acesso a inpaint/remix do lado do provedor
    OpenRouter - generate, imageToVideo
    Qwen generate, imageToVideo; videoToVideo ignorado porque este provedor precisa de URLs de vídeo http(s) remotas
    Runway generate, imageToVideo; videoToVideo executa somente quando o modelo selecionado é runway/gen4_aleph
    Together - generate, imageToVideo
    Vydra - generate; imageToVideo compartilhado ignorado porque o veo3 incluído é somente texto e o kling incluído exige uma URL de imagem remota
    xAI generate, imageToVideo; videoToVideo ignorado porque este provedor atualmente precisa de uma URL MP4 remota

    Parâmetros da ferramenta

    Obrigatórios

    promptstringrequired

    Descrição textual do vídeo a gerar. Obrigatório para action: "generate".

    Entradas de conteúdo

    imagestring
    imagesstring[]
    imageRolesstring[]

    Dicas opcionais de função por posição, paralelas à lista combinada de imagens. Valores canônicos: first_frame, last_frame, reference_image.

    videostring
    videosstring[]
    videoRolesstring[]

    Dicas opcionais de função por posição, paralelas à lista combinada de vídeos. Valor canônico: reference_video.

    audioRefstring

    Áudio de referência único (caminho ou URL). Usado para música de fundo ou referência de voz quando o provedor oferece suporte a entradas de áudio.

    audioRefsstring[]
    audioRolesstring[]

    Dicas opcionais de função por posição, paralelas à lista combinada de áudios. Valor canônico: reference_audio.

    Controles de estilo

    aspectRatiostring

    Dica de proporção, como 1:1, 16:9, 9:16, adaptive ou um valor específico do provedor. O OpenClaw normaliza ou ignora valores sem suporte por provedor.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc29sdXRpb24iIHR5cGU9InN0cmluZyI Dica de resolução, como 480P, 720P, 768P, 1080P, 4K ou um valor específico do provedor. O OpenClaw normaliza ou ignora valores sem suporte por provedor. OPENCLAW_DOCS_MARKER:paramClose:

    durationSecondsnumber

    Duração-alvo em segundos (arredondada para o valor mais próximo compatível com o provedor).

    sizestring
    audioboolean

    Ativa áudio gerado na saída quando houver suporte. Diferente de audioRef* (entradas).

    watermarkboolean

    adaptive é um sentinel específico do provedor: ele é encaminhado como está para provedores que declaram adaptive em suas capacidades (por exemplo, o BytePlus Seedance o usa para detectar automaticamente a proporção a partir das dimensões da imagem de entrada). Provedores que não o declaram mostram o valor por meio de details.ignoredOverrides no resultado da ferramenta, para que o descarte fique visível.

    Avançado

    action"generate" | "status" | "list"default: generate

    "status" retorna a tarefa da sessão atual; "list" inspeciona provedores.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Substituição de provedor/modelo (por exemplo, runway/gen4.5). OPENCLAW_DOCS_MARKER:paramClose:

    filenamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Tempo limite opcional da operação do provedor, em milissegundos. Quando omitido, o OpenClaw usa agents.defaults.videoGenerationModel.timeoutMs se configurado. OPENCLAW_DOCS_MARKER:paramClose:

    providerOptionsobject

    Opções específicas do provedor como um objeto JSON (por exemplo, {"seed": 42, "draft": true}). Provedores que declaram um esquema tipado validam as chaves e os tipos; chaves desconhecidas ou incompatibilidades pulam o candidato durante o fallback. Provedores sem um esquema declarado recebem as opções como estão. Execute video_generate action=list para ver o que cada provedor aceita.

    Entradas de referência selecionam o modo de runtime:

    • Nenhuma mídia de referência → generate
    • Qualquer referência de imagem → imageToVideo
    • Qualquer referência de vídeo → videoToVideo
    • Entradas de áudio de referência não alteram o modo resolvido; elas se aplicam por cima de qualquer modo selecionado pelas referências de imagem/vídeo e funcionam apenas com provedores que declaram maxInputAudios.

    Misturar referências de imagem e vídeo não é uma superfície de capacidade compartilhada estável. Prefira um tipo de referência por solicitação.

    Fallback e opções tipadas

    Algumas verificações de capacidade são aplicadas na camada de fallback, e não no limite da ferramenta, de modo que uma solicitação que excede os limites do provedor primário ainda pode executar em um fallback capaz:

    • Candidato ativo que não declara maxInputAudios (ou declara 0) é pulado quando a solicitação contém referências de áudio; o próximo candidato é tentado.
    • maxDurationSeconds do candidato ativo abaixo do durationSeconds solicitado, sem lista supportedDurationSeconds declarada → pulado.
    • A solicitação contém providerOptions e o candidato ativo declara explicitamente um esquema tipado de providerOptions → pulado se as chaves fornecidas não estiverem no esquema ou se os tipos dos valores não corresponderem. Provedores sem um esquema declarado recebem as opções como estão (passagem compatível com versões anteriores). Um provedor pode optar por não aceitar nenhuma opção de provedor declarando um esquema vazio (capabilities.providerOptions: {}), o que causa o mesmo salto de uma incompatibilidade de tipo.

    O primeiro motivo de salto em uma solicitação é registrado em warn, para que operadores vejam quando seu provedor primário foi ignorado; saltos subsequentes são registrados em debug para manter cadeias longas de fallback silenciosas. Se todos os candidatos forem pulados, o erro agregado inclui o motivo de salto de cada um.

    Ações

    Ação O que faz
    generate Padrão. Cria um vídeo a partir do prompt informado e de entradas de referência opcionais.
    status Verifica o estado da tarefa de vídeo em andamento da sessão atual sem iniciar outra geração.
    list Mostra provedores, modelos e suas capacidades disponíveis.

    Seleção de modelo

    O OpenClaw resolve o modelo nesta ordem:

    1. Parâmetro de ferramenta model - se o agente especificar um na chamada.
    2. videoGenerationModel.primary da configuração.
    3. videoGenerationModel.fallbacks em ordem.
    4. Detecção automática - provedores que têm autenticação válida, começando pelo provedor padrão atual e depois os provedores restantes em ordem alfabética.

    Se um provedor falhar, o próximo candidato será tentado automaticamente. Se todos os candidatos falharem, o erro incluirá detalhes de cada tentativa.

    Defina agents.defaults.mediaGenerationAutoProviderFallback: false para usar apenas as entradas explícitas model, primary e fallbacks.

    json5
    {  agents: {    defaults: {      videoGenerationModel: {        primary: "google/veo-3.1-fast-generate-preview",        fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],      },    },  },}

    Notas dos provedores

    Alibaba

    Usa o endpoint assíncrono DashScope / Model Studio. Imagens e vídeos de referência devem ser URLs remotas http(s).

    BytePlus (1.0)

    ID do provedor: byteplus.

    Modelos: seedance-1-0-pro-250528 (padrão), seedance-1-0-pro-t2v-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428.

    Modelos T2V (*-t2v-*) não aceitam entradas de imagem; modelos I2V e modelos gerais *-pro-* oferecem suporte a uma única imagem de referência (primeiro frame). Passe a imagem por posição ou defina role: "first_frame". IDs de modelo T2V são alternados automaticamente para a variante I2V correspondente quando uma imagem é fornecida.

    Chaves providerOptions compatíveis: seed (número), draft (booleano - força 480p), camera_fixed (booleano).

    BytePlus Seedance 1.5

    Requer o Plugin @openclaw/byteplus-modelark. ID do provedor: byteplus-seedance15. Modelo: seedance-1-5-pro-251215.

    Usa a API unificada content[]. Oferece suporte a no máximo 2 imagens de entrada (first_frame + last_frame). Todas as entradas devem ser URLs remotas https://. Defina role: "first_frame" / "last_frame" em cada imagem ou passe as imagens por posição.

    aspectRatio: "adaptive" detecta automaticamente a proporção a partir da imagem de entrada. audio: true mapeia para generate_audio. providerOptions.seed (número) é encaminhado.

    BytePlus Seedance 2.0

    Requer o Plugin @openclaw/byteplus-modelark. ID do provedor: byteplus-seedance2. Modelos: dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128.

    Usa a API unificada content[]. Oferece suporte a até 9 imagens de referência, 3 vídeos de referência e 3 áudios de referência. Todas as entradas devem ser URLs remotas https://. Defina role em cada ativo - valores compatíveis: "first_frame", "last_frame", "reference_image", "reference_video", "reference_audio".

    aspectRatio: "adaptive" detecta automaticamente a proporção a partir da imagem de entrada. audio: true mapeia para generate_audio. providerOptions.seed (número) é encaminhado.

    ComfyUI

    Execução local ou em nuvem orientada por workflow. Oferece suporte a texto para vídeo e imagem para vídeo por meio do grafo configurado.

    fal

    Usa um fluxo com suporte de fila para jobs de longa duração. O OpenClaw aguarda até 20 minutos por padrão antes de tratar um job de fila fal em andamento como expirado. A maioria dos modelos de vídeo da fal aceita uma única referência de imagem. Modelos Seedance 2.0 de referência para vídeo aceitam até 9 imagens, 3 vídeos e 3 referências de áudio, com no máximo 12 arquivos de referência no total.

    Google (Gemini / Veo)

    Oferece suporte a uma referência de imagem ou uma referência de vídeo. Solicitações de áudio gerado são ignoradas com um aviso no caminho da API Gemini porque essa API rejeita o parâmetro generateAudio para a geração de vídeo Veo atual.

    MiniMax

    Apenas uma única referência de imagem. O MiniMax aceita resoluções 768P e 1080P; solicitações como 720P são normalizadas para o valor compatível mais próximo antes do envio.

    OpenAI

    Apenas a substituição de size é encaminhada. Outras substituições de estilo (aspectRatio, resolution, audio, watermark) são ignoradas com um aviso.

    OpenRouter

    Usa a API assíncrona /videos da OpenRouter. O OpenClaw envia o job, consulta polling_url e baixa unsigned_urls ou o endpoint documentado de conteúdo do job. O padrão incluído google/veo-3.1-fast anuncia durações de 4/6/8 segundos, resoluções 720P/1080P e proporções de tela 16:9/9:16.

    Qwen

    O mesmo backend DashScope da Alibaba. Entradas de referência devem ser URLs http(s) remotas; arquivos locais são rejeitados antecipadamente.

    Runway

    Oferece suporte a arquivos locais via URIs de dados. Vídeo para vídeo exige runway/gen4_aleph. Execuções somente de texto expõem proporções de tela 16:9 e 9:16.

    Together

    Apenas uma única referência de imagem.

    Vydra

    Usa https://www.vydra.ai/api/v1 diretamente para evitar redirecionamentos que removem autenticação. veo3 é incluído apenas como texto para vídeo; kling exige uma URL de imagem remota.

    xAI

    Oferece suporte a texto para vídeo, imagem para vídeo com uma única imagem de primeiro quadro, até 7 entradas reference_image por meio de reference_images da xAI e fluxos remotos de edição/extensão de vídeo.

    Modos de capacidade de provedor

    O contrato compartilhado de geração de vídeo oferece suporte a capacidades específicas por modo, em vez de apenas limites agregados planos. Novas implementações de provedor devem preferir blocos de modo explícitos:

    typescript
    capabilities: {  generate: {    maxVideos: 1,    maxDurationSeconds: 10,    supportsResolution: true,  },  imageToVideo: {    enabled: true,    maxVideos: 1,    maxInputImages: 1,    maxInputImagesByModel: { "provider/reference-to-video": 9 },    maxDurationSeconds: 5,  },  videoToVideo: {    enabled: true,    maxVideos: 1,    maxInputVideos: 1,    maxDurationSeconds: 5,  },}

    Campos agregados planos como maxInputImages e maxInputVideos não são suficientes para anunciar suporte ao modo de transformação. Provedores devem declarar generate, imageToVideo e videoToVideo explicitamente para que testes live, testes de contrato e a ferramenta compartilhada video_generate possam validar o suporte a modos de forma determinística.

    Quando um modelo em um provedor tiver suporte mais amplo a entradas de referência do que o restante, use maxInputImagesByModel, maxInputVideosByModel ou maxInputAudiosByModel em vez de aumentar o limite de todo o modo.

    Testes live

    Cobertura live opcional para os provedores compartilhados incluídos:

    bash
    OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts

    Wrapper do repositório:

    bash
    pnpm test:live:media video

    Esse arquivo live carrega variáveis de ambiente ausentes de provedores de ~/.profile, prefere chaves de API live/de ambiente antes de perfis de autenticação armazenados por padrão e executa um smoke test seguro para release por padrão:

    • generate para todo provedor que não seja FAL na varredura.
    • Prompt de lagosta de um segundo.
    • Limite de operação por provedor a partir de OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (180000 por padrão).

    FAL é opcional porque a latência de fila do lado do provedor pode dominar o tempo de release:

    bash
    pnpm test:live:media video --video-providers fal

    Defina OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1 para também executar os modos de transformação declarados que a varredura compartilhada consegue exercitar com segurança com mídia local:

    • imageToVideo quando capabilities.imageToVideo.enabled.
    • videoToVideo quando capabilities.videoToVideo.enabled e o provedor/modelo aceita entrada de vídeo local com suporte de buffer na varredura compartilhada.

    Hoje, a faixa live compartilhada de videoToVideo cobre runway apenas quando você seleciona runway/gen4_aleph.

    Configuração

    Defina o modelo padrão de geração de vídeo na sua configuração do OpenClaw:

    json5
    {  agents: {    defaults: {      videoGenerationModel: {        primary: "qwen/wan2.6-t2v",        fallbacks: ["qwen/wan2.6-r2v-flash"],      },    },  },}

    Ou via CLI:

    bash
    openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"

    Relacionados

    Was this useful?