Перейти до основного вмісту

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

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

Швидкий старт

  1. Встановіть API-ключ для будь-якого підтримуваного провайдера:
export GEMINI_API_KEY="your-key"
  1. За бажанням закріпіть модель за замовчуванням:
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  1. Попросіть агента:
Створи 5-секундне кінематографічне відео дружнього лобстера, який займається серфінгом на заході сонця.
Агент автоматично викликає video_generate. Дозволяти інструмент через allowlist не потрібно.

Що відбувається, коли ви генеруєте відео

Генерація відео є асинхронною. Коли агент викликає video_generate у сесії:
  1. OpenClaw надсилає запит провайдеру й одразу повертає ID завдання.
  2. Провайдер обробляє завдання у фоновому режимі (зазвичай від 30 секунд до 5 хвилин залежно від провайдера та роздільної здатності).
  3. Коли відео готове, OpenClaw пробуджує ту саму сесію внутрішньою подією завершення.
  4. Агент публікує готове відео назад в оригінальну розмову.
Поки завдання виконується, повторні виклики video_generate у тій самій сесії повертають поточний статус завдання замість запуску нової генерації. Використовуйте openclaw tasks list або openclaw tasks show <taskId>, щоб перевірити прогрес через CLI. Поза запусками агента, прив’язаними до сесії (наприклад, при прямих викликах інструмента), інструмент переходить до вбудованої генерації та повертає фінальний шлях до медіафайлу в межах того самого ходу.

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

Кожен запит video_generate проходить через чотири стани:
  1. queued — завдання створено, очікує, поки провайдер його прийме.
  2. running — провайдер виконує обробку (зазвичай від 30 секунд до 5 хвилин залежно від провайдера та роздільної здатності).
  3. succeeded — відео готове; агент пробуджується та публікує його в розмову.
  4. failed — помилка провайдера або тайм-аут; агент пробуджується з деталями помилки.
Перевіряйте статус через CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
Запобігання дублюванню: якщо для поточної сесії вже є відеозавдання у стані queued або running, video_generate повертає статус наявного завдання замість запуску нового. Використовуйте action: "status", щоб явно перевірити стан без запуску нової генерації.

Підтримувані провайдери

ПровайдерМодель за замовчуваннямТекстЕталонне зображенняЕталонне відеоAPI-ключ
Alibabawan2.6-t2vТакТак (віддалений URL)Так (віддалений URL)MODELSTUDIO_API_KEY
BytePlus (1.0)seedance-1-0-pro-250528ТакДо 2 зображень (лише моделі I2V; перший + останній кадр)НіBYTEPLUS_API_KEY
BytePlus Seedance 1.5seedance-1-5-pro-251215ТакДо 2 зображень (перший + останній кадр через роль)НіBYTEPLUS_API_KEY
BytePlus Seedance 2.0dreamina-seedance-2-0-260128ТакДо 9 еталонних зображеньДо 3 відеоBYTEPLUS_API_KEY
ComfyUIworkflowТак1 зображенняНіCOMFY_API_KEY або COMFY_CLOUD_API_KEY
falfal-ai/minimax/video-01-liveТак1 зображенняНіFAL_KEY
Googleveo-3.1-fast-generate-previewТак1 зображення1 відеоGEMINI_API_KEY
MiniMaxMiniMax-Hailuo-2.3Так1 зображенняНіMINIMAX_API_KEY
OpenAIsora-2Так1 зображення1 відеоOPENAI_API_KEY
Qwenwan2.6-t2vТакТак (віддалений URL)Так (віддалений URL)QWEN_API_KEY
Runwaygen4.5Так1 зображення1 відеоRUNWAYML_API_SECRET
TogetherWan-AI/Wan2.2-T2V-A14BТак1 зображенняНіTOGETHER_API_KEY
Vydraveo3Так1 зображення (kling)НіVYDRA_API_KEY
xAIgrok-imagine-videoТак1 зображення1 відеоXAI_API_KEY
Деякі провайдери приймають додаткові або альтернативні змінні середовища для API-ключів. Докладніше дивіться на окремих сторінках провайдерів. Запустіть video_generate action=list, щоб під час виконання переглянути доступних провайдерів, моделі та режими виконання.

Оголошена матриця можливостей

