Перейти к основному содержанию
Агенты 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"
2

Выберите модель по умолчанию (необязательно)

openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
3

Попросите агента

Сгенерируй 5-секундное кинематографичное видео, где дружелюбный лобстер занимается серфингом на закате.
Агент автоматически вызывает video_generate. Вносить инструмент в список разрешенных не требуется.

Как работает асинхронная генерация

Генерация видео выполняется асинхронно. Когда агент вызывает video_generate в сессии:
  1. OpenClaw отправляет запрос провайдеру и сразу возвращает идентификатор задачи.
  2. Провайдер обрабатывает задание в фоне (обычно от 30 секунд до нескольких минут в зависимости от провайдера и разрешения; медленные провайдеры с очередью могут работать до настроенного тайм-аута).
  3. Когда видео готово, OpenClaw пробуждает ту же сессию внутренним событием завершения.
  4. Агент сообщает пользователю через обычный для сессии режим видимого ответа: доставка финального ответа, если она автоматическая, или message(action="send"), если сессии требуется инструмент сообщений. Если сессия запросившего неактивна или ее активное пробуждение завершается с ошибкой, а часть сгенерированного видео все еще отсутствует в ответе о завершении, 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", чтобы выполнить явную проверку без запуска новой генерации.

Поддерживаемые провайдеры

ПровайдерМодель по умолчаниюТекстРеф. изображениеРеф. видеоАутентификация
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
ComfyUIworkflow1 изображение-COMFY_API_KEY или COMFY_CLOUD_API_KEY
DeepInfraPixverse/Pixverse-T2V--DEEPINFRA_API_KEY
falfal-ai/minimax/video-01-live1 изображение; до 9 с преобразованием референсов Seedance в видеоДо 3 видео с преобразованием референсов Seedance в видеоFAL_KEY
Googleveo-3.1-fast-generate-preview1 изображение1 видеоGEMINI_API_KEY
MiniMaxMiniMax-Hailuo-2.31 изображение-MINIMAX_API_KEY или MiniMax OAuth
OpenAIsora-21 изображение1 видеоOPENAI_API_KEY
OpenRoutergoogle/veo-3.1-fastДо 4 изображений (первый/последний кадр или референсы)-OPENROUTER_API_KEY
Qwenwan2.6-t2vДа (удаленный URL)Да (удаленный URL)QWEN_API_KEY
Runwaygen4.51 изображение1 видеоRUNWAYML_API_SECRET
TogetherWan-AI/Wan2.2-T2V-A14Bтолько Wan-AI/Wan2.2-I2V-A14B-TOGETHER_API_KEY
Vydraveo31 изображение (kling)-VYDRA_API_KEY
xAIgrok-imagine-video1 изображение первого кадра или до 7 reference_image1 видеоXAI_API_KEY
Некоторые провайдеры принимают дополнительные или альтернативные env vars для API-ключей. Подробности см. на отдельных страницах провайдеров. Запустите video_generate action=list, чтобы во время выполнения посмотреть доступных провайдеров, модели и режимы выполнения.

Матрица возможностей

Явный контракт режимов, используемый video_generate, контрактными тестами и общей реальной проверкой:
ПровайдерgenerateimageToVideovideoToVideoОбщие текущие проверки
Alibabagenerate, imageToVideo; videoToVideo пропускается, потому что этому провайдеру нужны удаленные URL видео http(s)
BytePlus-generate, imageToVideo
ComfyUI-Не входит в общую проверку; покрытие для конкретных workflow находится в тестах Comfy
DeepInfra--generate; нативные схемы видео DeepInfra являются text-to-video в контракте Plugin
falgenerate, imageToVideo; videoToVideo только при использовании преобразования референсов Seedance в видео
Googlegenerate, imageToVideo; общий videoToVideo пропускается, потому что текущая проверка Gemini/Veo на основе буферов не принимает такой ввод
MiniMax-generate, imageToVideo
OpenAIgenerate, imageToVideo; общий videoToVideo пропускается, потому что этому пути организации/ввода сейчас нужен доступ к редактированию видео на стороне провайдера
OpenRouter-generate, imageToVideo
Qwengenerate, imageToVideo; videoToVideo пропускается, потому что этому провайдеру нужны удаленные URL видео http(s)
Runwaygenerate, imageToVideo; videoToVideo выполняется только когда выбранная модель — runway/gen4_aleph
Together-generate, imageToVideo
Vydra-generate; общий imageToVideo пропускается, потому что встроенная veo3 поддерживает только текст, а встроенной kling требуется удаленный URL изображения
xAIgenerate, imageToVideo; videoToVideo пропускается, потому что этому провайдеру сейчас нужен удаленный URL MP4

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

