Saltar al contenido principal

Generación de video

Los agentes de OpenClaw pueden generar videos a partir de prompts de texto, imágenes de referencia o videos existentes. Se admiten catorce backends de proveedores, cada uno con distintas opciones de modelo, modos de entrada y conjuntos de funciones. El agente elige automáticamente el proveedor adecuado según tu configuración y las API keys disponibles.
La herramienta video_generate solo aparece cuando hay disponible al menos un proveedor de generación de video. Si no la ves en las herramientas de tu agente, configura una API key de proveedor o agents.defaults.videoGenerationModel.
OpenClaw trata la generación de video como tres modos de ejecución:
  • generate para solicitudes de texto a video sin medios de referencia
  • imageToVideo cuando la solicitud incluye una o más imágenes de referencia
  • videoToVideo cuando la solicitud incluye uno o más videos de referencia
Los proveedores pueden admitir cualquier subconjunto de esos modos. La herramienta valida el modo activo antes del envío e informa los modos admitidos en action=list.

Inicio rápido

  1. Configura una API key para cualquier proveedor compatible:
export GEMINI_API_KEY="your-key"
  1. Opcionalmente, fija un modelo predeterminado:
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  1. Pídele al agente:
Genera un video cinematográfico de 5 segundos de una langosta amigable surfeando al atardecer.
El agente llama a video_generate automáticamente. No se necesita lista de permitidos de herramientas.

Qué sucede cuando generas un video

La generación de video 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 (normalmente entre 30 segundos y 5 minutos, según el proveedor y la resolución).
  3. Cuando el video está listo, OpenClaw reactiva la misma sesión con un evento interno de finalización.
  4. El agente publica el video terminado de vuelta en la conversación original.
Mientras un trabajo está en curso, 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. Usa openclaw tasks list o openclaw tasks show <taskId> para comprobar el progreso desde la CLI. Fuera de las ejecuciones de agentes respaldadas por sesión (por ejemplo, invocaciones directas de herramientas), la herramienta recurre a la generación en línea y devuelve la ruta final del medio en el mismo turno.

Ciclo de vida de la tarea

Cada solicitud de video_generate pasa por cuatro estados:
  1. queued — tarea creada, en espera de que el proveedor la acepte.
  2. running — el proveedor está procesando (normalmente entre 30 segundos y 5 minutos, según el proveedor y la resolución).
  3. succeeded — video listo; el agente se reactiva y lo publica en la conversación.
  4. failed — error del proveedor o tiempo de espera agotado; el agente se reactiva con detalles del error.
Comprueba el estado desde la CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
Prevención de duplicados: si ya hay una tarea de video queued o running para la sesión actual, video_generate devuelve el estado de la tarea existente en lugar de iniciar una nueva. Usa action: "status" para comprobarlo explícitamente sin activar una nueva generación.

Proveedores compatibles

ProveedorModelo predeterminadoTextoImagen de ref.Video de ref.API key
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 y último fotograma)NoBYTEPLUS_API_KEY
BytePlus Seedance 1.5seedance-1-5-pro-251215Hasta 2 imágenes (primer y último fotograma mediante rol)NoBYTEPLUS_API_KEY
BytePlus Seedance 2.0dreamina-seedance-2-0-260128Hasta 9 imágenes de referenciaHasta 3 videosBYTEPLUS_API_KEY
ComfyUIworkflow1 imagenNoCOMFY_API_KEY o COMFY_CLOUD_API_KEY
falfal-ai/minimax/video-01-live1 imagenNoFAL_KEY
Googleveo-3.1-fast-generate-preview1 imagen1 videoGEMINI_API_KEY
MiniMaxMiniMax-Hailuo-2.31 imagenNoMINIMAX_API_KEY
OpenAIsora-21 imagen1 videoOPENAI_API_KEY
Qwenwan2.6-t2vSí (URL remota)Sí (URL remota)QWEN_API_KEY
Runwaygen4.51 imagen1 videoRUNWAYML_API_SECRET
TogetherWan-AI/Wan2.2-T2V-A14B1 imagenNoTOGETHER_API_KEY
Vydraveo31 imagen (kling)NoVYDRA_API_KEY
xAIgrok-imagine-video1 imagen1 videoXAI_API_KEY
Algunos proveedores aceptan variables de entorno adicionales o alternativas para API keys. Consulta las páginas de proveedores individuales para más detalles. Ejecuta video_generate action=list para inspeccionar en tiempo de ejecución los proveedores, modelos y modos de ejecución disponibles.

