Tools

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

Агенты OpenClaw могут генерировать видео из текстовых запросов, референсных изображений или существующих видео. Поддерживаются шестнадцать провайдерских бэкендов, каждый с разными вариантами моделей, режимами ввода и наборами возможностей. Агент выбирает подходящего провайдера автоматически на основе вашей конфигурации и доступных API-ключей.

OpenClaw рассматривает генерацию видео как три режима выполнения:

  • generate - запросы text-to-video без референсных медиа.
  • 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. Вносить инструмент в список разрешенных не требуется.

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

    Генерация видео выполняется асинхронно. Когда агент вызывает 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:

    bash
    openclaw tasks listopenclaw 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 в видео До 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 или 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 только Wan-AI/Wan2.2-I2V-A14B - TOGETHER_API_KEY
    Vydra veo3 1 изображение (kling) - VYDRA_API_KEY
    xAI grok-imagine-video 1 изображение первого кадра или до 7 reference_image 1 видео XAI_API_KEY

    Некоторые провайдеры принимают дополнительные или альтернативные env vars для API-ключей. Подробности см. на отдельных страницах провайдеров.

    Запустите video_generate action=list, чтобы во время выполнения посмотреть доступных провайдеров, модели и режимы выполнения.

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

    Явный контракт режимов, используемый video_generate, контрактными тестами и общей реальной проверкой:

    Провайдер generate imageToVideo videoToVideo Общие текущие проверки
    Alibaba generate, imageToVideo; videoToVideo пропускается, потому что этому провайдеру нужны удаленные URL видео http(s)
    BytePlus - generate, imageToVideo
    ComfyUI - Не входит в общую проверку; покрытие для конкретных workflow находится в тестах Comfy
    DeepInfra - - generate; нативные схемы видео DeepInfra являются text-to-video в контракте Plugin
    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 generate, imageToVideo; videoToVideo пропускается, потому что этому провайдеру сейчас нужен удаленный URL MP4

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

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

    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 Подсказка разрешения, например 480P, 720P, 768P, 1080P, 4K или значение, специфичное для провайдера. OpenClaw нормализует или игнорирует неподдерживаемые значения для каждого провайдера. OPENCLAW_DOCS_MARKER:paramClose:

    durationSecondsnumber

    Целевая длительность в секундах (округляется до ближайшего значения, поддерживаемого провайдером).

    sizestring
    audioboolean

    Включить сгенерированное аудио в выходном результате, когда это поддерживается. Отличается от audioRef* (входные данные).

    watermarkboolean

    adaptive — специфичный для провайдера sentinel: он передается как есть провайдерам, которые объявляют 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, если настроено, иначе значение провайдера по умолчанию, заданное Plugin, когда оно существует. OPENCLAW_DOCS_MARKER:paramClose:

    providerOptionsobject

    Специфичные для провайдера параметры в виде JSON-объекта (например, {"seed": 42, "draft": true}). Провайдеры, объявляющие типизированную схему, проверяют ключи и типы; неизвестные ключи или несоответствия пропускают кандидата во время fallback. Провайдеры без объявленной схемы получают параметры как есть. Запустите video_generate action=list, чтобы увидеть, что принимает каждый провайдер.

    Референсные входные данные выбирают режим выполнения:

    • Нет референсных медиа → 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.

    json5
    {  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

    Выполнение локально или в облаке на основе workflows. Поддерживает преобразование текста в видео и изображения в видео через настроенный граф.

    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 OpenRouter /videos. 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

    Поддерживает локальные файлы через data URI. Для преобразования видео в видео требуется runway/gen4_aleph. Запуски только с текстом предоставляют соотношения сторон 16:9 и 9:16.

    Together

    Только один референс изображения.

    Vydra

    Использует https://www.vydra.ai/api/v1 напрямую, чтобы избежать редиректов, сбрасывающих авторизацию. veo3 встроен только как преобразование текста в видео; kling требует URL удаленного изображения.

    xAI

    Поддерживает преобразование текста в видео, преобразование одного изображения первого кадра в видео, до 7 входов reference_image через reference_images xAI, а также удаленные потоки редактирования и расширения видео.

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

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

    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

    Этот файл живых тестов по умолчанию использует уже экспортированные env vars провайдеров перед сохраненными профилями авторизации и по умолчанию запускает безопасный для релиза smoke-тест:

    • generate для каждого провайдера не из FAL в проверке.
    • Односекундный prompt с лобстером.
    • Лимит операций для каждого провайдера из 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 и провайдер/модель принимает локальный видеовход на основе буфера в общем проходе.

    Сегодня общий живой lane 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