Як створити рекламу AI-продукту за допомогою Claude Code та AIHubMix

AIHubMix9 хв читання
Як створити рекламу AI-продукту за допомогою Claude Code та AIHubMix

Маючи одне чітке зображення продукту, Claude Code та API AIHubMix, ви можете згенерувати референси персонажів у Seedream, зареєструвати їх як ассети віртуальних персон і використати Seedance для створення реклами AI-продукту.

Цей посібник заснований на реальній кампанії з аloe-спреєм і містить структуру проєкту, конфігурацію, команди та повний промпт для відео. Цільовий результат — відео тривалістю 20 секунд, 720p, вертикальна реклама 9:16 зі згенерованою AI персоною та обстановкою.

Claude Code і AIHubMix забезпечують весь робочий процес. Claude Code читає опис проєкту, переглядає промпти та організовує виконання. AIHubMix надає єдину точку входу до моделей, тож генерація зображень і відео може працювати в межах одного проєкту.

ID моделей, параметри та обробка помилок взяті зі знімка проєкту від 16 вересня 2026 року. Перевірте поточний API перед повторним використанням. Команди використовують включений flow.py і мають запускатися з кореня проєкту.

Завантажте повний стартовий набір

Завантажте код, промпти, конфігурацію та зразки зображень:

https://drive.google.com/uc?export=download&id=1nXcj26Fq3daHeTd0SynS7_QEXgH8z4u_

Після розпакування перейдіть до каталогу seedance-starter. Пакет містить flow.py, два знімки схем, п'ять файлів промптів, зображення продукту та три референсні зображення. Скрипт на Python використовує лише стандартну бібліотеку.

  • Почніть з етапу відео: використайте три включені референси, налаштуйте ключ і почніть з кроку 4.
  • Почніть з власним продуктом: замініть зображення продукту та деталі промптів, перенесіть включені референсні зображення з assets/ і почніть з кроку 3.

Скопіюйте .env.example у .env і додайте свій API-ключ. Ваш обліковий запис має мати доступ до відповідних моделей, дозвіл на асинхронні завдання (за потреби) та достатню квоту. Генерація через API тарифікується за використання.

1. Підготуйте зображення продукту та проєкт

Приклад продукту — Nature Republic Aloe Vera Mist. Адаптуючи робочий процес, оновлюйте разом зображення, опис продукту та дію використання.

ФайлПризначення
assets/product.pngОригінальне зображення продукту
prompts/prompt-a.txtОсновний промпт портрета персонажа
prompts/prompt-b.txtПромпт персонажа, що тримає продукт
prompts/prompt-c.txtПромпт використання продукту
prompts/prompt-video.txtЧасова шкала відео, вимоги до камери та аудіо
prompts.jsonРозміри, тривалість, залежності від референсів і шляхи до промптів
flow.pyAPI-запити, реєстрація ассетів, опитування та завантаження
seedream.schema.json, seedance.schema.jsonКешовані знімки схем API

Claude Code допомагає читати опис проєкту та переглядати конфігурацію і промпти. flow.py надсилає реальні запити через AIHubMix.

Чому AIHubMix підходить для цього робочого процесу

Робочому процесу AI-реклами продукту зазвичай потрібно більше однієї моделі. Модель зображень створює референси персони та продукту, а відеомодель — рух і поведінку камери. AIHubMix охоплює більшість основних моделей, тож ви можете вибирати моделі за завданням через один API-сервіс, а не підтримувати окремі облікові записи, автентифікацію та точки входу для кожного провайдера.

AIHubMix також підключається до кількох постачальників і автоматично обирає доступний маршрут із низькою затримкою. Це може зменшити вплив нестабільності одного постачальника на процес, який має послідовно виконувати генерацію зображень, обробку ассетів і генерацію відео. Доступність моделей, маршрутизація та час відповіді все ще залежать від поточного стану сервісу.

Створіть .env у корені проєкту або задайте ту саму змінну в середовищі:

AIHUBMIX_API_KEY=replace_with_your_api_key

Проєкт виключає .env через .gitignore. Діліться лише назвою змінної та прикладом, ніколи справжнім ключем.

Весь робочий процес починається з одного чіткого зображення продукту.

2. Задайте цільовий результат і розділіть параметри зображення та відео

Відповідна частина prompts.json виглядає так. Зберігайте наявний масив stills та інші поля під час редагування справжнього файлу.

{
  "size": "1080x1920",
  "aspect_ratio": "9:16",
  "duration": 20,
  "resolution": "720p",
  "generate_audio": true,
  "video_prompt_file": "prompts/prompt-video.txt"
}

size належить до генерації зображень. aspect_ratio, duration, resolution та generate_audio належать до генерації відео. Скрипт формує окремі запити, а не надсилає весь об'єкт конфігурації на обидві кінцеві точки.

Проєкт використовує такі ID моделей:

  • Seedream: doubao-seedream-5-0-pro-260628
  • Seedance: doubao-seedance-2-5-260628

Включені знімки схем показують, що endpoint зображень приймає size, а endpoint відео — aspect_ratio. Змішування їх призводить до відхилення запиту. flow.py перевіряє кешовані властивості схеми перед надсиланням запиту, але це не повна перевірка параметрів.

