Bir net ürün resmi, Claude Code ve AIHubMix API'si ile Seedream'de karakter referansları oluşturabilir, bunları sanal kişi varlıkları olarak kaydedebilir ve Seedance kullanarak bir AI ürün reklamı oluşturabilirsiniz.
Bu eğitim, gerçek bir aloe-mist kampanyasına dayanmaktadır ve proje yapısını, yapılandırmayı, komutları ve tam video istemini içermektedir. Hedef çıktı, 20 saniyelik, 720p, 9:16 dikey bir reklam ile birlikte AI tarafından oluşturulmuş bir kişi ve ortamdır.
Claude Code ve AIHubMix, tam iş akışını güçlendirir. Claude Code, proje özetini okur, istemleri gözden geçirir ve yürütmeyi organize eder. AIHubMix, görüntü ve video üretiminin aynı proje içinde çalışabilmesi için tek bir model giriş noktası sağlar.
Model kimlikleri, parametreler ve hata yönetimi, 16 Eylül 2026 tarihli bir proje anlık görüntüsünden gelmektedir. Bunları yeniden kullanmadan önce mevcut API'yi kontrol edin. Komutlar, dahil edilen flow.py dosyasını kullanır ve proje kökünden çalıştırılmalıdır.Tam Başlangıç Paketini İndirin
Kodu, istemleri, yapılandırmayı ve örnek resimleri indirin
Çıkardıktan sonra, seedance-starter dizinine girin. Paket, flow.py, iki şema anlık görüntüsü, beş istem dosyası, ürün resmi ve üç referans resmi içerir. Python betiği yalnızca standart kütüphaneyi kullanır.
- Video aşamasıyla başlayın: üç dahil edilen referansı kullanın, anahtarınızı yapılandırın ve 4. Adım ile başlayın.
- Kendi ürününüzle başlayın: ürün resmini ve istem detaylarını değiştirin, dahil edilen referans resimlerini
assets/klasöründen çıkarın ve 3. Adım ile başlayın.
.env.example dosyasını .env olarak kopyalayın ve kendi API anahtarınızı ekleyin. Hesabınızın ilgili modellere erişimi, gerekli asenkron görev izni ve yeterli kotası olmalıdır. API üretimi kullanım ücretleri doğurur.
1. Ürün Resmini ve Projeyi Hazırlayın
Örnek ürün, Nature Republic Aloe Vera Mist'tir. İş akışını uyarlarken, resmi, ürün açıklamasını güncelleyin ve kullanım eylemini birlikte kullanın.
| Dosya | Amaç |
|---|---|
assets/product.png | Orijinal ürün resmi |
prompts/prompt-a.txt | Ana karakter portresi istemi |
prompts/prompt-b.txt | Ürünü tutan karakter istemi |
prompts/prompt-c.txt | Ürünün kullanımı istemi |
prompts/prompt-video.txt | Video zaman çizelgesi, kamera ve ses gereksinimleri |
prompts.json | Boyutlar, süre, referans bağımlılıkları ve istem yolları |
flow.py | API istekleri, varlık kaydı, anket ve indirmeler |
seedream.schema.json, seedance.schema.json | Önbelleğe alınmış API şema anlık görüntüleri |
Claude Code, proje özetini okumaya ve yapılandırmayı ve istemleri gözden geçirmeye yardımcı olur. flow.py, gerçek istekleri AIHubMix üzerinden gönderir.
Neden AIHubMix Bu İş Akışına Uygun?
Bir AI ürün reklam iş akışı genellikle birden fazla modele ihtiyaç duyar. Bir görüntü modeli kişiyi ve ürün referanslarını oluştururken; bir video modeli hareket ve kamera davranışını oluşturur. AIHubMix, çoğu ana akım modeli kapsar, böylece her sağlayıcı için ayrı hesaplar, kimlik doğrulama ve istek giriş noktaları tutmak yerine görev başına modelleri tek bir API hizmeti aracılığıyla seçebilirsiniz.
AIHubMix ayrıca birden fazla tedarikçiye bağlanır ve otomatik olarak mevcut düşük gecikme süresine sahip bir yolu seçer. Bu, bir tedarikçinin istikrarsızlığının görüntü üretimi, varlık işleme ve video üretimini sırasıyla tamamlaması gereken bir iş akışındaki etkisini azaltabilir. Modelin kullanılabilirliği, yönlendirme ve yanıt süresi hala mevcut hizmet koşullarına bağlıdır.
Proje kökünde .env oluşturun veya ortamınızda aynı değişkeni sağlayın:
AIHUBMIX_API_KEY=replace_with_your_api_key
Proje, .env dosyasını .gitignore aracılığıyla hariç tutar. Gerçek anahtarı asla paylaşmayın, yalnızca değişken adını ve örneğini paylaşın.