Це явний контракт режимів, який використовують video_generate, контрактні тести та спільний live sweep.
ПровайдерgenerateimageToVideovideoToVideoСпільні live lanes на сьогодні
AlibabaТакТакТакgenerate, imageToVideo; videoToVideo пропущено, оскільки цьому провайдеру потрібні віддалені http(s) URL відео
BytePlusТакТакНіgenerate, imageToVideo
ComfyUIТакТакНіНе входить до спільного sweep; покриття, специфічне для workflow, міститься в тестах Comfy
falТакТакНіgenerate, imageToVideo
GoogleТакТакТакgenerate, imageToVideo; спільний videoToVideo пропущено, оскільки поточний buffer-backed Gemini/Veo sweep не приймає такий вхід
MiniMaxТакТакНіgenerate, imageToVideo
OpenAIТакТакТакgenerate, imageToVideo; спільний videoToVideo пропущено, оскільки цей шлях org/input наразі потребує доступу до provider-side inpaint/remix
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 пропущено, оскільки цьому провайдеру наразі потрібен віддалений URL MP4

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

Обов’язкові

ПараметрТипОпис
promptstringТекстовий опис відео, яке потрібно згенерувати (обов’язково для action: "generate")

Вхідні дані контенту

ПараметрТипОпис
imagestringОдне еталонне зображення (шлях або URL)
imagesstring[]Кілька еталонних зображень (до 9)
imageRolesstring[]Необов’язкові підказки ролей для кожної позиції паралельно до об’єднаного списку зображень. Канонічні значення: first_frame, last_frame, reference_image
videostringОдне еталонне відео (шлях або URL)
videosstring[]Кілька еталонних відео (до 4)
videoRolesstring[]Необов’язкові підказки ролей для кожної позиції паралельно до об’єднаного списку відео. Канонічне значення: reference_video
audioRefstringОдне еталонне аудіо (шлях або URL). Використовується, наприклад, для фонової музики або еталона голосу, коли провайдер підтримує аудіовходи
audioRefsstring[]Кілька еталонних аудіо (до 3)
audioRolesstring[]Необов’язкові підказки ролей для кожної позиції паралельно до об’єднаного списку аудіо. Канонічне значення: reference_audio
Підказки ролей передаються провайдеру як є. Канонічні значення походять із union VideoGenerationAssetRole, але провайдери можуть приймати й додаткові рядки ролей. Масиви *Roles не повинні містити більше елементів, ніж відповідний список еталонів; помилки на один елемент більше або менше завершуються зрозумілим повідомленням. Використовуйте порожній рядок, щоб залишити позицію незаповненою.

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

ПараметрТипОпис
aspectRatiostring1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 або adaptive
resolutionstring480P, 720P, 768P або 1080P
durationSecondsnumberЦільова тривалість у секундах (округлюється до найближчого значення, яке підтримує провайдер)
sizestringПідказка розміру, якщо провайдер це підтримує
audiobooleanУвімкнути згенероване аудіо у вихідному результаті, якщо підтримується. Відрізняється від audioRef* (вхідні дані)
watermarkbooleanУвімкнути або вимкнути водяний знак провайдера, якщо підтримується
adaptive — це специфічний для провайдера службовий маркер: він передається без змін провайдерам, які оголошують adaptive у своїх можливостях (наприклад, BytePlus Seedance використовує його, щоб автоматично визначати співвідношення сторін за розмірами вхідного зображення). Провайдери, які його не оголошують, показують це значення через details.ignoredOverrides у результаті інструмента, щоб було видно, що його було проігноровано.

Додатково

ПараметрТипОпис
actionstring"generate" (типово), "status" або "list"
modelstringПеревизначення провайдера/моделі (наприклад, runway/gen4.5)
filenamestringПідказка для імені вихідного файлу
providerOptionsobjectСпецифічні для провайдера параметри як JSON-об’єкт (наприклад, {"seed": 42, "draft": true}). Провайдери, які оголошують типізовану схему, перевіряють ключі та типи значень; невідомі ключі або невідповідності призводять до пропуску кандидата під час fallback. Провайдери без оголошеної схеми отримують параметри як є. Запустіть video_generate action=list, щоб побачити, що приймає кожен провайдер
Не всі провайдери підтримують усі параметри. OpenClaw уже нормалізує тривалість до найближчого значення, яке підтримує провайдер, а також переналаштовує трансформовані підказки геометрії, як-от перетворення size на aspect ratio, коли fallback-провайдер має іншу поверхню керування. Справді непідтримувані перевизначення ігноруються в режимі best-effort і повідомляються як попередження в результаті інструмента. Жорсткі обмеження можливостей (наприклад, надто велика кількість еталонних вхідних даних) завершуються помилкою до надсилання. Результати інструмента показують застосовані налаштування. Коли OpenClaw переналаштовує тривалість або геометрію під час fallback провайдера, повернуті значення durationSeconds, size, aspectRatio і resolution відображають те, що було надіслано, а details.normalization фіксує перетворення від запитаного до застосованого. Еталонні вхідні дані також визначають режим виконання:
  • Без еталонних медіа: generate
  • Будь-яке еталонне зображення: imageToVideo
  • Будь-яке еталонне відео: videoToVideo
  • Еталонні аудіовходи не змінюють визначений режим; вони застосовуються поверх режиму, який вибирають еталонні зображення/відео, і працюють лише з провайдерами, які оголошують maxInputAudios
