> ## 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.

# Usar Salsify en Agents

> Aprende a gestionar productos y la pertenencia a listas con los nodos de Agent de Salsify

Después de [conectar tu organización de Salsify](/es/integrations/salsify/connect-salsify-to-profound), los siguientes nodos están disponibles en Profound Agents. Úsalos para leer el contenido de productos de una Product List de Salsify, mejorarlo con otros nodos de Agent, volver a escribirlo y registrar qué productos están terminados.

Cada nodo se ejecuta contra la organización que seleccionas en **Salsify Organization** y usa los permisos del usuario de Salsify propietario de la clave de API.

<Note>
  ¿Eres nuevo en Agents? Consulta [Getting started with Agents](https://help.tryprofound.com/articles/2212787792-create-an-agent) en el Centro de ayuda de Profound.
</Note>

## Nodos disponibles

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

    Lee una página de productos de una o más Product Lists de Salsify. Siempre se requiere un ámbito de Product List: Profound nunca lee toda la organización de Salsify.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Product Lists** — Los ID de las Product Lists de las que leer

    #### Entradas opcionales

    | Entrada | Valor predeterminado | Descripción | Límites |
    | - | - | - | - |
    | **Match** | **OR** | Cómo se combinan las Product Lists. **OR** lee productos que estén en cualquiera de las listas, **AND** lee solo productos que estén en todas las listas. | - |
    | **Excluded Lists** | - | Los ID de las Product Lists cuyos miembros se excluyen del resultado. | - |
    | **Property Equality** | - | Uno o más pares de propiedad y valor con los que debe coincidir un producto. Selecciona **Add clause** y luego introduce el ID de propiedad (distingue entre mayúsculas y minúsculas) y el valor exacto. | Es una alternativa a **Advanced Filter**; ambos no pueden usarse juntos. Un ID de propiedad o un valor no puede contener `,` `=` `^` `:` `'` `{` `}` ni `*`. Para buscar esos caracteres, usa **Advanced Filter** en su lugar. |
    | **Raw Filter** (en **Query options**) | - | Edita todo el filtro como JSON, incluidas claves que los campos anteriores no muestran. | - |
    | **Advanced Filter** (en **Query options**) | - | Una [expresión de filtro de Salsify](https://developers.salsify.com/reference/salsify-filtering-language-syntax) sin procesar que acota las listas. | Es una alternativa a **Property Equality**; ambos no pueden usarse juntos. No puede contener un signo igual (`=`). |
    | **Page** (en **Query options**) | `1` | Qué página leer. | La página multiplicada por los resultados por página no puede superar `10,000`. |
    | **Results per Page** (en **Query options**) | `100` | Productos por página. | `100` es el máximo. |

    #### Salida

    Un objeto JSON con un array `data` de productos y un objeto de metadatos con los detalles de paginación y el número total de productos que coinciden.

    <Tip>
      Combina **Product Lists** con **Excluded Lists** para [crear una cola de trabajo](#crear-una-cola-de-trabajo). Lee la lista de origen y excluye la lista de destino, de modo que cada ejecución devuelva solo los productos que aún no están terminados.
    </Tip>
  </Tab>

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

    Lee todas las propiedades de un producto.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Product ID** — El ID de producto de tu organización, a menudo el SKU. Distingue entre mayúsculas y minúsculas. Introdúcelo como texto o usa una variable de la salida de un nodo anterior

    #### Salida

    Un objeto JSON con los detalles del producto en `data`. Las propiedades localizables se devuelven como objetos con claves por configuración regional, por ejemplo `"Entity Name": { "en-US": "Java Monster Energy Drink, 12-Pack, 15 Oz Cans", "fr-FR": ... }`.

    <Tip>
      Ejecuta este nodo una vez durante la configuración. La salida muestra los ID de propiedad que usa tu organización y cuáles de ellos son localizables.
    </Tip>
  </Tab>

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

    Crea hasta 100 productos en una sola ejecución. Solo crea los registros de producto y no los añade a Product Lists.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Properties** — Las propiedades que se incluirán en el nuevo registro de producto. Introduce un **Sample product ID** para usar un producto existente como plantilla: se listan las propiedades que tiene ese producto y luego eliges las que necesitas para el nuevo producto.
    * **Data format**:
      * **Structured** — Muestra una tarjeta por producto con un campo para cada propiedad.
      * **Raw JSON** — Acepta un array de objetos que asignan ID de propiedad a valores. Acepta una variable de la salida de un nodo anterior.
    * **Products** — Hasta 100 productos. Cada producto debe incluir la propiedad de ID de producto de tu organización, a menudo el SKU, con un valor único.

    #### Salida

    Cuando se crean los productos, el nodo devuelve un objeto JSON con el número de productos creados. El nodo no devuelve los datos de los productos creados; usa [**Get Product**](#get-product) para leerlos.
  </Tab>

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

    Actualiza hasta 100 productos existentes en una sola ejecución. Solo cambian las propiedades que proporcionas, y todas las demás propiedades se mantienen igual.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Properties** — Las propiedades del producto que se actualizarán. Introduce un **Sample product ID** para usar un producto existente como plantilla: se listan las propiedades que tiene ese producto y luego eliges las que necesitas añadir al producto que se actualiza.
    * **Data format**:
      * **Structured** — Muestra una tarjeta por producto con un campo para cada propiedad.
      * **Raw JSON** — Acepta un array de objetos que asignan ID de propiedad a valores. Puede aceptar variables de las salidas de nodos anteriores.
    * **Products** — Hasta 100 productos. Cada ID de producto puede aparecer una sola vez y distingue entre mayúsculas y minúsculas. Deja la propiedad vacía para eliminarla en Salsify.

    #### Salida

    El nodo devuelve un objeto JSON con el número y los ID de los productos que intentó actualizar. Los productos actualizados se listan en `product_ids`, y los productos de los que Salsify no tiene registro se listan en `not_found`.

    <Note>
      Este nodo puede cambiar todas las propiedades excepto el ID del producto.
    </Note>
  </Tab>

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

    Añade hasta 100 productos existentes a una Product List de Salsify.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Product List ID** — El ID de la lista de destino, que aparece en la URL de Salsify después de `product_lists/` y antes de cualquier parámetro de consulta (`?`)
    * **Product IDs** — Una lista de ID de producto o una variable que contenga la lista

    #### Salida

    Cuando se añaden los productos, el nodo devuelve un objeto JSON con el número de productos añadidos, sus ID y el ID de la Product List de destino.

    <Note>
      Salsify aplica los cambios de forma asíncrona, por lo que un nodo [**List Products**](#list-products) que se ejecute inmediatamente después de este nodo puede no mostrar el cambio.
    </Note>
  </Tab>

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

    Quita hasta 100 productos de una Product List de Salsify. El cambio se aplica solo a la pertenencia a la lista; los registros de producto permanecen en Salsify.

    #### Entradas obligatorias

    * **Salsify Organization** — Selecciona una organización conectada en el menú desplegable
    * **Product List ID** — El ID de la lista, que aparece en la URL de Salsify después de `product_lists/` y antes de cualquier parámetro de consulta (`?`)
    * **Product IDs** — Una lista de ID de producto o una variable que contenga la lista

    #### Salida

    Cuando se quitan los productos, el nodo devuelve un objeto JSON con el número de productos quitados, sus ID y el ID de la Product List.

    <Note>
      Salsify aplica los cambios de forma asíncrona, por lo que un nodo [**List Products**](#list-products) que se ejecute inmediatamente después de este nodo puede no mostrar el cambio.
    </Note>
  </Tab>
</Tabs>

***

## Crear una cola de trabajo

Los nodos de Salsify están diseñados para ejecutarse en bucle: cada ejecución toma un lote de productos de una lista de origen, mejora el contenido, lo vuelve a escribir en Salsify y mueve los productos terminados a una lista de destino. Esta cola de trabajo permite que un solo Agent mejore todo un catálogo de productos, un lote a la vez.

Este es un ejemplo de una cola de trabajo.

<Steps>
  <Step title="Crea una lista de origen y una lista de destino" id="queue-step-1">
    En Salsify, crea dos Product Lists, por ejemplo `Profound: to optimize` y `Profound: optimized`. Añade los productos con los que quieres trabajar a la lista `to optimize` y deja vacía la lista `optimized`.
  </Step>

  <Step title="Lee la lista de origen con List Products" id="queue-step-2">
    Añade un nodo [**List Products**](#list-products). Introduce el ID de la lista `to optimize` en **Product Lists** y el ID de la lista `optimized` en **Excluded Lists**, para que un producto que ya está terminado no se vuelva a leer nunca.
  </Step>

  <Step title="Mejora el contenido" id="queue-step-3">
    Pasa los productos a tus nodos de contenido (como un [Prompt LLM](https://help.tryprofound.com/articles/1457177722-prompt-llm)) para reescribir el texto de marketing de cada registro de producto.
  </Step>

  <Step title="Vuelve a escribir el contenido con Update Products" id="queue-step-4">
    Añade un nodo [**Update Products**](#update-products). Para cada producto, establece el **Product ID** y las propiedades que se actualizarán con el nuevo texto.
  </Step>

  <Step title="Registra los productos terminados con Add Products to List" id="queue-step-5">
    Añade un nodo [**Add Products to List**](#add-products-to-list) con el ID de la lista `optimized` y los ID de producto de esta ejecución. Esta Product List en Salsify es ahora tu informe de progreso.
  </Step>

  <Step title="Quita los productos de la cola con Remove Products from List" id="queue-step-6">
    Añade un nodo [**Remove Products from List**](#remove-products-from-list) con el ID de la lista `to optimize` y los mismos ID de producto. Los productos salen de la cola, pero permanecen en Salsify.
  </Step>
</Steps>

## Solución de problemas

<AccordionGroup>
  <Accordion title="El selector de propiedades está vacío o deshabilitado">
    * Selecciona primero una **Salsify Organization**. El selector permanece deshabilitado hasta que lo hagas.
    * Introduce un **Sample product ID**. El selector lista las propiedades de ese único producto, así que usa un producto que tenga las propiedades que quieres escribir.
    * Si el selector muestra **Available when the payload below is a list of products**, el payload de **Products** es texto o una variable. Cambia **Data format** a **Raw JSON** para editarlo.
  </Accordion>

  <Accordion title="List Products falla con un error de Salsify">
    * Confirma que el ID de la Product List es el segmento de la URL que aparece después de `product_lists/` y antes de cualquier parámetro de consulta (`?`).
    * Confirma que la lista todavía existe en Salsify.
    * Si usas **Advanced Filter**, comprueba que sea una [expresión de filtro de Salsify](https://developers.salsify.com/reference/salsify-filtering-language-syntax) válida.
  </Accordion>

  <Accordion title="List Products no devuelve productos de una lista que sí tiene productos">
    * Confirma el ID de la Product List. Dos listas pueden tener nombres similares.
    * Comprueba que una cláusula de **Property Equality** o un **Advanced Filter** no excluya todos los productos.
    * Si acabas de añadir los productos a la lista, espera y vuelve a ejecutar el nodo. Salsify aplica los cambios de forma asíncrona, y es posible que tu nodo [**List Products**](#list-products) aún no haya recibido el cambio.
  </Accordion>

  <Accordion title="Un nodo de escritura informa que las propiedades no existen">
    Los ID de propiedad distinguen entre mayúsculas y minúsculas. Copia el ID exacto del selector de propiedades o de la salida de un nodo [**Get Product**](#get-product). Si la propiedad es nueva, créala primero en Salsify.
  </Accordion>

  <Accordion title="Create Products informa que un producto debe indicar la propiedad de ID de producto">
    A un producto del lote le falta la propiedad que contiene el ID de producto de tu organización. Añádela, con un valor único, a cada producto del lote.
  </Accordion>

  <Accordion title="Update Products informa que no se encontraron productos">
    Salsify no tiene registro de esos ID de producto. Lee los ID con un nodo [**List Products**](#list-products) y confirma que sean correctos.
  </Accordion>

  <Accordion title="Se rechaza una lectura por superar el límite de 10,000 resultados">
    Reduce **Page** o **Results per Page**, o limita la lectura a una Product List más pequeña. Como alternativa, [crea una cola de trabajo](#crear-una-cola-de-trabajo), que siempre lee solo la primera página.
  </Accordion>

  <Accordion title="Un cambio hecho en Salsify no aparece en la siguiente lectura">
    Salsify actualiza la pertenencia a las listas de forma asíncrona. Espera y vuelve a ejecutar el nodo.
  </Accordion>

  <Accordion title="Un nodo informa que se alcanzó el límite de solicitudes de Salsify">
    El error te indica cuántos segundos faltan para que se restablezca el límite. Espera y vuelve a ejecutar el Agent. Para evitar alcanzar los límites de solicitudes, lee más productos por página y ejecuta menos nodos de Salsify al mismo tiempo.
  </Accordion>
</AccordionGroup>
