Ir al contenido

Generación de videos

Los agentes de OpenClaw pueden generar vídeos a partir de indicaciones de texto, imágenes de referencia o vídeos existentes. Se admiten dieciséis proveedores de backend, cada uno con diferentes opciones de modelo, modos de entrada y conjuntos de funciones. El agente selecciona automáticamente el proveedor adecuado según su configuración y las claves de API disponibles.

OpenClaw trata la generación de video como tres modos de tiempo de ejecución:

  • generate: solicitudes de texto a vídeo sin medios de referencia.
  • imageToVideo: la solicitud incluye una o más imágenes de referencia.
  • videoToVideo: la solicitud incluye uno o más vídeos de referencia.

Los proveedores pueden admitir cualquier subconjunto de esos modos. La herramienta valida el modo activo antes del envío e informa de los modos admitidos en action=list.

  1. Configurar autenticación

    Establezca una clave de API para cualquier proveedor admitido:

    Ventana de terminal
    export GEMINI_API_KEY="your-key"
  2. Elegir un modelo predeterminado (opcional)

    Ventana de terminal
    openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  3. Pídele al agente

    Genera un vídeo cinematográfico de 5 segundos de una langosta amigable surfeando al atardecer.

    El agente llama a video_generate automáticamente. No se necesita permitir la herramienta.

La generación de vídeo es asíncrona. Cuando el agente llama a video_generate en una sesión:

  1. OpenClaw envía la solicitud al proveedor y devuelve inmediatamente un id de tarea.
  2. El proveedor procesa el trabajo en segundo plano (generalmente de 30 segundos a varios minutos, dependiendo del proveedor y la resolución; los proveedores lentos con cola pueden ejecutarse hasta el tiempo de espera configurado).
  3. Cuando el video está listo, OpenClaw reactiva la misma sesión con un evento interno de finalización.
  4. El agente informa al usuario a través del modo de respuesta visible normal de la sesión: entrega de la respuesta final cuando es automática, o message(action="send") cuando la sesión requiere la herramienta de mensaje. Si la sesión solicitante está inactiva o falla su activación activa, y algún video generado aún falta en la respuesta de finalización, OpenClaw envía una alternativa directa idempotente con solo el video que falta.

Mientras un trabajo está en proceso, las llamadas duplicadas a video_generate en la misma sesión devuelven el estado actual de la tarea en lugar de iniciar otra generación. Use openclaw tasks list o openclaw tasks show <taskId> para verificar el progreso desde la CLI.

Fuera de las ejecuciones del agente respaldadas por sesión (por ejemplo, invocaciones directas de herramientas), la herramienta recurre a la generación en línea y devuelve la ruta de medios final en el mismo turno.

Los archivos de video generados se guardan en el almacenamiento de medios gestionado por OpenClaw cuando el proveedor devuelve bytes. El límite de guardado predeterminado de videos generados sigue el límite de medios de video, y agents.defaults.mediaMaxMb lo aumenta para renders más grandes. Cuando un proveedor también devuelve una URL de salida alojada, OpenClaw puede entregar esa URL en lugar de fallar la tarea si la persistencia local rechaza un archivo demasiado grande.

EstadoSignificado
queuedTarea creada, esperando a que el proveedor la acepte.
runningEl proveedor está procesando (típicamente de 30 segundos a varios minutos dependiendo del proveedor y la resolución).
succeededVideo listo; el agente se despierta y lo publica en la conversación.
failedError o tiempo de espera del proveedor; el agente se despierta con detalles del error.

Verificar el estado desde la CLI:

Ventana de terminal
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>

Si una tarea de video ya está queued o running para la sesión actual, video_generate devuelve el estado de la tarea existente en lugar de iniciar una nueva. Use action: "status" para verificar explícitamente sin activar una nueva generación.

