Geliştirin · Hayalet Manken Otomasyonu

Kataloğunuz için hayalet manken çıkarma işlemini otomatikleştirin

Tek cümlede

Son çalıştırmanızdan bu yana olan katalog farkını (delta) çekin, tek bir stille /api/v1/ghost-mannequin/batch adresine bir product_images dizisi (her öge bir görsel URL'i ve isteğe bağlı back_image içerir) POST edin, her öge completed veya failed olana kadar toplu iş kimliğini her 3 saniyede bir poll edin, ardından her ürün satırını kendi output_url değeriyle güncelleyin. Eşzamanlı toplu işler plan başına sınırlandırılmıştır.

  • Credits: 2K'da 4 credits · 4K'da 5 credits
  • Tipik süre: 1.5–4 min
  • İşleme: asenkron, polling

Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi

Bir tasarımcıya dokunmadan her PDP fotoğrafından mankeni çıkarın. Photta'nın ghost-mannequin endpoint'i doğal olarak toplu çalışır; gecelik bir cron, 50K-SKU içeren bir akışı haftalar değil, saatler içinde görünmez mankenli bir kataloğa dönüştürür.

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
  "back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
  "image_side": "front",
  "angle": "side",
  "style": "3d",
  "background_color": "white",
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "user_instruction": "closed front, cream interior lining",
  "brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

Nasıl çalışır

Gecelik çalıştırma, katalog genelinde

Gözetimsiz çalışan bir otomasyon için ihtiyacınız olan beş parça.

  1. Adım 1

    Kataloğunuzu haritalandırın

    Hangi ürün satırlarının hayalet manken görseline ihtiyacı olduğunu, hangilerinde zaten bulunduğunu ve hangilerinin kısıtlanmış kategorilerde olduğunu bilin. Gecelik işin yalnızca farkı (delta) işlemesi için bir last_photographed_at zaman damgası saklayın.

  2. Adım 2

    Kategori başına 3D veya flat-lay seçin

    Hacim gerektiren giysiler için `3d` — dış giyim, denim, dikim parçalar. Düz serildiğinde daha iyi fotoğraflanan aksesuarlar ve trikolar için `flat_lay`. Toplu iş oluşturucunun manuel ayar yapmadan doğru olanı seçmesi için stili ürün kategorisi başına saklayın.

  3. Adım 3

    Farkı toplu olarak gönderin

    Bir product_images dizisi — her öge image, isteğe bağlı back_image ve image_side taşır — artı tüm toplu iş için tek bir style, background_color ve resolution ile POST /api/v1/ghost-mannequin/batch çağrısı yapın. Dizi konumundan ürün kimliğine kendi haritalamanızı saklayın; yanıt, aynı sırada öge başına bir üretim kimliği döndürür.

  4. Adım 4

    Ana toplu işlemi poll edin

    Toplu iş endpoint'i toplu sayaçları (total, processing, completed, failed) döndürür. completed + failed toplamı total değerine eşit olana kadar her 3 saniyede bir poll edin. Photta, toplu iş içindeki ögeleri paralel olarak işler; bu nedenle bireysel üretimleri poll etmeniz gerekmez.

  5. Adım 5

    Veritabanınıza kaydedin

    status.data.items üzerinde sırayla yineleme yapın — toplu iş, dizi sıranızı korur — ve her ürün satırını kendi output_url değeriyle güncelleyin. Başarısızlıkları günlüğe kaydedin; bunlar neredeyse her zaman akışınızdaki bozuk bir kaynak fotoğrafa işaret eder, bunu düzeltebilir ve bir sonraki çalıştırmada yeniden gönderebilirsiniz.

Python'da üç adım

Farkı çıkarın, toplu gönderin, ana işlemi poll edin — minimum uygulanabilir katalog otomasyonu.

from datetime import datetime, timedelta

yesterday = datetime.utcnow() - timedelta(days=1)
rows = db.execute(
    "SELECT id, source_image_url FROM products WHERE updated_at > %s",
    (yesterday,),
).fetchall()
import os, requests

res = requests.post(
    "https://api.photta.app/api/v1/ghost-mannequin/batch",
    headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
    json={
      "product_images": [
        {
          "image": "https://cdn.yourstore.com/products/jacket-front.jpg",
          "back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
          "image_side": "front"
        },
        {
          "image": "https://cdn.yourstore.com/products/shirt-front.jpg",
          "image_side": "front"
        },
        {
          "image": "https://cdn.yourstore.com/products/trousers-front.jpg",
          "image_side": "front"
        }
      ],
      "style": "3d",
      "background_color": "white",
      "resolution": "2K",
      "aspect_ratio": "3:4",
      "user_instruction": "closed front, buttoned up",
      "brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
    },
)
data = res.json()["data"]  # data["id"], data["status"]
import os, time, requests

BASE = "https://api.photta.app/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"}
# data["items"] comes back in the order of the product_images you submitted.
batch_id = data["batch_id"]
for _ in range(240):  # 240 × 3s = 12 minutes
    status = requests.get(f"{BASE}/ghost-mannequin/batch/{batch_id}", headers=HEADERS).json()["data"]
    if status["completed"] + status["failed"] == status["total"]:
        break
    time.sleep(3)

