Build · Ghost-Mannequin-Automatisierung

Automatisieren Sie die Ghost-Mannequin-Freistellung für Ihren Katalog

In aller Kürze

Ziehen Sie das Katalog-Delta seit Ihrem letzten Lauf, senden Sie per POST ein product_images-Array (jedes Item eine Bild-URL plus optionales back_image) mit einem style an /api/v1/ghost-mannequin/batch, pollen Sie die Batch-ID alle 3 Sekunden, bis jedes Item completed oder failed ist, und aktualisieren Sie dann jede Produktzeile mit ihrer output_url. Parallele Batches sind pro Plan limitiert.

  • Credits: 4 Credits bei 2K · 5 Credits bei 4K
  • Typische Dauer: 1.5–4 min
  • Verarbeitung: asynchron, Polling

Jeder Zahlenwert auf dieser Seite stammt aus der Photta-API-Dokumentation · geprüft

Entfernen Sie die Puppe aus jedem PDP-Foto, ganz ohne Designer. Phottas Ghost-Mannequin-Endpoint lässt sich nativ batch-verarbeiten – ein nächtlicher Cronjob verwandelt einen Feed mit 50K-SKUs in wenigen Stunden statt Wochen in einen Hollow-Mannequin-Katalog.

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')

Funktionsweise

Nächtlicher Lauf, katalogweit

Fünf Bausteine, die Sie für eine unbeaufsichtigte Automatisierung benötigen.

  1. Schritt 1

    Katalog mappen

    Wissen Sie genau, welche Produktzeilen ein Ghost-Mannequin-Bild benötigen, welche bereits eines haben und welche Kategorien ausgeschlossen sind. Speichern Sie einen last_photographed_at-Timestamp, damit der nächtliche Job nur das Delta verarbeitet.

  2. Schritt 2

    3D oder Flat-Lay pro Kategorie wählen

    `3d` für Kleidungsstücke, die Volumen benötigen – Jacken, Denim, Maßkleidung. `flat_lay` für Accessoires und Strickwaren, die flach liegend besser wirken. Speichern Sie den Style pro Produktkategorie, damit der Batch-Builder automatisch die richtige Variante ohne manuelles Eingreifen wählt.

  3. Schritt 3

    Delta per Batch übermitteln

    POST /api/v1/ghost-mannequin/batch mit einem product_images-Array – jedes Item enthält image, optional back_image und image_side – sowie ein style, background_color und resolution für den gesamten Batch. Verwalten Sie ein eigenes Mapping von Array-Position zu Produkt-ID; die Response liefert pro Item eine Generation-ID in exakt derselben Reihenfolge zurück.

  4. Schritt 4

    Übergeordneten Batch pollen

    Der Batch-Endpoint liefert aggregierte Zähler (total, processing, completed, failed). Pollen Sie alle 3 Sekunden, bis completed + failed gleich total ist. Photta verarbeitet Items innerhalb des Batches parallel, Sie müssen also keine einzelnen Generierungen pollen.

  5. Schritt 5

    In Ihrer Datenbank persistieren

    Iterieren Sie über status.data.items in der Reihenfolge – der Batch behält Ihre Array-Reihenfolge bei – und aktualisieren Sie jede Produktzeile mit ihrer output_url. Loggen Sie Fehler – sie weisen fast immer auf ein fehlerhaftes Quellfoto in Ihrem Feed hin, das Sie korrigieren und beim nächsten Lauf erneut übermitteln können.

Drei Schritte in Python

Delta extrahieren, Batch absenden, Parent pollen – die minimale funktionale Katalog-Automatisierung.

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),
        )

Häufige Fragen von Entwicklern

Ghost Mannequin im Katalog-Maßstab betreiben

Wie groß darf ein einzelner Batch sein?

Der Batch-Endpoint akzeptiert laut Dokumentation bis zu einige hundert Items pro Aufruf. Teilen Sie für einen nächtlichen Lauf mit 50K-SKUs das Delta in Batches von 100–200 auf und senden Sie diese sequentiell ab, um sicher unter dem Rate-Limit Ihres Plans zu bleiben.

Kann ein Batch 3D und Flat-Lay mischen?

Ja – style ist ein Feld pro Item, ein einzelner Batch kann also beides enthalten. In der Praxis trennen die meisten Teams dennoch nach Kategorien, da die nachgelagerte Persistierungslogik einfacher ist, wenn jede Zeile eines Batches in derselben Datenbankspalte landet.

Was passiert mit fehlgeschlagenen Items?

Für fehlgeschlagene Items in einem Batch werden die Credits automatisch erstattet; sie enthalten einen error_code + error_message im finalen Item-Payload. Loggen Sie die Fehler und versuchen Sie es in der nächsten Nacht erneut, nachdem Ihr Team das Quellfoto korrigieren oder die Zeile als dauerhaft ungültigen Input markieren konnte.

Wie mappe ich die Ergebnisse zurück auf meine Produkt-IDs?

Behalten Sie beim Absenden Ihr eigenes Mapping von Array-Position zu Produkt-ID bei: Die Batch-Response liefert eine Generation-ID pro Item in derselben Reihenfolge wie product_images zurück, und der Batch-Status listet die Items ebenfalls in dieser Reihenfolge auf.

Kann ich das als täglichen Cron-Job einrichten?

Ja — ein einfacher täglicher Cron-Job, der das Delta der letzten 24 Stunden abruft, in Chunks aufteilt, Batches übermittelt und Ergebnisse in Ihre Datenbank schreibt, ist ein tragendes Architekturmuster für Teams mit großen Katalogen. Halten Sie den Runner idempotent, damit ein fehlgeschlagener nächtlicher Durchlauf sicher wiederholt werden kann.

Ghost-Mannequin für Katalogdimensionen noch heute Nacht deployen

Drei Python-Funktionen, ein Cron-Job, 50K Fotos. Holen Sie sich einen API-Key und richten Sie ihn auf Ihren Katalog.