Matriz de capacidades declaradas

Este es el contrato explícito de modos usado por video_generate, las pruebas de contrato y el barrido compartido en vivo.
ProveedorgenerateimageToVideovideoToVideoCanales compartidos en vivo hoy
Alibabagenerate, imageToVideo; videoToVideo se omite porque este proveedor necesita URLs de video remotas http(s)
BytePlusNogenerate, imageToVideo
ComfyUINoNo está en el barrido compartido; la cobertura específica del flujo de trabajo vive con las pruebas de Comfy
falNogenerate, imageToVideo
Googlegenerate, imageToVideo; el videoToVideo compartido se omite porque el barrido actual de Gemini/Veo respaldado por búfer no acepta esa entrada
MiniMaxNogenerate, imageToVideo
OpenAIgenerate, imageToVideo; el videoToVideo compartido se omite porque esta ruta de organización/entrada actualmente necesita acceso del lado del proveedor a inpaint/remix
Qwengenerate, imageToVideo; videoToVideo se omite porque este proveedor necesita URLs de video remotas http(s)
Runwaygenerate, imageToVideo; videoToVideo se ejecuta solo cuando el modelo seleccionado es runway/gen4_aleph
TogetherNogenerate, imageToVideo
VydraNogenerate; imageToVideo compartido se omite porque el veo3 incluido es solo de texto y el kling incluido requiere una URL de imagen remota
xAIgenerate, imageToVideo; videoToVideo se omite porque este proveedor actualmente necesita una URL MP4 remota

Parámetros de la herramienta

Obligatorios

ParámetroTipoDescripción
promptstringDescripción de texto del video que se va a generar (obligatoria para action: "generate")

Entradas de contenido

ParámetroTipoDescripción
imagestringUna sola imagen de referencia (ruta o URL)
imagesstring[]Varias imágenes de referencia (hasta 9)
imageRolesstring[]Sugerencias opcionales de rol por posición en paralelo a la lista combinada de imágenes. Valores canónicos: first_frame, last_frame, reference_image
videostringUn solo video de referencia (ruta o URL)
videosstring[]Varios videos de referencia (hasta 4)
videoRolesstring[]Sugerencias opcionales de rol por posición en paralelo a la lista combinada de videos. Valor canónico: reference_video
audioRefstringUn solo audio de referencia (ruta o URL). Se usa, por ejemplo, para música de fondo o referencia de voz cuando el proveedor admite entradas de audio
audioRefsstring[]Varios audios de referencia (hasta 3)
audioRolesstring[]Sugerencias opcionales de rol por posición en paralelo a la lista combinada de audios. Valor canónico: reference_audio
Las sugerencias de rol se reenvían al proveedor tal como están. Los valores canónicos provienen de la unión VideoGenerationAssetRole, pero los proveedores pueden aceptar cadenas de rol adicionales. Los arreglos *Roles no deben tener más entradas que la lista de referencias correspondiente; los errores por desfase se rechazan con un error claro. Usa una cadena vacía para dejar una posición sin establecer.

Controles de estilo

ParámetroTipoDescripción
aspectRatiostring1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9, o adaptive
resolutionstring480P, 720P, 768P, o 1080P
durationSecondsnumberDuración objetivo en segundos (redondeada al valor compatible más cercano del proveedor)
sizestringSugerencia de tamaño cuando el proveedor la admite
audiobooleanActiva el audio generado en la salida cuando se admite. Distinto de audioRef* (entradas)
watermarkbooleanActiva o desactiva 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 (por ejemplo, BytePlus Seedance lo usa para detectar automáticamente la proporción a partir de las dimensiones de la imagen de entrada). Los proveedores que no lo declaran exponen el valor mediante details.ignoredOverrides en el resultado de la herramienta para que la omisión sea visible.

Avanzado

