agentplace :: Feeds de producto para ChatGPT y Google
# Lo que lee un agente en esta URL: el markdown de la página, con precio, stock y el grafo de producto. Los links siguen en la vista para agentes.
- ruta ..........
- /feeds
- markdown ......
- /feeds.md
- pedido ........
- GET · Accept: text/markdown
- estado ........
- 200 ok
- tokens ........
- ≈ 6.885
- humanos .......
- ver la página para personas
metadatos
- title .........
- Feeds de producto para ChatGPT y Google
- description ...
- El catálogo de 14 tiendas como feed de OpenAI y de Google Merchant Center, con las relaciones del Storegraph: de dónde sale cada campo y cómo se manda a cada plataforma.
- canonical .....
- /feeds
- updated .......
- 2026-10-02
- Productos: 11.552 de 14 tiendas
- Filas (una por variante): 39.010
- Relaciones exportadas: 61.843
related_product - Specs revisadas: 1 de octubre de 2026
ChatGPT, AI Mode y Gemini arman sus respuestas de compra con feeds de producto: un archivo con una fila por variante, con precio, stock, fotos y links. Agentplace genera los dos que importan, el de OpenAI y el de Google Merchant Center, con los datos de cada tienda, el texto de la IA y las relaciones del Storegraph, para que el asistente sepa qué recomendar al lado de cada producto.
En 10 segundos
- Listos y al día. Los dos feeds se generan en cada build desde los mismos datos que la página, sin llamadas a modelos: OpenAI (JSONL) y Google (XML). El sync de cada noche los renueva.
- Con el grafo adentro. 87 % de los productos sale con sus relaciones como
related_product, el atributo que Google usa en AI Mode. - El paso que sigue es la cuenta. Para Google, cada tienda ya tiene su feed con links a su dominio; OpenAI se abre con aprobación. Nada se envió todavía: lo decide Rafa.
Cómo se manda a cada plataforma
| Plataforma | Agentplace (un feed) | Cada tienda (CrossUp) | Cómo llega | Formato | Relaciones |
|---|---|---|---|---|---|
| Google Merchant Center | Requiere cuenta | Listo para enviar | Fuente de datos por archivo con descarga programada (diaria) desde una URL; o Merchant API. | XML RSS 2.0 con g: (acepta .gz), hasta 4 GB. | Sí: related_product (hasta 30 por producto, los 6 tipos), pensado para AI Mode. |
| OpenAI · ChatGPT | Requiere aprobación | Requiere aprobación | Push por SFTP de una foto completa, al menos diaria (OpenAI no la descarga); más una API PATCH para cambios. | jsonl.gz (también parquet, csv.gz, tsv.gz); hasta 500k ítems por archivo. | Hoy no: related_product_id y relationship_type salieron de la spec entre el 28-ago y el 13-sep-2026. Los dejamos calculados. |
| Microsoft Merchant Center | Requiere cuenta | Listo para enviar | Descarga programada desde una URL, SFTP o importación desde Google Merchant Center. | El mismo XML de Google. | No documentado. |
| Perplexity | No disponible en AR | No disponible en AR | Formulario de alta y feed por SFTP o URL. | El formato de Google (CSV o XML RSS). | No documentado. |
| Meta | No disponible en AR | Requiere cuenta | Catálogo con feed programado desde una URL (hasta cada hora) o Catalog Batch API. | Acepta el XML RSS con campos g:. | No. |
| Requiere cuenta | Requiere cuenta | Feed por URL o SFTP, ~cada 24 h. | Acepta el XML o el TSV de Google. | No. |
Google Merchant Center
Shopping, listados gratuitos, AI Mode y Gemini. Agentplace: Con agentplace.crossup.ai reclamado, los links a nuestras PDPs cumplen la regla de dominio. A validar: que acepten una PDP que manda a comprar a otra tienda. Cada tienda: Cada tienda ya tiene su feed con links a su propio dominio: se pega la URL en su Merchant Center.
- Crear la cuenta de Merchant Center y elegir Argentina y ARS (soportados en listados gratuitos).
- Verificar y reclamar
agentplace.crossup.ai: cadalinktiene que caer en el dominio reclamado. - Productos → Fuentes de datos → Agregar archivo → Descarga programada, diaria, con la URL del feed.
- Revisar los diagnósticos de la primera descarga antes de activar listados gratuitos.
Feed: google-merchant.xml.gz. Para enviarlo: Confirmar con Google que acepta un agregador cuya compra ocurre en la tienda del merchant. GTIN: sin código de barras, Google se arregla con marca + MPN. A escala: Una cuenta avanzada de CrossUp que vincula la cuenta de cada merchant por Merchant API (accountManagement: el merchant conserva la propiedad), una fuente programada por tienda apuntando a su feed y regeneración con los webhooks product/* de Tiendanube.
Fuentes: Especificación de datos de producto (abre en otra pestaña) · related_product (abre en otra pestaña) · Requisitos de la página de destino (abre en otra pestaña) · Países y monedas (Argentina, ARS) (abre en otra pestaña) · Archivos comprimidos y 4 GB (abre en otra pestaña) · Merchant API: sub-cuentas (abre en otra pestaña).
OpenAI · ChatGPT
Búsqueda de productos en ChatGPT. Agentplace: El alta es para socios aprobados, por formulario. La carga estándar hoy apunta a Estados Unidos; otros mercados los habilita OpenAI. Cada tienda: Mismo camino: CrossUp como plataforma, con el mercado argentino habilitado.
- Postular a CrossUp en chatgpt.com/merchants como plataforma con catálogos argentinos.
- Con la aprobación llegan las credenciales SFTP: subir
openai.jsonl.gzy validar primero con ~100 ítems. - Programar la subida diaria (la foto completa reemplaza a la anterior; un producto ausente queda 14 días).
Feed: openai.jsonl.gz. Para enviarlo: Aprobación de OpenAI y el mercado AR habilitado. Fotos en JPEG o PNG para el 7 % que hoy está en WebP. A escala: Un solo socio (CrossUp) con un archivo por merchant en la raíz SFTP, regenerado cada noche y parcheado por API con los webhooks de Tiendanube. seller_name y seller_url ya identifican a cada tienda.
Fuentes: Spec del feed (file upload) (abre en otra pestaña) · Entrega por SFTP (abre en otra pestaña) · Get started (socios aprobados) (abre en otra pestaña) · Spec del 23-ago-2026, con related_product_id (abre en otra pestaña).
Microsoft Merchant Center
Bing Shopping y Copilot. Agentplace: Misma regla de dominio que Google: con el dominio reclamado, el mismo feed. Cada tienda: Se importa directo desde Google Merchant Center: el feed de cada tienda sirve tal cual.
- Crear la tienda en Microsoft Merchant Center y reclamar el dominio (Bing Webmaster Tools).
- Importar desde Google Merchant Center, o cargar la URL del feed con descarga diaria.
Feed: google-merchant.xml.gz. Para enviarlo: El checkout de Copilot es hoy sólo para Estados Unidos; los listados de producto no lo necesitan. A escala: Importación desde la cuenta de Google de cada merchant: sin un segundo pipeline.
Fuentes: Microsoft Advertising · agentic commerce (abre en otra pestaña).
Perplexity
Shopping en Perplexity. Agentplace: El programa de merchants pide vender y enviar a Estados Unidos (fuentes secundarias). Cada tienda: Igual: se abre cuando sumen Argentina.
- Postular en el Merchant Program cuando habilite tiendas argentinas: el feed de Google ya sirve.
Feed: google-merchant.xml.gz. Para enviarlo: Que Perplexity acepte merchants que no envían a Estados Unidos. A escala: El mismo feed de Google por tienda.
Fuentes: Guía del Merchant Program (secundaria) (abre en otra pestaña) (secundaria).
Meta
Catálogo de Facebook e Instagram. Agentplace: Meta Shops se apagó en Argentina el 10-ago-2023; el catálogo queda para anuncios. Cada tienda: Cada tienda puede usar el feed para anuncios de catálogo desde su Business Manager.
- Opcional, como canal de anuncios: en Commerce Manager, Catálogo → Fuentes de datos → Feed programado con la URL de la tienda.
Feed: google-merchant.xml.gz. Para enviarlo: Shops y el etiquetado de productos siguen apagados en Argentina. A escala: Acceso de partner al catálogo de cada merchant; es un canal de anuncios, no de compras con IA.
Fuentes: Desactivación de Meta Shops (Tiendanube) (abre en otra pestaña).
Catálogos y Shopping. Agentplace: Cuenta de empresa y dominio reclamado; Argentina figura entre los mercados de catálogos (fuente secundaria). Cada tienda: Cada tienda reclama su dominio y carga la URL de su feed.
- Crear la cuenta de empresa, reclamar el dominio y cargar la URL del feed en Catálogos.
Feed: google-merchant.xml.gz. Para enviarlo: Confirmar en la doc oficial que Argentina tiene catálogos habilitados. A escala: Mismo feed de Google por tienda.
Fuentes: Pinterest catalogs (secundaria) (abre en otra pestaña) (secundaria).
Revisadas y sin camino hoy: Google UCP / checkout en AI Mode (Estados Unidos primero, después Canadá y Australia); Amazon Buy for Me (Sólo Estados Unidos, vía Feedonomics, Salsify o CedCommerce); Klarna (Argentina no figura entre sus mercados); Mercado Libre (No recibe catálogos externos); Shopify Catalog (Sólo tiendas Shopify).
Campo por campo
Una sola tabla en el código (lib/feeds/mapping.ts) arma los dos feeds, mide la cobertura y dibuja esta página. Cobertura = filas con un valor válido para esa spec.
Identidad y variantes
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
item_id (obligatorio) | id (obligatorio) | Catálogo | products.id + products.variants.id | Una fila por variante visible: <id de producto>-<id de variante> de Tiendanube. Estable entre syncs y sin : (Google lo usa de separador). | 100 % | 100 % |
group_id (condicional) | item_group_id (condicional) | Catálogo | products.id · products.name | Sólo si el producto tiene más de una variante visible: el id de producto agrupa a sus variantes (distinto del id de cada fila). | 82 % | 82 % |
variant_dict (condicional) | variant_option (opcional) | Catálogo | products.variants.options | Las opciones de Tiendanube tal cual (Color: Hueso, Talle: 36). | 82 % | 82 % |
gtin (opcional) | gtin (recomendado) | Falta | products.variants.barcode (no sincronizado) | Se mandaría tal cual, validando el dígito verificador. Para llenarlo: Tiendanube guarda un código de barras por variante: sumarlo al sync (variants.barcode) y que el merchant lo cargue. Sin GTIN, Google pide mpn + brand. | 0 % | 0 % |
mpn (opcional) | mpn (condicional) | Catálogo | products.variants.sku | El SKU de la variante. Es un MPN legítimo cuando la marca es la propia tienda (fabricante); para un revendedor hace falta el GTIN. | 93 % | 93 % |
Contenido
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
title (obligatorio) | title (obligatorio) | Catálogo | products.name + variants.options | El nombre sin mayúsculas gritadas y, si hay variantes, las opciones de esta (Sábana 2 plazas - Hueso / 36). Cortado en ≤ 150 por palabra. | 100 % | 100 % |
description (obligatorio) | description (obligatorio) | IA | content.products[id].answer | La respuesta corta de la PDP (≤ 150 palabras), escrita por IA sobre la ficha del merchant y validada; texto plano. Si no hay, la descripción de Tiendanube sin HTML. | 100 % | 100 % |
brand (obligatorio) | brand (obligatorio) | Catálogo | products.brand → stores.name | La marca de Tiendanube; si está vacía o es un placeholder (SI, N/A), el nombre de la tienda: casi todas venden marca propia. | 100 % | 100 % |
condition (opcional) | condition (opcional) | Derivado | política | Siempre new: las 14 tiendas venden productos nuevos. | 100 % | 100 % |
product_category (opcional) | google_product_category (opcional) | Derivado | departamento + products.categories + products.name | Reglas por rubro sobre el nombre y las categorías del merchant → un nodo de la taxonomía de Google (2021-09-21). Google recibe el id; OpenAI, la ruta en inglés. | 100 % | 100 % |
| — | product_type (opcional) | Catálogo | products.categories | Las categorías del merchant que describen el producto (sin promociones ni «Todos los productos»), unidas con >. | — | 97 % |
material (opcional) | material (opcional) | IA | content.products[id].attributes (Material, Composición, Tejido) | El atributo que la IA extrajo de la ficha del merchant (nunca inventado: si la ficha no lo dice, no hay atributo). | 71 % | 71 % |
color (opcional) | color (condicional) | Catálogo | products.variants.options[Color] | La opción Color de la variante. | 60 % | 60 % |
size (opcional) | size (condicional) | Catálogo | products.variants.options[Talle/Número/Tamaño/Medida/Plazaje] | La opción de talle o medida de la variante. | 74 % | 74 % |
gender (opcional) | gender (condicional) | Derivado | products.categories + products.name | Sólo en indumentaria: male/female/unisex cuando el merchant lo dice en una categoría o en el nombre (Hombre, Mujer, Unisex); si no, no se manda. | 15 % | 15 % |
| — | adult (condicional) | Derivado | departamento | yes para el rubro Lencería y juguetes (+18). En OpenAI esos productos van con is_eligible_search: false: su política no los admite. | — | 6,3 % |
| — | product_detail (opcional) | IA | content.products[id].attributes | Los atributos que la IA extrajo de la ficha (material, medidas, cuidados…), como Características:Nombre:Valor. | — | 100 % |
| — | question_and_answer (opcional) | IA | content.products[id].faq | Las 3–5 preguntas frecuentes de la PDP, respondidas con la ficha del merchant. | — | 100 % |
dimensions + weight (opcional) | product_weight + product_length… (opcional) | Falta | products.variants.{weight,width,height,depth} (no sincronizado) | Se mandarían como dimensions + weight (OpenAI) y product_length/width/height/weight (Google). Para llenarlo: Tiendanube guarda peso y medidas por variante para cotizar envíos: sumarlos al sync. | 0 % | 0 % |
Links e imágenes
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
url (obligatorio) | link (obligatorio) | Derivado | stores.slug + products.handle | La PDP de Agentplace (agentplace.crossup.ai/<tienda>/<handle>): el dominio que reclamamos nosotros. En el feed de cada tienda (CrossUp) va la PDP del merchant en Tiendanube (canonicalUrl). | 100 % | 100 % |
image_url (obligatorio) | image_link (obligatorio) | Catálogo | products.variants.imageUrl → products.images[0] | La foto de la variante o, si no tiene, la primera del producto, en el CDN de Tiendanube (1024 × 1024). | 93 % | 100 % |
additional_image_urls (opcional) | additional_image_link (opcional) | Catálogo | products.images[1…] | El resto de la galería, sin repetir la principal, hasta 10. | 94 % | 94 % |
Precio y stock
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
price (obligatorio) | price (obligatorio) | Catálogo | products.variants.price · stores.currency | El precio de lista de la variante en la moneda de la tienda, con punto decimal y sin separador de miles: 24999.00 ARS. | 100 % | 100 % |
sale_price (opcional) | sale_price (opcional) | Catálogo | products.variants.promotionalPrice | Sólo si la tienda tiene un precio promocional menor al de lista. | 15 % | 15 % |
availability (obligatorio) | availability (obligatorio) | Catálogo | products.variants.stock | in_stock si la variante tiene unidades o no lleva control de stock (null); out_of_stock si está en 0. | 100 % | 100 % |
Tienda, envíos y devoluciones
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
seller_name + seller_url (obligatorio) | — | Tienda | stores.name · stores.storeUrl | La tienda que vende y despacha, con su sitio. Agentplace no vende: la compra es en la tienda. | 100 % | — |
is_eligible_search (opcional) | — | Derivado | política + departamento | true: queremos que ChatGPT lo muestre. false para +18, que la política de OpenAI no admite. | 100 % | — |
is_eligible_checkout (condicional) | — | Derivado | política | false: la compra, el pago y el envío son de cada tienda (ChatGPT manda al link). Activarlo pide ACP y las políticas de abajo. | 100 % | — |
seller_privacy_policy + seller_tos (condicional) | — | Falta | páginas de la tienda (no sincronizadas) | Las URLs de política de privacidad y términos de cada tienda. Para llenarlo: Sólo hacen falta para checkout dentro de ChatGPT. Tiendanube no las expone por API: se piden en el onboarding. | 0 % | — |
shipping_price (opcional) | shipping (opcional) | Catálogo | products.freeShipping | Si el producto tiene envío gratis: costo 0 a Argentina. Si no, se omite (OpenAI lo lee como desconocido, no gratis). Para llenarlo: Las tarifas de envío de la tienda: Tiendanube las cotiza por código postal en el checkout. Con una tabla por zona del merchant se llena para todos. | 0,7 % | 0,7 % |
accepts_returns + return_deadline_in_days (opcional) | — | Derivado | Ley 24.240, art. 34 | Toda compra a distancia en Argentina se puede revocar en 10 días corridos: es el piso legal. Si la tienda ofrece más, se toma de su política. Para llenarlo: La URL de la política de cambios y devoluciones de cada tienda (return_policy), que se pide en el onboarding. | 100 % | — |
review_count + star_rating (opcional) | product ratings (programa aparte) (opcional) | Falta | — | Cantidad de reseñas y promedio de estrellas del producto. Para llenarlo: Una fuente real de reseñas (la app de reseñas de cada tienda). Nunca se inventan. | 0 % | 0 % |
store_country + target_countries (opcional) | — | Tienda | stores.country | AR. OpenAI pide configurar el mercado: la carga estándar hoy es sólo para Estados Unidos. | 100 % | — |
Relaciones (Storegraph)
| OpenAI | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | |
|---|---|---|---|---|---|---|
related_product_id + relationship_type (retirado) | related_product (opcional) | Storegraph | storegraph/<tienda>.jsonl · aristas (from = este producto) | Las relaciones del Storegraph con su tipo de #139 (complementario → often_bought_with, sustituto → substitute, set y pack → part_of_set), primero las curadas, después las fuertes; hasta 30, apuntando a la variante por defecto del vecino. | 83 % | 83 % |
Del Storegraph a related_product
Cada relación del Storegraph que pasó los umbrales de calidad viaja con su tipo (vocabulario de la decisión #139), primero las curadas y los complementos, hasta 30 por producto, apuntando a la variante por defecto del vecino. El motivo en palabras queda en la página y en el Storegraph: el feed no tiene dónde ponerlo.
| Relación en el Storegraph | Google related_product | schema.org | Qué significa |
|---|---|---|---|
Se combina (complementary) | often_bought_with (accessory si el grafo lo marca) | isRelatedTo | Complementos con evidencia de co-compra o del catálogo |
Kit o rutina (bundle) | part_of_set | hasPart / isRelatedTo | Los otros productos del set |
Pack (unit_to_pack) | part_of_set | isRelatedTo | El mismo producto en más cantidad |
Alternativa (substitute) | substitute | isSimilarTo | Otra opción para la misma necesidad |
Versión superior (premium_substitute) | substitute | isSimilarTo | Un paso más |
Variante (variant) | — (va como item_group_id) | isVariantOf | Mismo producto, otro talle o color |
Hoy: 61.843 relaciones en 10.031 productos (substitute 55.124, often_bought_with 5.435, part_of_set 1.284), 2.021 curadas a mano. OpenAI tuvo los mismos tipos en related_product_id + relationship_type hasta su spec del 28-ago-2026; quedan calculados para cuando vuelvan.
Cobertura por tienda
| Tienda | Productos | Filas | Listas OpenAI | Listas Google | Con relaciones | Feeds de la tienda |
|---|---|---|---|---|---|---|
| Brida | 2.089 | 2.447 | 99 % | 100 % | 95 % | OpenAI · Google |
| BWAY | 263 | 319 | 89 % | 90 % | 71 % | OpenAI · Google |
| Cataleia | 896 | 8.467 | 100 % | 100 % | 85 % | OpenAI · Google |
| Embrujo | 1.192 | 10.992 | 95 % | 100 % | 69 % | OpenAI · Google |
| El Galpón del Hockey | 361 | 745 | 99 % | 100 % | 69 % | OpenAI · Google |
| Ganga Home | 2.060 | 2.193 | 69 % | 100 % | 94 % | OpenAI · Google |
| Gilipollas | 225 | 1.694 | 23 % | 100 % | 92 % | OpenAI · Google |
| Glauco | 232 | 234 | 97 % | 97 % | 54 % | OpenAI · Google |
| Kosmos Cosmética | 124 | 514 | 98 % | 99 % | 90 % | OpenAI · Google |
| Magnolias | 2.429 | 3.590 | 94 % | 100 % | 98 % | OpenAI · Google |
| Napoli | 436 | 2.126 | 100 % | 100 % | 50 % | OpenAI · Google |
| Pato Pampa | 970 | 5.371 | 100 % | 100 % | 83 % | OpenAI · Google |
| Springwall | 233 | 245 | 98 % | 100 % | 97 % | OpenAI · Google |
| Vitalis Navitas | 42 | 73 | 51 % | 100 % | 67 % | OpenAI · Google |
Descargas
| Archivo | Para | Filas | Tamaño |
|---|---|---|---|
| /feeds/openai.jsonl.gz | OpenAI (subida por SFTP) | 39.010 | 4,7 MB |
| /feeds/google-merchant.xml.gz | Google Merchant Center (descarga programada) | 39.010 | 7,8 MB |
| /feeds/openai-sample.jsonl | Muestra legible, 5 por tienda | — | — |
| /feeds/google-merchant-sample.xml | Muestra legible, 5 por tienda | — | — |
| /feeds/summary.json | Cobertura y archivos (JSON) | — | — |
| /feeds/fields.json | La tabla de campos (JSON) | — | — |
El registro de cada producto, campo por campo, está en /feeds/items/<tienda>/<handle>.json y se ve en la vista Agentes de su página (/ai/<tienda>/<handle>) o con ?debug=1.
Qué cambió en las specs
- OpenAI reescribió su feed entre el 28-ago y el 13-sep-2026:
idpasó aitem_id,linkaurl,image_linkaimage_url,enable_searchais_eligible_search; quedan 9 campos obligatorios y se entrega por SFTP (jsonl.gzo parquet), al menos una vez por día. Spec vigente (abre en otra pestaña). related_product_idyrelationship_typesalieron de la spec de OpenAI en esa reescritura: estaban en el snapshot del 23-ago-2026 (abre en otra pestaña) y no en el del 13-sep-2026 (abre en otra pestaña).- Google mantiene
related_product(hasta 30 por producto, los mismos 6 tipos) entre los atributos conversacionales para AI Mode, junto conquestion_and_answer,product_detail,variant_optioneitem_group_title. Spec (abre en otra pestaña). - Quién puede mandar: Google pide que cada
linkcaiga en el dominio reclamado por la cuenta; OpenAI abre el alta a socios aprobados y hoy apunta a Estados Unidos. Detalle y fuentes endocs/product-feed.md.
Cómo lo haría CrossUp para todas sus tiendas
- Un feed por merchant, desde el día uno. El mismo generador con el catálogo de cada tienda, sus links y su Storegraph: lo que hoy son los feeds de las 14 tiendas de Agentplace.
- Vincular su Merchant Center con un clic. Una cuenta avanzada de CrossUp enlaza la cuenta de Google de cada merchant por Merchant API (
accountManagement): el merchant conserva la propiedad y su dominio ya reclamado; CrossUp carga la fuente programada. - Al día con cada cambio. Los webhooks
product/created,product/updatedyproduct/deletedde Tiendanube regeneran la fila y la mandan por API entre las fotos diarias. - ChatGPT como plataforma. CrossUp postula como socio de OpenAI con un archivo por merchant en su raíz SFTP;
seller_nameyseller_urlya identifican a cada tienda. - Lo que sube la calidad: GTIN y medidas desde Tiendanube, tabla de envíos y política de devoluciones en el onboarding, y fotos en JPEG para OpenAI. Cada campo nuevo se ve en la cobertura de esta página.