> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryprofound.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Agents で Salsify を使用する

> Salsify の Agent ノードで商品とリストのメンバーシップを管理する方法を説明します

[Salsify 組織を接続](/ja-jp/integrations/salsify/connect-salsify-to-profound)すると、Profound Agents で以下のノードが利用可能になります。これらのノードを使用して、Salsify の Product List から商品コンテンツを読み取り、他の Agent ノードで改善し、書き戻して、完了した商品を記録できます。

すべてのノードは **Salsify Organization** で選択した組織に対して実行され、API キーを所有する Salsify ユーザーの権限を使用します。

<Note>
  Agents を初めてお使いの場合は、Profound Help Center の [Getting started with Agents](https://help.tryprofound.com/articles/2212787792-create-an-agent) をご覧ください。
</Note>

## 利用可能なノード

<Tabs>
  <Tab title="List Products" icon="list">
    ### List Products

    1 つ以上の Salsify Product Lists から商品を 1 ページ分読み取ります。Product List の範囲指定は常に必須で、Profound が Salsify 組織全体を読み取ることはありません。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Product Lists** — 読み取り元の Product Lists の ID

    #### オプションの入力

    | 入力 | デフォルト | 説明 | 制限 |
    | - | - | - | - |
    | **Match** | **OR** | Product Lists の組み合わせ方。**OR** はいずれかのリストに含まれる商品を、**AND** はすべてのリストに含まれる商品のみを読み取ります。 | - |
    | **Excluded Lists** | - | 結果から除外するメンバーを含む Product Lists の ID。 | - |
    | **Property Equality** | - | 商品が一致する必要がある 1 つ以上のプロパティと値のペア。**Add clause** を選択し、大文字と小文字を区別するプロパティ ID と正確な値を入力します。 | **Advanced Filter** の代替であり、両方を同時に使用することはできません。プロパティ ID または値に `,` `=` `^` `:` `'` `{` `}` `*` を含めることはできません。これらの文字に一致させるには、代わりに **Advanced Filter** を使用してください。 |
    | **Raw Filter**(**Query options** 内) | - | 上記のフィールドに表示されないキーも含め、フィルター全体を JSON として編集します。 | - |
    | **Advanced Filter**(**Query options** 内) | - | リストを絞り込む生の [Salsify フィルター式](https://developers.salsify.com/reference/salsify-filtering-language-syntax)。 | **Property Equality** の代替であり、両方を同時に使用することはできません。等号(`=`)を含めることはできません。 |
    | **Page**(**Query options** 内) | `1` | 読み取るページ。 | ページ番号と 1 ページあたりの結果数を掛けた値は `10,000` を超えられません。 |
    | **Results per Page**(**Query options** 内) | `100` | 1 ページあたりの商品数。 | 最大値は `100` です。 |

    #### 出力

    商品の `data` 配列と、ページネーションの詳細および一致する商品の総数を含むメタデータオブジェクトを持つ JSON オブジェクト。

    <Tip>
      **Product Lists** と **Excluded Lists** を組み合わせて、[作業キューを構築](#build-a-work-queue)できます。ソースリストを読み取り、宛先リストを除外することで、各実行ではまだ完了していない商品のみが返されます。
    </Tip>
  </Tab>

  <Tab title="Get Product" icon="box">
    ### Get Product

    1 つの商品のすべてのプロパティを読み取ります。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Product ID** — 組織の商品 ID(多くの場合 SKU)。大文字と小文字が区別されます。テキストで入力するか、前のノードの出力の変数を使用します

    #### 出力

    `data` の下に商品の詳細を含む JSON オブジェクト。ローカライズ可能なプロパティは、ロケールをキーとするオブジェクトとして返されます。例: `"Entity Name": { "en-US": "Java Monster Energy Drink, 12-Pack, 15 Oz Cans", "fr-FR": ... }`。

    <Tip>
      セットアップ時にこのノードを一度実行してください。出力には、組織で使用されているプロパティ ID と、そのうちローカライズ可能なものが表示されます。
    </Tip>
  </Tab>

  <Tab title="Create Products" icon="plus">
    ### Create Products

    1 回の実行で最大 100 件の商品を作成します。商品レコードの作成のみを行い、Product Lists には追加しません。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Properties** — 新しい商品レコードに含めるプロパティ。既存の商品をテンプレートとして使用するには、**Sample product ID** を入力します。その商品が持つプロパティが一覧表示されるので、新しい商品に必要なものを選択します。
    * **Data format**:
      * **Structured** — 商品ごとに 1 枚のカードを表示し、各プロパティのフィールドを表示します。
      * **Raw JSON** — プロパティ ID を値に対応付けたオブジェクトの配列を受け取ります。前のノードの出力の変数を受け付けます。
    * **Products** — 最大 100 件の商品。すべての商品に、組織の商品 ID プロパティ(多くの場合 SKU)を一意の値で含める必要があります。

    #### 出力

    商品が作成されると、ノードは作成された商品数を含む JSON オブジェクトを返します。作成された商品のデータは返されないため、[**Get Product**](#get-product) を使用して読み取ってください。
  </Tab>

  <Tab title="Update Products" icon="pen-to-square">
    ### Update Products

    1 回の実行で最大 100 件の既存の商品を更新します。指定したプロパティのみが変更され、その他のプロパティはそのまま維持されます。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Properties** — 更新する商品プロパティ。既存の商品をテンプレートとして使用するには、**Sample product ID** を入力します。その商品が持つプロパティが一覧表示されるので、更新対象の商品に追加する必要があるものを選択します。
    * **Data format**:
      * **Structured** — 商品ごとに 1 枚のカードを表示し、各プロパティのフィールドを表示します。
      * **Raw JSON** — プロパティ ID を値に対応付けたオブジェクトの配列を受け取ります。前のノードの出力の変数を受け付けることができます。
    * **Products** — 最大 100 件の商品。各商品 ID は 1 回のみ指定でき、大文字と小文字が区別されます。Salsify でプロパティを削除するには、そのプロパティを空のままにします。

    #### 出力

    ノードは、更新を試みた商品の件数と ID を含む JSON オブジェクトを返します。更新された商品は `product_ids` に、Salsify にレコードが存在しない商品は `not_found` に一覧表示されます。

    <Note>
      このノードは、商品 ID を除くすべてのプロパティを変更できます。
    </Note>
  </Tab>

  <Tab title="Add Products to List" icon="list-check">
    ### Add Products to List

    最大 100 件の既存の商品を Salsify の Product List に追加します。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Product List ID** — 宛先リストの ID。Salsify の URL で `product_lists/` の後、クエリパラメーター(`?`)の前にある部分です
    * **Product IDs** — 商品 ID のリスト、またはそのリストを保持する変数

    #### 出力

    商品が追加されると、ノードは追加された商品数、その ID、宛先の Product List ID を含む JSON オブジェクトを返します。

    <Note>
      Salsify は変更を非同期で適用するため、このノードの直後に実行される [**List Products**](#list-products) ノードには変更が反映されていない場合があります。
    </Note>
  </Tab>

  <Tab title="Remove Products from List" icon="minus">
    ### Remove Products from List

    Salsify の Product List から最大 100 件の商品を削除します。変更はリストのメンバーシップにのみ適用され、商品レコードは Salsify に残ります。

    #### 必須の入力

    * **Salsify Organization** — ドロップダウンから接続済みの組織を選択します
    * **Product List ID** — リストの ID。Salsify の URL で `product_lists/` の後、クエリパラメーター(`?`)の前にある部分です
    * **Product IDs** — 商品 ID のリスト、またはそのリストを保持する変数

    #### 出力

    商品が削除されると、ノードは削除された商品数、その ID、Product List ID を含む JSON オブジェクトを返します。

    <Note>
      Salsify は変更を非同期で適用するため、このノードの直後に実行される [**List Products**](#list-products) ノードには変更が反映されていない場合があります。
    </Note>
  </Tab>
</Tabs>

***

## 作業キューを構築する

Salsify ノードはループとして実行するように設計されています。各実行では、ソースリストから商品のバッチを取得し、コンテンツを改善して Salsify に書き戻し、完了した商品を宛先リストに移動します。この作業キューにより、1 つの Agent で商品カタログ全体をバッチごとに改善できます。

以下は作業キューの例です。

<Steps>
  <Step title="ソースリストと宛先リストを作成する" id="queue-step-1">
    Salsify で 2 つの Product Lists を作成します(例: `Profound: to optimize` と `Profound: optimized`)。作業対象の商品を `to optimize` リストに追加し、`optimized` リストは空のままにします。
  </Step>

  <Step title="List Products でソースリストを読み取る" id="queue-step-2">
    [**List Products**](#list-products) ノードを追加します。**Product Lists** に `to optimize` リストの ID を、**Excluded Lists** に `optimized` リストの ID を入力します。これにより、完了済みの商品が再度読み取られることはありません。
  </Step>

  <Step title="コンテンツを改善する" id="queue-step-3">
    商品をコンテンツノード([Prompt LLM](https://help.tryprofound.com/articles/1457177722-prompt-llm) など)に渡し、各商品レコードのマーケティングコピーを書き直します。
  </Step>

  <Step title="Update Products でコンテンツを書き戻す" id="queue-step-4">
    [**Update Products**](#update-products) ノードを追加します。各商品について、**Product ID** と、新しいコピーで更新するプロパティを設定します。
  </Step>

  <Step title="Add Products to List で完了した商品を記録する" id="queue-step-5">
    `optimized` リストの ID と今回の実行の商品 ID を指定して、[**Add Products to List**](#add-products-to-list) ノードを追加します。これで、Salsify のこの Product List が進捗レポートになります。
  </Step>

  <Step title="Remove Products from List でキューから商品を削除する" id="queue-step-6">
    `to optimize` リストの ID と同じ商品 ID を指定して、[**Remove Products from List**](#remove-products-from-list) ノードを追加します。商品はキューから外れますが、Salsify には残ります。
  </Step>
</Steps>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="プロパティピッカーが空、または無効になっている">
    * まず **Salsify Organization** を選択してください。選択するまでピッカーは無効のままです。
    * **Sample product ID** を入力してください。ピッカーにはその 1 つの商品のプロパティが一覧表示されるため、書き込みたいプロパティを持つ商品を使用してください。
    * ピッカーに **Available when the payload below is a list of products** と表示される場合、**Products** のペイロードがテキストまたは変数になっています。編集するには、**Data format** を **Raw JSON** に切り替えてください。
  </Accordion>

  <Accordion title="List Products が Salsify のエラーで失敗する">
    * Product List ID が、URL の `product_lists/` の後、クエリパラメーター(`?`)の前にある部分であることを確認してください。
    * そのリストが Salsify にまだ存在することを確認してください。
    * **Advanced Filter** を使用している場合は、有効な [Salsify フィルター式](https://developers.salsify.com/reference/salsify-filtering-language-syntax)であることを確認してください。
  </Accordion>

  <Accordion title="商品が含まれているリストから List Products が商品を返さない">
    * Product List ID を確認してください。似た名前のリストが 2 つある場合があります。
    * **Property Equality** の条件や **Advanced Filter** によって、すべての商品が除外されていないことを確認してください。
    * 商品をリストに追加したばかりの場合は、しばらく待ってからノードを再度実行してください。Salsify は変更を非同期で適用するため、[**List Products**](#list-products) ノードにまだ変更が反映されていない可能性があります。
  </Accordion>

  <Accordion title="プロパティが存在しないと書き込みノードが報告する">
    プロパティ ID は大文字と小文字が区別されます。プロパティピッカーまたは [**Get Product**](#get-product) ノードの出力から正確な ID をコピーしてください。新しいプロパティの場合は、先に Salsify で作成してください。
  </Accordion>

  <Accordion title="商品には商品 ID プロパティを指定する必要があると Create Products が報告する">
    バッチ内の商品に、組織の商品 ID を保持するプロパティが欠けています。バッチ内のすべての商品に、一意の値でそのプロパティを追加してください。
  </Accordion>

  <Accordion title="Update Products が商品を not found として報告する">
    Salsify にそれらの商品 ID のレコードがありません。[**List Products**](#list-products) ノードで ID を読み取り、正しいことを確認してください。
  </Accordion>

  <Accordion title="10,000 件の結果上限を超えるため読み取りが拒否される">
    **Page** または **Results per Page** を減らすか、読み取り範囲をより小さな Product List に絞ってください。あるいは、常に最初のページのみを読み取る[作業キューを構築](#build-a-work-queue)してください。
  </Accordion>

  <Accordion title="Salsify で行った変更が次の読み取りに反映されない">
    Salsify はリストのメンバーシップを非同期で更新します。しばらく待ってから、ノードを再度実行してください。
  </Accordion>

  <Accordion title="Salsify のレート制限に達したとノードが報告する">
    エラーには、制限がリセットされるまでの残り秒数が表示されます。しばらく待ってから、Agent を再度実行してください。レート制限に達しないようにするには、1 ページあたりに読み取る商品数を増やし、同時に実行する Salsify ノードの数を減らしてください。
  </Accordion>
</AccordionGroup>
