Shopping para Ecommerce en ChatGPT

Guía para adaptar un catálogo de e-commerce al Product Feed Spec de OpenAI Commerce y habilitar productos en ChatGPT.
Tabla de contenidos

Cómo adaptar tu catálogo de productos al Product Feed Spec de OpenAI Commerce

¿Quieres que tu tienda online esté lista para integrarse con las experiencias de OpenAI Commerce?
En esta guía creada por mi Yago Vázquez (Consultor SEO) aprenderás a transformar tu catálogo en un feed compatible, siguiendo las mejores prácticas de SEO para LLMs.

👉 Para participar oficialmente y habilitar tu tienda en el ecosistema, primero debes inscribirte en el portal de comerciantes de OpenAI. Solo necesitas crear tu cuenta en https://chatgpt.com/es-ES/merchants/, donde podrás registrar tu negocio, aceptar las condiciones de uso y empezar a configurar tu catálogo de productos para que se muestre dentro de las experiencias de ChatGPT y otros servicios.

1. Auditoría inicial de tu catálogo

Antes de exportar cualquier información, realiza una revisión exhaustiva de tu catálogo o ERP para conocer qué campos tienes disponibles y cuáles te faltan. Esto te permitirá anticiparte a errores comunes en la integración.

  • ID único o SKU
  • Nombre del producto
  • Descripción (sin HTML)
  • URL del producto (PDP)
  • Precio y divisa
  • Stock disponible
  • Marca y categoría
  • Imágenes
  • Variantes (color, talla, etc.)
  • Políticas de devolución (si usarás checkout)

👉 Haz especial hincapié en este paso: una auditoría bien hecha evita pérdidas de tiempo en fases posteriores.

2. Mapeo de campos (source → spec)

Para que tu feed funcione correctamente con el estándar de OpenAI, debes mapear tus campos internos al formato requerido. A continuación te muestro los campos obligatorios y los recomendados.

Campos obligatorios:

  • id → SKU o product_id
  • title → Nombre del producto
  • description → Descripción sin HTML
  • link → URL canónica
  • image_link → Imagen principal
  • price → Precio + divisa (ej. 79.99 USD)
  • availability → in_stock / out_of_stock / preorder
  • inventory_quantity → Cantidad en stock
  • enable_search, enable_checkout

Campos recomendados:

  • brand, product_category, weight

👉 Si activas checkout, añade también: seller_name, seller_url, return_policy, return_window.


3. Ejemplo de feed en CSV

enable_search,enable_checkout,id,title,description,link,image_link,price,availability,inventory_quantity,brand,product_category,weight,seller_name,seller_url,return_policy,return_window
true,false,SKU12345,"Men's Trail Running Shoes Black","Waterproof trail shoe with cushioned sole","https://example.com/product/SKU12345","https://example.com/images/skሴ5.jpg","79.99 USD",in_stock,25,OpenAI,"Apparel & Accessories > Shoes","1.5 lb","Example Store","https://example.com/store","https://example.com/returns",30

4. Ejemplo de feed en JSON

{
  "enable_search": "true",
  "enable_checkout": "false",
  "id": "SKU12345",
  "title": "Men's Trail Running Shoes Black",
  "description": "Waterproof trail shoe with cushioned sole",
  "link": "https://example.com/product/SKU12345",
  "image_link": "https://example.com/images/skሴ5.jpg",
  "price": "79.99 USD",
  "availability": "in_stock",
  "inventory_quantity": 25,
  "brand": "OpenAI",
  "product_category": "Apparel & Accessories > Shoes",
  "weight": "1.5 lb"
}

5. Reglas de validación esenciales

  • sale_price debe ser menor o igual que price y requiere sale_price_effective_date.
  • Si availability = preorder, debe definirse availability_date en el futuro.
  • Las variantes deben compartir item_group_id.
  • Todas las URLs deben devolver un código HTTP 200.
  • El feed puede actualizarse cada 15 minutos para mantener la frescura del catálogo.

Siguiendo estas reglas aseguras que el sistema rechace lo mínimo posible y tu feed pase las validaciones de OpenAI.

6. Script de transformación en Python

Ejemplo para transformar un CSV en un feed válido (CSV + JSONL):

import csv, json, html, re

