Tools

Generowanie wideo

Agenci OpenClaw mogą generować filmy z promptów tekstowych, obrazów referencyjnych lub istniejących filmów. Obsługiwanych jest szesnaście backendów dostawców, każdy z różnymi opcjami modeli, trybami wejściowymi i zestawami funkcji. Agent wybiera właściwego dostawcę automatycznie na podstawie konfiguracji i dostępnych kluczy API.

OpenClaw traktuje generowanie filmów jako trzy tryby wykonania:

  • generate - żądania text-to-video bez mediów referencyjnych.
  • imageToVideo - żądanie zawiera co najmniej jeden obraz referencyjny.
  • videoToVideo - żądanie zawiera co najmniej jeden film referencyjny.

Dostawcy mogą obsługiwać dowolny podzbiór tych trybów. Narzędzie weryfikuje aktywny tryb przed przesłaniem i zgłasza obsługiwane tryby w action=list.

Szybki start

  • Configure auth

    Ustaw klucz API dla dowolnego obsługiwanego dostawcy:

    bash
    export GEMINI_API_KEY="your-key"
  • Pick a default model (optional)

    bash
    openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  • Ask the agent

    Wygeneruj 5-sekundowy film kinowy przedstawiający przyjaznego homara surfującego o zachodzie słońca.

    Agent automatycznie wywołuje video_generate. Nie jest potrzebne dopuszczanie narzędzia na liście dozwolonych.

  • Jak działa generowanie asynchroniczne

    Generowanie filmów jest asynchroniczne. Gdy agent wywołuje video_generate w sesji:

    1. OpenClaw przesyła żądanie do dostawcy i natychmiast zwraca identyfikator zadania.
    2. Dostawca przetwarza zadanie w tle (zwykle od 30 sekund do kilku minut, zależnie od dostawcy i rozdzielczości; wolni dostawcy oparci na kolejkach mogą działać aż do skonfigurowanego limitu czasu).
    3. Gdy film jest gotowy, OpenClaw wznawia tę samą sesję za pomocą wewnętrznego zdarzenia ukończenia.
    4. Agent informuje użytkownika i dołącza gotowy film. W czatach grupowych/kanałowych, które używają widocznego dostarczania wyłącznie przez narzędzie wiadomości, agent przekazuje wynik przez narzędzie wiadomości zamiast publikować go bezpośrednio przez OpenClaw.

    Gdy zadanie jest w toku, zduplikowane wywołania video_generate w tej samej sesji zwracają bieżący status zadania zamiast rozpoczynać kolejne generowanie. Użyj openclaw tasks list albo openclaw tasks show <taskId>, aby sprawdzić postęp z CLI.

    Poza uruchomieniami agentów opartymi na sesji (na przykład przy bezpośrednich wywołaniach narzędzi) narzędzie przełącza się na generowanie inline i zwraca ścieżkę do końcowego medium w tej samej turze.

    Wygenerowane pliki filmowe są zapisywane w zarządzanym przez OpenClaw magazynie mediów, gdy dostawca zwraca bajty. Domyślny limit zapisu wygenerowanych filmów jest zgodny z limitem mediów wideo, a agents.defaults.mediaMaxMb podnosi go dla większych renderów. Gdy dostawca zwraca również hostowany URL wyjściowy, OpenClaw może dostarczyć ten URL zamiast oznaczać zadanie jako nieudane, jeśli lokalne utrwalenie odrzuci zbyt duży plik.

    Cykl życia zadania

    Stan Znaczenie
    queued Zadanie utworzone, oczekuje na przyjęcie przez dostawcę.
    running Dostawca przetwarza (zwykle od 30 sekund do kilku minut, zależnie od dostawcy i rozdzielczości).
    succeeded Film gotowy; agent wznawia działanie i publikuje go w rozmowie.
    failed Błąd dostawcy albo limit czasu; agent wznawia działanie ze szczegółami błędu.

    Sprawdź status z CLI:

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

    Jeśli zadanie filmowe jest już w stanie queued albo running dla bieżącej sesji, video_generate zwraca status istniejącego zadania zamiast rozpoczynać nowe. Użyj action: "status", aby sprawdzić jawnie bez wyzwalania nowego generowania.

    Obsługiwani dostawcy

    Dostawca Model domyślny Tekst Obraz ref. Film ref. Uwierzytelnianie
    Alibaba wan2.6-t2v Tak (zdalny URL) Tak (zdalny URL) MODELSTUDIO_API_KEY
    BytePlus (1.0) seedance-1-0-pro-250528 Do 2 obrazów (tylko modele I2V; pierwsza + ostatnia klatka) - BYTEPLUS_API_KEY
    BytePlus Seedance 1.5 seedance-1-5-pro-251215 Do 2 obrazów (pierwsza + ostatnia klatka przez rolę) - BYTEPLUS_API_KEY
    BytePlus Seedance 2.0 dreamina-seedance-2-0-260128 Do 9 obrazów referencyjnych Do 3 filmów BYTEPLUS_API_KEY
    ComfyUI workflow 1 obraz - COMFY_API_KEY lub COMFY_CLOUD_API_KEY
    DeepInfra Pixverse/Pixverse-T2V - - DEEPINFRA_API_KEY
    fal fal-ai/minimax/video-01-live 1 obraz; do 9 z Seedance reference-to-video Do 3 filmów z Seedance reference-to-video FAL_KEY
    Google veo-3.1-fast-generate-preview 1 obraz 1 film GEMINI_API_KEY
    MiniMax MiniMax-Hailuo-2.3 1 obraz - MINIMAX_API_KEY lub MiniMax OAuth
    OpenAI sora-2 1 obraz 1 film OPENAI_API_KEY
    OpenRouter google/veo-3.1-fast Do 4 obrazów (pierwsza/ostatnia klatka albo referencje) - OPENROUTER_API_KEY
    Qwen wan2.6-t2v Tak (zdalny URL) Tak (zdalny URL) QWEN_API_KEY
    Runway gen4.5 1 obraz 1 film RUNWAYML_API_SECRET
    Together Wan-AI/Wan2.2-T2V-A14B 1 obraz - TOGETHER_API_KEY
    Vydra veo3 1 obraz (kling) - VYDRA_API_KEY
    xAI grok-imagine-video 1 obraz pierwszej klatki albo do 7 reference_images 1 film XAI_API_KEY

    Niektórzy dostawcy akceptują dodatkowe albo alternatywne zmienne środowiskowe kluczy API. Szczegóły znajdziesz na poszczególnych stronach dostawców.

    Uruchom video_generate action=list, aby sprawdzić dostępnych dostawców, modele i tryby wykonania w czasie działania.

    Macierz możliwości

    Jawny kontrakt trybów używany przez video_generate, testy kontraktowe i wspólny live sweep:

    Dostawca generate imageToVideo videoToVideo Dzisiejsze współdzielone ścieżki live
    Alibaba generate, imageToVideo; videoToVideo pominięte, ponieważ ten dostawca wymaga zdalnych URL-i filmów http(s)
    BytePlus - generate, imageToVideo
    ComfyUI - Nie jest we wspólnym sweepie; pokrycie specyficzne dla workflow znajduje się w testach Comfy
    DeepInfra - - generate; natywne schematy filmów DeepInfra w dołączonym kontrakcie są typu text-to-video
    fal generate, imageToVideo; videoToVideo tylko przy użyciu Seedance reference-to-video
    Google generate, imageToVideo; współdzielone videoToVideo pominięte, ponieważ bieżący sweep Gemini/Veo oparty na buforach nie akceptuje tego wejścia
    MiniMax - generate, imageToVideo
    OpenAI generate, imageToVideo; współdzielone videoToVideo pominięte, ponieważ ta organizacja/ścieżka wejścia obecnie wymaga dostępu do inpaint/remix po stronie dostawcy
    OpenRouter - generate, imageToVideo
    Qwen generate, imageToVideo; videoToVideo pominięte, ponieważ ten dostawca wymaga zdalnych URL-i filmów http(s)
    Runway generate, imageToVideo; videoToVideo działa tylko wtedy, gdy wybrany model to runway/gen4_aleph
    Together - generate, imageToVideo
    Vydra - generate; współdzielone imageToVideo pominięte, ponieważ dołączony veo3 obsługuje tylko tekst, a dołączony kling wymaga zdalnego URL-a obrazu
    xAI generate, imageToVideo; videoToVideo pominięte, ponieważ ten dostawca obecnie wymaga zdalnego URL-a MP4

    Parametry narzędzia

    Wymagane

    promptstringrequired

    Tekstowy opis filmu do wygenerowania. Wymagane dla action: "generate".

    Dane wejściowe treści

    imagestring
    imagesstring[]
    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.

    videostring
    videosstring[]
    videoRolesstring[]

    Opcjonalne wskazówki ról dla poszczególnych pozycji, równoległe do połączonej listy wideo. Wartość kanoniczna: reference_video.

    audioRefstring

    Pojedyncze audio referencyjne (ścieżka lub URL). Używane jako muzyka w tle lub referencja głosu, 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.

    Sterowanie stylem

    aspectRatiostring

    Wskazówka proporcji obrazu, taka jak 1:1, 16:9, 9:16, adaptive albo wartość specyficzna dla dostawcy. OpenClaw normalizuje lub 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 albo wartość specyficzna dla dostawcy. OpenClaw normalizuje lub ignoruje nieobsługiwane wartości zależnie od dostawcy. OPENCLAW_DOCS_MARKER:paramClose:

    durationSecondsnumber

    Docelowy czas trwania w sekundach (zaokrąglany do najbliższej wartości obsługiwanej przez dostawcę).

    sizestring
    audioboolean

    Włącz generowane audio w wyniku, gdy jest obsługiwane. Różni się od audioRef* (wejścia).

    watermarkboolean

    adaptive to wartownik specyficzny 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 na podstawie wymiarów obrazu wejściowego). Dostawcy, którzy go nie deklarują, ujawniają tę wartość przez details.ignoredOverrides w wyniku narzędzia, aby odrzucenie było widoczne.

    Zaawansowane

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

    "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:

    filenamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Opcjonalny limit czasu operacji dostawcy w milisekundach. Gdy pominięty, OpenClaw używa agents.defaults.videoGenerationModel.timeoutMs, jeśli jest skonfigurowany. OPENCLAW_DOCS_MARKER:paramClose:

    providerOptionsobject

    Opcje specyficzne dla dostawcy jako obiekt JSON (np. {"seed": 42, "draft": true}). Dostawcy deklarujący typowany schemat walidują klucze i typy; nieznane klucze lub niezgodności pomijają kandydata podczas fallbacku. 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 runtime:

    • Brak mediów referencyjnych → generate
    • Dowolna referencja obrazu → imageToVideo
    • Dowolna referencja wideo → videoToVideo
    • Referencyjne wejścia audio nie zmieniają rozwiązanego trybu; stosują się ponad trybem wybranym przez referencje obrazu/wideo i działają tylko z dostawcami deklarującymi maxInputAudios.

    Mieszane referencje obrazów i wideo nie są stabilną wspólną powierzchnią możliwości. Preferuj jeden typ referencji na żądanie.

    Fallback i typowane opcje

    Niektóre kontrole możliwości są stosowane w warstwie fallbacku, a nie na granicy narzędzia, więc żądanie przekraczające limity głównego dostawcy może nadal zostać uruchomione u obsługującego fallbacku:

    • Aktywny kandydat niedeklarujący maxInputAudios (lub deklarujący 0) jest pomijany, gdy żądanie zawiera referencje audio; próbowany jest następny kandydat.
    • maxDurationSeconds aktywnego kandydata poniżej żądanego durationSeconds bez zadeklarowanej listy supportedDurationSeconds → pomijany.
    • Żądanie zawiera providerOptions, a aktywny kandydat jawnie deklaruje typowany schemat providerOptions → pomijany, jeśli podane klucze nie znajdują się w schemacie lub typy wartości nie pasują. Dostawcy bez zadeklarowanego schematu otrzymują opcje bez zmian (zgodne wstecznie 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 fallbacków pozostał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 wideo z podanego promptu i opcjonalnych wejść referencyjnych.
    status Sprawdza stan zadania wideo w toku dla bieżącej sesji bez rozpoczynania 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:

    1. Parametr narzędzia model - jeśli agent określi go w wywołaniu.
    2. videoGenerationModel.primary z konfiguracji.
    3. videoGenerationModel.fallbacks w kolejności.
    4. Automatyczne wykrywanie - dostawcy z prawidłowym uwierzytelnieniem, zaczynając od bieżącego dostawcy domyślnego, a następnie pozostali dostawcy w kolejności alfabetycznej.

    Jeśli dostawca zawiedzie, automatycznie próbowany jest następny kandydat. Jeśli wszyscy kandydaci zawiodą, błąd zawiera szczegóły każdej próby.

    Ustaw agents.defaults.mediaGenerationAutoProviderFallback: false, aby używać tylko jawnych wpisów model, primary i fallbacks.

    json5
    {  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 endpointu DashScope / Model Studio. Obrazy i wideo referencyjne muszą być zdalnymi URL-ami http(s).

    BytePlus (1.0)

    ID 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 i ogólne modele *-pro-* obsługują pojedynczy obraz referencyjny (pierwszą klatkę). Przekaż obraz pozycyjnie lub ustaw role: "first_frame". Identyfikatory modeli T2V są automatycznie przełączane na odpowiadający wariant I2V, gdy podano obraz.

    Obsługiwane klucze providerOptions: seed (number), draft (boolean - wymusza 480p), camera_fixed (boolean).

    BytePlus Seedance 1.5

    Wymaga Pluginu @openclaw/byteplus-modelark. ID dostawcy: byteplus-seedance15. Model: seedance-1-5-pro-251215.

    Używa zunifikowanego 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 na podstawie obrazu wejściowego. audio: true mapuje się na generate_audio. providerOptions.seed (number) jest przekazywane dalej.

    BytePlus Seedance 2.0

    Wymaga Pluginu @openclaw/byteplus-modelark. ID dostawcy: byteplus-seedance2. Modele: dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128.

    Używa zunifikowanego API content[]. Obsługuje do 9 obrazów referencyjnych, 3 wideo referencyjne i 3 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 na podstawie obrazu wejściowego. audio: true mapuje się na generate_audio. providerOptions.seed (number) jest przekazywane dalej.

    ComfyUI

    Wykonywanie lokalne lub w chmurze sterowane przepływem pracy. Obsługuje text-to-video oraz image-to-video przez skonfigurowany graf.

    fal

    Używa przepływu opartego na kolejce dla długotrwałych zadań. OpenClaw domyślnie czeka do 20 minut, zanim uzna trwające zadanie kolejki 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, przy maksymalnie 12 plikach referencyjnych łącznie.

    Google (Gemini / Veo)

    Obsługuje jedno odwołanie do obrazu albo jedno odwołanie do wideo. Żądania wygenerowanego dźwięku są ignorowane z ostrzeżeniem na ścieżce Gemini API, ponieważ ten 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ą normalizowane do najbliższej obsługiwanej wartości przed wysłaniem.

    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 endpoint zawartości zadania. Dołączony domyślny model 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. Dane wejściowe referencji muszą być zdalnymi adresami URL http(s); pliki lokalne są odrzucane z góry.

    Runway

    Obsługuje pliki lokalne przez URI danych. Video-to-video wymaga runway/gen4_aleph. Uruchomienia tylko 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ń usuwających uwierzytelnienie. veo3 jest dołączony tylko jako text-to-video; kling wymaga zdalnego adresu URL obrazu.

    xAI

    Obsługuje text-to-video, image-to-video z pojedynczą pierwszą klatką, do 7 danych wejściowych reference_image przez xAI reference_images oraz zdalne przepływy edycji/rozszerzania wideo.

    Tryby możliwości dostawców

    Wspólny kontrakt generowania wideo obsługuje możliwości specyficzne dla trybu zamiast wyłącznie płaskich limitów zbiorczych. Nowe implementacje dostawców powinny preferować jawne bloki trybów:

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

    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 na żywo, 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 na żywo

    Opcjonalne pokrycie testami na żywo dla wspólnych dołączonych dostawców:

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

    Wrapper repozytorium:

    bash
    pnpm test:live:media video

    Ten plik testów na żywo ładuje brakujące zmienne środowiskowe dostawców z ~/.profile, domyślnie preferuje klucze API live/env przed zapisanymi profilami uwierzytelniania i domyślnie uruchamia smoke test bezpieczny dla wydania:

    • generate dla każdego dostawcy spoza FAL w przeglądzie.
    • Jednosekundowy prompt z homarem.
    • Limit operacji na dostawcę z OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (domyślnie 180000).

    FAL jest opcjonalny, ponieważ opóźnienie kolejki po stronie dostawcy może zdominować czas wydania:

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

    Ustaw OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, aby uruchamiać także zadeklarowane tryby transformacji, które wspólny przegląd może bezpiecznie wykonać z lokalnymi mediami:

    • imageToVideo, gdy capabilities.imageToVideo.enabled.
    • videoToVideo, gdy capabilities.videoToVideo.enabled i dostawca/model akceptuje lokalne wejście wideo oparte na buforze we wspólnym przeglądzie.

    Obecnie wspólna ścieżka testów na żywo videoToVideo obejmuje runway tylko wtedy, gdy wybierzesz runway/gen4_aleph.

    Konfiguracja

    Ustaw domyślny model generowania wideo w konfiguracji OpenClaw:

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

    Albo przez CLI:

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

    Powiązane

    Was this useful?