HiAPI
Блог

Руководство по использованию

Создание коротких видео с помощью API преобразования текста в видео happyhorse-1.1: сквозной рабочий процесс

Jul 7, 2026
Создание коротких видео с помощью API преобразования текста в видео happyhorse-1.1: сквозной рабочий процесс

Короткие видео — это игра в количества. TikTok, Reels и Shorts вознаграждают аккаунты, которые публикуются ежедневно, а главным узким местом производства обычно становится B-roll: те 3–8-секундные вертикальные клипы, которые несут в себе хук, демонстрацию продукта или завораживающий цикл. HappyHorse 1.1 преобразование текста в видео особенно хорошо подходит для этого сценария, потому что он генерирует нативный звук в том же вызове — без отдельного саундтрека или фоли — и напрямую поддерживает вертикальный вывод 9:16, поэтому в постобработке не нужно обрезать кадр.

Это руководство представляет собой сквозной рабочий процесс: шаблоны промптов, оптимизированные для коротких видео, жизненный цикл асинхронной задачи, скрипт массового производства, который за один запуск рендерит видео на неделю, и расчёт затрат по платформам. Каждый встроенный ниже клип сгенерирован с помощью точно такого же запроса, как показано рядом — со включённым звуком, напрямую из API.

Предварительные условия. Вам нужен ключ hiapi (Authorization: Bearer sk-…). Если вы раньше не вызывали /v1/tasks, сначала ознакомьтесь с документацией Создание асинхронного API или с учебным пособием по happyhorse-1.1 curl + Python — эта статья основана на том пособии и сосредоточена на рабочем процессе для коротких видео.

Почему эта модель подходит для коротких видео

Для этого формата важны три особенности:

  • Нативный звук. Эмбиент, фоли и разовые звуковые эффекты генерируются вместе с видео. Для контента «необъяснимо успокаивающего» и B-roll звук и есть контент — клипы с реальным звуком заметно превосходят беззвучные AI-фрагменты, которые авторы заполняют стоковой музыкой.
  • 9:16 как полноценный формат. aspect_ratio принимает 9:16 (а также 16:9, 1:1, 4:5, 21:9, 9:21 и другие), поэтому вы можете рендерить вертикальное видео нативно, а не обрезать горизонтальный мастер и терять композицию.
  • Диапазон 3–15 секунд. duration принимает любое целое число от 3 до 15 — именно интервал коротких видео. Хук — 3 секунды, демонстрация продукта — 4–6 секунд, полная мини-история помещается в 12–15 секунд.

Схема входных данных намеренно компактна. Обязателен только prompt; полезные параметры:

Поле Значение Значение по умолчанию для коротких видео
prompt строка (обязательно) см. шаблоны ниже
aspect_ratio 16:9, 9:16, 3:4, 4:3, 4:5, 5:4, 1:1, 9:21, 21:9 9:16
resolution 720p, 1080p 720p для черновиков, 1080p для основных публикаций
duration целое число 3–15 (секунды) 3–5

Две вещи он не принимает, чтобы вы не потратили запрос на их обнаружение: нет переключателя audio (звук всегда включён) и нет seed. Отправка любого из них вернёт ошибку валидации 400.

Три реальных клипа, три типа коротких видео

Это три формата, доминирующие в лентах коротких видео, и каждый сгенерирован одним вызовом API. Промпты следуют повторяющемуся шаблону, который вы можете адаптировать: тег формата → субъект и действие → композиция → освещение → аудиоподсказка.

1. Лайфстайл B-roll (кофейная классика)

{
  "model": "happyhorse-1.1/text-to-video",
  "input": {
    "prompt": "Тест вертикального короткого видео: бариста создаёт латте-арт в светлой кофейне, вертикальная композиция в стиле смартфона, естественный звук вспенивания молока и разговоров в кофейне.",
    "duration": 4,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }
}

Обратите внимание на аудиоподсказку в конце промпта («вспенивание молока и разговоры в кофейне»). Явное указание желаемых звуков — самый эффективный приём при работе с этой моделью: без подсказки она всё равно генерирует звук, но описание даёт пригодную эмбиент-дорожку.

2. Тизер запуска продукта

{
  "model": "happyhorse-1.1/text-to-video",
  "input": {
    "prompt": "Тизер запуска продукта, вертикальный 9:16: массивный винтажный кроссовок кремового и жжёно-оранжевого цвета медленно вращается на матово-чёрном поворотном столе, жёсткий контурный свет очерчивает его силуэт, мельчайшие пылинки плывут в световом луче, тёмный студийный фон, обильное пустое пространство сверху для наложения заголовка. Мощно, кинематографично. Нативный звук: низкий гул баса и мягкий свист, когда кроссовок завершает оборот.",
    "duration": 3,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }
}