ParámetroTipoDescripción
actionstring"generate" (predeterminado), "status", o "list"
modelstringReemplazo de proveedor/modelo (por ejemplo, runway/gen4.5)
filenamestringSugerencia de nombre de archivo de salida
providerOptionsobjectOpciones específicas del proveedor como objeto JSON (por ejemplo, {"seed": 42, "draft": true}). Los proveedores que declaran un esquema tipado validan las claves y los tipos; las claves desconocidas o incompatibilidades hacen que se omita el candidato durante el fallback. Los proveedores sin un esquema declarado reciben las opciones tal como están. Ejecuta video_generate action=list para ver qué acepta cada proveedor
No todos los proveedores admiten todos los parámetros. OpenClaw ya normaliza la duración al valor compatible más cercano del proveedor, y también remapea sugerencias de geometría traducidas, como de tamaño a relación de aspecto, cuando un proveedor de fallback expone una superficie de control distinta. Los reemplazos realmente incompatibles se ignoran en régimen de mejor esfuerzo y se informan como advertencias en el resultado de la herramienta. Los límites estrictos de capacidad (como demasiadas entradas de referencia) fallan antes del envío. Los resultados de la herramienta informan la configuración aplicada. Cuando OpenClaw remapea la duración o la geometría durante el fallback del proveedor, los valores devueltos de durationSeconds, size, aspectRatio y resolution reflejan lo que se envió, y details.normalization captura la traducción de solicitado a aplicado. Las entradas de referencia también seleccionan el modo de ejecución:
  • Sin medios de referencia: generate
  • Cualquier imagen de referencia: imageToVideo
  • Cualquier video de referencia: videoToVideo
  • Las entradas de audio de referencia no cambian el modo resuelto; se aplican además del modo que seleccionan 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. Prefiere un tipo de referencia por solicitud.

Fallback y opciones tipadas

Algunas comprobaciones de capacidad se aplican en la capa de fallback en lugar del límite de la herramienta para que una solicitud que exceda los límites del proveedor principal todavía pueda ejecutarse en un fallback compatible:
  • Si el candidato activo no declara maxInputAudios (o lo declara como 0), se omite cuando la solicitud contiene referencias de audio, y se prueba el siguiente candidato.
  • Si maxDurationSeconds del candidato activo está por debajo del durationSeconds solicitado y el candidato no declara una lista supportedDurationSeconds, se omite.
  • Si la solicitud contiene providerOptions y el candidato activo declara explícitamente un esquema tipado de providerOptions, el candidato se omite cuando las claves proporcionadas no están en el esquema o los tipos de valor no coinciden. Los proveedores que todavía no han declarado un esquema reciben las opciones tal como están (paso a través retrocompatible). Un proveedor puede excluir explícitamente todas las opciones de proveedor declarando un esquema vacío (capabilities.providerOptions: {}), lo que provoca la misma omisión que una incompatibilidad de tipos.
La primera razón de omisión en una solicitud se registra con warn para que los operadores vean cuándo se omitió su proveedor principal; las omisiones posteriores se registran con debug para mantener silenciosas las cadenas largas de fallback. Si se omiten todos los candidatos, el error agregado incluye la razón de omisión de cada uno.

Acciones

  • generate (predeterminada) — crea un video a partir del prompt dado y de entradas de referencia opcionales.
  • status — comprueba el estado de la tarea de video en curso para la sesión actual sin iniciar otra generación.
  • list — muestra los proveedores, modelos y sus capacidades disponibles.

Selección de modelo

Al generar un video, OpenClaw resuelve el modelo en este orden:
  1. Parámetro de herramienta model — si el agente especifica uno en la llamada.
  2. videoGenerationModel.primary — desde la configuración.
  3. videoGenerationModel.fallbacks — se prueban en orden.
  4. Detección automática — usa proveedores que tienen autenticación válida, comenzando por el proveedor predeterminado actual y luego los proveedores restantes en orden alfabético.
Si un proveedor falla, se prueba automáticamente el siguiente candidato. Si todos los candidatos fallan, el error incluye detalles de cada intento. Establece agents.defaults.mediaGenerationAutoProviderFallback: false si quieres que la generación de video use solo las entradas explícitas de model, primary y fallbacks.
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "google/veo-3.1-fast-generate-preview",
        fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
      },
    },
  },
}

Notas sobre proveedores

