Tools

Генерація відео

Агенти OpenClaw створюють відео з текстових запитів, референсних зображень або наявних відео за допомогою video_generate. Підтримується шістнадцять серверних реалізацій постачальників; агент автоматично вибирає відповідну на основі конфігурації та доступних ключів API.

video_generate має три режими виконання, які визначаються за референсними вхідними даними у виклику:

  • generate — без референсних медіафайлів (перетворення тексту на відео).
  • imageToVideo — одне або кілька референсних зображень.
  • videoToVideo — одне або кілька референсних відео.

Постачальники можуть підтримувати будь-яку підмножину цих режимів. Інструмент перевіряє активний режим перед надсиланням і повідомляє про підтримувані режими в action=list.

Швидкий початок

  • Налаштуйте автентифікацію

    Задайте ключ API для будь-якого підтримуваного постачальника:

    bash
    export GEMINI_API_KEY="your-key"
  • Виберіть модель за замовчуванням (необов’язково)

    bash
    openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  • Зверніться до агента

    Створи 5-секундне кінематографічне відео, у якому доброзичливий омар катається на серфінгу на заході сонця.

    Агент автоматично викликає video_generate. Додавати інструмент до списку дозволених не потрібно.

  • Як працює асинхронне генерування

    Генерування відео відбувається асинхронно:

    1. OpenClaw надсилає запит постачальнику та негайно повертає ідентифікатор завдання.
    2. Постачальник обробляє завдання у фоновому режимі (зазвичай від 30 секунд до кількох хвилин залежно від постачальника та роздільної здатності; повільні постачальники з чергами можуть працювати до завершення налаштованого часу очікування).
    3. Коли відео готове, OpenClaw активує той самий сеанс внутрішньою подією завершення.
    4. Агент повідомляє про результат у звичайному для сеансу режимі видимої відповіді: автоматичною остаточною відповіддю або через message(action="send"), якщо сеанс вимагає використання інструмента повідомлень. Якщо сеанс запитувача неактивний або його не вдається активувати й згенерований медіафайл досі відсутній у відповіді про завершення, OpenClaw надсилає ідемпотентну пряму резервну відповідь із медіафайлом.

    Поки завдання виконується, повторні виклики video_generate у тому самому сеансі повертають поточний стан завдання замість запуску нового генерування. Використовуйте action: "status" для перевірки без запуску нового генерування або openclaw tasks list / openclaw tasks show <lookup> у CLI (див. Фонові завдання).

    Поза запусками агента, пов’язаними із сеансом (наприклад, під час прямих викликів інструмента), інструмент переходить до вбудованого генерування та повертає шлях до готового медіафайлу в межах того самого ходу.

    Згенеровані відеофайли зберігаються в керованому OpenClaw сховищі медіафайлів, якщо постачальник повертає байти. Обмеження за замовчуванням становить 16 МБ (спільне обмеження для відеофайлів); agents.defaults.mediaMaxMb збільшує його для більших результатів. Якщо постачальник також повертає URL-адресу розміщеного результату, OpenClaw доставляє цю URL-адресу замість завершення завдання з помилкою, якщо локальне збереження відхиляє завеликий файл.

    Життєвий цикл завдання

    Стан Значення
    queued Завдання створено й очікує, доки постачальник його прийме.
    running Постачальник обробляє його (зазвичай від 30 секунд до кількох хвилин залежно від постачальника та роздільної здатності).
    succeeded Відео готове; агент активується та публікує його в розмові.
    failed Помилка постачальника або завершення часу очікування; агент активується з подробицями помилки.

    Перевірте стан у CLI:

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

    Підтримувані постачальники

    Постачальник Модель за замовчуванням Текст Референсне зображення Референсне відео Автентифікація
    Alibaba wan2.6-t2v Так (віддалена URL-адреса) Так (віддалена URL-адреса) MODELSTUDIO_API_KEY
    BytePlus (1.0) seedance-1-0-pro-250528 До 2 зображень (лише моделі I2V; перший і останній кадри) - BYTEPLUS_API_KEY
    BytePlus Seedance 1.5 seedance-1-5-pro-251215 До 2 зображень (перший і останній кадри через роль) - BYTEPLUS_API_KEY
    BytePlus Seedance 2.0 dreamina-seedance-2-0-260128 До 9 референсних зображень До 3 відео BYTEPLUS_API_KEY
    ComfyUI workflow 1 зображення - COMFY_API_KEY або COMFY_CLOUD_API_KEY
    DeepInfra Pixverse/Pixverse-T2V - - DEEPINFRA_API_KEY
    fal fal-ai/minimax/video-01-live 1 зображення; до 9 із перетворенням референсу на відео в Seedance До 3 відео з перетворенням референсу на відео в Seedance FAL_KEY
    Google veo-3.1-fast-generate-preview 1 зображення 1 відео GEMINI_API_KEY
    MiniMax MiniMax-Hailuo-2.3 1 зображення - MINIMAX_API_KEY або OAuth MiniMax
    OpenAI sora-2 1 зображення 1 відео OPENAI_API_KEY
    OpenRouter google/veo-3.1-fast До 4 зображень (перший/останній кадр або референси) - OPENROUTER_API_KEY
    Qwen wan2.6-t2v Так (віддалена URL-адреса) Так (віддалена URL-адреса) QWEN_API_KEY
    Runway gen4.5 1 зображення 1 відео RUNWAYML_API_SECRET
    Together Wan-AI/Wan2.2-T2V-A14B Лише Wan-AI/Wan2.2-I2V-A14B - TOGETHER_API_KEY
    Vydra veo3 1 зображення (kling) - VYDRA_API_KEY
    xAI grok-imagine-video Classic: 1 перший кадр або 7 референсів; 1.5: 1 кадр Classic: 1 відео XAI_API_KEY

    Деякі постачальники приймають додаткові або альтернативні змінні середовища ключів API. Докладніше див. на окремих сторінках постачальників.

    Виконайте video_generate action=list, щоб під час виконання переглянути доступних постачальників, моделі та режими виконання.

    Матриця можливостей

    Явний контракт режимів, який використовують video_generate, контрактні тести та спільна перевірка в реальному середовищі:

    Постачальник generate imageToVideo videoToVideo Поточні спільні сценарії перевірки в реальному середовищі
    Alibaba generate, imageToVideo; videoToVideo пропущено, оскільки цьому постачальнику потрібні віддалені URL-адреси відео http(s)
    BytePlus - generate, imageToVideo
    ComfyUI - Не входить до спільної перевірки; покриття окремих робочих процесів забезпечують тести Comfy
    DeepInfra - - generate; нативні схеми відео DeepInfra у контракті Plugin передбачають перетворення тексту на відео
    fal generate, imageToVideo; videoToVideo лише за використання перетворення референсу на відео в Seedance
    Google generate, imageToVideo; спільний videoToVideo пропущено, оскільки поточна перевірка Gemini/Veo із вхідними даними з буфера не приймає такі дані
    MiniMax - generate, imageToVideo
    OpenAI generate, imageToVideo; спільний videoToVideo пропущено, оскільки цей шлях організації/вхідних даних наразі потребує доступу до редагування відео на боці постачальника
    OpenRouter - generate, imageToVideo
    Qwen generate, imageToVideo; videoToVideo пропущено, оскільки цьому постачальнику потрібні віддалені URL-адреси відео http(s)
    Runway generate, imageToVideo; videoToVideo виконується лише тоді, коли вибрано модель runway/gen4_aleph
    Together - generate, imageToVideo
    Vydra - generate; спільний imageToVideo пропущено, оскільки вбудована модель veo3 підтримує лише текст, а вбудована kling потребує віддаленої URL-адреси зображення
    xAI Classic підтримує всі режими; Video 1.5 підтримує лише перетворення зображення на відео; віддалені вхідні файли MP4 не дають змоги включити videoToVideo до спільної перевірки

    Параметри інструмента

    Обов’язкові

    promptstringrequired

    Текстовий опис відео, яке потрібно створити. Обов’язковий для action: "generate".

    Вхідні дані вмісту

    imagestring
    imagesstring[]
    imageRolesstring[]

    Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку зображень. Канонічні значення: first_frame, last_frame, reference_image.

    videostring
    videosstring[]
    videoRolesstring[]

    Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку відео. Канонічне значення: reference_video.

    audioRefstring

    Одне референсне аудіо (шлях або URL-адреса). Використовується для фонової музики або референсу голосу, якщо провайдер підтримує аудіовходи.

    audioRefsstring[]
    audioRolesstring[]

    Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку аудіо. Канонічне значення: reference_audio.

    Керування стилем

    aspectRatiostring

    Підказка щодо співвідношення сторін, наприклад 1:1, 16:9, 9:16, adaptive або специфічне для провайдера значення. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc29sdXRpb24iIHR5cGU9InN0cmluZyI Підказка щодо роздільної здатності, наприклад 360P, 480P, 540P, 720P, 768P, 1080P, 4K або специфічне для провайдера значення. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера. OPENCLAW_DOCS_MARKER:paramClose:

    durationSecondsnumber

    Цільова тривалість у секундах (округлюється до найближчого значення, підтримуваного провайдером).

    sizestring
    audioboolean

    Увімкнути згенероване аудіо у вихідному результаті, якщо воно підтримується. Відрізняється від audioRef* (вхідних даних).

    watermarkboolean

    adaptive — це специфічне для провайдера сигнальне значення: воно передається без змін провайдерам, які оголошують adaptive у своїх можливостях (наприклад, BytePlus Seedance використовує його для автоматичного визначення співвідношення сторін за розмірами вхідного зображення). Провайдери, які його не оголошують, відображають це значення через details.ignoredOverrides у результаті інструмента, щоб ігнорування було помітним.

    Розширені параметри

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

    "status" повертає поточне завдання сеансу; "list" перевіряє провайдерів.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Перевизначення провайдера/моделі (наприклад, runway/gen4.5). OPENCLAW_DOCS_MARKER:paramClose:

    filenamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Необов’язковий час очікування операції провайдера в мілісекундах. Якщо його не вказано, OpenClaw використовує agents.defaults.videoGenerationModel.timeoutMs, якщо це значення налаштовано, інакше — стандартне значення провайдера, визначене автором Plugin, якщо воно існує. OPENCLAW_DOCS_MARKER:paramClose:

    providerOptionsobject

    Специфічні для провайдера параметри у вигляді об’єкта JSON (наприклад, {"seed": 42, "draft": true}). Провайдери, які оголошують типізовану схему, перевіряють ключі та типи; невідомі ключі або невідповідності призводять до пропуску кандидата під час резервного переходу. Провайдери без оголошеної схеми отримують параметри без змін. Виконайте video_generate action=list, щоб побачити, що приймає кожен провайдер.

    Референсні входи визначають режим виконання:

    • Немає референсних медіаданих -> generate
    • Є будь-яке референсне зображення -> imageToVideo
    • Є будь-яке референсне відео -> videoToVideo
    • Референсні аудіовходи не змінюють визначений режим; вони застосовуються поверх режиму, вибраного референсними зображеннями/відео, і працюють лише з провайдерами, які оголошують maxInputAudios.

    Поєднання референсних зображень і відео не є стабільною спільною поверхнею можливостей. Надавайте перевагу одному типу референсу в кожному запиті.

    Резервний перехід і типізовані параметри

    Деякі перевірки можливостей застосовуються на рівні резервного переходу, а не на межі інструмента, тому запит, що перевищує обмеження основного провайдера, усе одно може виконатися у здатного резервного провайдера:

    • Активний кандидат, який не оголошує maxInputAudios (або оголошує 0), пропускається, якщо запит містить аудіореференси; виконується спроба з наступним кандидатом. Та сама перевірка застосовується до кількості референсних зображень і відео відносно maxInputImages/maxInputVideos.
    • Активний кандидат, у якого maxDurationSeconds менше за запитане durationSeconds і немає оголошеного списку supportedDurationSeconds, пропускається.
    • Запит містить providerOptions, а активний кандидат явно оголошує типізовану схему providerOptions -> кандидат пропускається, якщо наданих ключів немає у схемі або типи значень не збігаються. Провайдери без оголошеної схеми отримують параметри без змін (зворотно сумісна наскрізна передача). Провайдер може відмовитися від усіх параметрів провайдера, оголосивши порожню схему (capabilities.providerOptions: {}), що спричиняє такий самий пропуск, як і невідповідність типів.

    Перша причина пропуску в запиті записується на рівні warn, щоб оператори бачили, коли їхнього основного провайдера було пропущено; подальші пропуски записуються на рівні debug, щоб довгі ланцюжки резервного переходу не створювали зайвого шуму. Якщо пропущено кожного кандидата, сукупна помилка містить причину пропуску для кожного з них.

    Дії

    Дія Що вона робить
    generate Типова дія. Створює відео із заданого запиту та необов’язкових референсних входів.
    status Перевіряє стан поточного відеозавдання для поточного сеансу, не запускаючи нову генерацію.
    list Показує доступних провайдерів, моделі та їхні можливості.

    Вибір моделі

    OpenClaw визначає модель у такому порядку:

    1. Параметр інструмента model — якщо агент указує його у виклику.
    2. videoGenerationModel.primary з конфігурації.
    3. videoGenerationModel.fallbacks за порядком.
    4. Автоматичне визначення — провайдери з дійсними даними автентифікації, починаючи з поточного стандартного провайдера, а потім решта провайдерів в алфавітному порядку.

    Якщо провайдер зазнає невдачі, автоматично виконується спроба з наступним кандидатом. Якщо всі кандидати зазнають невдачі, помилка містить подробиці кожної спроби.

    Установіть agents.defaults.mediaGenerationAutoProviderFallback: false, щоб використовувати лише явно задані записи model, primary і fallbacks.

    json5
    {  agents: {    defaults: {      videoGenerationModel: {        primary: "google/veo-3.1-fast-generate-preview",        fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],        timeoutMs: 180000, // optional per-tool provider request timeout override      },    },  },}

    Примітки щодо провайдерів

    Alibaba

    Використовує асинхронну кінцеву точку DashScope / Model Studio. Референсні зображення та відео мають бути віддаленими URL-адресами http(s).

    BytePlus (1.0)

    Ідентифікатор провайдера: byteplus.

    Моделі: seedance-1-0-pro-250528 (стандартна), seedance-1-0-pro-t2v-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428.

    Моделі T2V (*-t2v-*) не приймають вхідні зображення; моделі I2V і універсальні моделі *-pro-* підтримують одне референсне зображення (перший кадр). Передайте зображення позиційно або задайте role: "first_frame". Якщо надано зображення, ідентифікатори моделей T2V автоматично замінюються на відповідний варіант I2V.

    Підтримувані ключі providerOptions: seed (число), draft (логічне значення — примусово встановлює 480p), camera_fixed (логічне значення).

    BytePlus Seedance 1.5

    Потребує Plugin @openclaw/byteplus-modelark (зовнішній, не вбудований). Ідентифікатор провайдера: byteplus-seedance15. Модель: seedance-1-5-pro-251215.

    Використовує уніфікований API content[]. Підтримує щонайбільше 2 вхідні зображення (first_frame + last_frame). Усі вхідні дані мають бути віддаленими URL-адресами https://. Задайте role: "first_frame" / "last_frame" для кожного зображення або передайте зображення позиційно.

    aspectRatio: "adaptive" автоматично визначає співвідношення сторін за вхідним зображенням. audio: true відповідає generate_audio. Значення providerOptions.seed (число) передається без змін.

    BytePlus Seedance 2.0

    Потребує Plugin @openclaw/byteplus-modelark (зовнішній, не вбудований). Ідентифікатор провайдера: byteplus-seedance2. Моделі: dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128.

    Використовує уніфікований API content[]. Підтримує до 9 референсних зображень, 3 референсних відео та 3 референсних аудіо. Усі вхідні дані мають бути віддаленими URL-адресами https://. Задайте role для кожного ресурсу — підтримувані значення: "first_frame", "last_frame", "reference_image", "reference_video", "reference_audio".

    aspectRatio: "adaptive" автоматично визначає співвідношення сторін за вхідним зображенням. audio: true відповідає generate_audio. Значення providerOptions.seed (число) передається без змін.

    ComfyUI

    Локальне або хмарне виконання на основі робочих процесів. Підтримує перетворення тексту на відео та зображення на відео за допомогою налаштованого графа.

    fal

    Використовує потік на основі черги для тривалих завдань. За замовчуванням OpenClaw очікує до 20 хвилин, перш ніж вважати активне завдання в черзі fal таким, для якого минув час очікування. Більшість відеомоделей fal приймають одне еталонне зображення. Моделі Seedance 2.0 для перетворення еталонних матеріалів на відео приймають до 9 зображень, 3 відео та 3 аудіоматеріалів, але загалом не більше 12 еталонних файлів.

    Google (Gemini / Veo)

    Підтримує одне еталонне зображення або відео. Запити на створення аудіо ігноруються з попередженням у шляху Gemini API, оскільки цей API відхиляє параметр generateAudio для поточної генерації відео Veo.

    MiniMax

    Підтримується лише одне еталонне зображення. MiniMax приймає роздільності 768P і 1080P; запити на кшталт 720P перед надсиланням нормалізуються до найближчого підтримуваного значення.

    OpenAI

    Передається лише перевизначення size. Інші перевизначення стилю (aspectRatio, resolution, audio, watermark) ігноруються з попередженням.

    OpenRouter

    Використовує асинхронний API /videos OpenRouter. OpenClaw надсилає завдання, опитує polling_url і завантажує результат або з unsigned_urls, або з документованої кінцевої точки вмісту завдання. Вбудована типова модель google/veo-3.1-fast заявляє підтримку тривалості 4/6/8 секунд, роздільностей 720P/1080P і співвідношень сторін 16:9/9:16.

    Qwen

    Використовує той самий серверний компонент DashScope, що й Alibaba. Еталонні вхідні дані мають бути віддаленими URL-адресами http(s); локальні файли відхиляються заздалегідь.

    Runway

    Підтримує локальні файли через URI даних. Для перетворення відео на відео потрібна модель runway/gen4_aleph. Запуски лише з текстом підтримують співвідношення сторін 16:9 і 9:16.

    Together

    Підтримується лише одне еталонне зображення.

    Vydra

    Використовує https://www.vydra.ai/api/v1 безпосередньо, щоб уникнути перенаправлень, які скидають автентифікацію. veo3 вбудовано лише для перетворення тексту на відео; kling потребує віддаленої URL-адреси зображення.

    xAI

    Типова модель grok-imagine-video підтримує перетворення тексту на відео, одного зображення першого кадру на відео, до 7 вхідних даних reference_image через reference_images xAI, а також потоки редагування й подовження віддаленого відео. За замовчуванням генерація використовує 480P; під час перетворення одного зображення на відео успадковується співвідношення сторін джерела, якщо aspectRatio не вказано. Редагування й подовження відео успадковують геометрію вхідних даних і не приймають перевизначення співвідношення сторін або роздільності. Для подовження підтримується тривалість 2–10 секунд.

    grok-imagine-video-1.5 призначена лише для перетворення зображення на відео: надайте рівно одне зображення. Вона підтримує тривалість 1–15 секунд і роздільності 480P, 720P або 1080P, типово використовуючи 480P; не вказуйте aspectRatio, щоб успадкувати співвідношення сторін вихідного зображення. Ідентифікатори попередньої версії та версії 1.5 із датою проходять ту саму перевірку й передаються без змін.

    Режими можливостей провайдерів

    Спільний контракт генерації відео підтримує можливості для окремих режимів, а не лише плоскі сукупні обмеження. Новим реалізаціям провайдерів варто віддавати перевагу явним блокам режимів:

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

    Плоских сукупних полів, як-от maxInputImages і maxInputVideos, недостатньо, щоб заявити підтримку режимів перетворення. Провайдери мають явно оголошувати generate, imageToVideo і videoToVideo, щоб актуальні тести, тести контрактів і спільний інструмент video_generate могли детерміновано перевіряти підтримку режимів.

    Якщо одна модель провайдера підтримує ширший набір еталонних вхідних даних, ніж решта, використовуйте maxInputImagesByModel, maxInputVideosByModel або maxInputAudiosByModel, замість того щоб збільшувати обмеження для всього режиму.

    Актуальні тести

    Добровільно ввімкнене актуальне покриття для спільних вбудованих провайдерів:

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

    Обгортка репозиторію:

    bash
    pnpm test:live:media video

    За замовчуванням цей файл актуальних тестів надає перевагу вже експортованим змінним середовища провайдерів, а не збереженим профілям автентифікації, і виконує безпечну для випуску базову перевірку:

    • generate для кожного провайдера, крім FAL, у перевірці.
    • Односекундний запит із лобстером.
    • Обмеження тривалості операції для кожного провайдера з OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (типово 180000).

    FAL вмикається окремо, оскільки затримка черги на боці провайдера може переважати в часі випуску:

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

    Установіть OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, щоб також запускати оголошені режими перетворення, які спільна перевірка може безпечно виконувати з локальними медіафайлами:

    • imageToVideo, коли capabilities.imageToVideo.enabled.
    • videoToVideo, коли capabilities.videoToVideo.enabled і провайдер або модель приймає локальні вхідні відеодані з буфера у спільній перевірці.

    Наразі спільний актуальний напрям videoToVideo охоплює лише runway, якщо вибрано runway/gen4_aleph.

    Налаштування

    Задайте типову модель генерації відео в конфігурації OpenClaw:

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

    Або через CLI:

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

    Пов’язане

    Was this useful?
    On this page

    On this page