for row, item in zip(rows, status["items"]):
    if item["status"] == "completed":
        db.execute(
            "UPDATE products SET ghost_image_url = %s WHERE id = %s",
            (item["output_url"], row.id),
        )

Geliştiricilerin sıkça sorduğu sorular

Katalog ölçeğinde hayalet manken çalıştırma

Tek bir toplu iş ne kadar büyük olabilir?

Belgelere göre toplu iş endpoint'i çağrı başına birkaç yüz ögeye kadar kabul eder. 50K-SKU gecelik bir çalıştırma için farkı 100–200'lük gruplara bölün ve planınızın rate limit sınırının rahatça altında kalmak için bunları sırayla tetikleyin.

Bir toplu iş 3D ve flat-lay karışımı içerebilir mi?

Evet — style öge bazında bir alandır, dolayısıyla tek bir toplu iş her ikisini de içerebilir. Uygulamada çoğu ekip zaten kategoriye göre ayırır; çünkü toplu işteki her satır aynı veritabanı sütununa gittiğinde akış yönündeki kalıcılık mantığı daha basittir.

Başarısız olan ögelere ne olur?

Bir toplu işlemdeki başarısız ögeler, credits tutarlarını otomatik olarak iade eder ve son öge payload'unda bir error_code + error_message taşır. Başarısızlıkları günlüğe kaydedin ve ekibiniz kaynak fotoğrafı düzeltme veya satırı kalıcı olarak geçersiz girdi olarak işaretleme fırsatı bulduktan sonraki gece bunları yeniden deneyin.

Sonuçları ürün kimliklerime nasıl geri eşlerim?

Gönderim yaparken dizi konumundan ürün kimliğine kendi haritalamanızı saklayın: toplu iş yanıtı product_images ile aynı sırada öge başına bir üretim kimliği döndürür ve toplu iş durumu da ögeleri bu sırada listeler.

Bunu günlük bir cron olarak zamanlayabilir miyim?

Evet — son 24 saatin farkını çeken, parçalara bölen, toplu işler gönderen ve sonuçları veritabanınıza yazan basit bir günlük cron, katalog ölçeğindeki ekipler için temel bir desendir. Başarısız bir gecenin güvenle tekrar çalıştırılabilmesi için çalıştırıcıyı idempotent tutun.

Katalog ölçeğinde hayalet mankeni bu gece yayına alın

Üç Python fonksiyonu, bir cron, 50K fotoğraf. Bir API anahtarı alın ve kataloğunuza yönlendirin.