Tools
Génération de vidéos
OpenClaw agents peut générer des vidéos à partir de prompts textuels, d’images de référence ou de vidéos existantes. Seize backends de fournisseurs sont pris en charge, chacun avec différentes options de modèle, différents modes d’entrée et différents ensembles de fonctionnalités. L’agent choisit le bon fournisseur automatiquement en fonction de votre configuration et des clés API disponibles.
OpenClaw traite la génération de vidéos comme trois modes d’exécution :
generate- requêtes texte-vers-vidéo sans média de référence.imageToVideo- la requête inclut une ou plusieurs images de référence.videoToVideo- la requête inclut une ou plusieurs vidéos de référence.
Les fournisseurs peuvent prendre en charge n’importe quel sous-ensemble de ces modes. L’outil valide le
mode actif avant l’envoi et indique les modes pris en charge dans action=list.
Démarrage rapide
Configurer l’authentification
Définissez une clé API pour n’importe quel fournisseur pris en charge :
export GEMINI_API_KEY="your-key"
Choisir un modèle par défaut (facultatif)
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
Demander à l’agent
Générez une vidéo cinématique de 5 secondes montrant un homard amical surfant au coucher du soleil.
L’agent appelle video_generate automatiquement. Aucune liste d’autorisation d’outils
n’est nécessaire.
Fonctionnement de la génération asynchrone
La génération de vidéos est asynchrone. Lorsque l’agent appelle video_generate dans une
session :
- OpenClaw envoie la requête au fournisseur et renvoie immédiatement un identifiant de tâche.
- Le fournisseur traite le travail en arrière-plan (généralement de 30 secondes à plusieurs minutes selon le fournisseur et la résolution ; les fournisseurs lents adossés à une file d’attente peuvent s’exécuter jusqu’au délai d’expiration configuré).
- Lorsque la vidéo est prête, OpenClaw réveille la même session avec un événement de fin interne.
- L’agent informe l’utilisateur et joint la vidéo terminée. Dans les discussions de groupe/canal qui utilisent une livraison visible uniquement par outil de message, l’agent relaie le résultat via l’outil de message au lieu qu’OpenClaw le publie directement.
Pendant qu’un travail est en cours, les appels video_generate en double dans la même
session renvoient l’état de la tâche actuelle au lieu de lancer une autre
génération. Utilisez openclaw tasks list ou openclaw tasks show <taskId> pour
vérifier la progression depuis la CLI.
En dehors des exécutions d’agent adossées à une session (par exemple, les invocations directes d’outils), l’outil revient à la génération en ligne et renvoie le chemin du média final dans le même tour.
Les fichiers vidéo générés sont enregistrés dans le stockage média géré par OpenClaw lorsque
le fournisseur renvoie des octets. Le plafond d’enregistrement par défaut des vidéos générées suit
la limite des médias vidéo, et agents.defaults.mediaMaxMb l’augmente pour les
rendus plus volumineux. Lorsqu’un fournisseur renvoie également une URL de sortie hébergée, OpenClaw
peut livrer cette URL au lieu de faire échouer la tâche si la persistance locale
rejette un fichier trop volumineux.
Cycle de vie des tâches
| État | Signification |
|---|---|
queued |
Tâche créée, en attente d’acceptation par le fournisseur. |
running |
Le fournisseur traite la tâche (généralement de 30 secondes à plusieurs minutes selon le fournisseur et la résolution). |
succeeded |
Vidéo prête ; l’agent se réveille et la publie dans la conversation. |
failed |
Erreur du fournisseur ou délai d’expiration ; l’agent se réveille avec les détails de l’erreur. |
Vérifiez l’état depuis la CLI :
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
Si une tâche vidéo est déjà queued ou running pour la session actuelle,
video_generate renvoie l’état de la tâche existante au lieu d’en lancer une
nouvelle. Utilisez action: "status" pour vérifier explicitement sans déclencher une nouvelle
génération.
Fournisseurs pris en charge
| Fournisseur | Modèle par défaut | Texte | Réf. image | Réf. vidéo | Auth |
|---|---|---|---|---|---|
| Alibaba | wan2.6-t2v |
✓ | Oui (URL distante) | Oui (URL distante) | MODELSTUDIO_API_KEY |
| BytePlus (1.0) | seedance-1-0-pro-250528 |
✓ | Jusqu’à 2 images (modèles I2V uniquement ; première + dernière image) | - | BYTEPLUS_API_KEY |
| BytePlus Seedance 1.5 | seedance-1-5-pro-251215 |
✓ | Jusqu’à 2 images (première + dernière image via le rôle) | - | BYTEPLUS_API_KEY |
| BytePlus Seedance 2.0 | dreamina-seedance-2-0-260128 |
✓ | Jusqu’à 9 images de référence | Jusqu’à 3 vidéos | BYTEPLUS_API_KEY |
| ComfyUI | workflow |
✓ | 1 image | - | COMFY_API_KEY ou COMFY_CLOUD_API_KEY |
| DeepInfra | Pixverse/Pixverse-T2V |
✓ | - | - | DEEPINFRA_API_KEY |
| fal | fal-ai/minimax/video-01-live |
✓ | 1 image ; jusqu’à 9 avec Seedance référence-vers-vidéo | Jusqu’à 3 vidéos avec Seedance référence-vers-vidéo | FAL_KEY |
veo-3.1-fast-generate-preview |
✓ | 1 image | 1 vidéo | GEMINI_API_KEY |
|
| MiniMax | MiniMax-Hailuo-2.3 |
✓ | 1 image | - | MINIMAX_API_KEY ou MiniMax OAuth |
| OpenAI | sora-2 |
✓ | 1 image | 1 vidéo | OPENAI_API_KEY |
| OpenRouter | google/veo-3.1-fast |
✓ | Jusqu’à 4 images (première/dernière image ou références) | - | OPENROUTER_API_KEY |
| Qwen | wan2.6-t2v |
✓ | Oui (URL distante) | Oui (URL distante) | QWEN_API_KEY |
| Runway | gen4.5 |
✓ | 1 image | 1 vidéo | RUNWAYML_API_SECRET |
| Together | Wan-AI/Wan2.2-T2V-A14B |
✓ | 1 image | - | TOGETHER_API_KEY |
| Vydra | veo3 |
✓ | 1 image (kling) |
- | VYDRA_API_KEY |
| xAI | grok-imagine-video |
✓ | 1 image de première image ou jusqu’à 7 reference_images |
1 vidéo | XAI_API_KEY |
Certains fournisseurs acceptent des variables d’environnement de clé API supplémentaires ou alternatives. Consultez les pages des fournisseurs individuelles pour plus de détails.
Exécutez video_generate action=list pour inspecter les fournisseurs, modèles et
modes d’exécution disponibles au moment de l’exécution.
Matrice des capacités
Le contrat de mode explicite utilisé par video_generate, les tests de contrat et
le balayage live partagé :
| Fournisseur | generate |
imageToVideo |
videoToVideo |
Lanes live partagées aujourd’hui |
|---|---|---|---|---|
| Alibaba | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo ignoré car ce fournisseur nécessite des URL vidéo http(s) distantes |
| BytePlus | ✓ | ✓ | - | generate, imageToVideo |
| ComfyUI | ✓ | ✓ | - | Non inclus dans le balayage partagé ; la couverture propre aux workflows vit avec les tests Comfy |
| DeepInfra | ✓ | - | - | generate ; les schémas vidéo DeepInfra natifs sont texte-vers-vidéo dans le contrat fourni |
| fal | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo uniquement lors de l’utilisation de Seedance référence-vers-vidéo |
| ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo partagé ignoré car le balayage Gemini/Veo actuel adossé à un tampon n’accepte pas cette entrée |
|
| MiniMax | ✓ | ✓ | - | generate, imageToVideo |
| OpenAI | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo partagé ignoré car cette organisation/ce chemin d’entrée nécessite actuellement l’accès inpaint/remix côté fournisseur |
| OpenRouter | ✓ | ✓ | - | generate, imageToVideo |
| Qwen | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo ignoré car ce fournisseur nécessite des URL vidéo http(s) distantes |
| Runway | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo s’exécute uniquement lorsque le modèle sélectionné est runway/gen4_aleph |
| Together | ✓ | ✓ | - | generate, imageToVideo |
| Vydra | ✓ | ✓ | - | generate ; imageToVideo partagé ignoré car veo3 fourni est uniquement textuel et kling fourni nécessite une URL d’image distante |
| xAI | ✓ | ✓ | ✓ | generate, imageToVideo ; videoToVideo ignoré car ce fournisseur nécessite actuellement une URL MP4 distante |
Paramètres de l’outil
Obligatoires
promptstringrequiredDescription textuelle de la vidéo à générer. Obligatoire pour action: "generate".
Entrées de contenu
imagestringimagesstring[]imageRolesstring[]Indications de rôle facultatives par position, parallèles à la liste d’images combinée.
Valeurs canoniques : first_frame, last_frame, reference_image.
videostringvideosstring[]videoRolesstring[]Indications de rôle facultatives par position, parallèles à la liste de vidéos combinée.
Valeur canonique : reference_video.
audioRefstringAudio de référence unique (chemin ou URL). Utilisé pour la musique de fond ou la référence vocale lorsque le fournisseur prend en charge les entrées audio.
audioRefsstring[]audioRolesstring[]Indications de rôle facultatives par position, parallèles à la liste audio combinée.
Valeur canonique : reference_audio.
Contrôles de style
aspectRatiostringIndication de rapport d’aspect comme 1:1, 16:9, 9:16, adaptive, ou une valeur propre au fournisseur. OpenClaw normalise ou ignore les valeurs non prises en charge selon le fournisseur.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc29sdXRpb24iIHR5cGU9InN0cmluZyI
Indication de résolution comme 480P, 720P, 768P, 1080P, 4K, ou une valeur propre au fournisseur. OpenClaw normalise ou ignore les valeurs non prises en charge selon le fournisseur.
OPENCLAW_DOCS_MARKER:paramClose:
durationSecondsnumberDurée cible en secondes (arrondie à la valeur prise en charge par le fournisseur la plus proche).
sizestringaudiobooleanActive l’audio généré dans la sortie lorsque c’est pris en charge. Distinct de audioRef* (entrées).
watermarkbooleanadaptive est une sentinelle propre au fournisseur : elle est transmise telle quelle aux
fournisseurs qui déclarent adaptive dans leurs capacités (par exemple BytePlus
Seedance l’utilise pour détecter automatiquement le rapport à partir des dimensions de
l’image d’entrée). Les fournisseurs qui ne la déclarent pas exposent la valeur via
details.ignoredOverrides dans le résultat de l’outil afin que l’abandon soit visible.
Avancé
action"generate" | "status" | "list""status" renvoie la tâche de session actuelle ; "list" inspecte les fournisseurs.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Remplacement du fournisseur/modèle (par exemple runway/gen4.5).
OPENCLAW_DOCS_MARKER:paramClose:
filenamestringtimeoutMsnumberproviderOptionsobjectOptions propres au fournisseur sous forme d’objet JSON (par exemple {"seed": 42, "draft": true}).
Les fournisseurs qui déclarent un schéma typé valident les clés et les types ; les clés
inconnues ou les incompatibilités ignorent le candidat pendant le fallback. Les fournisseurs sans
schéma déclaré reçoivent les options telles quelles. Exécutez video_generate action=list
pour voir ce que chaque fournisseur accepte.
Les entrées de référence sélectionnent le mode d’exécution :
- Aucun média de référence →
generate - Toute référence d’image →
imageToVideo - Toute référence vidéo →
videoToVideo - Les entrées audio de référence ne changent pas le mode résolu ; elles s’appliquent
par-dessus le mode sélectionné par les références image/vidéo, et ne fonctionnent
qu’avec les fournisseurs qui déclarent
maxInputAudios.
Le mélange de références image et vidéo n’est pas une surface de capacité partagée stable. Préférez un seul type de référence par requête.
Fallback et options typées
Certaines vérifications de capacité sont appliquées au niveau de fallback plutôt qu’à la limite de l’outil, de sorte qu’une requête qui dépasse les limites du fournisseur principal peut encore s’exécuter sur un fallback capable :
- Un candidat actif ne déclarant aucun
maxInputAudios(ou0) est ignoré lorsque la requête contient des références audio ; le candidat suivant est essayé. - Le
maxDurationSecondsdu candidat actif est inférieur audurationSecondsdemandé sans listesupportedDurationSecondsdéclarée → ignoré. - La requête contient
providerOptionset le candidat actif déclare explicitement un schémaproviderOptionstypé → ignoré si les clés fournies ne sont pas dans le schéma ou si les types de valeur ne correspondent pas. Les fournisseurs sans schéma déclaré reçoivent les options telles quelles (transmission rétrocompatible). Un fournisseur peut refuser toutes les options fournisseur en déclarant un schéma vide (capabilities.providerOptions: {}), ce qui provoque le même saut qu’une incompatibilité de type.
La première raison de saut dans une requête est journalisée au niveau warn afin que les opérateurs voient quand
leur fournisseur principal a été ignoré ; les sauts suivants sont journalisés au niveau debug pour
garder les longues chaînes de fallback silencieuses. Si tous les candidats sont ignorés, l’erreur
agrégée inclut la raison de saut pour chacun.
Actions
| Action | Ce qu’elle fait |
|---|---|
generate |
Par défaut. Crée une vidéo à partir du prompt donné et des entrées de référence facultatives. |
status |
Vérifie l’état de la tâche vidéo en cours pour la session actuelle sans démarrer une autre génération. |
list |
Affiche les fournisseurs, modèles et leurs capacités disponibles. |
Sélection du modèle
OpenClaw résout le modèle dans cet ordre :
- Paramètre d’outil
model- si l’agent en spécifie un dans l’appel. videoGenerationModel.primarydepuis la configuration.videoGenerationModel.fallbacksdans l’ordre.- Détection automatique - les fournisseurs qui disposent d’une authentification valide, en commençant par le fournisseur par défaut actuel, puis les fournisseurs restants par ordre alphabétique.
Si un fournisseur échoue, le candidat suivant est essayé automatiquement. Si tous les candidats échouent, l’erreur inclut les détails de chaque tentative.
Définissez agents.defaults.mediaGenerationAutoProviderFallback: false pour utiliser
uniquement les entrées explicites model, primary et fallbacks.
{
agents: {
defaults: {
videoGenerationModel: {
primary: "google/veo-3.1-fast-generate-preview",
fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
},
},
},
}
Notes sur les fournisseurs
Alibaba
Utilise le point de terminaison asynchrone DashScope / Model Studio. Les images et
vidéos de référence doivent être des URL http(s) distantes.
BytePlus (1.0)
ID du fournisseur : byteplus.
Modèles : seedance-1-0-pro-250528 (par défaut),
seedance-1-0-pro-t2v-250528, seedance-1-0-pro-fast-251015,
seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428.
Les modèles T2V (*-t2v-*) n’acceptent pas les entrées image ; les modèles I2V et
les modèles généraux *-pro-* prennent en charge une seule image de référence (première
image). Passez l’image positionnellement ou définissez role: "first_frame".
Les ID de modèle T2V sont automatiquement remplacés par la variante I2V
correspondante lorsqu’une image est fournie.
Clés providerOptions prises en charge : seed (number), draft (boolean -
force 480p), camera_fixed (boolean).
BytePlus Seedance 1.5
Nécessite le Plugin @openclaw/byteplus-modelark.
ID du fournisseur : byteplus-seedance15. Modèle :
seedance-1-5-pro-251215.
Utilise l’API unifiée content[]. Prend en charge au plus 2 images d’entrée
(first_frame + last_frame). Toutes les entrées doivent être des URL https://
distantes. Définissez role: "first_frame" / "last_frame" sur chaque image, ou
passez les images positionnellement.
aspectRatio: "adaptive" détecte automatiquement le rapport à partir de l’image d’entrée.
audio: true correspond à generate_audio. providerOptions.seed
(number) est transmis.
BytePlus Seedance 2.0
Nécessite le Plugin @openclaw/byteplus-modelark.
ID du fournisseur : byteplus-seedance2. Modèles :
dreamina-seedance-2-0-260128,
dreamina-seedance-2-0-fast-260128.
Utilise l’API unifiée content[]. Prend en charge jusqu’à 9 images de référence,
3 vidéos de référence et 3 audios de référence. Toutes les entrées doivent être des URL
https:// distantes. Définissez role sur chaque ressource - valeurs prises en charge :
"first_frame", "last_frame", "reference_image",
"reference_video", "reference_audio".
aspectRatio: "adaptive" détecte automatiquement le rapport à partir de l’image d’entrée.
audio: true correspond à generate_audio. providerOptions.seed
(number) est transmis.
ComfyUI
Exécution locale ou dans le cloud pilotée par workflow. Prend en charge le texte-vers-vidéo et l’image-vers-vidéo via le graphe configuré.
fal
Utilise un flux adossé à une file d’attente pour les tâches longues. OpenClaw attend jusqu’à 20 minutes par défaut avant de considérer une tâche de file fal en cours comme expirée. La plupart des modèles vidéo fal acceptent une seule référence d’image. Les modèles Seedance 2.0 référence-vers-vidéo acceptent jusqu’à 9 images, 3 vidéos et 3 références audio, avec au maximum 12 fichiers de référence au total.
Google (Gemini / Veo)
Prend en charge une référence d’image ou une référence vidéo. Les requêtes avec audio généré sont
ignorées avec un avertissement sur le chemin de l’API Gemini, car cette API rejette
le paramètre generateAudio pour la génération vidéo Veo actuelle.
MiniMax
Une seule référence d’image. MiniMax accepte les résolutions 768P et 1080P ;
les requêtes telles que 720P sont normalisées vers la valeur prise en charge la plus proche
avant l’envoi.
OpenAI
Seule la surcharge size est transmise. Les autres surcharges de style
(aspectRatio, resolution, audio, watermark) sont ignorées avec
un avertissement.
OpenRouter
Utilise l’API asynchrone /videos d’OpenRouter. OpenClaw soumet la
tâche, interroge polling_url et télécharge soit unsigned_urls, soit le
point de terminaison de contenu de tâche documenté. La valeur par défaut groupée google/veo-3.1-fast
annonce des durées de 4/6/8 secondes, des résolutions 720P/1080P et
des formats d’image 16:9/9:16.
Qwen
Même backend DashScope qu’Alibaba. Les entrées de référence doivent être des URL
http(s) distantes ; les fichiers locaux sont rejetés en amont.
Runway
Prend en charge les fichiers locaux via des URI de données. Le vidéo-vers-vidéo nécessite
runway/gen4_aleph. Les exécutions texte seul exposent les formats d’image
16:9 et 9:16.
Together
Une seule référence d’image.
Vydra
Utilise directement https://www.vydra.ai/api/v1 pour éviter les redirections
qui suppriment l’authentification. veo3 est groupé en texte-vers-vidéo uniquement ; kling nécessite
une URL d’image distante.
xAI
Prend en charge le texte-vers-vidéo, l’image-vers-vidéo avec une seule première image, jusqu’à 7
entrées reference_image via les reference_images de xAI, ainsi que les flux distants
de modification/extension vidéo.
Modes de capacité des fournisseurs
Le contrat partagé de génération vidéo prend en charge des capacités propres à chaque mode au lieu de simples limites agrégées à plat. Les nouvelles implémentations de fournisseurs devraient privilégier des blocs de mode explicites :
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,
},
}
Les champs agrégés à plat tels que maxInputImages et maxInputVideos ne sont
pas suffisants pour annoncer la prise en charge des modes de transformation. Les fournisseurs devraient
déclarer explicitement generate, imageToVideo et videoToVideo afin que les tests live,
les tests de contrat et l’outil partagé video_generate puissent valider
la prise en charge des modes de façon déterministe.
Lorsqu’un modèle d’un fournisseur prend en charge davantage d’entrées de référence que les
autres, utilisez maxInputImagesByModel, maxInputVideosByModel ou
maxInputAudiosByModel au lieu d’augmenter la limite globale du mode.
Tests live
Couverture live facultative pour les fournisseurs groupés partagés :
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Wrapper du dépôt :
pnpm test:live:media video
Ce fichier live charge les variables d’environnement de fournisseur manquantes depuis ~/.profile, privilégie
par défaut les clés d’API live/env par rapport aux profils d’authentification stockés, et exécute
par défaut un smoke test compatible avec les releases :
generatepour chaque fournisseur non-FAL dans le sweep.- Prompt homard d’une seconde.
- Limite d’opération par fournisseur depuis
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000par défaut).
FAL est facultatif, car la latence de file côté fournisseur peut dominer le temps de release :
pnpm test:live:media video --video-providers fal
Définissez OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1 pour exécuter également les
modes de transformation déclarés que le sweep partagé peut exercer de façon sûre avec des médias locaux :
imageToVideolorsquecapabilities.imageToVideo.enabled.videoToVideolorsquecapabilities.videoToVideo.enabledet que le fournisseur/modèle accepte une entrée vidéo locale adossée à un buffer dans le sweep partagé.
Aujourd’hui, la lane live partagée videoToVideo couvre runway uniquement lorsque vous
sélectionnez runway/gen4_aleph.
Configuration
Définissez le modèle de génération vidéo par défaut dans votre configuration OpenClaw :
{
agents: {
defaults: {
videoGenerationModel: {
primary: "qwen/wan2.6-t2v",
fallbacks: ["qwen/wan2.6-r2v-flash"],
},
},
},
}
Ou via la CLI :
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"
Connexes
- Alibaba Model Studio
- Tâches en arrière-plan - suivi des tâches pour la génération vidéo asynchrone
- BytePlus
- ComfyUI
- Référence de configuration
- fal
- Google (Gemini)
- MiniMax
- Modèles
- OpenAI
- Qwen
- Runway
- Together AI
- Vue d’ensemble des outils
- Vydra
- xAI