Здесь два приёма, характерных для коротких видео. Во-первых, «обильное пустое пространство сверху для наложения заголовка» — вы добавите текст поверх этого клипа в редакторе, поэтому попросите модель оставить негативное пространство, а не заставляйте субтитры бороться за кадр. Во-вторых, звук спроектирован, а не является эмбиентом: низкий гул баса плюс свист, синхронизированный с ритмом действия, — именно то, что используют трейлеры продуктов.

3. Необъяснимо успокаивающий макроцикл

{
  "model": "happyhorse-1.1/text-to-video",
  "input": {
    "prompt": "Необъяснимо успокаивающее макро, вертикальный 9:16: острый шпатель чисто разрезает блок бледно-мятного кинетического песка на белом столе, срез рассыпается в замедленной съёмке, гранулы сыплются вниз, мягкий ровный студийный свет, экстремально крупный план заполняет кадр. Нативный звук: сухой хруст гранул при разрезании, без музыки.",
    "duration": 3,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }
}

«Без музыки» важно: для ASMR-подобного контента модель должна потратить свой звуковой бюджет на фоли (хруст гранул), и явное указание предотвращает добавление универсального саундтрека.

Шаблоны промптов для коротких видео

Извлечено из приведённых клипов и лежащих в их основе запусков:

  1. Начинайте с формата. Начинайте с «вертикальное короткое видео», «тизер запуска продукта, вертикальный 9:16», «необъяснимо успокаивающее макро». Модель компонует кадр под указанный вами формат — композиция в стиле смартфона выглядит иначе, чем широкоэкранный кинематографический кадр.
  2. Один субъект, одно действие. 3–5 секунд — это один такт. «Бариста создаёт латте-арт» работает; история в трёх актах за 4 секунды даст вам только кашу. Если нужно несколько тактов, сгенерируйте несколько клипов и смонтируйте их вместе — именно так и монтируются настоящие короткие видео.
  3. Прописывайте звук одним предложением. Каждый промпт заканчивается на нативный звук: <1–3 желаемых звука>. Фоновый шум («разговоры в кофейне»), фоли («сухой хруст гранул») или спроектированные разовые эффекты («низкий гул баса и мягкий свист») — всё работает.
  4. Оставляйте место для наложений. Если клип будет нести субтитры или заголовок, попросите «пустое пространство сверху» или «чистое негативное пространство в верхней трети». Это дешевле, чем перекомпоновывать в постобработке.
  5. Заканчивайте зацикленным состоянием. Ленты зацикливаются автоматически. Промпты, которые заканчиваются там, где начались («кроссовок завершает оборот»), зацикливаются чисто и незаметно накапливают повторные просмотры.

Асинхронный рабочий процесс: отправка, опрос, скачивание

Каждая генерация — это асинхронная задача: POST /v1/tasks немедленно возвращает taskId, вы опрашиваете GET /v1/tasks/:id, пока status не станет success, затем скачиваете output[0].url. 4-секундный клип 720p обычно рендерится примерно за 1–3 минуты.

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse-1.1/text-to-video",
    "input": {
      "prompt": "Тест вертикального короткого видео: бариста создаёт латте-арт в светлой кофейне, вертикальная композиция в стиле смартфона, естественный звук вспенивания молока и разговоров в кофейне.",
      "duration": 4,
      "resolution": "720p",
      "aspect_ratio": "9:16"
    }
  }'
# → {"code":200,"data":{"taskId":"tk-hiapi-…"},"message":"success"}

Одно практическое правило, на котором легко обжечься: URL-адреса вывода истекают. output[0].url в ответе содержит expireAt — сразу после успешного завершения задачи скачайте mp4 и поместите его в собственное хранилище. Не вставляйте горячие ссылки в CMS или инструмент планирования.

Массовое производство: неделя клипов за один запуск

Task API раскрывается во всей красе, когда вы отправляете задачи параллельно. Поскольку создание возвращается немедленно, правильный режим пакетной обработки — сначала отправить все задачи, затем опросить все задачи: пять клипов рендерятся примерно за реальное время одного клипа.

import os, time, requests

API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}

BATCH = [
    ("mon-coffee",  "Вертикальное короткое видео: пуровер-кофе расцветает в замедленной съёмке, пар клубится, тёплый утренний свет. Нативный звук: звук льющейся воды, мягкий эмбиент кофейни.", 4),
    ("tue-sneaker", "Тизер запуска продукта, вертикальный 9:16: неоновый кроссовок врезается в мелкую воду, брызги застывают в воздухе, тёмный фон. Нативный звук: один глубокий всплеск.", 3),
    ("wed-sand",    "Необъяснимо успокаивающее макро, вертикальный 9:16: блок лавандового кинетического песка разрезается тонкой нитью, срез рассыпается. Нативный звук: сухой хруст гранул, без музыки.", 3),
    ("thu-city",    "Вертикальное короткое видео: дождливая неоновая улица ночью, проходят зонты, отражения колышутся. Нативный звук: шум дождя и дальний поток машин.", 5),
    ("fri-dessert", "Вертикальное короткое видео макро: ложка разбивает карамельную корочку крем-брюле, заварной крем под ней поддаётся. Нативный звук: чёткий хруст, затем тишина.", 3),
]