ProveedorModelo predeterminadoTextoRef. de imagenRef. de videoAutenticación
Alibabawan2.6-t2vSí (URL remota)Sí (URL remota)MODELSTUDIO_API_KEY
BytePlus (1.0)seedance-1-0-pro-250528Hasta 2 imágenes (solo modelos I2V; primer + último fotograma)-BYTEPLUS_API_KEY
BytePlus Seedance 1.5seedance-1-5-pro-251215Hasta 2 imágenes (primer + último fotograma a través del rol)-BYTEPLUS_API_KEY
BytePlus Seedance 2.0dreamina-seedance-2-0-260128Hasta 9 imágenes de referenciaHasta 3 videosBYTEPLUS_API_KEY
ComfyUIworkflow1 imagen-COMFY_API_KEY o COMFY_CLOUD_API_KEY
DeepInfraPixverse/Pixverse-T2V--DEEPINFRA_API_KEY
falfal-ai/minimax/video-01-live1 imagen; hasta 9 con Seedance referencia-a-videoHasta 3 videos con Seedance referencia-a-videoFAL_KEY
Googleveo-3.1-fast-generate-preview1 imagen1 videoGEMINI_API_KEY
MiniMaxMiniMax-Hailuo-2.31 imagen-MINIMAX_API_KEY u OAuth de MiniMax
OpenAIsora-21 imagen1 videoOPENAI_API_KEY
OpenRoutergoogle/veo-3.1-fastHasta 4 imágenes (primer/último fotograma o referencias)-OPENROUTER_API_KEY
Qwenwan2.6-t2vSí (URL remota)Sí (URL remota)QWEN_API_KEY
Runwaygen4.51 imagen1 videoRUNWAYML_API_SECRET
TogetherWan-AI/Wan2.2-T2V-A14BWan-AI/Wan2.2-I2V-A14B solo-TOGETHER_API_KEY
Vydraveo31 imagen (kling)-VYDRA_API_KEY
xAIgrok-imagine-video1 imagen del primer fotograma o hasta a 7 reference_images1 vídeoXAI_API_KEY

Algunos proveedores aceptan variables de entorno de clave de API adicionales o alternativas. Consulte las páginas del proveedor individuales para obtener más detalles.

Ejecute video_generate action=list para inspeccionar los proveedores disponibles, los modelos y los modos de ejecución en tiempo de ejecución.

El contrato de modo explícito utilizado por video_generate, las pruebas de contrato y el barrido en vivo compartido:

ProveedorgenerateimageToVideovideoToVideoCarriles compartidos en vivo hoy
Alibabagenerate, imageToVideo; videoToVideo omitido porque este proveedor necesita URLs de video http(s) remotas
BytePlus-generate, imageToVideo
ComfyUI-No está en el barrido compartido; la cobertura específica del flujo de trabajo reside con las pruebas de Comfy
DeepInfra--generate; los esquemas de video nativos de DeepInfra son de texto a video en el contrato incluido
falgenerate, imageToVideo; videoToVideo solo cuando se usa referencia a video de Seedance
Googlegenerate, imageToVideo; videoToVideo compartido omitido porque el barrido Gemini/Veo con respaldo en búfer actual no acepta esa entrada
MiniMax-generate, imageToVideo
OpenAIgenerate, imageToVideo; videoToVideo compartido omitido porque esta ruta de organización/entrada actualmente necesita acceso de edición de video del lado del proveedor
OpenRouter-generate, imageToVideo
Qwengenerate, imageToVideo; videoToVideo omitido porque este proveedor necesita http(s) de video remotas
Runwaygenerate, imageToVideo; videoToVideo se ejecuta solo cuando el modelo seleccionado es runway/gen4_aleph
Together-generate, imageToVideo
Vydra-generate; imageToVideo compartido omitido porque veo3 incluido es solo de texto y kling incluido requiere una URL de imagen remota
xAIgenerate, imageToVideo; videoToVideo omitido porque este proveedor actualmente necesita una URL MP4 remota
Descripción de texto del video a generar. Obligatorio para `action: "generate"`. Imagen de referencia única (ruta o URL). Múltiples imágenes de referencia (hasta 9). Sugerencias opcionales de rol por posición en paralelo a la lista de imágenes combinada. Valores canónicos: `first_frame`, `last_frame`, `reference_image`. Video de referencia único (ruta o URL). Múltiples videos de referencia (hasta 4). Sugerencias opcionales de rol por posición en paralelo a la lista de videos combinada. Valor canónico: `reference_video`. Audio de referencia único (ruta o URL). Se utiliza como música de fondo o referencia de voz cuando el proveedor admite entradas de audio. Múltiples audios de referencia (hasta 3). Sugerencias opcionales de rol por posición en paralelo a la lista de audios combinada. Valor canónico: `reference_audio`. Sugerencia de relación de aspecto, como `1:1`, `16:9`, `9:16`, `adaptive` o un valor específico del proveedor. OpenClaw normaliza o ignora los valores no compatibles según el proveedor. Sugerencia de resolución, como `480P`, `720P`, `768P`, `1080P`, `4K` o un valor específico del proveedor. OpenClaw normaliza o ignora los valores no compatibles según el proveedor. Duración objetivo en segundos (redondeada al valor compatible más cercano del proveedor). Sugerencia de tamaño cuando el proveedor lo admite. Habilitar el audio generado en la salida cuando se admite. Distinto de `audioRef*` (entradas). Activar o desactivar la marca de agua del proveedor cuando se admite.

