--- 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: "https://agentplace.crossup.ai/feeds" updated: "2026-10-02" --- # Feeds de producto para ChatGPT y Google - **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](https://agentplace.crossup.ai/feeds/openai.jsonl.gz) (JSONL) y [Google](https://agentplace.crossup.ai/feeds/google-merchant.xml.gz) (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](#plataforma-google) | 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](#plataforma-openai) | 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](#plataforma-microsoft) | 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](#plataforma-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](#plataforma-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. | | [Pinterest](#plataforma-pinterest) | 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. 1. Crear la cuenta de Merchant Center y elegir Argentina y ARS (soportados en listados gratuitos). 2. Verificar y reclamar `agentplace.crossup.ai`: cada `link` tiene que caer en el dominio reclamado. 3. Productos → Fuentes de datos → Agregar archivo → Descarga programada, diaria, con la URL del feed. 4. Revisar los diagnósticos de la primera descarga antes de activar listados gratuitos. Feed: [google-merchant.xml.gz](https://agentplace.crossup.ai/feeds/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](https://support.google.com/merchants/answer/7052112) · [related_product](https://support.google.com/merchants/answer/17085213) · [Requisitos de la página de destino](https://support.google.com/merchants/answer/4752265) · [Países y monedas (Argentina, ARS)](https://support.google.com/merchants/answer/160637) · [Archivos comprimidos y 4 GB](https://support.google.com/merchants/answer/160567) · [Merchant API: sub-cuentas](https://developers.google.com/merchant/api/guides/accounts/sub-accounts). ### 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. 1. Postular a CrossUp en chatgpt.com/merchants como plataforma con catálogos argentinos. 2. Con la aprobación llegan las credenciales SFTP: subir `openai.jsonl.gz` y validar primero con ~100 ítems. 3. Programar la subida diaria (la foto completa reemplaza a la anterior; un producto ausente queda 14 días). Feed: [openai.jsonl.gz](https://agentplace.crossup.ai/feeds/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)](https://developers.openai.com/commerce/specs/file-upload/products) · [Entrega por SFTP](https://developers.openai.com/commerce/specs/file-upload/overview) · [Get started (socios aprobados)](https://developers.openai.com/commerce/guides/get-started) · [Spec del 23-ago-2026, con related_product_id](http://web.archive.org/web/20260823035707/https://developers.openai.com/commerce/specs/file-upload/products). ### 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. 1. Crear la tienda en Microsoft Merchant Center y reclamar el dominio (Bing Webmaster Tools). 2. Importar desde Google Merchant Center, o cargar la URL del feed con descarga diaria. Feed: [google-merchant.xml.gz](https://agentplace.crossup.ai/feeds/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](https://about.ads.microsoft.com/en/solutions/technology/agentic-commerce). ### 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. 1. Postular en el Merchant Program cuando habilite tiendas argentinas: el feed de Google ya sirve. Feed: [google-merchant.xml.gz](https://agentplace.crossup.ai/feeds/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)](https://alhena.ai/blog/perplexity-shopping-merchants-setup-guide/) (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. 1. 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](https://agentplace.crossup.ai/feeds/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)](https://ayuda.tiendanube.com/es_AR/facebook-e-instagram-shopping/acerca-de-la-desactivacion-de-meta-shops). ### Pinterest 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. 1. Crear la cuenta de empresa, reclamar el dominio y cargar la URL del feed en Catálogos. Feed: [google-merchant.xml.gz](https://agentplace.crossup.ai/feeds/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)](https://www.pricefy.io/feed-channels/pinterest) (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 | Google | 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: `-` 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 | Google | 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 | Google | 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//`): 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 | Google | 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 | Google | 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 | Google | Fuente | De dónde sale | Cómo se transforma | Cobertura OpenAI | Cobertura Google | | --- | --- | --- | --- | --- | --- | --- | | `related_product_id + relationship_type` (retirado) | `related_product` (opcional) | Storegraph | `storegraph/.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](https://agentplace.crossup.ai/grafo) 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](https://agentplace.crossup.ai/feeds/stores/brida/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/brida/google-merchant.xml.gz) | | BWAY | 263 | 319 | 89 % | 90 % | 71 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/bway/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/bway/google-merchant.xml.gz) | | Cataleia | 896 | 8.467 | 100 % | 100 % | 85 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/cataleia/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/cataleia/google-merchant.xml.gz) | | Embrujo | 1.192 | 10.992 | 95 % | 100 % | 69 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/embrujo/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/embrujo/google-merchant.xml.gz) | | El Galpón del Hockey | 361 | 745 | 99 % | 100 % | 69 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/galpon-hockey/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/galpon-hockey/google-merchant.xml.gz) | | Ganga Home | 2.060 | 2.193 | 69 % | 100 % | 94 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/ganga-home/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/ganga-home/google-merchant.xml.gz) | | Gilipollas | 225 | 1.694 | 23 % | 100 % | 92 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/gilipollas/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/gilipollas/google-merchant.xml.gz) | | Glauco | 232 | 234 | 97 % | 97 % | 54 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/glauco-vivero/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/glauco-vivero/google-merchant.xml.gz) | | Kosmos Cosmética | 124 | 514 | 98 % | 99 % | 90 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/kosmos/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/kosmos/google-merchant.xml.gz) | | Magnolias | 2.429 | 3.590 | 94 % | 100 % | 98 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/magnolias/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/magnolias/google-merchant.xml.gz) | | Napoli | 436 | 2.126 | 100 % | 100 % | 50 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/napoli/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/napoli/google-merchant.xml.gz) | | Pato Pampa | 970 | 5.371 | 100 % | 100 % | 83 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/pato-pampa/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/pato-pampa/google-merchant.xml.gz) | | Springwall | 233 | 245 | 98 % | 100 % | 97 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/springwall/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/springwall/google-merchant.xml.gz) | | Vitalis Navitas | 42 | 73 | 51 % | 100 % | 67 % | [OpenAI](https://agentplace.crossup.ai/feeds/stores/vitalis-navitas/openai.jsonl.gz) · [Google](https://agentplace.crossup.ai/feeds/stores/vitalis-navitas/google-merchant.xml.gz) | ## Descargas | Archivo | Para | Filas | Tamaño | | --- | --- | --- | --- | | [/feeds/openai.jsonl.gz](https://agentplace.crossup.ai/feeds/openai.jsonl.gz) | OpenAI (subida por SFTP) | 39.010 | 4,7 MB | | [/feeds/google-merchant.xml.gz](https://agentplace.crossup.ai/feeds/google-merchant.xml.gz) | Google Merchant Center (descarga programada) | 39.010 | 7,8 MB | | [/feeds/openai-sample.jsonl](https://agentplace.crossup.ai/feeds/openai-sample.jsonl) | Muestra legible, 5 por tienda | — | — | | [/feeds/google-merchant-sample.xml](https://agentplace.crossup.ai/feeds/google-merchant-sample.xml) | Muestra legible, 5 por tienda | — | — | | [/feeds/summary.json](https://agentplace.crossup.ai/feeds/summary.json) | Cobertura y archivos (JSON) | — | — | | [/feeds/fields.json](https://agentplace.crossup.ai/feeds/fields.json) | La tabla de campos (JSON) | — | — | El registro de cada producto, campo por campo, está en `/feeds/items//.json` y se ve en la vista Agentes de su página (`/ai//`) o con `?debug=1`. ## Qué cambió en las specs - **OpenAI reescribió su feed entre el 28-ago y el 13-sep-2026:** `id` pasó a `item_id`, `link` a `url`, `image_link` a `image_url`, `enable_search` a `is_eligible_search`; quedan 9 campos obligatorios y se entrega por SFTP (`jsonl.gz` o parquet), al menos una vez por día. [Spec vigente](https://developers.openai.com/commerce/specs/file-upload/products). - **`related_product_id` y `relationship_type` salieron de la spec de OpenAI** en esa reescritura: estaban en el snapshot del [23-ago-2026](http://web.archive.org/web/20260823035707/https://developers.openai.com/commerce/specs/file-upload/products) y no en el del [13-sep-2026](http://web.archive.org/web/20260913070954/https://developers.openai.com/commerce/specs/file-upload/products). - **Google mantiene `related_product`** (hasta 30 por producto, los mismos 6 tipos) entre los atributos conversacionales para AI Mode, junto con `question_and_answer`, `product_detail`, `variant_option` e `item_group_title`. [Spec](https://support.google.com/merchants/answer/17085213). - **Quién puede mandar:** Google pide que cada `link` caiga en el dominio reclamado por la cuenta; OpenAI abre el alta a socios aprobados y hoy apunta a Estados Unidos. Detalle y fuentes en `docs/product-feed.md`. ## Cómo lo haría CrossUp para todas sus tiendas 1. **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. 2. **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. 3. **Al día con cada cambio.** Los webhooks `product/created`, `product/updated` y `product/deleted` de Tiendanube regeneran la fila y la mandan por API entre las fotos diarias. 4. **ChatGPT como plataforma.** CrossUp postula como socio de OpenAI con un archivo por merchant en su raíz SFTP; `seller_name` y `seller_url` ya identifican a cada tienda. 5. **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.