Обязательные

prompt
string
обязательно
Текстовое описание видео для генерации. Обязательно для action: "generate".

Входные данные контента

image
string
Одно референсное изображение (путь или URL).
images
string[]
Несколько референсных изображений (до 9).
imageRoles
string[]
Необязательные подсказки ролей по позициям, параллельные объединенному списку изображений. Канонические значения: first_frame, last_frame, reference_image.
video
string
Одно референсное видео (путь или URL).
videos
string[]
Несколько референсных видео (до 4).
videoRoles
string[]
Необязательные подсказки ролей по позициям, параллельные объединенному списку видео. Каноническое значение: reference_video.
audioRef
string
Один референсный аудиофайл (путь или URL). Используется для фоновой музыки или голосового референса, когда провайдер поддерживает аудиовходы.
audioRefs
string[]
Несколько референсных аудиофайлов (до 3).
audioRoles
string[]
Необязательные подсказки ролей по позициям, параллельные объединенному списку аудио. Каноническое значение: reference_audio.
Подсказки ролей передаются провайдеру как есть. Канонические значения берутся из union VideoGenerationAssetRole, но провайдеры могут принимать дополнительные строки ролей. Массивы *Roles не должны содержать больше элементов, чем соответствующий список референсов; ошибки смещения на один элемент завершаются понятной ошибкой. Используйте пустую строку, чтобы оставить слот незаданным. Для xAI задайте роль каждого изображения как reference_image, чтобы использовать режим генерации reference_images; опустите роль или используйте first_frame для преобразования одного изображения в видео.

Управление стилем

aspectRatio
string
Подсказка соотношения сторон, например 1:1, 16:9, 9:16, adaptive или значение, специфичное для провайдера. OpenClaw нормализует или игнорирует неподдерживаемые значения для каждого провайдера.
resolution
string
Подсказка разрешения, например 480P, 720P, 768P, 1080P, 4K или значение, специфичное для провайдера. OpenClaw нормализует или игнорирует неподдерживаемые значения для каждого провайдера.
durationSeconds
number
Целевая длительность в секундах (округляется до ближайшего значения, поддерживаемого провайдером).
size
string
Подсказка размера, когда провайдер ее поддерживает.
audio
boolean
Включить сгенерированное аудио в выходном результате, когда это поддерживается. Отличается от audioRef* (входные данные).
watermark
boolean
Переключает водяной знак провайдера, когда это поддерживается.
adaptive — специфичный для провайдера sentinel: он передается как есть провайдерам, которые объявляют adaptive в своих возможностях (например, BytePlus Seedance использует его для автоматического определения соотношения по размерам входного изображения). Провайдеры, которые его не объявляют, показывают значение через details.ignoredOverrides в результате инструмента, чтобы было видно, что оно отброшено.

Расширенные параметры

action
"generate" | "status" | "list"
по умолчанию:"generate"
"status" возвращает текущую задачу сессии; "list" проверяет провайдеров.
model
string
Переопределение провайдера/модели (например, runway/gen4.5).
filename
string
Подсказка имени выходного файла.
timeoutMs
number
Необязательный тайм-аут операции провайдера в миллисекундах. Если он не указан, OpenClaw использует agents.defaults.videoGenerationModel.timeoutMs, если настроено, иначе значение провайдера по умолчанию, заданное Plugin, когда оно существует.
providerOptions
object
Специфичные для провайдера параметры в виде JSON-объекта (например, {"seed": 42, "draft": true}). Провайдеры, объявляющие типизированную схему, проверяют ключи и типы; неизвестные ключи или несоответствия пропускают кандидата во время fallback. Провайдеры без объявленной схемы получают параметры как есть. Запустите video_generate action=list, чтобы увидеть, что принимает каждый провайдер.
Не все провайдеры поддерживают все параметры. OpenClaw нормализует длительность до ближайшего значения, поддерживаемого провайдером, и переназначает переведенные подсказки геометрии, например размер в соотношение сторон, когда fallback-провайдер предоставляет другую поверхность управления. Действительно неподдерживаемые переопределения игнорируются по принципу максимального старания и сообщаются как предупреждения в результате инструмента. Жесткие ограничения возможностей (например, слишком много референсных входов) завершаются ошибкой до отправки. Результаты инструмента сообщают примененные настройки; details.normalization фиксирует любой перевод из запрошенного значения в примененное.
Референсные входные данные выбирают режим выполнения:
  • Нет референсных медиа → generate
  • Любой референс изображения → imageToVideo
  • Любой референс видео → videoToVideo
  • Референсные аудиовходы не меняют разрешенный режим; они применяются поверх того режима, который выбирают референсы изображения/видео, и работают только с провайдерами, объявляющими maxInputAudios.