def submit(prompt, duration):
    r = requests.post(API, headers=HEADERS, json={
        "model": "happyhorse-1.1/text-to-video",
        "input": {"prompt": prompt, "duration": duration,
                  "resolution": "720p", "aspect_ratio": "9:16"},
    }, timeout=60)
    return r.json()["data"]["taskId"]

# 1) сначала отправляем все задачи
tasks = {key: submit(p, d) for key, p, d in BATCH}

# 2) опрашиваем до конечного состояния всех задач
while tasks:
    time.sleep(10)
    for key, tid in list(tasks.items()):
        t = requests.get(f"{API}/{tid}", headers=HEADERS, timeout=30).json()["data"]
        if t["status"] == "success":
            url = t["output"][0]["url"]          # истекает — скачивайте немедленно
            open(f"{key}.mp4", "wb").write(requests.get(url, timeout=180).content)
            print(f"done: {key}.mp4")
            del tasks[key]
        elif t["status"] == "fail":
            print(f"FAILED {key}: {t.get('error')}")
            del tasks[key]

Производственные заметки при запуске такого скрипта в больших масштабах:

  • При сбое отправляйте заново, а не опрашивайте повторно. Неудачная задача находится в конечном состоянии; отправьте новую задачу с теми же входными данными (если она дважды не удалась по причине контента, иногда перефразируйте промпт).
  • Ведите манифест. В любой момент записывайте {key, prompt, taskId, local_path} в JSON-файл и при перезапуске пропускайте ключи, для которых mp4 уже существует. Пакетные задания прерываются; при заблаговременном планировании восстанавливаемость достаётся бесплатно.
  • Следите за ограничениями параллелизма. Если вы отправляете десятки задач, делайте интервал между отправками в одну-две секунды, а не отправляйте 50 штук в один момент.

Сколько это стоит

Биллинг рассчитывается по секундам выходного видео (страница цен): $0.16/секунда для 720p, $0.21/секунда для 1080p, независимо от соотношения сторон. Длительность — единственный рычаг затрат, что делает короткие видео самым дешёвым местом для использования этой модели:

Клип Спецификация Стоимость
Хук / успокаивающий цикл 3 сек · 720p $0.48
Стандартный такт B-roll 4 сек · 720p $0.64
Тизер продукта 5 сек · 720p $0.80
Основная публикация 5 сек · 1080p $1.05
Ежедневные публикации, 30 × 4 сек черновиков в месяц 720p ~$19.20

Практичный двухуровневый процесс: итерируйте промпты на 3 сек/720p (около половины доллара за попытку) и перерендеривайте только победителей в 1080p для публикации. Промпты чисто переносятся между разрешениями, так что вы не переделываете творческую работу — вы просто платите за пиксели только после того, как убедились, что клип того стоит.

От вывода API до опубликованного поста

Модель отдаёт вам готовый вертикальный клип со звуком; остальное — упаковка:

  • Длительность по платформам: клипы 3–5 секунд отлично работают как циклы в TikTok и Reels; для Shorts склейка двух-трёх тактов в 10–15 секунд часто удерживает зрителей дольше. duration до 15 секунд охватывает полную мини-историю за один вызов, если вы не хотите монтировать.
  • Текстовые наложения: добавляйте субтитры в редакторе (CapCut, Premiere, ffmpeg drawtext). Вот почему важен приём с промптом «оставьте пустое пространство».
  • Сохраняйте нативный звук в качестве базового слоя, даже если добавляете музыку — реальное фоли под музыкальной подложкой передаёт больше производственной ценности, чем одна только музыка.
  • Последовательные серии: короткие видео вознаграждают повторение формата. Зафиксируйте каркас промпта (композиция, освещение, стиль звука) и меняйте только субъект — три шаблона типов выше спроектированы именно для повторного использования.

Если в центре вашей серии находятся брендовые активы — реальные фото продуктов, маскоты, лица, — используйте этот рабочий процесс вместе с happyhorse-1.1 преобразование изображения в видео: создайте или снимите ключевой кадр один раз, а затем задавайте движение от него, чтобы субъект оставался одинаковым в каждом посте.

Начните рендерить

Самый быстрый путь: получите ключ, скопируйте запрос с бариста с этой страницы, и через несколько минут у вас будет первый вертикальный клип со звуком. Страница модели happyhorse-1.1 преобразование текста в видео содержит актуальный справочник параметров и цены, а Быстрый старт охватывает аутентификацию, если вы вызываете hiapi впервые. Отрендерьте три черновика, оставьте лучший — и вы получите завтрашний пост дешевле чашки кофе.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API