Tüm iş akışı, bir net ürün resmi ile başlar.
2. Çıktı Hedefini Belirleyin ve Görüntü ile Video Parametrelerini Ayırın
İlgili kısım prompts.json şöyle görünür. Gerçek dosyayı düzenlerken mevcut stills dizisini ve diğer alanları koruyun.
{
"size": "1080x1920",
"aspect_ratio": "9:16",
"duration": 20,
"resolution": "720p",
"generate_audio": true,
"video_prompt_file": "prompts/prompt-video.txt"
}
size görüntü üretimine aittir. aspect_ratio, duration, resolution ve generate_audio video üretimine aittir. Betik, tüm yapılandırma nesnesini her iki uç noktaya göndermek yerine ayrı istekler oluşturur.
Proje bu model kimliklerini kullanır:
- Seedream:
doubao-seedream-5-0-pro-260628 - Seedance:
doubao-seedance-2-5-260628
Paketlenmiş şema anlık görüntüleri, görüntü uç noktasının size kabul ettiğini gösterirken, video uç noktası aspect_ratio kabul eder. Bunların karıştırılması bir reddetmeye neden olur. flow.py, bir istek göndermeden önce önbelleğe alınmış şema özelliklerini kontrol eder, ancak bu tam parametre doğrulaması değildir.
3. Üç Karakter Referansını Sırasıyla Oluşturun
Her görüntünün farklı bir rolü vardır ve sonraki görüntüler önceki görüntülere bağlıdır:
| Referans | İçerik | Girdiler |
|---|---|---|
| A: Karakter portresi | Yüz, saç, kıyafet, oda ve aydınlatmayı belirleyin | Bu örnekte yalnızca metin istemi |
| B: Ürünü tutma | Aynı kişi, etiket kameraya dönük şişeyi tutar | Ürün resmi + A |
| C: Ürünü kullanma | Aynı kişi, sprey pompasını sıkar | Ürün resmi + B |
İstemler, karakter detaylarını tekrarlar ve ürünün şekli, renkleri, etiket düzeni ve doğal kullanımı hakkında bilgi verir.
Şunu çalıştırın:
python3 flow.py stills
Sonuçlar assets/frame-01.jpg, frame-02.jpg ve frame-03.jpg olarak kaydedilir. Karakter tutarlılığını, ambalaj sadakatini ve kullanım eyleminin gerçekçiliğini gözden geçirin.
Betiği mevcut dosyaları atlayacak şekilde ayarlayın. Bir istemi değiştirirseniz, yedekleyin ve ilgili çıktıyı taşımadan yeniden çalıştırmayın. A'yı değiştirmek, B ve C'nin yeniden üretilmesini de gerektirebilir.
Referanslar, karakter kimliğini, ürün sunumunu ve ürün kullanımını belirler.
4. Görüntüleri Barındırın ve Sanal Portre Varlıklarını Kaydedin
Başlangıç paketi, yazarın hesabından hiçbir varlık kimliği içermez. Referansları kendi hesabınızda kaydedin.
Bu proje, kayıt için kamuya açık görüntü URL'lerini kullanır. Kaynak iş akışı, bir taahhüt SHA'sına sabitlenmiş GitHub ham URL'lerini kullandı, ancak kimlik doğrulama olmadan doğrudan görüntüyü döndüren herhangi bir barındırma çalışabilir.
Bir GitHub /blob/ URL'si, bir HTML sayfası döndürür ve görüntü URL'si olarak kullanılamaz.
Bu yer tutucu barındırıcıyı, yüklediğiniz dosyaların gerçek konumuyla değiştirin:
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 ve bir görüntü İçerik Türünü doğrular. assets bir virtual_portrait varlık grubunu oluşturur veya yeniden kullanır, her görüntüyü kaydeder, active olana kadar bekler ve varlık kimliklerini state.json dosyasına yazar.
Bu adım, projede gerçek bir başarısızlıktan gelmektedir: fotogerçekçi karakter URL'lerini doğrudan video uç noktasına göndermek doubao_real_person_required döndürdü. Bu kampanyadaki kişi AI tarafından oluşturulmuştu, bu yüzden virtual_portrait doğru sınıflandırmaydı. Gerçek bir kişi fotoğrafı, ilgili doğrulama sürecini takip etmelidir ve sanal olarak etiketlenmemelidir.
Bir video isteğinde kullanılan tüm varlıklar aynı gruba ait olmalıdır.