3. Згенеруйте три референси персонажа по порядку

Кожне зображення має різну роль, і пізніші залежать від попередніх:

РеференсЗмістВхідні дані
A: Портрет персонажаВизначити обличчя, волосся, одяг, кімнату та освітленняУ цьому прикладі лише текстовий промпт
B: Тримає продуктТа сама людина тримає флакон етикеткою до камериЗображення продукту + A
C: Використовує продуктТа сама людина натискає дозатор спреюЗображення продукту + B

Промпти повторюють деталі персонажа та описують форму продукту, кольори, розміщення етикетки і природне поводження з ним.

Запустіть:

python3 flow.py stills

Результати зберігаються як assets/frame-01.jpg, frame-02.jpg і frame-03.jpg. Перевірте узгодженість персонажа, точність передачі упаковки та реалістичність дії використання.

Скрипт пропускає наявні файли. Якщо ви змінюєте промпт, створіть резервну копію відповідного результату і перенесіть його перед повторним запуском. Зміна A також може вимагати повторної генерації B і C.

Референси визначають ідентичність персонажа, подання продукту та його використання.

4. Розмістіть зображення та зареєструйте ассети віртуальних портретів

Стартовий набір не містить ID ассетів з облікового запису автора. Зареєструйте референси у своєму обліковому записі.

Цей проєкт використовує публічні URL зображень для реєстрації. Початковий робочий процес використовував сирі URL GitHub, прив'язані до SHA коміту, але підійде будь-який хостинг, який віддає зображення напряму без автентифікації.

URL виду GitHub /blob/ повертає HTML-сторінку і не може використовуватися як URL зображення.

Замініть цей тимчасовий хост на реальне розташування ваших завантажених файлів:

IMAGE_BASE='https://your-public-image-host.example/campaign'
python3 flow.py check "$IMAGE_BASE/frame-01.jpg" "$IMAGE_BASE/frame-02.jpg" "$IMAGE_BASE/frame-03.jpg"
python3 flow.py assets "$IMAGE_BASE/frame-01.jpg" "$IMAGE_BASE/frame-02.jpg" "$IMAGE_BASE/frame-03.jpg"

check перевіряє HTTP 200 і Content-Type зображення. assets створює або повторно використовує групу ассетів virtual_portrait, реєструє кожне зображення, чекає, поки воно стане active, і записує ID ассетів у state.json.

Цей крок походить із реальної помилки в проєкті: передача фотореалістичних URL персонажів безпосередньо до endpoint відео повернула doubao_real_person_required. Людина в цій кампанії була згенерована AI, тож virtual_portrait була правильною класифікацією. Фотографія реальної людини має проходити відповідний процес верифікації і не повинна позначатися як віртуальна.

Усі ассети, що використовуються в одному запиті на відео, мають належати до однієї групи.

Референси були згенеровані, і всі три ассети були активні; завдання з відео ще виконувалося, коли було зроблено цей знімок екрана.

5. Напишіть промпт відео як часову шкалу з обмеженнями камери

Фінальний промпт проєкту ділить одне безперервне 20-секундне відео на чотири фази:

ЧасДія персонажаПоложення продукту
0–5 секундДивиться в камеру і показує флаконБіля обличчя, етикетка до камери
5–10 секундПіднімає флакон і натискає дозаторЗалишається в кадрі
10–15 секундЗаплющує очі й відчуває, як осідає туманНижня третина кадру
15–20 секундВідкриває очі й знову показує продуктЗнову біля обличчя, етикетка до камери

Попередній результат підводив камеру занадто близько і продукт зникав. Тому фінальний промпт обмежує рух до середнього крупного плану, вимагає, щоб продукт залишався видимим, і просить розбірливої етикетки в перші та останні три секунди.

Ось повний prompts/prompt-video.txt. Для іншого продукту оновіть бренд, опис упаковки та дію використання. Ці інструкції є цільовими для генерації й усе ще потребують перевірки результату.

One continuous 20-second vertical beauty commercial take, no cuts, in a sunlit minimalist vanity corner.

0-5s: the same 24-year-old East Asian woman in an oversized sage-green linen shirt over a white ribbed tank top stands at the vanity holding the translucent light-green Nature Republic Aloe Vera 92% Soothing Gel Mist beside her cheek, the label facing camera and fully legible. She looks to camera with a warm, easy smile and turns the bottle slightly so the label catches the morning light.

5-10s: she lifts the bottle just above eye level and presses the fine-mist pump. A soft cone of aloe mist sprays across her face and catches the light as a faint sparkle of micro-droplets.

10-15s: her eyes close and her chin lifts into a small contented smile as the mist settles, tiny droplets resting on her cheekbone and brow. The bottle stays visible in the lower third of the frame throughout this beat.

15-20s: she opens her eyes, brings the bottle back up beside her cheek with the label square to camera, and holds a final calm look at the lens.

Camera: one slow, smooth push-in from a chest-up framing to a mid-close framing ONLY. Do not push past a mid-close shot. The product must stay inside the frame for the entire take, and the label must be clearly legible in both the first three seconds and the last three seconds.

