Jak stworzyć reklamę produktu AI z Claude Code i AIHubMix

AIHubMix9 min czytania
Jak stworzyć reklamę produktu AI z Claude Code i AIHubMix

Dzięki jednemu wyraźnemu zdjęciu produktu, Claude Code i API AIHubMix możesz generować odniesienia do postaci w Seedream, rejestrować je jako zasoby wirtualnych postaci i używać Seedance do stworzenia reklamy produktu AI.

Ten samouczek oparty jest na prawdziwej kampanii z użyciem mgiełki aloesowej i zawiera strukturę projektu, konfigurację, polecenia oraz kompletny prompt wideo. Docelowy wynik to 20-sekundowa reklama w formacie 720p, w pionie 9:16 z osobą i otoczeniem wygenerowanymi przez AI.

Claude Code i AIHubMix napędzają cały proces. Claude Code odczytuje brief projektu, poprawia prompty i organizuje wykonanie. AIHubMix zapewnia jeden punkt wejścia do modelu, dzięki czemu generacja obrazów i wideo może działać w ramach tego samego projektu.

Identyfikatory modeli, parametry i obsługa błędów pochodzą z migawki projektu z dnia 16 września 2026 roku. Sprawdź aktualne API przed ich ponownym użyciem. Polecenia korzystają z dołączonego flow.py i muszą być uruchamiane z katalogu głównego projektu.
0:00
/0:20

Pobierz kompletny zestaw startowy

Pobierz kod, prompty, konfigurację i przykładowe obrazy

Po rozpakowaniu wejdź do katalogu seedance-starter. Pakiet zawiera flow.py, dwie migawki schematu, pięć plików promptów, zdjęcie produktu oraz trzy obrazy referencyjne. Skrypt Pythona korzysta tylko z biblioteki standardowej.

  • Rozpocznij od etapu wideo: użyj trzech dołączonych odniesień, skonfiguruj swój klucz i zacznij od Kroku 4.
  • Rozpocznij od własnego produktu: zamień zdjęcie produktu i szczegóły promptu, przenieś dołączone obrazy referencyjne z assets/, i zacznij od Kroku 3.

Skopiuj .env.example do .env i dodaj swój klucz API. Twoje konto musi mieć dostęp do odpowiednich modeli, wszelkich wymaganych uprawnień do zadań asynchronicznych oraz wystarczającej kwoty. Generacja API wiąże się z opłatami za użytkowanie.

1. Przygotuj zdjęcie produktu i projekt

Przykładowym produktem jest mgiełka aloesowa Nature Republic. Podczas dostosowywania procesu roboczego zaktualizuj zdjęcie, opis produktu i użyj akcji razem.

PlikCel
assets/product.pngOryginalne zdjęcie produktu
prompts/prompt-a.txtGłówny prompt portretu postaci
prompts/prompt-b.txtPrompt postaci trzymającej produkt
prompts/prompt-c.txtPrompt użycia produktu
prompts/prompt-video.txtWymagania dotyczące osi czasu wideo, kamery i dźwięku
prompts.jsonWymiary, czas trwania, zależności referencyjne i ścieżki promptów
flow.pyŻądania API, rejestracja zasobów, polling i pobieranie
seedream.schema.json, seedance.schema.jsonMigawki schematu API w pamięci podręcznej

Claude Code pomaga w odczytaniu briefu projektu oraz w poprawie konfiguracji i promptów. flow.py wysyła rzeczywiste żądania przez AIHubMix.

Dlaczego AIHubMix pasuje do tego procesu roboczego

Proces roboczy reklamy produktu AI zazwyczaj wymaga więcej niż jednego modelu. Model obrazu tworzy odniesienia do postaci i produktu; model wideo tworzy ruch i zachowanie kamery. AIHubMix obejmuje większość popularnych modeli, dzięki czemu możesz wybierać modele według zadania przez jeden serwis API, zamiast utrzymywać oddzielne konta, uwierzytelnianie i punkty wejścia dla każdego dostawcy.

AIHubMix łączy się również z wieloma dostawcami i automatycznie wybiera dostępny, niskolatencyjny szlak. Może to zmniejszyć wpływ niestabilności jednego dostawcy na proces roboczy, który musi zakończyć generację obrazów, przetwarzanie zasobów i generację wideo w sekwencji. Dostępność modeli, routowanie i czas odpowiedzi nadal zależą od aktualnych warunków serwisowych.

