カタログの形式と要件
定義
商品カタログは、ECストアで購入可能な商品のコレクション全体を表します。
各カタログアイテムは、以下の構造を持つJSONオブジェクトとして表現されます。
{
"id": "805371A",
"itemGroupId": "805371",
"categoryHierarchies": [
{ "categories": ["Women", "Shoes"] },
{ "categories": ["Sports & Fitness", "Shoes"] }
],
"title": "Red Shoes",
"description": "Fancy red shoes",
"brand": "Designer Brand",
"languageCode": "en",
"productMetadata": {
"stockState": "IN_STOCK",
"availableQuantity": 30,
"exactPrice": {
"originalPrice": 119.99,
"displayPrice": 89.99
},
"currencyCode": "USD",
"canonicalProductUri": "https://www.store.com/shoes/red-shoes",
"images": [
{
"uri": "https://www.store.com/images/805371.jpg",
"width": 500,
"height": 500
}
]
}
}
INFO
注記: 上記の例は読みやすさのために改行が含まれていますが、作成するカタログファイルには、1行につき1つのJSONエンコードされたカタログアイテムを含める必要があります。ファイルはUTF-8でエンコードされている必要もあります。
{"id":"805371","categoryHierarchies":[{"categories":["Women","Shoes"]}],"title":"Red Shoes","description":"Fancy red shoes","languageCode":"en","productMetadata":{"exactPrice":{"originalPrice":119.99,"displayPrice":89.99},"currencyCode":"USD","canonicalProductUri":"https://www.store.com/shoes/red-shoes","images":[{"uri":"https://www.store.com/images/805371.jpg","width":500,"height":500}]}}
{"id":"805372","categoryHierarchies":[{"categories":["Women","Shoes"]}],"title":"Green Shoes","description":"Fancy green shoes","languageCode":"en","productMetadata":{"exactPrice":{"originalPrice":148.99,"displayPrice":129.99},"currencyCode":"USD","canonicalProductUri":"https://www.store.com/shoes/green-shoes","images":[{"uri":"https://www.store.com/images/805372.jpg","width":500,"height":500}]}}
プロパティ
id
- タイプ: String
- 必須
- 最大サイズ: 128バイト
このIDは、同じカタログ内のすべてのカタログアイテム間で一意である必要があります。これは、Fanplayr連携で商品ページビューと一緒にトラッキングされるIDと同じである必要があります。
itemGroupId
- タイプ: String
- 必須 (カタログレベルの設定による)
- 最大サイズ: 128バイト
商品バリアントのグループ識別子で、「マスター」商品識別子とも呼ばれます。これにより、関連するすべての商品バリアントが予測結果のために連携されます。
カタログアイテムのすべてが itemGroupId
に値を持つか、またはどれも値を持たないかのいずれかである必要があります。一部のアイテムで itemGroupId
が設定され、他のアイテムで設定されていないカタログデータをインポートすることはできません。このフィールドは、マスター/マスターまたはバリアント/マスターのカタログレベルを使用する場合に必須です。
categoryHierarchies
- タイプ: Array
- 必須 (少なくとも1つのカテゴリ階層エントリが必須)
- 最大サイズ: 1000バイト (JSONエンコード時)
カタログアイテムのカテゴリ。このフィールドは、1つのカタログアイテムが複数の並行カテゴリ階層に属することをサポートするために繰り返されます。少なくとも1つのカテゴリが存在する必要があります。
例として、靴の製品が「Women > Shoes」と「Sports & Fitness > Shoes」の両方に属する場合、次のように表現できます。
"categoryHierarchies": [
{ "categories": ["Women", "Shoes"] },
{ "categories": ["Sports & Fitness", "Shoes"] }
]
title
- タイプ: String
- 必須
- 最大サイズ: 500バイト
カタログアイテムのタイトル。
description
- タイプ: String
- 最大サイズ: 500バイト
カタログアイテムの説明。この値はウィジェットには表示されませんが、レコメンデーションモデルの改善に役立ちます。
brand
- タイプ: String
- 最大サイズ: 100バイト
商品に関連付けられたブランドまたは製造元。
languageCode
- タイプ: String
- 必須
タイトル/説明の言語。BCP 47で定義された言語タグを使用してください。 https://www.rfc-editor.org/rfc/bcp/bcp47.txt。サポートされている言語コードは、「en」、「es」、「fr」、「de」、「ar」、「fa」、「zh」、「ja」、「ko」、「sv」、「ro」、「nl」です。
productMetadata
- タイプ: Object
- 必須
stockState
、availableQuantity
、exactPrice
、currencyCode
、canonicalProductUri
、images
のプロパティを含みます。
stockState
- タイプ: ENUM
- ネスト元:
productMetadata
- 必須
以下のいずれかの値と等しい必要があります。
IN_STOCK
- 在庫ありの商品。OUT_OF_STOCK
- 在庫切れの商品。PREORDER
- 予約中の商品。BACKORDER
- バックオーダー中の商品(一時的に在庫切れなど)。
availableQuantity
- タイプ: Number
- ネスト元:
productMetadata
購入可能なアイテムの残り数量。
exactPrice
- タイプ: Object
- 必須:
originalPrice
とdisplayPrice
のプロパティを含みます。
originalPrice
- タイプ: Float
- ネスト元:
productMetadata.exactPrice
- 必須
セール価格などの割引前のアイテムの元の価格。
displayPrice
- タイプ: Float
- ネスト元:
productMetadata.exactPrice
- 必須
セール価格などの割引後のアイテムの現在の価格。
currencyCode
- タイプ: String
- 必須
アイテム価格の通貨コード。3文字のISO-4217コードを使用してください。
canonicalProductUri
- タイプ: String
- 必須
商品の基本URI。異なる色やサイズで異なるURIを持つ商品の場合、可能であればバリアントのない基本商品を示すURIを提供してください。
images
- タイプ: Array
- 必須 (少なくとも1つの画像が必須)
商品画像の配列。レコメンデーションコンポーネントには最初の画像のみが表示されます。少なくとも1つの画像が必須です。
各画像は以下の構造を持つオブジェクトである必要があります。
{
// 必須。画像のURL。
// 最大サイズ:1000バイト
"uri": "https://www.store.com/images/805371.jpg",
// オプション。画像の幅(ピクセル)。
"width": 500,
// オプション。画像の高さ(ピクセル)。
"height": 500
}
tags
- タイプ: Stringの配列
- 最大サイズ: 500バイト (合計)
カタログアイテムに関連付けるオプションのタグ。各タグはUTF-8でエンコードされた文字列である必要があります。単一のカタログアイテムのすべてのタグの合計の長さは500バイトを超えてはなりません。
itemAttributes
- タイプ: Object
- 最大サイズ: 1000バイト (合計)
オプション。レコメンデーションモデルに含める追加のアイテム属性。例えば、小売製品の場合、商品のスタイル、色などが含まれます。これらの属性は、レコメンデーションモデルに追加のシグナルを与えることができます。
アイテム属性は、以下の構造でカテゴリ別と数値のセットに分けられるべきです。
"itemAttributes": {
"categoricalFeatures": {
"colors": {
"value": ["red", "blue"]
},
"sizes": {
"value": ["S", "M", "L"]
}
},
"numericalFeatures": {
"lengths_cm": {
"value": [2.3, 15.4]
},
"heights_cm": {
"value":[8.1, 6.4]
}
}
}
カタログファイル形式
商品カタログファイルの形式には以下の要件があります。
- 各カタログアイテムは、上記で説明したJSON構造でフォーマットされている必要があります。
- 各カタログアイテムは、1行に含まれている必要があります。
- カタログファイルの合計サイズは、非圧縮で50MB以下である必要があります。 カタログがこのサイズを超える場合、分割して複数回インポートできます。
- すべてのアイテムは同じ言語と通貨を使用する必要があります。 AIモデルのトレーニング時の制限により、同じカタログ内で異なる言語と通貨を混在させることはできません。ECストアに異なる言語や通貨を持つ複数のストアビューが含まれる場合は、別々のカタログとプロジェクトを管理する必要があります。
以下は、2つのアイテムを含むカタログファイルの例です。
{"id":"PRODUCT_1","categoryHierarchies":[{"categories":["Women","Shoes"]},{"categories":["Sports & Fitness","Shoes"]}],"title":"Red Shoes","description":"Fancy red shoes","languageCode":"en","productMetadata":{"stockState":"IN_STOCK","availableQuantity":30,"exactPrice":{"originalPrice":119.99},"currencyCode":"USD","canonicalProductUri":"https://www.store.com/shoes/red-shoes","images":[{"uri":"https://www.store.com/images/PRODUCT_1.jpg","width":500,"height":500}]}}
{"id":"PRODUCT_2","categoryHierarchies":[{"categories":["Men","Shoes"]},{"categories":["Sports & Fitness","Shoes"]}],"title":"Blue Shoes","description":"Fast blue shoes","languageCode":"en","productMetadata":{"stockState":"IN_STOCK","availableQuantity":17,"exactPrice":{"originalPrice":119.99},"currencyCode":"USD","canonicalProductUri":"https://www.store.com/shoes/blue-shoes","images":[{"uri":"https://www.store.com/images/PRODUCT_2.jpg","width":500,"height":500}]}}
カタログレベル
初めてカタログをインポートする前に、サイトでのユーザーイベントでマスターアイテムまたはバリアントをトラッキングするか、および予測結果でマスターアイテムまたはバリアントを返すかを決定する必要があります。Fanplayrが連携設定を支援します。
マスターアイテムは、類似のアイテムのグループ(言い換えれば、SKUグループ)を表します。マスターアイテムの例としては、「Vネックシャツ」があり、そのバリアントとして「ブラウンVネックシャツ、サイズXL」や「ホワイトVネックシャツ、サイズS」などがあります。マスターとバリアントは、「親」アイテムと「子」アイテムと呼ばれることもあります。
カタログレベルの組み合わせは次のとおりです。
- バリアント/バリアント: ユーザーイベントでバリアントをキャプチャし、予測結果でバリアントを返します。
- マスター/マスター: ユーザーイベントでマスターアイテムをキャプチャし、予測結果でマスターアイテムを返します。
- バリアント/マスター: ユーザーイベントでバリアントをキャプチャし、予測結果でマスターアイテムを返します。