ビルド · ノーコード自動化

コードを書かずにカタログを自動化する

要約

ノーコード実行では、1つのHTTPノードで製品写真のバッチを送信し、3秒待機してバッチステータスを確認。完了するまでこれを繰り返し、シートにURLを書き戻します。

  • Credits: 2Kで4 credits · 4Kで5 credits
  • 所要時間の目安: 1.5–4 min per image
  • 処理方式: 非同期、ポーリング

このページに記載されている数値はすべて以下に基づきます: Photta APIドキュメント · 確認済み

HTTPノード、待機ノード、そして条件分岐。n8n、Make、またはHTTPを扱える任意のツールを使用すれば、バッチendpointを通じてカタログ全体を処理できます。

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "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"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

仕組み

スプレッドシートを入力し、画像フォルダを出力する

カタログをエクスポートし、HTTPノードを1つ設定し、待機を挟んでループさせ、URLを書き戻します。

  1. ステップ 1

    カタログのエクスポート

    公開画像URLを含む衣服1着につき1行。バッチendpointが必要とする入力は、このカラムのみです。

  2. ステップ 2

    Photta APIキーの取得

    エクスポートしたワークフローにシークレットが含まれないよう、ノードのボディではなく、自動化ツールのクレデンシャルボールトに保存してください。

  3. ステップ 3

    HTTPノードの設定

    POST、Bearerヘッダー、およびここに示されているJSONボディ。配列内の各アイテムが1着の衣服に対応し、スタイリングフィールドはそれらすべてに適用されます。

  4. ステップ 4

    待機を挟んだループ処理

    3秒待機し、バッチを読み込み、ステータスが完了しているか確認し、次の周回へ進みます。このインターバルはドキュメントで指定されている値です。

  5. ステップ 5

    レート制限の遵守

    バッチサイズの上限および同時実行バッチの上限は、いずれもプランに準拠します。1つのバッチを送信して完了させてから、次のバッチを送信してください。

  6. ステップ 6

    URLの書き戻し

    バッチが完了すると、各アイテムに独自の出力URLが付与されます。それらをシートに書き戻し、同じ実行内でファイルをダウンロードします。

ノードの構成と設定内容

リクエストボディはAPIドキュメントに掲載されているサンプル通りです。ループ処理にはドキュメント記載のpolling間隔を使用します。

{
  "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"
}
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "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"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')
{
  "nodes": [
    {
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "parameters": {
        "amount": 3,
        "unit": "seconds"
      }
    },
    {
      "name": "Read batch",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "GET",
        "url": "https://api.photta.app/api/v1/ghost-mannequin/batch/{{ $json.data.batch_id }}"
      }
    },
    {
      "name": "Done?",
      "type": "n8n-nodes-base.if",
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.data.status }}",
              "value2": "completed"
            }
          ]
        }
      }
    }
  ]
}
# 600 requests per minute per key, fixed window.
# One batch submission plus one poll every 3 seconds is ~21 requests per minute
# per batch in flight, so the concurrency cap binds long before the rate limit.
# On a 429, wait the Retry-After seconds (30 by default) before the next node runs.

開発者からのよくある質問

ノーコード実行に関するFAQ

コードを書く必要はありますか?

いいえ。ここにある処理はすべてJSONボディを伴うHTTPリクエストであり、あらゆる自動化ツールから送信可能です。入力が必要なテキストは、このページに表示されているボディのみです。

1回の実行で何枚の画像を処理できますか?

APIのバッチ上限は、FreeおよびHobbyで5枚、Sellerで10枚、Brandで25枚、Studioで50枚です。それ以上のカタログは、複数のバッチとして順番に実行します。

1枚の画像が失敗した場合はどうなりますか?

バッチの残りの処理は継続されます。バッチのレスポンスボディにcompletedとfailedの件数がレポートされ、失敗したアイテムのcreditsは返還されます。

定期実行(スケジュール実行)は可能ですか?

はい。ワークフローを毎晩トリガーし、画像がまだない行を処理させることができます。ポーリングループの動作は、手動トリガーでもスケジュール実行でも同じです。

MakeやZapierでも動作しますか?

ヘッダーとJSONボディを含むHTTPリクエストを送信し、ステップ間で待機できる環境であればどこでも動作します。ノード名はツールによって異なりますが、3つのステップ自体は同じです。

開発者不要のカタログ生成

1つのHTTPノードと待機処理。このページのボディは、ドキュメントに掲載されている通りの仕様です。