Смешанные референсы изображений и видео не являются стабильной общей поверхностью возможностей. Предпочитайте один тип референса на запрос.

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

Некоторые проверки возможностей применяются на слое fallback, а не на границе инструмента, поэтому запрос, превышающий ограничения основного провайдера, все еще может выполниться на подходящем fallback:
  • Активный кандидат, не объявляющий maxInputAudios (или объявляющий 0), пропускается, когда запрос содержит аудиореференсы; пробуется следующий кандидат.
  • maxDurationSeconds активного кандидата ниже запрошенного durationSeconds и список supportedDurationSeconds не объявлен → пропускается.
  • Запрос содержит providerOptions, а активный кандидат явно объявляет типизированную схему providerOptions → пропускается, если переданные ключи отсутствуют в схеме или типы значений не совпадают. Провайдеры без объявленной схемы получают параметры как есть (обратно совместимая сквозная передача). Провайдер может отказаться от всех параметров провайдера, объявив пустую схему (capabilities.providerOptions: {}), что вызывает такой же пропуск, как при несоответствии типа.
Первая причина пропуска в запросе логируется на уровне warn, чтобы операторы видели, когда их основной провайдер был пропущен; последующие пропуски логируются на уровне debug, чтобы длинные цепочки fallback оставались тихими. Если пропущены все кандидаты, агрегированная ошибка включает причину пропуска для каждого.

Действия

ДействиеЧто делает
generateПо умолчанию. Создает видео из заданного prompt и необязательных референсных входных данных.
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"],
      },
    },
  },
}

Примечания по провайдерам

Использует асинхронную конечную точку DashScope / Model Studio. Референсные изображения и видео должны быть удаленными URL http(s).
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).
Требует 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) передается дальше.
Требует 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) передается дальше.
Выполнение локально или в облаке на основе workflows. Поддерживает преобразование текста в видео и изображения в видео через настроенный граф.
Использует поток с очередью для длительных заданий. 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 OpenRouter /videos. OpenClaw отправляет задание, опрашивает polling_url и скачивает либо unsigned_urls, либо документированную конечную точку содержимого задания. Встроенное значение по умолчанию google/veo-3.1-fast объявляет длительности 4/6/8 секунд, разрешения 720P/1080P и соотношения сторон 16:9/9:16.
Тот же бэкенд DashScope, что и у Alibaba. Входные референсы должны быть удаленными URL http(s); локальные файлы отклоняются заранее.
Поддерживает локальные файлы через data URI. Для преобразования видео в видео требуется runway/gen4_aleph. Запуски только с текстом предоставляют соотношения сторон 16:9 и 9:16.
Только один референс изображения.
Использует https://www.vydra.ai/api/v1 напрямую, чтобы избежать редиректов, сбрасывающих авторизацию. veo3 встроен только как преобразование текста в видео; kling требует URL удаленного изображения.
Поддерживает преобразование текста в видео, преобразование одного изображения первого кадра в видео, до 7 входов reference_image через reference_images xAI, а также удаленные потоки редактирования и расширения видео.

Режимы возможностей провайдера

Общий контракт генерации видео поддерживает возможности, специфичные для режима, а не только плоские агрегированные лимиты. Новым реализациям провайдеров следует предпочитать явные блоки режимов:
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 вместо увеличения лимита для всего режима.

Живые тесты

Включаемое живое покрытие для общих встроенных провайдеров:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
Обертка репозитория:
pnpm test:live:media video
Этот файл живых тестов по умолчанию использует уже экспортированные env vars провайдеров перед сохраненными профилями авторизации и по умолчанию запускает безопасный для релиза smoke-тест:
  • generate для каждого провайдера не из FAL в проверке.
  • Односекундный prompt с лобстером.
  • Лимит операций для каждого провайдера из OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS (180000 по умолчанию).
FAL включается отдельно, потому что задержка очереди на стороне провайдера может доминировать во времени релиза:
pnpm test:live:media video --video-providers fal
Задайте OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, чтобы также запускать объявленные режимы преобразования, которые общий проход может безопасно выполнить с локальными медиа:
  • imageToVideo, когда capabilities.imageToVideo.enabled.
  • videoToVideo, когда capabilities.videoToVideo.enabled и провайдер/модель принимает локальный видеовход на основе буфера в общем проходе.
Сегодня общий живой 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"

Связанное