Utwórz .env w katalogu głównym projektu lub podaj tę samą zmienną w swoim środowisku:

AIHUBMIX_API_KEY=replace_with_your_api_key

Projekt wyklucza .env przez .gitignore. Udostępniaj tylko nazwę zmiennej i przykład, nigdy prawdziwy klucz.

Cały proces roboczy zaczyna się od jednego wyraźnego zdjęcia produktu.

2. Ustaw cel wyjścia i oddziel parametry obrazu od wideo

Odpowiednia część prompts.json wygląda tak. Zachowaj istniejącą tablicę stills i inne pola podczas edytowania rzeczywistego pliku.

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

size dotyczy generacji obrazów. aspect_ratiodurationresolution i generate_audio dotyczą generacji wideo. Skrypt buduje oddzielne żądania, zamiast wysyłać cały obiekt konfiguracyjny do obu punktów końcowych.

Projekt używa tych identyfikatorów modeli:

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

Dołączone migawki schematu pokazują, że punkt końcowy obrazu akceptuje size, podczas gdy punkt końcowy wideo akceptuje aspect_ratio. Mieszanie ich powoduje odrzucenie.  flow.py sprawdza właściwości schematu w pamięci podręcznej przed wysłaniem żądania, ale to nie jest pełna walidacja parametrów.

3. Wygeneruj trzy odniesienia do postaci w odpowiedniej kolejności

Każdy obraz ma inną rolę, a późniejsze obrazy zależą od wcześniejszych:

OdniesienieZawartośćWejścia
A: Portret postaciUstalenie twarzy, włosów, garderoby, pokoju i oświetleniaTylko tekstowy prompt w tym przykładzie
B: Trzymający produktTa sama osoba trzyma butelkę z etykietą skierowaną w stronę kameryZdjęcie produktu + A
C: Używający produktuTa sama osoba naciska pompkę sprayuZdjęcie produktu + B

Prompty powtarzają szczegóły postaci i opisują kształt produktu, kolory, układ etykiety i naturalne użytkowanie.

Uruchom:

python3 flow.py stills

Wyniki są zapisywane jako assets/frame-01.jpgframe-02.jpg i frame-03.jpg. Sprawdź spójność postaci, wierność opakowania i realizm akcji użycia.

Skrypt pomija istniejące pliki. Jeśli zmienisz prompt, zrób kopię zapasową i przenieś odpowiedni wynik przed ponownym uruchomieniem. Zmiana A może również wymagać regeneracji B i C.

A: Portret postaci
Portret postaci wygenerowany przez AI
B: Trzymający produkt
Ta sama postać trzymająca produkt
C: Używający produktu
Ta sama postać używająca produktu

Odniesienia ustalają tożsamość postaci, prezentację produktu i użycie produktu.

4. Hostuj obrazy i rejestruj zasoby portretów wirtualnych

Starter nie zawiera identyfikatora zasobu z konta autora. Zarejestruj odniesienia na swoim własnym koncie.

Ten projekt używa publicznych adresów URL obrazów do rejestracji. Źródłowy proces roboczy używał surowych adresów URL GitHub przypiętych do SHA commit, ale każde hostowanie, które zwraca obraz bez uwierzytelniania, może działać.

Adres URL GitHub /blob/ zwraca stronę HTML i nie może być używany jako adres URL obrazu.

Zamień ten zastępczy host na rzeczywistą lokalizację przesłanych plików:

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 weryfikuje HTTP 200 i typ zawartości obrazu. assets tworzy lub ponownie wykorzystuje grupę zasobów virtual_portrait, rejestruje każdy obraz, czeka, aż stanie się aktywny, i zapisuje identyfikatory zasobów w state.json.

Ten krok pochodzi z rzeczywistej awarii w projekcie: przekazanie adresów URL fotorealistycznych postaci bezpośrednio do punktu końcowego wideo zwróciło doubao_real_person_required. Osoba w tej kampanii była wygenerowana przez AI, więc virtual_portrait była poprawną klasyfikacją. Zdjęcie prawdziwej osoby musi przejść odpowiedni proces weryfikacji i nie może być oznaczone jako wirtualne.

Wszystkie zasoby używane w jednym żądaniu wideo powinny należeć do tej samej grupy.

