Skip to main content
Агенти OpenClaw створюють відео з текстових запитів, референсних зображень або наявних відео за допомогою video_generate. Підтримується шістнадцять серверних реалізацій постачальників; агент автоматично вибирає відповідну на основі конфігурації та доступних ключів API.
video_generate з’являється лише тоді, коли доступний принаймні один постачальник генерування відео. Якщо цього інструмента немає серед інструментів агента, задайте ключ API постачальника або налаштуйте agents.defaults.videoGenerationModel.
video_generate має три режими виконання, які визначаються за референсними вхідними даними у виклику:
  • generate — без референсних медіафайлів (перетворення тексту на відео).
  • imageToVideo — одне або кілька референсних зображень.
  • videoToVideo — одне або кілька референсних відео.
Постачальники можуть підтримувати будь-яку підмножину цих режимів. Інструмент перевіряє активний режим перед надсиланням і повідомляє про підтримувані режими в action=list.

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

1

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

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

Виберіть модель за замовчуванням (необов’язково)

3

Зверніться до агента

Створи 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-адресу замість завершення завдання з помилкою, якщо локальне збереження відхиляє завеликий файл.

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

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

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

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

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

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

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

Обов’язкові

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

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

string
Одне референсне зображення (шлях або URL-адреса).
string[]
Кілька референсних зображень (до 9).
string[]
Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку зображень. Канонічні значення: first_frame, last_frame, reference_image.
string
Одне референсне відео (шлях або URL-адреса).
string[]
Кілька референсних відео (до 4).
string[]
Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку відео. Канонічне значення: reference_video.
string
Одне референсне аудіо (шлях або URL-адреса). Використовується для фонової музики або референсу голосу, якщо провайдер підтримує аудіовходи.
string[]
Кілька референсних аудіо (до 3).
string[]
Необов’язкові підказки ролей для кожної позиції, паралельні об’єднаному списку аудіо. Канонічне значення: reference_audio.
Підказки ролей передаються провайдеру без змін. Канонічні значення походять з об’єднання VideoGenerationAssetRole, але провайдери можуть приймати додаткові рядки ролей. Масиви *Roles не повинні містити більше елементів, ніж відповідний список референсів; помилки на одиницю спричиняють чітке повідомлення про помилку. Використовуйте порожній рядок, щоб залишити позицію невизначеною. Для xAI задайте для кожного зображення роль reference_image, щоб використовувати режим генерації reference_images; не вказуйте роль або використовуйте first_frame для перетворення одного зображення на відео.

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

string
Підказка щодо співвідношення сторін, наприклад 1:1, 16:9, 9:16, adaptive або специфічне для провайдера значення. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера.
string
Підказка щодо роздільної здатності, наприклад 360P, 480P, 540P, 720P, 768P, 1080P, 4K або специфічне для провайдера значення. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера.
number
Цільова тривалість у секундах (округлюється до найближчого значення, підтримуваного провайдером).
string
Підказка щодо розміру, якщо провайдер її підтримує.
boolean
Увімкнути згенероване аудіо у вихідному результаті, якщо воно підтримується. Відрізняється від audioRef* (вхідних даних).
boolean
Перемикати додавання водяного знака провайдером, якщо підтримується.
adaptive — це специфічне для провайдера сигнальне значення: воно передається без змін провайдерам, які оголошують adaptive у своїх можливостях (наприклад, BytePlus Seedance використовує його для автоматичного визначення співвідношення сторін за розмірами вхідного зображення). Провайдери, які його не оголошують, відображають це значення через details.ignoredOverrides у результаті інструмента, щоб ігнорування було помітним.

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

"generate" | "status" | "list"
за замовчуванням:"generate"
"status" повертає поточне завдання сеансу; "list" перевіряє провайдерів.
string
Перевизначення провайдера/моделі (наприклад, runway/gen4.5).
string
Підказка щодо імені вихідного файлу.
number
Необов’язковий час очікування операції провайдера в мілісекундах. Якщо його не вказано, OpenClaw використовує agents.defaults.videoGenerationModel.timeoutMs, якщо це значення налаштовано, інакше — стандартне значення провайдера, визначене автором Plugin, якщо воно існує.
object
Специфічні для провайдера параметри у вигляді об’єкта JSON (наприклад, {"seed": 42, "draft": true}). Провайдери, які оголошують типізовану схему, перевіряють ключі та типи; невідомі ключі або невідповідності призводять до пропуску кандидата під час резервного переходу. Провайдери без оголошеної схеми отримують параметри без змін. Виконайте video_generate action=list, щоб побачити, що приймає кожен провайдер.
Не всі провайдери підтримують усі параметри. OpenClaw нормалізує тривалість до найближчого значення, підтримуваного провайдером, і перепризначає перетворені підказки геометрії, наприклад розмір у співвідношення сторін, коли резервний провайдер надає інший інтерфейс керування. Справді непідтримувані перевизначення ігноруються, якщо це можливо, і повідомляються як попередження в результаті інструмента. Жорсткі обмеження можливостей (наприклад, надмірна кількість референсних входів) спричиняють помилку до надсилання. Результати інструмента повідомляють застосовані налаштування; details.normalization містить усі перетворення запитаних значень у застосовані.
Референсні входи визначають режим виконання:
  • Немає референсних медіаданих -> generate
  • Є будь-яке референсне зображення -> imageToVideo
  • Є будь-яке референсне відео -> videoToVideo
  • Референсні аудіовходи не змінюють визначений режим; вони застосовуються поверх режиму, вибраного референсними зображеннями/відео, і працюють лише з провайдерами, які оголошують maxInputAudios.