Змішані еталонні зображення та відео не є стабільною спільною поверхнею можливостей. Рекомендовано використовувати один тип еталонів на запит.

Fallback і типізовані параметри

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

Дії

  • generate (типово) — створити відео з вказаного запиту та необов’язкових еталонних вхідних даних.
  • status — перевірити стан активного відеозавдання для поточної сесії без запуску нової генерації.
  • list — показати доступних провайдерів, моделі та їхні можливості.

Вибір моделі

Під час генерації відео OpenClaw визначає модель у такому порядку:
  1. Параметр інструмента model — якщо агент указує його у виклику.
  2. videoGenerationModel.primary — із конфігурації.
  3. videoGenerationModel.fallbacks — випробовуються по черзі.
  4. Автовизначення — використовує провайдерів із дійсною автентифікацією, починаючи з поточного провайдера за замовчуванням, а потім решту провайдерів в алфавітному порядку.
Якщо провайдер завершується помилкою, автоматично випробовується наступний кандидат. Якщо помиляються всі кандидати, помилка містить подробиці кожної спроби. Установіть 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)ID провайдера 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". ID моделей T2V автоматично перемикаються на відповідний варіант I2V, коли надається зображення. Підтримувані ключі providerOptions: seed (number), draft (boolean, примусово встановлює 480p), camera_fixed (boolean).
BytePlus Seedance 1.5Потребує Plugin @openclaw/byteplus-modelark. ID провайдера 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 (number) передається далі.
BytePlus Seedance 2.0Потребує Plugin @openclaw/byteplus-modelark. ID провайдера 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 (number) передається далі.
ComfyUIЛокальне або хмарне виконання на основі workflow. Підтримує text-to-video та image-to-video через налаштований граф.
falВикористовує потік на основі черги для довготривалих завдань. Лише одне еталонне зображення.
GoogleВикористовує Gemini/Veo. Підтримує одне еталонне зображення або одне еталонне відео.
MiniMaxЛише одне еталонне зображення.
OpenAIПередається лише перевизначення size. Інші перевизначення стилю (aspectRatio, resolution, audio, watermark) ігноруються з попередженням.
QwenТой самий бекенд 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, а також віддалене редагування/розширення відео.

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

Спільний контракт генерації відео тепер дозволяє провайдерам оголошувати можливості, специфічні для режимів, а не лише плоскі агреговані обмеження. Нові реалізації провайдерів мають надавати перевагу явним блокам режимів:
capabilities: {
  generate: {
    maxVideos: 1,
    maxDurationSeconds: 10,
    supportsResolution: true,
  },
  imageToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputImages: 1,
    maxDurationSeconds: 5,
  },
  videoToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputVideos: 1,
    maxDurationSeconds: 5,
  },
}
Плоских агрегованих полів, таких як maxInputImages і maxInputVideos, недостатньо, щоб оголосити підтримку режимів трансформації. Провайдери мають явно оголошувати generate, imageToVideo і videoToVideo, щоб live-тести, контрактні тести та спільний інструмент video_generate могли детерміновано перевіряти підтримку режимів.

Live-тести

Live-покриття за opt-in для спільних вбудованих провайдерів:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Обгортка репозиторію:
pnpm test:live:media video
Цей live-файл завантажує відсутні змінні середовища провайдера з ~/.profile, типово надає перевагу live/env API-ключам над збереженими профілями автентифікації та за замовчуванням запускає безпечний для релізу smoke-тест:
  • generate для кожного провайдера у sweep, окрім FAL
  • односекундний запит про лобстера
  • ліміт операції для кожного провайдера з OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (180000 типово)
FAL підключається лише за opt-in, оскільки затримка черги на боці провайдера може домінувати у часі релізу:
pnpm test:live:media video --video-providers fal
Установіть OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, щоб також запускати оголошені режими трансформації, які спільний sweep може безпечно виконувати з локальними медіа:
  • imageToVideo, коли capabilities.imageToVideo.enabled
  • videoToVideo, коли capabilities.videoToVideo.enabled і провайдер/модель приймає локальний вхід відео на основі буфера у спільному 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"

Пов’язане