Tools
Генерування відео
Агенти OpenClaw можуть генерувати відео з текстових підказок, референсних зображень або наявних відео. Підтримуються шістнадцять серверних провайдерів, кожен із різними варіантами моделей, режимами вводу та наборами функцій. Агент вибирає правильного провайдера автоматично на основі вашої конфігурації та доступних API-ключів.
OpenClaw розглядає генерацію відео як три режими виконання:
generate- запити text-to-video без референсних медіа.imageToVideo- запит містить одне або кілька референсних зображень.videoToVideo- запит містить одне або кілька референсних відео.
Провайдери можуть підтримувати будь-яку підмножину цих режимів. Інструмент перевіряє
активний режим перед надсиланням і повідомляє підтримувані режими в action=list.
Швидкий старт
Configure auth
Задайте API-ключ для будь-якого підтримуваного провайдера:
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
Згенеруй 5-секундне кінематографічне відео про дружнього омара, який серфить на заході сонця.
Агент автоматично викликає video_generate. Дозволяти інструмент
у списку дозволених не потрібно.
Як працює асинхронна генерація
Генерація відео є асинхронною. Коли агент викликає video_generate у
сеансі:
- OpenClaw надсилає запит провайдеру й одразу повертає id завдання.
- Провайдер обробляє завдання у фоновому режимі (зазвичай від 30 секунд до кількох хвилин залежно від провайдера та роздільної здатності; повільні провайдери з чергою можуть працювати до налаштованого часу очікування).
- Коли відео готове, OpenClaw пробуджує той самий сеанс внутрішньою подією завершення.
- Агент повідомляє користувача й додає готове відео. У групових/канальних чатах, які використовують видиму доставку лише через message-tool, агент пересилає результат через інструмент повідомлень замість того, щоб OpenClaw публікував його напряму.
Поки завдання виконується, повторні виклики video_generate у тому самому
сеансі повертають поточний статус завдання замість запуску ще однієї
генерації. Використовуйте openclaw tasks list або openclaw tasks show <taskId>, щоб
перевірити прогрес із CLI.
Поза запусками агента, підкріпленими сеансом (наприклад, під час прямих викликів інструмента), інструмент повертається до вбудованої генерації та повертає шлях до фінального медіа в тому самому ході.
Згенеровані відеофайли зберігаються в медіасховищі, керованому OpenClaw, коли
провайдер повертає байти. Типове обмеження збереження згенерованого відео відповідає
ліміту відеомедіа, а agents.defaults.mediaMaxMb підвищує його для
більших рендерів. Коли провайдер також повертає розміщену URL-адресу результату, OpenClaw
може доставити цю URL-адресу замість провалу завдання, якщо локальне збереження
відхиляє файл завеликого розміру.
Життєвий цикл завдання
| Стан | Значення |
|---|---|
queued |
Завдання створено, очікує, поки провайдер його прийме. |
running |
Провайдер обробляє (зазвичай від 30 секунд до кількох хвилин залежно від провайдера та роздільної здатності). |
succeeded |
Відео готове; агент пробуджується й публікує його в розмові. |
failed |
Помилка провайдера або час очікування вичерпано; агент пробуджується з деталями помилки. |
Перевірте статус із CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
Якщо відеозавдання вже має стан queued або running для поточного сеансу,
video_generate повертає статус наявного завдання замість запуску нового.
Використовуйте action: "status", щоб перевірити явно без запуску нової
генерації.
Підтримувані провайдери
| Провайдер | Типова модель | Текст | Референс зображення | Референс відео | Автентифікація |
|---|---|---|---|---|---|
| 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 reference-to-video | До 3 відео із Seedance reference-to-video | FAL_KEY |
veo-3.1-fast-generate-preview |
✓ | 1 зображення | 1 відео | GEMINI_API_KEY |
|
| MiniMax | MiniMax-Hailuo-2.3 |
✓ | 1 зображення | - | MINIMAX_API_KEY або MiniMax OAuth |
| 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 |
✓ | 1 зображення | - | TOGETHER_API_KEY |
| Vydra | veo3 |
✓ | 1 зображення (kling) |
- | VYDRA_API_KEY |
| xAI | grok-imagine-video |
✓ | 1 зображення першого кадру або до 7 reference_images |
1 відео | XAI_API_KEY |
Деякі провайдери приймають додаткові або альтернативні змінні середовища для API-ключів. Див. окремі сторінки провайдерів для подробиць.
Запустіть video_generate action=list, щоб переглянути доступних провайдерів, моделі та
режими виконання під час роботи.
Матриця можливостей
Явний контракт режимів, який використовують video_generate, контрактні тести та
спільний live sweep:
| Провайдер | generate |
imageToVideo |
videoToVideo |
Спільні live-лінії сьогодні |
|---|---|---|---|---|
| Alibaba | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo пропущено, бо цьому провайдеру потрібні віддалені http(s) URL-адреси відео |
| BytePlus | ✓ | ✓ | - | generate, imageToVideo |
| ComfyUI | ✓ | ✓ | - | Не входить до спільного sweep; покриття, специфічне для workflow, живе разом із тестами Comfy |
| DeepInfra | ✓ | - | - | generate; нативні відеосхеми DeepInfra є text-to-video у вбудованому контракті |
| fal | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo лише під час використання Seedance reference-to-video |
| ✓ | ✓ | ✓ | generate, imageToVideo; спільний videoToVideo пропущено, бо поточний buffer-backed Gemini/Veo sweep не приймає такий ввід |
|
| MiniMax | ✓ | ✓ | - | generate, imageToVideo |
| OpenAI | ✓ | ✓ | ✓ | generate, imageToVideo; спільний videoToVideo пропущено, бо цьому шляху org/input наразі потрібен доступ до inpaint/remix на боці провайдера |
| OpenRouter | ✓ | ✓ | - | generate, imageToVideo |
| Qwen | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo пропущено, бо цьому провайдеру потрібні віддалені http(s) URL-адреси відео |
| Runway | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo виконується лише тоді, коли вибрана модель — runway/gen4_aleph |
| Together | ✓ | ✓ | - | generate, imageToVideo |
| Vydra | ✓ | ✓ | - | generate; спільний imageToVideo пропущено, бо вбудований veo3 підтримує лише текст, а вбудований kling потребує віддаленої URL-адреси зображення |
| xAI | ✓ | ✓ | ✓ | generate, imageToVideo; videoToVideo пропущено, бо цьому провайдеру наразі потрібна віддалена MP4 URL-адреса |
Параметри інструмента
Обовʼязкові
promptstringrequiredТекстовий опис відео, яке потрібно згенерувати. Обовʼязково для action: "generate".
Вхідні дані вмісту
imagestringimagesstring[]imageRolesstring[]Необов'язкові підказки ролей за позиціями, паралельні об'єднаному списку зображень.
Канонічні значення: first_frame, last_frame, reference_image.
videostringvideosstring[]videoRolesstring[]Необов'язкові підказки ролей за позиціями, паралельні об'єднаному списку відео.
Канонічне значення: reference_video.
audioRefstringОдне референсне аудіо (шлях або URL). Використовується для фонової музики або голосового референсу, коли провайдер підтримує аудіовхідні дані.
audioRefsstring[]audioRolesstring[]Необов'язкові підказки ролей за позиціями, паралельні об'єднаному списку аудіо.
Канонічне значення: reference_audio.
Елементи керування стилем
aspectRatiostringПідказка співвідношення сторін, наприклад 1:1, 16:9, 9:16, adaptive або значення, специфічне для провайдера. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc29sdXRpb24iIHR5cGU9InN0cmluZyI
Підказка роздільної здатності, наприклад 480P, 720P, 768P, 1080P, 4K або значення, специфічне для провайдера. OpenClaw нормалізує або ігнорує непідтримувані значення залежно від провайдера.
OPENCLAW_DOCS_MARKER:paramClose:
durationSecondsnumberЦільова тривалість у секундах (округлюється до найближчого значення, яке підтримує провайдер).
sizestringaudiobooleanУвімкнути згенероване аудіо у вихідному результаті, коли це підтримується. Відрізняється від audioRef* (вхідні дані).
watermarkbooleanadaptive є специфічним для провайдера сигнальним значенням: воно передається як є
провайдерам, які оголошують adaptive у своїх можливостях (наприклад, BytePlus
Seedance використовує його для автоматичного визначення співвідношення за розмірами
вхідного зображення). Провайдери, які його не оголошують, показують це значення через
details.ignoredOverrides у результаті інструмента, щоб відкидання було видимим.
Розширені параметри
action"generate" | "status" | "list""status" повертає поточне завдання сеансу; "list" перевіряє провайдерів.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Перевизначення провайдера/моделі (наприклад, runway/gen4.5).
OPENCLAW_DOCS_MARKER:paramClose:
filenamestringtimeoutMsnumberproviderOptionsobjectСпецифічні для провайдера параметри як JSON-об'єкт (наприклад, {"seed": 42, "draft": true}).
Провайдери, які оголошують типізовану схему, перевіряють ключі та типи; невідомі
ключі або невідповідності пропускають кандидата під час резервного переходу. Провайдери без
оголошеної схеми отримують параметри як є. Запустіть video_generate action=list,
щоб побачити, що приймає кожен провайдер.
Референсні вхідні дані вибирають режим виконання:
- Немає референсних медіа →
generate - Будь-який референс зображення →
imageToVideo - Будь-який референс відео →
videoToVideo - Референсні аудіовхідні дані не змінюють визначений режим; вони застосовуються
поверх будь-якого режиму, який вибирають референси зображень/відео, і працюють лише
з провайдерами, які оголошують
maxInputAudios.
Змішані референси зображень і відео не є стабільною спільною поверхнею можливостей. Надавайте перевагу одному типу референсу на запит.
Резервний перехід і типізовані параметри
Деякі перевірки можливостей застосовуються на рівні резервного переходу, а не на межі інструмента, тому запит, який перевищує обмеження основного провайдера, все ще може виконатися на спроможному резервному провайдері:
- Активний кандидат, який не оголошує
maxInputAudios(або оголошує0), пропускається, коли запит містить аудіореференси; пробується наступний кандидат. maxDurationSecondsактивного кандидата нижчий за запитанийdurationSecondsбез оголошеного спискуsupportedDurationSeconds→ пропускається.- Запит містить
providerOptions, а активний кандидат явно оголошує типізовану схемуproviderOptions→ пропускається, якщо надані ключі відсутні у схемі або типи значень не збігаються. Провайдери без оголошеної схеми отримують параметри як є (зворотно сумісне наскрізне передавання). Провайдер може відмовитися від усіх параметрів провайдера, оголосивши порожню схему (capabilities.providerOptions: {}), що спричиняє таке саме пропускання, як і невідповідність типу.
Перша причина пропуску в запиті записується на рівні warn, щоб оператори бачили, коли
їхнього основного провайдера було обійдено; наступні пропуски записуються на рівні debug, щоб
довгі ланцюжки резервного переходу залишалися тихими. Якщо кожен кандидат пропущено,
агрегована помилка містить причину пропуску для кожного.
Дії
| Дія | Що робить |
|---|---|
generate |
За замовчуванням. Створює відео із заданої підказки та необов'язкових референсних вхідних даних. |
status |
Перевіряє стан поточного відеозавдання для поточного сеансу, не запускаючи іншу генерацію. |
list |
Показує доступних провайдерів, моделі та їхні можливості. |
Вибір моделі
OpenClaw визначає модель у такому порядку:
- Параметр інструмента
model- якщо агент вказує його у виклику. videoGenerationModel.primaryз конфігурації.videoGenerationModel.fallbacksза порядком.- Автовиявлення - провайдери з чинною автентифікацією, починаючи з поточного провайдера за замовчуванням, потім решта провайдерів в алфавітному порядку.
Якщо провайдер завершується помилкою, автоматично пробується наступний кандидат. Якщо всі кандидати завершуються помилкою, помилка містить подробиці з кожної спроби.
Задайте agents.defaults.mediaGenerationAutoProviderFallback: false, щоб використовувати
лише явні записи model, primary і fallbacks.
{
agents: {
defaults: {
videoGenerationModel: {
primary: "google/veo-3.1-fast-generate-preview",
fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
},
},
},
}
Примітки щодо провайдерів
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
Виконання локально або в хмарі на основі workflow. Підтримує text-to-video та image-to-video через налаштований graph.
fal
Використовує потік із чергою для довготривалих завдань. OpenClaw за замовчуванням чекає до 20 хвилин, перш ніж вважати завдання черги fal, що виконується, таким, що перевищило час очікування. Більшість відеомоделей fal приймають одне посилання на зображення. Моделі Seedance 2.0 reference-to-video приймають до 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, або
документований endpoint вмісту завдання. Вбудоване значення за замовчуванням google/veo-3.1-fast
оголошує тривалості 4/6/8 секунд, роздільності 720P/1080P та
співвідношення сторін 16:9/9:16.
Qwen
Той самий backend DashScope, що й Alibaba. Вхідні посилання мають бути віддаленими
URL-адресами http(s); локальні файли відхиляються заздалегідь.
Runway
Підтримує локальні файли через data URI. Для video-to-video потрібен
runway/gen4_aleph. Запуски лише з текстом надають співвідношення
сторін 16:9 і 9:16.
Together
Лише одне посилання на зображення.
Vydra
Використовує https://www.vydra.ai/api/v1 напряму, щоб уникнути редиректів,
які скидають автентифікацію. veo3 вбудовано лише як text-to-video; kling потребує
віддаленої URL-адреси зображення.
xAI
Підтримує text-to-video, image-to-video з одним зображенням першого кадру, до 7
вхідних reference_image через xAI reference_images, а також віддалені
потоки редагування/розширення відео.
Режими можливостей провайдера
Спільний контракт генерації відео підтримує режимоспецифічні можливості замість лише плоских агрегованих обмежень. Нові реалізації провайдерів мають надавати перевагу явним блокам режимів:
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, щоб live
тести, контрактні тести та спільний інструмент video_generate могли
детерміновано перевіряти підтримку режимів.
Коли одна модель у провайдера має ширшу підтримку вхідних посилань, ніж
решта, використовуйте maxInputImagesByModel, maxInputVideosByModel або
maxInputAudiosByModel замість підвищення обмеження для всього режиму.
Live тести
Опційне live покриття для спільних вбудованих провайдерів:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Обгортка repo:
pnpm test:live:media video
Цей live файл завантажує відсутні змінні середовища провайдера з ~/.profile, за замовчуванням надає перевагу
live/env API ключам перед збереженими профілями автентифікації та запускає
release-safe smoke за замовчуванням:
generateдля кожного не-FAL провайдера в sweep.- Односекундний prompt із lobster.
- Обмеження операції для кожного провайдера з
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000за замовчуванням).
FAL є опційним, оскільки затримка черги на боці провайдера може переважати час релізу:
pnpm test:live:media video --video-providers fal
Установіть OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, щоб також запускати оголошені
режими трансформації, які спільний sweep може безпечно виконувати з локальними медіа:
imageToVideo, колиcapabilities.imageToVideo.enabled.videoToVideo, колиcapabilities.videoToVideo.enabledі провайдер/модель приймає локальне відео з buffer-backed введенням у спільному sweep.
Сьогодні спільна live lane videoToVideo охоплює лише runway, коли ви
вибираєте runway/gen4_aleph.
Конфігурація
Установіть стандартну модель генерації відео у вашій конфігурації OpenClaw:
{
agents: {
defaults: {
videoGenerationModel: {
primary: "qwen/wan2.6-t2v",
fallbacks: ["qwen/wan2.6-r2v-flash"],
},
},
},
}
Або через CLI:
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"
Пов’язане
- Alibaba Model Studio
- Фонові завдання - відстеження завдань для асинхронної генерації відео
- BytePlus
- ComfyUI
- Довідник конфігурації
- fal
- Google (Gemini)
- MiniMax
- Моделі
- OpenAI
- Qwen
- Runway
- Together AI
- Огляд інструментів
- Vydra
- xAI