На этой странице представлен готовый к использованию Agent Skill: скрипт без зависимостей покрывает как серии Wan2.7, так и HappyHorse — у них один эндпоинт, одна структура запроса и одна
Wan&HappyHorse token группа, переключаемая с помощью --model. Скрипт автоматически выбирает нужную модель из передаваемых вами ресурсов (текст / изображение / ссылка / редактирование видео) и оборачивает полный асинхронный цикл отправки → опроса → скачивания. Всё это — всего два файла.Что делает навык
Один объединённый навык; скрипт определяет режим генерации и ID модели по тем assets, которые вы передаёте:Текст в video
Только prompt → совершенно новое video; автоматическое расширение prompt включено по умолчанию, так что короткие prompt тоже хорошо работают.
Изображение в video
Передайте изображение первого кадра, чтобы анимировать статичное изображение — локальные изображения загружаются напрямую, хостинг изображений не нужен.
Референс в video
Передайте референсные изображения (Wan также принимает референсные video) → новый видеоматериал с сохранением персонажей, объектов или стиля; указывайте их как «изображение 1 / video 1» в prompt.
Редактирование video
Передайте video + референсные изображения → замените или измените стиль элементов в video; длительность результата соответствует исходнику.
Какую серию выбрать
Обе серии называются абсолютно одинаково; они отличаются ценой, визуальной отделкой и возможностями по reference assets. Скрипт обрабатывает различия для--model:
Какие Agents могут это использовать
Skill — это по сути папка: заметка, которую agent должен прочитать (
SKILL.md), плюс script, который выполняет работу. Поэтому любой coding agent, который может читать локальные файлы и выполнять shell-команды, может использовать его — Codex, OpenClaw, hermes-agent, Claude Code и тому подобные.Единственное требование: на машине, где запущен agent (на вашем ноутбуке или на сервере), должны быть Python 3 и доступ в интернет (script обращается к api.apiyi.com напрямую). Script использует только стандартную библиотеку Python — ничего не нужно pip install.Настройка за 3 шага
① Создайте папку и вставьте файлы
Создайте папку для навыка и поместите в неё два файла ниже (полное содержимое в следующих двух разделах):② Поместите свой ключ рядом с ним
Впишите свой API-ключ APIYI вwan/.env (создайте его в консоли api.apiyi.com; у token должна быть включена группа Wan&HappyHorse с тарификацией по факту использования — tokens с тарификацией за каждый вызов нельзя маршрутизировать):
.env — не требуется дополнительная настройка или переменные среды.
③ Передайте это своему Agent
- Агенты с автоматическим обнаружением навыков (например, Claude Code): поместите всю папку
wan/в каталог навыков — личный~/.claude/skills/или на уровне проекта.claude/skills/(общий с репозиторием). - Другие агенты: следуйте их собственным соглашениям для навыков/плагинов; или, проще всего, — попросите агента «прочитать SKILL.md в этой папке и следовать ему».
SKILL.md
Создайтеwan/SKILL.md с полным содержимым ниже (в description указано «что он делает + когда его использовать», что агент использует для автозапуска):
scripts/wan_video.py
Создайтеwan/scripts/wan_video.py — только стандартная библиотека Python, с тем же кодом запроса, что и на страницах справки API этого сайта, проверено и работает:
Как переключить серию
Переключение серии — это просто--model; скрипт выводит идентификатор модели из «series × asset type»:
Таблица вывода идентификатора модели (запоминать не нужно — скрипт выбирает автоматически):
Входные данные Asset: локальные изображения работают сразу (проверено)
В официальной документации сказано, что media должны быть общедоступными по https URL, но наши тесты показывают, что обе серии принимают base64 data URI — поэтому скрипт автоматически преобразует локальные изображения, и-i photo.jpg или --ref-image role.png с локальным путём работают сразу, без необходимости в image host. Для видео-asset (--ref-video / --video) по-прежнему рекомендуются публичные URL: base64-кодирование увеличивает размер больших файлов примерно на треть и может превысить лимиты запроса.
Ожидайте 2–5 минут (важно)
Генерация видео — это асинхронная задача:- Скрипт оборачивает весь процесс: отправка (с заголовком
X-DashScope-Async) → опрос каждые 8 секунд → автоматическая загрузка mp4 при успехе. Клип 720P/5s занимает примерно 45–155 секунд от начала до конца (измерено); 1080P или более длинный может превысить 5 минут. - Значение
progress, застывшее на 30% надолго, — это нормально (upstream сообщает только 0/10/30/100) — задача не зависла. - Дайте команде большой таймаут (600+ секунд) или запустите её в фоне — многие агенты завершают команды по умолчанию через 2 минуты, ещё до того, как видео будет готово. Это прямо указывает
SKILL.md. - Если опрос когда-либо завершится таймаутом (20 минут), задача всё ещё находится на стороне сервера; скрипт выводит
task_idи команду для запроса. Неудачные задачи никогда не тарифицируются; повторные отправки тарифицируются дважды, поэтому скрипт никогда не выполняет автоматический повтор.
Почему одно предложение генерирует видео
Частый вопрос: я никогда не вводил команду — как тогда «сделай видео» создало ролик? Вот как это работает: при запуске агент читает описание каждого навыка в егоdescription (в его SKILL.md) — это короткий фрагмент метаданных, который сообщает, «что делает этот навык и когда его использовать». Когда ваш запрос соответствует этому описанию (например, «сгенерируй/сделай видео», «анимируй это изображение», «отредактируй этот ролик»), агент сам решает вызвать навык, читает полный SKILL.md и запускает скрипт — вам не нужно запоминать команду.
Если вы не хотите полагаться на догадки агента, используйте явный вызов ниже для полного контроля.
Как использовать
Естественный язык (неявный триггер)
После установки просто говорите с вашим агентом:Явный вызов (больше контроля)
-
Агенты с slash-командами (например, Claude Code):
-
Любой агент / попросите его запустить скрипт напрямую (самый универсальный вариант):
Куда сохраняется сгенерированное видео
- При указании только имени файла для
-o(например,-o cat.mp4) видео попадает в папкуwan-output/в корне проекта (создаётся автоматически); обе серии используют эту папку. - «Корень проекта» = первая директория, в которой есть
.gitили.claude, найденная при подъёме по каталогам от скрипта — где бы ни запускался агент, видео остаётся в вашем проекте и не теряется во временной папке. - После завершения скрипт выводит одну строку с полным абсолютным путём, а также размер файла и затраченное время, например
Video saved to /Users/you/project/wan-output/tokyo.mp4 (4.9 MB, 153s elapsed, model wan2.7-t2v). - Полученные файлы поставляются с аудиодорожкой (stereo AAC).
- URL результата истекает через 24 часа, поэтому скрипт всегда сначала скачивает файл — локальный mp4 и есть конечный результат; никогда не оставляйте URL в качестве результата.
- При указании пути с каталогами (например,
-o videos/cat.mp4или абсолютного пути) он сохраняет файл именно туда, минуяwan-output/.
Связанные документы
- Обзор генерации видео Wan (модели, тарификация, группы)
- API-справочник Wan2.7 Text-to-Video
- API-справочник Wan2.7 Reference-to-Video
- Навык видео-агента HappyHorse (вспомогательная страница с отличиями)
- Навык видео-агента Seedance 2.0 (родственный раздел на стороне Volcengine)