Referanslar oluşturuldu ve üç varlık aktif hale geldi; bu ekran görüntüsü alındığında video görevi hala çalışıyordu.
5. Video İstemini Zaman Çizelgesi Olarak Yazın ve Kamera Sınırları Belirleyin
Son proje istemi, kesintisiz bir 20 saniyelik çekimi dört aşamaya böler:
| Zaman | Karakter eylemi | Ürün pozisyonu |
|---|---|---|
| 0–5 saniye | Kameraya bakar ve şişeyi sunar | Yüzünün yanında, etiket kameraya dönük |
| 5–10 saniye | Şişeyi kaldırır ve pompayı sıkar | Kare içinde kalır |
| 10–15 saniye | Gözlerini kapatır ve sisin yerleşmesini hisseder | Kare alt üçte biri |
| 15–20 saniye | Gözlerini açar ve ürünü tekrar sunar | Yüzünün yanında, etiket kameraya dönük |
Önceki bir sonuç, kamerayı çok yakına itti ve ürünü kaybetti. Bu nedenle son istem, hareketi orta yakın çekimle sınırlıyor, ürünün görünür kalmasını sağlıyor ve ilk ve son üç saniyede okunabilir bir etiket talep ediyor.
İşte tamamlanmış prompts/prompt-video.txt. Başka bir ürün için markayı, ambalaj açıklamasını ve kullanım eylemini güncelleyin. Bu talimatlar, üretim hedefleridir ve yine de çıktı incelemesi gerektirir.
Bir kesintisiz 20 saniyelik dikey güzellik reklam çekimi, kesme yok, güneş ışığı alan minimalist bir makyaj masasında.
0-5s: aynı 24 yaşındaki Doğu Asyalı kadın, beyaz ribanalı tişörtün üzerine giydiği büyük bir adaçayı yeşili keten gömlekle makyaj masasında duruyor, şişeyi yanaklarının yanında tutuyor, etiket kameraya dönük ve tamamen okunabilir. Sıcak, rahat bir gülümsemeyle kameraya bakıyor ve şişeyi hafifçe çeviriyor, böylece etiket sabah ışığını yakalıyor.
5-10s: şişeyi göz seviyesinin biraz üzerine kaldırıyor ve ince sis pompasını sıkıyor. Aloe sisinin yumuşak bir konisi yüzüne yayılıyor ve hafif bir parıltı olarak ışığı yakalıyor.
10-15s: gözlerini kapatıyor ve sisin yerleşmesini hissederken çenesi hafifçe yukarı kalkıyor, küçük bir memnuniyet gülümsemesiyle. Şişe, bu süre boyunca çerçevenin alt üçte birinde görünür kalıyor.
15-20s: gözlerini açıyor, şişeyi tekrar yanaklarının yanına getiriyor, etiket kameraya dik ve son bir sakin bakışla lensin içine bakıyor.
Kamera: sadece göğüs üstü kadrajdan orta yakın çekime yavaş, pürüzsüz bir itme. Orta yakın çekimden daha ileri gitmeyin. Ürün, tüm çekim boyunca çerçeve içinde kalmalıdır ve etiket, ilk üç saniyede ve son üç saniyede net bir şekilde okunabilir olmalıdır.
Görünüm: kameranın solundan yumuşak dağılmış sabah güneşi, gerçek nemle birlikte fotogerçekçi cilt dokusu, sis, dijital parçacıklar yerine gerçekten fotoğraflanmış sprey olarak renderlenmiştir, premium K-beauty reklamı. Ürün ambalajını, renklerini, malzemelerini, etiket düzenini ve etiket metnini referans resimlerdeki gibi tam olarak koruyun; ürünü yeniden tasarlamayın veya yeniden yazmayın. Metin üst yazıları, başlıklar, filigran yok.
Ses: sessiz, aydınlık bir oda, bir yumuşak kısa pompa-spray sesi, nazik bir nefes. Müzik yok, seslendirme yok.
Ses üretimi etkinleştirildi, ancak istem yalnızca oda tonu, bir sprey sesi ve nazik bir nefes talep ediyor—müzik veya seslendirme yok.
6. Videoyu Oluşturun ve Kaydedin
Varlık kaydından sonra, asset:// referanslarını gönderin. Bu komut, kaydedilen kimlikleri okur ve her birini ayrı bir argüman olarak geçirir:
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
Bir argüman listesi kullanmak, kaynak projeden gelen bir zsh sorununu da önler; burada bir düz metin dizesinde saklanan birkaç kimlik, betiğe bir geçersiz argüman olarak ulaşabilir.
Betik, video görev kimliğini kaydeder, completed durumuna ulaşana kadar anket yapar ve çıktıyı out/video.mp4 olarak indirir. Başka bir indirme, bu yolu geçersiz kılabilir, bu yüzden karşılaştırmak istediğiniz sürümleri yedekleyin.
Mevcut bir görevi yeniden başlatmak veya sonucunu yeniden indirmek için:
python3 flow.py status
Eğer oluşturma yanıtı kaybolursa, son görevleri listeleyin ve ilgili kimliği yeniden başlatın:
python3 flow.py tasks
python3 flow.py status VIDEO_TASK_ID
Başka bir tane oluşturmadan önce mevcut bir görevi kontrol etmek, kazara çift üretimi önler.
7. Çıktıyı Gözden Geçirin ve İterasyon Yapın
Kaynak proje video-v1-10s.mp4 ve son video.mp4 dosyalarını saklar. İlk versiyon yalnızca 10 saniye sürdü ve yeterince ürün kullanımı göstermedi, bu yüzden iş akışı ikinci bir istem yinelemesine gitti.
Her sonucu bu kontrol listesine göre gözden geçirin:
- [ ] Süre, çözünürlük ve en boy oranı hedefle eşleşiyor.
- [ ] Karakterin yüzü, kıyafeti ve ortamı tutarlı kalıyor.
- [ ] Ürün görünür kalıyor ve etiket, başlangıçta ve sonunda okunabiliyor.
- [ ] Kullanım ve sprey eylemleri, ürünün gerçek kullanımına uygun.
- [ ] Şişe şekli, ambalaj ve metin belirgin şekilde değişmiyor.
- [ ] Kamera çok yakın hareket etmiyor ve ses isteğe uygun.
Eğer süre yanlışsa, hem yapılandırmayı hem de gerçek isteği kontrol edin. Ürün çerçeveden çıkıyorsa, kamera sınırlarını güçlendirin. Eğer kullanım eylemi çok kısa ise, zaman ve davranışı daha açık bir şekilde ayırın. Sadece prompts/prompt-video.txt dosyasını düzenlemek, referans görüntülerinin yeniden üretilmesini gerektirmez; görsel referansların değiştirilmesi gerektiğinde yalnızca yeniden üretin ve kaydedin.
Sıkça Sorulan Sorular
Doğru görünen bir model adı neden 404 döndürüyor?
Kısaltılmış Seedream adı, kaynak projede model_not_found döndürdü. Pazarlama görüntü adı da API tanımlayıcısıdır diye varsaymak yerine, mevcut uç nokta tarafından kabul edilen tam API model kimliğini kullanın.
Bir görüntüyü tarayıcımda açabiliyorum ama yine de kaydedemiyorum neden?
URL'nin HTML, paylaşım sayfası veya giriş sayfası yerine görüntüyü kendisini döndürdüğünü doğrulayın. Kayıttan önce python3 flow.py check URL... kullanın.
Bir istemi değiştirmenin referans görüntüsünü değiştirmemesinin nedeni nedir?
stills mevcut dosyaları atlar. Yeniden üretim gerektiren herhangi bir görüntüyü yedekleyin ve taşıyın, ardından aşağı akış referanslarının da yeniden üretilmesi gerekip gerekmediğini kontrol edin.
HTTP 200, videonun bittiği anlamına mı gelir?
Hayır. Betik, görevin status değerine göre dallanır ve yalnızca görev completed durumuna ulaştığında indirir.
İlk Versiyonunuzu Başlatın
Bir ürün resmi hazırlayın, AIHubMix erişimini yapılandırın ve görüntü ile video modellerini seçin. Ardından Claude Code'un ürün açıklamasını ve istemleri uyarlamasına izin verin. Üç referansı oluşturun, gözden geçirin ve kaydedin, videoyu oluşturun ve sonraki yineleme için kontrol listesini kullanın.
Gelecekteki bir proje başka bir modele ihtiyaç duyduğunda, aynı dosya yapısını ve iş akışını koruyun, ardından AIHubMix model seçimlerini ve modele özgü parametreleri güncelleyin. Bu, birkaç AI modeli kullanan bir içerik ekibi için birleşik bir API hizmetinin pratik değeridir: modeller, görev başına değişebilirken iş akışı yeniden kullanılabilir kalır.