adaptive es un valor centinela específico del proveedor: se reenvía tal cual a los proveedores que declaran adaptive en sus capacidades (p. ej., BytePlus Seedance lo usa para detectar automáticamente la relación de aspecto a partir de las dimensiones de la imagen de entrada). Los proveedores que no lo declaran muestran el valor a través de details.ignoredOverrides en el resultado de la herramienta para que la omisión sea visible.

`"status"` devuelve la tarea de la sesión actual; `"list"` inspecciona los proveedores. Sobrescritura de proveedor/modelo (p. ej., `runway/gen4.5`). Sugerencia de nombre de archivo de salida. Tiempo de espera opcional de la operación del proveedor en milisegundos. Cuando se omite, OpenClaw usa `agents.defaults.videoGenerationModel.timeoutMs` si está configurado; de lo contrario, usa el valor predeterminado del proveedor definido por el complemento cuando existe uno. Opciones específicas del proveedor como un objeto JSON (p. ej., `{"seed": 42, "draft": true}`). Los proveedores que declaran un esquema con tipos validan las claves y los tipos; las claves desconocidas o discordancias omiten el candidato durante la conmutación por error. Los proveedores sin un esquema declarado reciben las opciones tal como son. Ejecute `video_generate action=list` para ver qué acepta cada proveedor.

Las entradas de referencia seleccionan el modo de tiempo de ejecución:

  • Sin medios de referencia → generate
  • Cualquier referencia de imagen → imageToVideo
  • Cualquier referencia de video → videoToVideo
  • Las entradas de audio de referencia no cambian el modo resuelto; se aplican sobre cualquier modo que seleccionen las referencias de imagen/video y solo funcionan con proveedores que declaran maxInputAudios.

Las referencias mixtas de imagen y video no son una superficie de capacidad compartida estable. Prefiera un tipo de referencia por solicitud.

Algunas comprobaciones de capacidades se aplican en la capa de reserva (fallback) en lugar de en el límite de la herramienta, por lo que una solicitud que exceda los límites del proveedor principal aún puede ejecutarse en una reserva capaz:

  • Se omite el candidato activo que declara no tener maxInputAudios (o 0) cuando la solicitud contiene referencias de audio; se prueba el siguiente candidato.
  • El maxDurationSeconds del candidato activo por debajo del durationSeconds solicitado sin una lista declarada de supportedDurationSeconds → omitido.
  • La solicitud contiene providerOptions y el candidato activo declara explícitamente un esquema providerOptions tipado → se omite si las claves proporcionadas no están en el esquema o si los tipos de valor no coinciden. Los proveedores sin un esquema declarado reciben las opciones tal cual (transferencia compatible con versiones anteriores). Un proveedor puede optar por no recibir ninguna opción de proveedor declarando un esquema vacío (capabilities.providerOptions: {}), lo que provoca la misma omisión que una discordancia de tipos.

