Skip to main content
На этой странице представлен готовый к использованию 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:
Практическое правило: для повседневного использования и больших объёмов выбирайте серию wan по умолчанию; когда визуальное качество важнее всего--model happyhorse. Обе серии используют одну и ту же группу Wan&HappyHorse (множитель 0.14x ≈ 98% от официальной цены в CNY, а при пополнении с бонусами — ещё ниже) — один token подходит для обеих, и отдельной скидочной группы нет. Тарификация посекундная; за неудавшиеся задачи плата не взимается. Полные цены — в Обзор Wan и Обзор HappyHorse.

Какие 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не требуется дополнительная настройка или переменные среды.
.env содержит ваш секретный ключ. Если навык используется совместно в репозитории проекта, добавьте .env в .gitignore и никогда не коммитьте его.

③ Передайте это своему Agent

  • Агенты с автоматическим обнаружением навыков (например, Claude Code): поместите всю папку wan/ в каталог навыков — личный ~/.claude/skills/ или на уровне проекта .claude/skills/ (общий с репозиторием).
  • Другие агенты: следуйте их собственным соглашениям для навыков/плагинов; или, проще всего, — попросите агента «прочитать SKILL.md в этой папке и следовать ему».
Вот и всё — перейдите к Как использовать для примеров.

SKILL.md

Создайте wan/SKILL.md с полным содержимым ниже (в description указано «что он делает + когда его использовать», что агент использует для автозапуска):
name должен состоять из строчных букв и дефисов. В агентах с slash-командами имя папки — это команда — wan дает вам /wan. ${CLAUDE_SKILL_DIR} — это переменная каталога навыков Claude Code; в других агентах просто используйте фактический путь к скрипту.

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

Связанные документы