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 хранилище медиафайлов. Ограничение по умолчанию составляет 16MB (общее ограничение для видеофайлов); 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 в контракте плагина предназначены для преобразования текста в видео
    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, если этот параметр настроен; в противном случае используется заданное автором плагина значение провайдера по умолчанию, если оно существует. 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, // необязательное переопределение тайм-аута запроса провайдера для отдельного инструмента      },    },  },}

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

    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

    Требуется плагин @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

    Требуется плагин @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