El primer motivo de omisión en una solicitud se registra en warn para que los operadores vean cuándo se saltó su proveedor principal; las omisiones posteriores se registran en debug para mantener silenciosas las cadenas de retroceso largas. Si se omite todos los candidatos, el error agregado incluye el motivo de omisión de cada uno.

AcciónLo que hace
generatePredeterminado. Crea un video a partir del mensaje dado y entradas de referencia opcionales.
statusComprueba el estado de la tarea de video en curso para la sesión actual sin iniciar otra generación.
listMuestra los proveedores disponibles, los modelos y sus capacidades.

OpenClaw resuelve el modelo en este orden:

  1. parámetro de herramienta model - si el agente especifica uno en la llamada.
  2. videoGenerationModel.primary de la configuración.
  3. videoGenerationModel.fallbacks en orden.
  4. Detección automática - proveedores que tienen autenticación válida, comenzando por el proveedor predeterminado actual, luego los proveedores restantes en orden alfabético.

Si un proveedor falla, se prueba automáticamente el siguiente candidato. Si fallan todos los candidatos, el error incluye detalles de cada intento.

Establezca agents.defaults.mediaGenerationAutoProviderFallback: false para usar solo las entradas explícitas model, primary y fallbacks.

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

Utiliza el endpoint asíncrono de DashScope / Model Studio. Las imágenes y videos de referencia deben ser URLs http(s) remotas.

BytePlus (1.0)

Id. de proveedor: byteplus.

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

Los modelos T2V (*-t2v-*) no aceptan entradas de imagen; los modelos I2V y los modelos *-pro-* generales admiten una única imagen de referencia (primer fotograma). Pase la imagen posicionalmente o configure role: "first_frame". Los IDs de modelos T2V se cambian automáticamente a la variante I2V correspondiente cuando se proporciona una imagen.

Claves providerOptions compatibles: seed (número), draft (booleano - fuerza 480p), camera_fixed (booleano).

BytePlus Seedance 1.5

Requiere el complemento @openclaw/byteplus-modelark. Id. de proveedor: byteplus-seedance15. Modelo: seedance-1-5-pro-251215.

Utiliza la API unificada de content[]. Admite un máximo de 2 imágenes de entrada (first_frame + last_frame). Todas las entradas deben ser URLs https:// remotas. Configure role: "first_frame" / "last_frame" en cada imagen, o pase imágenes posicionalmente.

aspectRatio: "adaptive" detecta automáticamente la relación de aspecto de la imagen de entrada. audio: true se asigna a generate_audio. providerOptions.seed (número) se reenvía.

BytePlus Seedance 2.0

Requiere el plugin @openclaw/byteplus-modelark. Id. del proveedor: byteplus-seedance2. Modelos: dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128.

Utiliza la API unificada content[]. Admite hasta 9 imágenes de referencia, 3 videos de referencia y 3 audios de referencia. Todas las entradas deben ser URLs https:// remotas. Establezca role en cada activo; valores admitidos: "first_frame", "last_frame", "reference_image", "reference_video", "reference_audio".

aspectRatio: "adaptive" detecta automáticamente la proporción desde la imagen de entrada. audio: true se asigna a generate_audio. providerOptions.seed (número) se reenvía.

ComfyUI

Ejecución local o en la nube impulsada por flujos de trabajo. Admite texto a video y imagen a video a través del gráfico configurado.

fal

Utiliza un flujo con respaldo de cola para trabajos de larga duración. OpenClaw espera hasta 20 minutos de forma predeterminada antes de tratar un trabajo en cola fal en curso como agotado por tiempo. La mayoría de los modelos de video de fal aceptan una sola referencia de imagen. Los modelos de video de referencia a video de Seedance 2.0 aceptan hasta 9 imágenes, 3 videos y 3 referencias de audio, con un máximo de 12 archivos de referencia en total.