Odniesienia zostały wygenerowane, a wszystkie trzy zasoby były aktywne; zadanie wideo nadal trwało, gdy zrobiono ten zrzut ekranu.

5. Napisz prompt wideo jako oś czasu z ograniczeniami kamery

Ostateczny prompt projektu dzieli jedno ciągłe 20-sekundowe ujęcie na cztery fazy:

CzasAkcja postaciPozycja produktu
0–5 sekundPatrzy w kamerę i prezentuje butelkęObok jej twarzy, etykieta skierowana w stronę kamery
5–10 sekundPodnosi butelkę i naciska pompkęPozostaje w kadrze
10–15 sekundZamyka oczy i czuje, jak mgiełka opadaDolna część kadru
15–20 sekundOtwiera oczy i ponownie prezentuje produktZ powrotem obok jej twarzy, etykieta skierowana w stronę kamery

Wcześniejszy wynik zbliżył kamerę zbyt blisko i stracił produkt. Ostateczny prompt ogranicza zatem ruch do ujęcia średnio-bliskiego, wymaga, aby produkt był widoczny i prosi o czytelną etykietę w pierwszych i ostatnich trzech sekundach.

Oto kompletny prompts/prompt-video.txt. Dla innego produktu zaktualizuj markę, opis opakowania i akcję użycia. Te instrukcje są celami generacyjnymi i nadal wymagają przeglądu wyników.

Jedno ciągłe 20-sekundowe ujęcie reklamy kosmetyków w pionie, bez cięć, w minimalistycznym, słonecznym kącie toaletowym.

0-5s: ta sama 24-letnia Azjatka w oversize'owej, szałwiowej lnianej koszuli na białym, prążkowanym podkoszulku stoi przy toaletce, trzymając przezroczystą, jasnozieloną mgiełkę Nature Republic Aloe Vera 92% Soothing Gel Mist obok policzka, etykieta skierowana w stronę kamery i w pełni czytelna. Patrzy w kamerę z ciepłym, łatwym uśmiechem i lekko obraca butelkę, aby etykieta złapała poranne światło.

5-10s: podnosi butelkę tuż nad poziom oczu i naciska pompkę o drobnym sprayu. Miękka stożkowa mgiełka aloesowa rozpryskuje się na jej twarzy i łapie światło jako delikatny blask mikro-kropli.

10-15s: jej oczy się zamykają, a podbródek unosi się w małym, zadowolonym uśmiechu, gdy mgiełka opada, a drobne krople osiadają na jej kości policzkowej i czole. Butelka pozostaje widoczna w dolnej części kadru przez całe to ujęcie.

15-20s: otwiera oczy, przynosi butelkę z powrotem obok policzka z etykietą skierowaną w stronę kamery i utrzymuje ostatni spokojny wygląd w obiektyw.

Kamera: jedno powolne, gładkie zbliżenie z kadrowania od klatki piersiowej do średnio-bliskiego kadrowania TYLKO. Nie zbliżaj się poza średnio-bliskie ujęcie. Produkt musi pozostać w kadrze przez całe ujęcie, a etykieta musi być wyraźnie czytelna w pierwszych trzech sekundach i ostatnich trzech sekundach.

Wygląd: miękkie, rozproszone poranne światło z lewej strony kamery, fotorealistyczna tekstura skóry z prawdziwą wilgocią na skórze, mgiełka renderowana jako autentycznie sfotografowany spray, a nie cyfrowe cząstki, reklama premium K-beauty. Zachowaj opakowanie produktu, kolory, materiały, układ etykiety i tekst etykiety dokładnie tak, jak w obrazach referencyjnych; nie projektuj ani nie przekształcaj produktu. Brak nakładek tekstowych, brak podpisów, brak znaków wodnych.

Dźwięk: cicha jasna przestrzeń, jeden delikatny krótki dźwięk spryskiwania, delikatny oddech. Brak muzyki, brak lektora.

Generacja dźwięku jest włączona, ale prompt żąda tylko tonu pomieszczenia, jednego dźwięku spryskiwania i delikatnego oddechu—bez muzyki ani lektora.

6. Wygeneruj i zapisz wideo

Po rejestracji zasobów, przekaż asset:// odniesienia. To polecenie odczytuje zapisane identyfikatory i przekazuje każdy z nich jako oddzielny argument:

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

Użycie listy argumentów unika również problemu z zsh w źródłowym projekcie, gdzie kilka identyfikatorów zapisanych w jednym prostym ciągu mogło dotrzeć do skryptu jako jeden nieprawidłowy argument.