with open("catalogo.csv", newline="", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    feed = []
    for row in reader:
        item = {
            "enable_search": "true",
            "enable_checkout": "false",
            "id": row["sku"],
            "title": row["title"],
            "description": html.unescape(re.sub("<[^>]*>", "", row["description"])),
            "link": row["url"],
            "image_link": row["image"],
            "price": f"{row['price']} USD",
            "availability": "in_stock" if int(row["stock"]) > 0 else "out_of_stock",
            "inventory_quantity": int(row["stock"]),
            "brand": row.get("brand", ""),
            "product_category": row.get("category", ""),
            "weight": row.get("weight", "0.5 kg")
        }
        feed.append(item)

with open("openai_feed.jsonl", "w", encoding="utf-8") as out:
    for item in feed:
        out.write(json.dumps(item) + "\n")

7. Exportar el feed desde PrestaShop

En PrestaShop, los datos del catálogo se encuentran distribuidos en varias tablas (productos, descripciones, stock, imágenes, marcas). Para generar el feed compatible con OpenAI Commerce puedes usar una consulta SQL base y luego transformarla.

Mapeo de campos clave

  • id → ps_product.id_product
  • title → ps_product_lang.name
  • description → ps_product_lang.description
  • link → ps_product_lang.link_rewrite
  • image_link → ps_image.id_image (combinado con URL base)
  • availability → ps_stock_available.quantity
  • brand → ps_manufacturer.name

Ejemplo en SQL

sql
SELECT p.id_product AS id,
pl.name AS title,
pl.description AS description,
CONCAT('https://tu-dominio.com/', pl.link_rewrite, '.html') AS link,
CONCAT('https://tu-dominio.com/img/p/', i.id_image, '-large_default.jpg') AS image_link,
FORMAT(p.price, 2) AS price_raw,
IF(s.quantity > 0, 'in_stock', 'out_of_stock') AS availability,
s.quantity AS inventory_quantity,
m.name AS brand
FROM ps_product p
JOIN ps_product_lang pl ON p.id_product=pl.id_product AND pl.id_lang=1
LEFT JOIN ps_stock_available s ON s.id_product=p.id_product
LEFT JOIN ps_manufacturer m ON m.id_manufacturer=p.id_manufacturer
LEFT JOIN ps_image i ON i.id_product=p.id_product AND i.cover=1
WHERE p.active=1;

8. Exportar el feed desde Magento 2

En Magento 2 (Adobe Commerce), lo más recomendable es usar el stack nativo de Magento en lugar de SQL crudo, ya que trabaja con un modelo EAV.

Mapeo de campos clave

  • id → SKU
  • title → name
  • description → description
  • link → getProductUrl()
  • image_link → media/catalog/product + image
  • availability → stock (MSI)
  • brand → atributo personalizado
  • product_category → nombres de categorías

Ejemplo en PHP

use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State'); 
$state->setAreaCode('frontend');

$productCollection = $obj->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory')->create();
$productCollection->addAttributeToSelect(['sku','name','description','price','brand','weight','image']);

$fp = fopen(__DIR__.'/openai_feed.csv','w');
fputcsv($fp,['enable_search','enable_checkout','id','title','description','link','image_link','price','availability','inventory_quantity','brand','product_category','weight']);

foreach($productCollection as $p){
  $sku = $p->getSku();
  $name = $p->getName();
  $desc = strip_tags($p->getDescription());
  $url = $p->getProductUrl();
  $img = $baseUrl.'media/catalog/product'.$p->getImage();
  $price = number_format((float)$p->getPrice(),2,'.','').' EUR';
  ...
}

9. Validación final del feed

Independientemente del CMS que uses, antes de entregar el feed conviene validarlo con un script en Python:

import csv, sys
req = {'id','title','description','link','image_link','price','availability','inventory_quantity'}
with open('openai_feed.csv', newline='', encoding='utf-8') as f:
  r = csv.DictReader(f)
  for i,row in enumerate(r, start=2):
    missing = [k for k in req if not row.get(k)]
    if missing:
      print(f'Fila {i}: faltan campos {missing}')
      sys.exit(1)
print('Feed OK')

10. Buenas prácticas para tu feed

  • Usa IDs estables (evita cambiar SKUs una vez lanzado).
  • Limpia las descripciones de HTML y elimina tags innecesarios.
  • Incluye divisa en el precio y unidades en medidas.
  • Automatiza la generación/refresco del feed cada ~15 min para máxima frescura.
  • Prueba primero con un feed de muestra reducido antes de exportar el catálogo completo.

Estas buenas prácticas mejoran la calidad, fiabilidad y velocidad de integración.

Conclusiones finales

Adaptar tu catálogo al Product Feed Spec de OpenAI Commerce no es complicado si sigues un flujo claro:

Auditar → Mapear → Normalizar → Validar → Exportar → Refrescar.

Siguiendo estos pasos, tu tienda estará lista para integrarse en el ecosistema de IA de OpenAI y tus productos podrán aparecer correctamente en experiencias de ChatGPT y otros servicios.

Da el siguiente paso con OpenAI Commerce

¿Estás listo para que tus productos se muestren en las experiencias de ChatGPT y otros servicios de OpenAI? El primer paso es inscribirte como comerciante y registrar tu tienda en el portal oficial de comerciantes.

No pierdas la oportunidad de adelantarte: configura hoy tu catálogo y empieza a vender directamente en el ecosistema de IA.

No pierdas la oportunidad de adelantarte: configura tu catálogo hoy y empieza a vender directamente en el ecosistema de IA.

Otros Artículos Destacados

Artículos seleccionados para mejorar tu Negocio o Proyecto con nuestras estrategias de Posicionamiento SEO

¿Hablamos?

Si quieres llevar tu negocio al siguiente nivel déjame saber lo que te gustaría mejorar y nos ponemos manos a la obra.

Telefono

¿Hablamos?

Si quieres llevar tu negocio al siguiente nivel déjame saber lo que te gustaría mejorar, prometo contestarte en menos de 24 horas.

Telefono