Google (Gemini / Veo)

Admite una imagen o un video de referencia. Las solicitudes de audio generado se ignoran con una advertencia en la ruta de la API de Gemini porque esa API rechaza el parámetro generateAudio para la generación de video Veo actual.

MiniMax

Solo referencia de imagen única. MiniMax acepta 768P y 1080P resoluciones; las solicitudes como 720P se normalizan al valor admitido más cercano antes del envío.

OpenAI

Solo se reenvía la anulación size. Otras anulaciones de estilo (aspectRatio, resolution, audio, watermark) se ignoran con una advertencia.

OpenRouter

Utiliza la API asíncrona /videos de OpenRouter. OpenClaw envía el trabajo, sondea polling_url y descarga unsigned_urls o el punto de conexión de contenido del trabajo documentado. El modelo google/veo-3.1-fast incluido de forma predeterminada anuncia duraciones de 4/6/8 segundos, resoluciones 720P/1080P y relaciones de aspecto 16:9/9:16.

Qwen

El mismo backend DashScope que Alibaba. Las entradas de referencia deben ser URLs http(s) remotas; los archivos locales se rechazan de inmediato.

Runway

Admite archivos locales a través de URI de datos. Video a video requiere runway/gen4_aleph. Las ejecuciones solo de texto exponen relaciones de aspecto 16:9 y 9:16.

Together

Solo referencia de imagen única.

Vydra

Utiliza https://www.vydra.ai/api/v1 directamente para evitar redirecciones que eliminen la autenticación. veo3 se incluye solo para texto a video; kling requiere una URL de imagen remota.

xAI

Admite texto a video, imagen a video de un solo primer fotograma, hasta 7 entradas reference_image a través de xAI reference_images, y flujos de edición/extensión de video remotos.

El contrato compartido de generación de video admite capacidades específicas del modo en lugar de solo límites agregados planos. Las nuevas implementaciones de proveedores deben preferir bloques de modo explícitos:

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,
},
}

Los campos agregados planos como maxInputImages y maxInputVideos no son suficientes para anunciar la compatibilidad con el modo de transformación. Los proveedores deben declarar generate, imageToVideo y videoToVideo explícitamente para que las pruebas en vivo, las pruebas de contrato y la herramienta compartida video_generate puedan validar la compatibilidad del modo de manera determinista.

Cuando un modelo en un proveedor tiene una compatibilidad de entrada de referencia más amplia que el resto, use maxInputImagesByModel, maxInputVideosByModel o maxInputAudiosByModel en lugar de aumentar el límite de todo el modo.

Cobertura en vivo opcional para los proveedores agrupados compartidos:

Ventana de terminal
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts

Contenedor del repositorio:

Ventana de terminal
pnpm test:live:media video

Este archivo en vivo utiliza por defecto las variables de entorno del proveedor ya exportadas antes que los perfiles de autenticación almacenados, y ejecuta por defecto una prueba de humo segura para lanzamientos:

  • generate para cada proveedor que no sea FAL en el barrido.
  • Indicador de langosta de un segundo.
  • Límite de operaciones por proveedor desde OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (180000 de forma predeterminada).

FAL es opcional porque la latencia de la cola del lado del proveedor puede dominar el tiempo de lanzamiento:

Ventana de terminal
pnpm test:live:media video --video-providers fal

Establezca OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1 para también ejecutar los modos de transformación declarados que el barrido compartido pueda ejercer de manera segura con medios locales:

  • imageToVideo cuando capabilities.imageToVideo.enabled.
  • videoToVideo cuando capabilities.videoToVideo.enabled y el proveedor/modelo acepta entrada de video local respaldada por búfer en el barrido compartido.

Hoy, el carril compartido videoToVideo en vivo cubre runway solo cuando selecciona runway/gen4_aleph.

Establezca el modelo de generación de video predeterminado en su configuración de OpenClaw:

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

O a través de la CLI:

Ventana de terminal
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"