Skrypt zapisuje identyfikator zadania wideo, sprawdza, aż osiągnie completed, i pobiera wynik do out/video.mp4. Inne pobranie może nadpisać tę ścieżkę, więc zrób kopię zapasową wersji, które chcesz porównać.

Wznów istniejące zadanie lub ponownie pobierz jego wynik za pomocą:

python3 flow.py status

Jeśli odpowiedź create została utracona, wyświetl ostatnie zadania i wznowić odpowiedni identyfikator:

python3 flow.py tasks
python3 flow.py status VIDEO_TASK_ID

Sprawdzenie istniejącego zadania przed utworzeniem kolejnego zapobiega przypadkowemu duplikowaniu generacji.

7. Przejrzyj wynik i iteruj

Źródłowy projekt przechowuje video-v1-10s.mp4 i ostateczne video.mp4. Pierwsza wersja trwała tylko 10 sekund i nie pokazywała wystarczająco użycia produktu, więc proces roboczy przeszedł przez drugą iterację promptu.

Przejrzyj każdy wynik w odniesieniu do tej listy kontrolnej:

  • [ ] Czas trwania, rozdzielczość i proporcje odpowiadają celowi.
  • [ ] Twarz postaci, garderoba i otoczenie pozostają spójne.
  • [ ] Produkt pozostaje widoczny, a jego etykieta jest czytelna na początku i na końcu.
  • [ ] Obsługa i akcje spryskiwania odpowiadają rzeczywistemu użyciu produktu.
  • [ ] Kształt butelki, opakowanie i tekst nie zmieniają się zauważalnie.
  • [ ] Kamera nie zbliża się zbyt blisko, a dźwięk odpowiada prośbie.

Jeśli czas trwania jest błędny, sprawdź zarówno konfigurację, jak i rzeczywiste żądanie. Jeśli produkt opuszcza kadr, wzmocnij ograniczenia kamery. Jeśli akcja użycia jest zbyt krótka, przydziel więcej czasu i zachowania bardziej wyraźnie. Edytowanie tylko prompts/prompt-video.txt nie wymaga regeneracji obrazów referencyjnych; regeneruj i rejestruj je tylko wtedy, gdy wizualne odniesienia muszą się zmienić.

0:00
/0:10

Najczęściej zadawane pytania

Dlaczego nazwa modelu, która wygląda poprawnie, zwraca 404?

Skrócona nazwa Seedream zwróciła model_not_found w źródłowym projekcie. Użyj pełnego identyfikatora modelu API akceptowanego przez aktualny punkt końcowy, zamiast zakładać, że wyświetlana nazwa marketingowa jest również identyfikatorem API.

Dlaczego mogę otworzyć obraz w przeglądarce, ale nadal nie mogę go zarejestrować?

Potwierdź, że adres URL zwraca sam obraz, a nie HTML, stronę udostępniania lub stronę logowania. Użyj python3 flow.py check URL... przed rejestracją.

Dlaczego zmiana promptu nie zmieniła obrazu referencyjnego?

stills pomija istniejące pliki. Zrób kopię zapasową i przenieś każdy obraz, który wymaga regeneracji, a następnie sprawdź, czy downstreamowe odniesienia również powinny być regenerowane.

Czy HTTP 200 oznacza, że wideo jest zakończone?

Nie. Skrypt rozgałęzia się na status zadania i pobiera tylko po osiągnięciu completed.

Rozpocznij swoją pierwszą wersję

Przygotuj jedno zdjęcie produktu, skonfiguruj dostęp do AIHubMix i wybierz modele obrazów i wideo. Następnie pozwól Claude Code dostosować opis produktu i prompty. Wygeneruj trzy odniesienia, przejrzyj i zarejestruj je, stwórz wideo i użyj listy kontrolnej, aby zdecydować o następnej iteracji.

Kiedy przyszły projekt będzie potrzebował innego modelu, zachowaj tę samą strukturę plików i proces roboczy, a następnie zaktualizuj wybór modeli AIHubMix i specyficzne dla modeli parametry. To jest praktyczna wartość zjednoczonej usługi API dla zespołu treści korzystającego z kilku modeli AI: modele mogą się zmieniać w zależności od zadania, podczas gdy proces roboczy pozostaje wielokrotnego użytku.