Look: soft diffused morning sunlight from camera left, photorealistic skin texture with real moisture on the skin, mist rendered as genuinely photographed spray rather than digital particles, premium K-beauty advertising. Keep the product packaging, colours, materials, label layout and label text exactly as in the reference images; do not redesign or re-letter the product. No text overlays, no captions, no watermarks.

Audio: a quiet bright room, one soft short pump-spray hiss, a gentle breath. No music, no voiceover.

Генерація аудіо увімкнена, але промпт вимагає лише фонового звучання кімнати, одного звуку розпилення і м'якого подиху — без музики та закадрового голосу.

6. Згенеруйте та збережіть відео

Після реєстрації ассетів надішліть референси asset://. Ця команда зчитує збережені ID і передає кожен як окремий аргумент:

python3 - <<'PYCODE'
import json
import subprocess
import sys
from pathlib import Path

state = json.loads(Path("state.json").read_text())
refs = ["asset://" + asset_id for asset_id in state["asset_ids"]]
subprocess.run([sys.executable, "flow.py", "video", *refs], check=True)
PYCODE

Використання списку аргументів також обминає проблему zsh з вихідного проєкту, коли кілька ID, збережених в одному звичайному рядку, могли потрапити в скрипт як один некоректний аргумент.

Скрипт зберігає ID завдання з відео, опитує його до статусу completed і завантажує результат у out/video.mp4. Інше завантаження може перезаписати цей шлях, тож створюйте резервні копії версій, які хочете порівняти.

Щоб продовжити наявне завдання або повторно завантажити його результат, використайте:

python3 flow.py status

Якщо відповідь на створення була втрачена, перегляньте останні завдання і продовжте потрібний ID:

python3 flow.py tasks
python3 flow.py status VIDEO_TASK_ID

Пошук наявного завдання перед створенням нового запобігає випадковій повторній генерації.

7. Перегляньте результат і вдосконалюйте його

Вихідний проєкт зберігає video-v1-10s.mp4 та фінальний video.mp4. Перша версія тривала лише 10 секунд і недостатньо показувала використання продукту, тому робочий процес пройшов другу ітерацію промпту.

Перевіряйте кожен результат за цим чек-листом:

  • [ ] Тривалість, роздільна здатність і співвідношення сторін відповідають цільовим.
  • [ ] Обличчя, одяг і обстановка персонажа залишаються послідовними.
  • [ ] Продукт залишається видимим, а його етикетку можна прочитати на початку і в кінці.
  • [ ] Дії з флаконом і розпилювачем відповідають реальному використанню продукту.
  • [ ] Форма флакона, упаковка і текст помітно не змінюються.
  • [ ] Камера не наближається занадто сильно, а аудіо відповідає запиту.

Якщо тривалість неправильна, перевірте і конфігурацію, і фактичний запит. Якщо продукт виходить за межі кадру, посильте обмеження камери. Якщо дія використання занадто коротка, чіткіше розподіліть час і поведінку. Редагування лише prompts/prompt-video.txt не вимагає повторної генерації опорних зображень; повторно генеруйте та реєструйте їх лише тоді, коли візуальні еталони мають змінитися.

Поширені запитання

Чому назва моделі, яка виглядає правильно, повертає 404?

Скорочена назва Seedream повернула model_not_found у вихідному проєкті. Використовуйте повний ідентифікатор моделі API, який приймає поточний endpoint, а не припускайте, що маркетингова назва для відображення є також ідентифікатором API.

Чому я можу відкрити зображення у браузері, але все одно не можу його зареєструвати?

Переконайтеся, що URL повертає саме зображення, а не HTML, сторінку спільного доступу чи сторінку входу. Перед реєстрацією скористайтеся командою python3 flow.py check URL....

Чому зміна промпту не змінила опорне зображення?

stills пропускає існуючі файли. Створіть резервну копію та перемістіть будь-яке зображення, яке потрібно згенерувати заново, а потім перевірте, чи слід також повторно згенерувати залежні опорні зображення.

Чи означає HTTP 200, що відео готове?

Ні. Скрипт перевіряє status завдання і завантажує файл лише після того, як завдання досягне стану completed.

Створіть першу версію

Підготуйте одне зображення продукту, налаштуйте доступ до AIHubMix і виберіть моделі для зображень та відео. Потім дозвольте Claude Code адаптувати опис продукту та промпти. Згенеруйте три опорні зображення, перевірте й зареєструйте їх, створіть відео та скористайтеся контрольним списком, щоб вирішити, що покращувати в наступній ітерації.

Коли в майбутньому проєкті знадобиться інша модель, зберігайте ту саму структуру файлів і робочий процес, а потім оновіть вибір моделі в AIHubMix і параметри, специфічні для моделі. У цьому й полягає практична цінність уніфікованого API-сервісу для контент-команди, яка використовує кілька AI-моделей: моделі можна змінювати залежно від завдання, а робочий процес залишається придатним для повторного використання.

Один шлюз до багатьох провайдерів ШІ. Створено для продакшену.

Перейти на AIHubMix