Поєднання референсних зображень і відео не є стабільною спільною поверхнею можливостей. Надавайте перевагу одному типу референсу в кожному запиті.

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

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

Дії

Вибір моделі

OpenClaw визначає модель у такому порядку:
  1. Параметр інструмента model — якщо агент указує його у виклику.
  2. videoGenerationModel.primary з конфігурації.
  3. videoGenerationModel.fallbacks за порядком.
  4. Автоматичне визначення — провайдери з дійсними даними автентифікації, починаючи з поточного стандартного провайдера, а потім решта провайдерів в алфавітному порядку.
Якщо провайдер зазнає невдачі, автоматично виконується спроба з наступним кандидатом. Якщо всі кандидати зазнають невдачі, помилка містить подробиці кожної спроби. Установіть agents.defaults.mediaGenerationAutoProviderFallback: false, щоб використовувати лише явно задані записи model, primary і fallbacks.

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

Використовує асинхронну кінцеву точку DashScope / Model Studio. Референсні зображення та відео мають бути віддаленими URL-адресами http(s).
Ідентифікатор провайдера: 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 (логічне значення).
Потребує 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 (число) передається без змін.
Потребує 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 (число) передається без змін.
Локальне або хмарне виконання на основі робочих процесів. Підтримує перетворення тексту на відео та зображення на відео за допомогою налаштованого графа.
Використовує потік на основі черги для тривалих завдань. За замовчуванням OpenClaw очікує до 20 хвилин, перш ніж вважати активне завдання в черзі fal таким, для якого минув час очікування. Більшість відеомоделей fal приймають одне еталонне зображення. Моделі Seedance 2.0 для перетворення еталонних матеріалів на відео приймають до 9 зображень, 3 відео та 3 аудіоматеріалів, але загалом не більше 12 еталонних файлів.
Підтримує одне еталонне зображення або відео. Запити на створення аудіо ігноруються з попередженням у шляху Gemini API, оскільки цей API відхиляє параметр generateAudio для поточної генерації відео Veo.
Підтримується лише одне еталонне зображення. MiniMax приймає роздільності 768P і 1080P; запити на кшталт 720P перед надсиланням нормалізуються до найближчого підтримуваного значення.
Передається лише перевизначення size. Інші перевизначення стилю (aspectRatio, resolution, audio, watermark) ігноруються з попередженням.
Використовує асинхронний API /videos OpenRouter. OpenClaw надсилає завдання, опитує polling_url і завантажує результат або з unsigned_urls, або з документованої кінцевої точки вмісту завдання. Вбудована типова модель google/veo-3.1-fast заявляє підтримку тривалості 4/6/8 секунд, роздільностей 720P/1080P і співвідношень сторін 16:9/9:16.
Використовує той самий серверний компонент DashScope, що й Alibaba. Еталонні вхідні дані мають бути віддаленими URL-адресами http(s); локальні файли відхиляються заздалегідь.
Підтримує локальні файли через URI даних. Для перетворення відео на відео потрібна модель runway/gen4_aleph. Запуски лише з текстом підтримують співвідношення сторін 16:9 і 9:16.
Підтримується лише одне еталонне зображення.
Використовує https://www.vydra.ai/api/v1 безпосередньо, щоб уникнути перенаправлень, які скидають автентифікацію. veo3 вбудовано лише для перетворення тексту на відео; kling потребує віддаленої URL-адреси зображення.
Типова модель 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 із датою проходять ту саму перевірку й передаються без змін.

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

Спільний контракт генерації відео підтримує можливості для окремих режимів, а не лише плоскі сукупні обмеження. Новим реалізаціям провайдерів варто віддавати перевагу явним блокам режимів:
Плоских сукупних полів, як-от maxInputImages і maxInputVideos, недостатньо, щоб заявити підтримку режимів перетворення. Провайдери мають явно оголошувати generate, imageToVideo і videoToVideo, щоб актуальні тести, тести контрактів і спільний інструмент video_generate могли детерміновано перевіряти підтримку режимів. Якщо одна модель провайдера підтримує ширший набір еталонних вхідних даних, ніж решта, використовуйте maxInputImagesByModel, maxInputVideosByModel або maxInputAudiosByModel, замість того щоб збільшувати обмеження для всього режиму.

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

Добровільно ввімкнене актуальне покриття для спільних вбудованих провайдерів:
Обгортка репозиторію:
За замовчуванням цей файл актуальних тестів надає перевагу вже експортованим змінним середовища провайдерів, а не збереженим профілям автентифікації, і виконує безпечну для випуску базову перевірку:
  • generate для кожного провайдера, крім FAL, у перевірці.
  • Односекундний запит із лобстером.
  • Обмеження тривалості операції для кожного провайдера з OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (типово 180000).
FAL вмикається окремо, оскільки затримка черги на боці провайдера може переважати в часі випуску:
Установіть OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, щоб також запускати оголошені режими перетворення, які спільна перевірка може безпечно виконувати з локальними медіафайлами:
  • imageToVideo, коли capabilities.imageToVideo.enabled.
  • videoToVideo, коли capabilities.videoToVideo.enabled і провайдер або модель приймає локальні вхідні відеодані з буфера у спільній перевірці.
Наразі спільний актуальний напрям videoToVideo охоплює лише runway, якщо вибрано runway/gen4_aleph.

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

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

Пов’язане