Tools
Generowanie wideo
OpenClaw agents can generate videos from text prompts, reference images, or existing videos. Sixteen provider backends are supported, each with different model options, input modes, and feature sets. The agent picks the right provider automatically based on your configuration and available API keys.
OpenClaw treats video generation as three runtime modes:
generate- text-to-video requests with no reference media.imageToVideo- request includes one or more reference images.videoToVideo- request includes one or more reference videos.
Providers can support any subset of those modes. The tool validates the
active mode before submission and reports supported modes in action=list.
Quick start
Configure auth
Set an API key for any supported provider:
export GEMINI_API_KEY="your-key"
Pick a default model (optional)
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
Ask the agent
Generate a 5-second cinematic video of a friendly lobster surfing at sunset.
The agent calls video_generate automatically. No tool allowlisting
is needed.
How async generation works
Video generation is asynchronous. When the agent calls video_generate in a
session:
- OpenClaw submits the request to the provider and immediately returns a task id.
- The provider processes the job in the background (typically 30 seconds to several minutes depending on the provider and resolution; slow queue-backed providers can run up to the configured timeout).
- When the video is ready, OpenClaw wakes the same session with an internal completion event.
- The agent tells the user and attaches the finished video. In group/channel chats that use message-tool-only visible delivery, the agent relays the result through the message tool instead of OpenClaw posting it directly.
While a job is in flight, duplicate video_generate calls in the same
session return the current task status instead of starting another
generation. Use openclaw tasks list or openclaw tasks show <taskId> to
check progress from the CLI.
Outside of session-backed agent runs (for example, direct tool invocations), the tool falls back to inline generation and returns the final media path in the same turn.
Generated video files are saved under OpenClaw-managed media storage when
the provider returns bytes. The default generated-video save cap follows
the video media limit, and agents.defaults.mediaMaxMb raises it for
larger renders. When a provider also returns a hosted output URL, OpenClaw
can deliver that URL instead of failing the task if local persistence
rejects an oversized file.
Task lifecycle
| State | Meaning |
|---|---|
queued |
Task created, waiting for the provider to accept it. |
running |
Provider is processing (typically 30 seconds to several minutes depending on provider and resolution). |
succeeded |
Video ready; the agent wakes and posts it to the conversation. |
failed |
Provider error or timeout; the agent wakes with error details. |
Check status from the CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
If a video task is already queued or running for the current session,
video_generate returns the existing task status instead of starting a new
one. Use action: "status" to check explicitly without triggering a new
generation.
Supported providers
| Provider | Default model | Text | Image ref | Video ref | Auth |
|---|---|---|---|---|---|
| Alibaba | wan2.6-t2v |
✓ | Yes (remote URL) | Yes (remote URL) | MODELSTUDIO_API_KEY |
| BytePlus (1.0) | seedance-1-0-pro-250528 |
✓ | Up to 2 images (I2V models only; first + last frame) | - | BYTEPLUS_API_KEY |
| BytePlus Seedance 1.5 | seedance-1-5-pro-251215 |
✓ | Up to 2 images (first + last frame via role) | - | BYTEPLUS_API_KEY |
| BytePlus Seedance 2.0 | dreamina-seedance-2-0-260128 |
✓ | Up to 9 reference images | Up to 3 videos | BYTEPLUS_API_KEY |
| ComfyUI | workflow |
✓ | 1 image | - | COMFY_API_KEY or COMFY_CLOUD_API_KEY |
| DeepInfra | Pixverse/Pixverse-T2V |
✓ | - | - | DEEPINFRA_API_KEY |
| fal | fal-ai/minimax/video-01-live |
✓ | 1 image; up to 9 with Seedance reference-to-video | Up to 3 videos with Seedance reference-to-video | FAL_KEY |
veo-3.1-fast-generate-preview |
✓ | 1 image | 1 video | GEMINI_API_KEY |
|
| MiniMax | MiniMax-Hailuo-2.3 |
✓ | 1 image | - | MINIMAX_API_KEY or MiniMax OAuth |
| OpenAI | sora-2 |
✓ | 1 image | 1 video | OPENAI_API_KEY |
| OpenRouter | google/veo-3.1-fast |
✓ | Up to 4 images (first/last frame or references) | - | OPENROUTER_API_KEY |
| Qwen | wan2.6-t2v |
✓ | Yes (remote URL) | Yes (remote URL) | QWEN_API_KEY |
| Runway | gen4.5 |
✓ | 1 image | 1 video | 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 first-frame image or up to 7 reference_images |
1 video | XAI_API_KEY |
Some providers accept additional or alternate API key env vars. See individual provider pages for details.
Run video_generate action=list to inspect available providers, models, and
runtime modes at runtime.
Capability matrix
The explicit mode contract used by video_generate, contract tests, and
the shared live sweep:
| Provider | generate |
imageToVideo |
videoToVideo |
Shared live lanes today |
|---|---|---|---|---|
| Alibaba | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo skipped because this provider needs remote http(s) video URLs |
| BytePlus | ✓ | ✓ | - | generate, imageToVideo |
| ComfyUI | ✓ | ✓ | - | Not in the shared sweep; workflow-specific coverage lives with Comfy tests |
| DeepInfra | ✓ | - | - | generate; native DeepInfra video schemas are text-to-video in the bundled contract |
| fal | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo only when using Seedance reference-to-video |
| ✓ | ✓ | ✓ | generate, imageToVideo; shared videoToVideo skipped because the current buffer-backed Gemini/Veo sweep does not accept that input |
|
| MiniMax | ✓ | ✓ | - | generate, imageToVideo |
| OpenAI | ✓ | ✓ | ✓ | generate, imageToVideo; shared videoToVideo skipped because this org/input path currently needs provider-side inpaint/remix access |
| OpenRouter | ✓ | ✓ | - | generate, imageToVideo |
| Qwen | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo skipped because this provider needs remote http(s) video URLs |
| Runway | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo runs only when the selected model is runway/gen4_aleph |
| Together | ✓ | ✓ | - | generate, imageToVideo |
| Vydra | ✓ | ✓ | - | generate; shared imageToVideo skipped because bundled veo3 is text-only and bundled kling requires a remote image URL |
| xAI | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo skipped because this provider currently needs a remote MP4 URL |
Tool parameters
Required
promptstringrequiredText description of the video to generate. Required for action: "generate".
Content inputs
imagestringimagesstring[]imageRolesstring[]Opcjonalne wskazówki ról dla poszczególnych pozycji, równoległe do połączonej listy obrazów.
Wartości kanoniczne: first_frame, last_frame, reference_image.
videostringvideosstring[]videoRolesstring[]Opcjonalne wskazówki ról dla poszczególnych pozycji, równoległe do połączonej listy filmów.
Wartość kanoniczna: reference_video.
audioRefstringPojedyncze audio referencyjne (ścieżka lub URL). Używane do muzyki w tle lub odniesienia głosowego, gdy dostawca obsługuje wejścia audio.
audioRefsstring[]audioRolesstring[]Opcjonalne wskazówki ról dla poszczególnych pozycji, równoległe do połączonej listy audio.
Wartość kanoniczna: reference_audio.
Kontrolki stylu
aspectRatiostringWskazówka proporcji obrazu, taka jak 1:1, 16:9, 9:16, adaptive lub wartość specyficzna dla dostawcy. OpenClaw normalizuje albo ignoruje nieobsługiwane wartości zależnie od dostawcy.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc29sdXRpb24iIHR5cGU9InN0cmluZyI
Wskazówka rozdzielczości, taka jak 480P, 720P, 768P, 1080P, 4K lub wartość specyficzna dla dostawcy. OpenClaw normalizuje albo ignoruje nieobsługiwane wartości zależnie od dostawcy.
OPENCLAW_DOCS_MARKER:paramClose:
durationSecondsnumberDocelowy czas trwania w sekundach (zaokrąglany do najbliższej wartości obsługiwanej przez dostawcę).
sizestringaudiobooleanWłącz wygenerowane audio w wyniku, gdy jest obsługiwane. Odrębne od audioRef* (wejść).
watermarkbooleanadaptive jest znacznikiem specyficznym dla dostawcy: jest przekazywany bez zmian do
dostawców, którzy deklarują adaptive w swoich możliwościach (np. BytePlus
Seedance używa go do automatycznego wykrywania proporcji z wymiarów
obrazu wejściowego). Dostawcy, którzy go nie deklarują, ujawniają wartość przez
details.ignoredOverrides w wyniku narzędzia, aby pominięcie było widoczne.
Zaawansowane
action"generate" | "status" | "list""status" zwraca bieżące zadanie sesji; "list" sprawdza dostawców.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Nadpisanie dostawcy/modelu (np. runway/gen4.5).
OPENCLAW_DOCS_MARKER:paramClose:
filenamestringtimeoutMsnumberproviderOptionsobjectOpcje specyficzne dla dostawcy jako obiekt JSON (np. {"seed": 42, "draft": true}).
Dostawcy, którzy deklarują typowany schemat, weryfikują klucze i typy; nieznane
klucze lub niezgodności pomijają kandydata podczas przełączania awaryjnego. Dostawcy bez
zadeklarowanego schematu otrzymują opcje bez zmian. Uruchom video_generate action=list,
aby zobaczyć, co akceptuje każdy dostawca.
Wejścia referencyjne wybierają tryb uruchomieniowy:
- Brak mediów referencyjnych →
generate - Dowolna referencja obrazu →
imageToVideo - Dowolna referencja filmu →
videoToVideo - Wejścia audio referencyjnego nie zmieniają rozwiązanego trybu; są stosowane
na wierzchu trybu wybranego przez referencje obrazu/filmu i działają tylko
z dostawcami, którzy deklarują
maxInputAudios.
Mieszane referencje obrazów i filmów nie są stabilną wspólną powierzchnią możliwości. Preferuj jeden typ referencji na żądanie.
Przełączanie awaryjne i typowane opcje
Niektóre kontrole możliwości są stosowane w warstwie przełączania awaryjnego, a nie na granicy narzędzia, więc żądanie przekraczające limity głównego dostawcy może nadal zostać uruchomione u zdolnego dostawcy awaryjnego:
- Aktywny kandydat, który nie deklaruje
maxInputAudios(lub deklaruje0), jest pomijany, gdy żądanie zawiera referencje audio; próbowany jest następny kandydat. maxDurationSecondsaktywnego kandydata poniżej żądanegodurationSecondsbez zadeklarowanej listysupportedDurationSeconds→ pomijany.- Żądanie zawiera
providerOptions, a aktywny kandydat jawnie deklaruje typowany schematproviderOptions→ pomijany, jeśli podane klucze nie znajdują się w schemacie lub typy wartości nie pasują. Dostawcy bez zadeklarowanego schematu otrzymują opcje bez zmian (wstecznie zgodne przekazanie). Dostawca może zrezygnować ze wszystkich opcji dostawcy przez zadeklarowanie pustego schematu (capabilities.providerOptions: {}), co powoduje takie samo pominięcie jak niezgodność typu.
Pierwszy powód pominięcia w żądaniu jest logowany na poziomie warn, aby operatorzy widzieli, kiedy
ich główny dostawca został pominięty; kolejne pominięcia są logowane na poziomie debug, aby
długie łańcuchy przełączania awaryjnego pozostawały ciche. Jeśli każdy kandydat zostanie pominięty,
zagregowany błąd zawiera powód pominięcia dla każdego z nich.
Akcje
| Akcja | Co robi |
|---|---|
generate |
Domyślna. Tworzy film z podanego promptu i opcjonalnych wejść referencyjnych. |
status |
Sprawdza stan zadania filmowego w toku dla bieżącej sesji bez uruchamiania kolejnego generowania. |
list |
Pokazuje dostępnych dostawców, modele i ich możliwości. |
Wybór modelu
OpenClaw rozwiązuje model w tej kolejności:
- Parametr narzędzia
model- jeśli agent określi go w wywołaniu. videoGenerationModel.primaryz konfiguracji.videoGenerationModel.fallbacksw kolejności.- Automatyczne wykrywanie - dostawcy z prawidłowym uwierzytelnieniem, zaczynając od bieżącego domyślnego dostawcy, a następnie pozostali dostawcy w kolejności alfabetycznej.
Jeśli dostawca zawiedzie, następny kandydat jest próbowany automatycznie. Jeśli wszyscy kandydaci zawiodą, błąd zawiera szczegóły z każdej próby.
Ustaw agents.defaults.mediaGenerationAutoProviderFallback: false, aby używać
tylko jawnych wpisów model, primary i fallbacks.
{
agents: {
defaults: {
videoGenerationModel: {
primary: "google/veo-3.1-fast-generate-preview",
fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
},
},
},
}
Uwagi o dostawcach
Alibaba
Używa asynchronicznego punktu końcowego DashScope / Model Studio. Obrazy i
filmy referencyjne muszą być zdalnymi URL-ami http(s).
BytePlus (1.0)
Identyfikator dostawcy: byteplus.
Modele: seedance-1-0-pro-250528 (domyślny),
seedance-1-0-pro-t2v-250528, seedance-1-0-pro-fast-251015,
seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428.
Modele T2V (*-t2v-*) nie akceptują wejść obrazów; modele I2V oraz
ogólne modele *-pro-* obsługują pojedynczy obraz referencyjny (pierwszą
klatkę). Przekaż obraz pozycyjnie albo ustaw role: "first_frame".
Identyfikatory modeli T2V są automatycznie przełączane na odpowiadający im
wariant I2V, gdy podany jest obraz.
Obsługiwane klucze providerOptions: seed (liczba), draft (wartość logiczna -
wymusza 480p), camera_fixed (wartość logiczna).
BytePlus Seedance 1.5
Wymaga Plugin @openclaw/byteplus-modelark.
Identyfikator dostawcy: byteplus-seedance15. Model:
seedance-1-5-pro-251215.
Używa ujednoliconego API content[]. Obsługuje najwyżej 2 obrazy wejściowe
(first_frame + last_frame). Wszystkie wejścia muszą być zdalnymi URL-ami https://.
Ustaw role: "first_frame" / "last_frame" na każdym obrazie albo
przekaż obrazy pozycyjnie.
aspectRatio: "adaptive" automatycznie wykrywa proporcje z obrazu wejściowego.
audio: true mapuje się na generate_audio. providerOptions.seed
(liczba) jest przekazywany dalej.
BytePlus Seedance 2.0
Wymaga Plugin @openclaw/byteplus-modelark.
Identyfikator dostawcy: byteplus-seedance2. Modele:
dreamina-seedance-2-0-260128,
dreamina-seedance-2-0-fast-260128.
Używa ujednoliconego API content[]. Obsługuje do 9 obrazów referencyjnych,
3 filmy referencyjne i 3 pliki audio referencyjne. Wszystkie wejścia muszą być zdalnymi
URL-ami https://. Ustaw role na każdym zasobie - obsługiwane wartości:
"first_frame", "last_frame", "reference_image",
"reference_video", "reference_audio".
aspectRatio: "adaptive" automatycznie wykrywa proporcje z obrazu wejściowego.
audio: true mapuje się na generate_audio. providerOptions.seed
(liczba) jest przekazywany dalej.
ComfyUI
Wykonywanie lokalne lub w chmurze sterowane przepływem pracy. Obsługuje konwersję tekstu na wideo i obrazu na wideo za pomocą skonfigurowanego grafu.
fal
Używa przepływu opartego na kolejce dla długotrwałych zadań. OpenClaw czeka domyślnie do 20 minut, zanim uzna trwające zadanie w kolejce fal za przekroczone czasowo. Większość modeli wideo fal akceptuje pojedyncze odwołanie do obrazu. Modele Seedance 2.0 reference-to-video akceptują do 9 obrazów, 3 wideo i 3 odwołań audio, z maksymalnie 12 plikami referencyjnymi łącznie.
Google (Gemini / Veo)
Obsługuje jedno odwołanie do obrazu lub jedno odwołanie do wideo. Żądania
wygenerowanego audio są ignorowane z ostrzeżeniem na ścieżce API Gemini,
ponieważ ten interfejs API odrzuca parametr generateAudio dla bieżącego
generowania wideo Veo.
MiniMax
Tylko pojedyncze odwołanie do obrazu. MiniMax akceptuje rozdzielczości
768P i 1080P; żądania takie jak 720P są przed wysłaniem normalizowane
do najbliższej obsługiwanej wartości.
OpenAI
Przekazywane jest tylko nadpisanie size. Inne nadpisania stylu
(aspectRatio, resolution, audio, watermark) są ignorowane z
ostrzeżeniem.
OpenRouter
Używa asynchronicznego API /videos OpenRouter. OpenClaw wysyła zadanie,
odpytuje polling_url i pobiera unsigned_urls albo udokumentowany punkt
końcowy treści zadania. Dołączona domyślna wartość google/veo-3.1-fast
deklaruje czasy trwania 4/6/8 sekund, rozdzielczości 720P/1080P oraz
proporcje obrazu 16:9/9:16.
Qwen
Ten sam backend DashScope co Alibaba. Wejścia referencyjne muszą być zdalnymi
adresami URL http(s); pliki lokalne są odrzucane z góry.
Runway
Obsługuje pliki lokalne przez identyfikatory URI danych. Konwersja wideo na
wideo wymaga runway/gen4_aleph. Uruchomienia wyłącznie tekstowe udostępniają
proporcje obrazu 16:9 i 9:16.
Together
Tylko pojedyncze odwołanie do obrazu.
Vydra
Używa bezpośrednio https://www.vydra.ai/api/v1, aby uniknąć przekierowań
porzucających uwierzytelnianie. veo3 jest dołączony wyłącznie jako
konwersja tekstu na wideo; kling wymaga zdalnego adresu URL obrazu.
xAI
Obsługuje konwersję tekstu na wideo, konwersję pojedynczego obrazu pierwszej
klatki na wideo, do 7 wejść reference_image przez xAI reference_images
oraz zdalne przepływy edycji/rozszerzania wideo.
Tryby możliwości dostawcy
Wspólny kontrakt generowania wideo obsługuje możliwości specyficzne dla trybu zamiast tylko płaskich limitów zbiorczych. Nowe implementacje dostawców powinny preferować jawne bloki trybów:
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,
},
}
Płaskie pola zbiorcze, takie jak maxInputImages i maxInputVideos, nie
wystarczają do deklarowania obsługi trybu transformacji. Dostawcy powinni jawnie
deklarować generate, imageToVideo i videoToVideo, aby testy live, testy
kontraktu i wspólne narzędzie video_generate mogły deterministycznie
weryfikować obsługę trybów.
Gdy jeden model u dostawcy ma szerszą obsługę wejść referencyjnych niż pozostałe,
użyj maxInputImagesByModel, maxInputVideosByModel albo
maxInputAudiosByModel zamiast podnosić limit dla całego trybu.
Testy live
Opcjonalne pokrycie live dla wspólnych dołączonych dostawców:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Wrapper repozytorium:
pnpm test:live:media video
Ten plik live ładuje brakujące zmienne środowiskowe dostawców z ~/.profile,
domyślnie preferuje klucze API live/env przed zapisanymi profilami
uwierzytelniania i domyślnie uruchamia bezpieczny dla wydania smoke test:
generatedla każdego dostawcy spoza FAL w przebiegu.- Jednosekundowy prompt z homarem.
- Limit operacji dla każdego dostawcy z
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(domyślnie180000).
FAL jest opcjonalny, ponieważ opóźnienie kolejki po stronie dostawcy może dominować czas wydania:
pnpm test:live:media video --video-providers fal
Ustaw OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, aby uruchomić także
zadeklarowane tryby transformacji, które wspólny przebieg może bezpiecznie
wykonać z mediami lokalnymi:
imageToVideo, gdycapabilities.imageToVideo.enabled.videoToVideo, gdycapabilities.videoToVideo.enabledi dostawca/model akceptuje wejściowe lokalne wideo oparte na buforze we wspólnym przebiegu.
Obecnie wspólna ścieżka live videoToVideo obejmuje runway tylko wtedy, gdy
wybierzesz runway/gen4_aleph.
Konfiguracja
Ustaw domyślny model generowania wideo w konfiguracji OpenClaw:
{
agents: {
defaults: {
videoGenerationModel: {
primary: "qwen/wan2.6-t2v",
fallbacks: ["qwen/wan2.6-r2v-flash"],
},
},
},
}
Albo przez CLI:
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"
Powiązane
- Alibaba Model Studio
- Zadania w tle - śledzenie zadań dla asynchronicznego generowania wideo
- BytePlus
- ComfyUI
- Odwołanie konfiguracji
- fal
- Google (Gemini)
- MiniMax
- Modele
- OpenAI
- Qwen
- Runway
- Together AI
- Przegląd narzędzi
- Vydra
- xAI