Как да създадем AI реклама на продукт с Claude Code и AIHubMix

AIHubMix9 мин четене
Как да създадем AI реклама на продукт с Claude Code и AIHubMix

С една ясна снимка на продукта, Claude Code и API на AIHubMix можете да генерирате референции на персонажи в Seedream, да ги регистрирате като виртуални портретни активи и да използвате Seedance за създаване на AI рекламно видео за продукт.

Този урок е базиран на реална кампания с аloe мист и включва структурата на проекта, конфигурацията, командите и пълния видео промпт. Целта е 20-секундна реклама във вертикален формат 9:16 с резолюция 720p с персонаж и обстановка, генерирани от AI.

Claude Code и AIHubMix задвижват целия работен процес. Claude Code чете описанието на проекта, преработва промптовете и организира изпълнението. AIHubMix предоставя една точка за достъп до моделите, така че генерирането на изображения и видео може да работи в рамките на един и същ проект.

Идентификаторите на моделите, параметрите и обработката на грешки са взети от снимка на проекта от 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 се отнасят за генериране на видео. Скриптът създава отделни заявки, вместо да изпраща цялата конфигурация към двата крайни пункта.

Проектът използва следните идентификатори на модели:

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

Включените снимки на схемите показват, че крайният пункт за изображения приема size, а крайният пункт за видео приема 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. Хоствайте изображенията и регистрирайте активи на виртуален портрет

Стартовият пакет не съдържа идентификатори на активи от акаунта на автора. Регистрирайте референциите във вашия собствен акаунт.

Този проект използва публични URL адреси на изображения за регистрация. Оригиналният работен процес използва GitHub raw URL адреси, фиксирани към SHA на commit, но може да работи всяка услуга, която връща изображението директно без удостоверяване.

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 и тип на съдържанието image. assets създава или използва повторно група активи virtual_portrait, регистрира всяко изображение, изчаква да стане active и записва идентификаторите на активите в state.json.

Тази стъпка е резултат от реална грешка в проекта: подаването на фотореалистични URL адреси на персонажи директно към крайния пункт за видео върна 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://. Тази команда чете запазените идентификатори и подава всеки от тях като отделен аргумент:

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 от оригиналния проект, при който няколко идентификатора, съхранени в един обикновен низ, можеха да стигнат до скрипта като един невалиден аргумент.

Скриптът записва идентификатора на видео задачата, проучва до статус completed и изтегля резултата в out/video.mp4. Друго изтегляне може да презапише този път, затова архивирайте версиите, които искате да сравните.

За да продължите съществуваща задача или да изтеглите отново нейния резултат, използвайте:

python3 flow.py status

Ако отговорът при създаване е загубен, изброете последните задачи и продължете със съответния идентификатор:

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 модела, приет от текущата крайна точка, вместо да приемате, че маркетинговото показвано име е и API идентификаторът.

Защо мога да отворя изображение в браузъра си, но регистрацията му все още се проваля?

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

Защо промяната на промпт не промени референтното изображение?

stills пропуска съществуващите файлове. Архивирайте и преместете всяко изображение, което трябва да се регенерира, след което проверете дали зависимите референции също трябва да бъдат регенерирани.

Означава ли HTTP 200, че видеото е готово?

Не. Скриптът проверява status на задачата и изтегля файла само след като задачата достигне completed.

Започнете първата си версия

Подгответе едно изображение на продукта, конфигурирайте достъпа до AIHubMix и изберете моделите за изображения и видео. След това оставете Claude Code да адаптира описанието на продукта и промптовете. Генерирайте трите референции, прегледайте и регистрирайте ги, създайте видеото и използвайте контролния списък, за да решите следващата итерация.

Когато бъдещ проект изисква друг модел, запазете същата файлова структура и работен процес, след което актуализирайте избора на модел в AIHubMix и параметрите, специфични за модела. Това е практическата стойност на унифицирания API сервиз за екип за съдържание, който използва няколко AI модела: моделите могат да се сменят според задачата, докато работният процес остава повторно използваем.

Един шлюз към множество AI доставчици. Създаден за продукционна среда.

Посетете AIHubMix