ProveedorNotas
AlibabaUsa el endpoint asíncrono de DashScope/Model Studio. Las imágenes y videos de referencia deben ser URLs remotas http(s).
BytePlus (1.0)ID del 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 generales *-pro-* admiten una sola imagen de referencia (primer fotograma). Pasa la imagen por posición o establece role: "first_frame". Los ID de modelo T2V se cambian automáticamente a la variante I2V correspondiente cuando se proporciona una imagen. Claves providerOptions compatibles: seed (number), draft (boolean, fuerza 480p), camera_fixed (boolean).
BytePlus Seedance 1.5Requiere el Plugin @openclaw/byteplus-modelark. ID del proveedor byteplus-seedance15. Modelo: seedance-1-5-pro-251215. Usa la API unificada content[]. Admite como máximo 2 imágenes de entrada (first_frame + last_frame). Todas las entradas deben ser URLs remotas https://. Establece role: "first_frame" / "last_frame" en cada imagen, o pasa las imágenes por posición. aspectRatio: "adaptive" detecta automáticamente la proporción a partir de la imagen de entrada. audio: true se asigna a generate_audio. providerOptions.seed (number) se reenvía.
BytePlus Seedance 2.0Requiere el Plugin @openclaw/byteplus-modelark. ID del proveedor byteplus-seedance2. Modelos: dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128. Usa 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 remotas https://. Establece role en cada recurso; valores admitidos: "first_frame", "last_frame", "reference_image", "reference_video", "reference_audio". aspectRatio: "adaptive" detecta automáticamente la proporción a partir de la imagen de entrada. audio: true se asigna a generate_audio. providerOptions.seed (number) se reenvía.
ComfyUIEjecución local o en la nube impulsada por flujos de trabajo. Admite texto a video e imagen a video mediante el grafo configurado.
falUsa un flujo respaldado por cola para trabajos de larga duración. Solo una imagen de referencia.
GoogleUsa Gemini/Veo. Admite una imagen o un video de referencia.
MiniMaxSolo una imagen de referencia.
OpenAISolo se reenvía la sustitución de size. Las demás sustituciones de estilo (aspectRatio, resolution, audio, watermark) se ignoran con una advertencia.
QwenEl mismo backend de DashScope que Alibaba. Las entradas de referencia deben ser URLs remotas http(s); los archivos locales se rechazan de entrada.
RunwayAdmite archivos locales mediante URI de datos. videoToVideo requiere runway/gen4_aleph. Las ejecuciones de solo texto exponen relaciones de aspecto 16:9 y 9:16.
TogetherSolo una imagen de referencia.
VydraUsa https://www.vydra.ai/api/v1 directamente para evitar redirecciones que descartan la autenticación. veo3 está incluido solo como texto a video; kling requiere una URL de imagen remota.
xAIAdmite texto a video, imagen a video y flujos remotos de edición/extensión de video.

Modos de capacidad del proveedor

El contrato compartido de generación de video ahora permite que los proveedores declaren capacidades específicas por 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,
    maxDurationSeconds: 5,
  },
  videoToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputVideos: 1,
    maxDurationSeconds: 5,
  },
}
Los campos agregados planos como maxInputImages y maxInputVideos no son suficientes para anunciar compatibilidad con modos 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 de modos de forma determinista.

Pruebas en vivo

Cobertura en vivo opcional para los proveedores empaquetados compartidos:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Wrapper del repositorio:
pnpm test:live:media video
Este archivo de pruebas en vivo carga variables de entorno faltantes del proveedor desde ~/.profile, prioriza las API keys de entorno/en vivo por delante de los perfiles de autenticación almacenados de forma predeterminada, y ejecuta una prueba segura para lanzamientos de forma predeterminada:
  • generate para cada proveedor distinto de FAL en el barrido
  • prompt de langosta de un segundo
  • límite de operación por proveedor desde OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (180000 de forma predeterminada)
FAL es opcional porque la latencia de cola del lado del proveedor puede dominar el tiempo de lanzamiento:
pnpm test:live:media video --video-providers fal
Establece OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1 para ejecutar también los modos de transformación declarados que el barrido compartido puede ejercer de forma 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 canal compartido en vivo de videoToVideo cubre:
  • runway solo cuando seleccionas runway/gen4_aleph

Configuración

Establece el modelo predeterminado de generación de video en tu configuración de OpenClaw:
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "qwen/wan2.6-t2v",
        fallbacks: ["qwen/wan2.6-r2v-flash"],
      },
    },
  },
}
O mediante la CLI:
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"

Relacionado