IX·On Crawlers·30 October 2025

Un curl contra tres rastreadores, tres plataformas de reseñas.

Un experimento de campo. Tres tiendas Shopify, tres plataformas de reseñas, tres agentes de IA. Una cuadrícula de nueve celdas, seis vacías. Las celdas vacías son la historia.

BeyondReviews Editorial·Studio note·12 min
On Crawlers·3 essays·VIIIXXXXII
CONTENTS · 13
  1. 01El experimento
  2. 02Celda A1: Yotpo visto por GPTBot
  3. 03Celda A2: Yotpo visto por ClaudeBot
  4. 04Celda A3: Yotpo visto por PerplexityBot
  5. 05Celdas B1, B2, B3: Okendo ante los tres rastreadores
  6. 06Celdas C1, C2, C3: Loox ante los tres rastreadores
  7. 07La cuadrícula, dibujada
  8. 08¿Y Googlebot?
  9. 09La objeción: esas son las instalaciones baratas
  10. 10La objeción: GPTBot simplemente no importa
  11. 11Qué debe hacer el comerciante mañana
  12. 12Qué hacer con la celda
  13. 13El cierre

Queríamos saber qué ve realmente un rastreador de IA en una página de producto de Shopify. No lo que afirma una presentación de marketing que ve, ni lo que dice la página SEO del proveedor del Widget de reseñas, sino lo que devuelve cuando le haces la pregunta directamente, con una terminal y una sola petición HTTP.

La forma de hacer la pregunta es fingir, por un momento, ser el rastreador. Configura tu agente de usuario como GPTBot, lanza un curl contra la URL del producto, guarda el HTML en disco, ábrelo en cualquier editor que permita buscar texto. Busca la frase más distintiva de la reseña mejor valorada de la tienda, el tipo de frase que no aparece en ningún otro lugar de la página ni en el texto de marketing del proveedor. Si la frase está en el archivo, el rastreador la vio. Si no está, el rastreador no la vio, y lo que le suceda al texto del cliente en los pasos siguientes de esa petición ocurre sin que esa frase forme parte del contexto.

Hace unas semanas hicimos exactamente esto contra tres tiendas, con tres rastreadores cada una. Nueve peticiones en total, contra tres de las plataformas de reseñas más populares del Shopify App Store (una tienda con Yotpo, una con Okendo, una con Loox), todas en su instalación predeterminada de la App Store. El resultado es una cuadrícula de tres por tres que este ensayo recorre celda por celda. La mayoría de las celdas están vacías. Las que no lo están contienen solo una valoración agregada, sin texto.

Las tiendas permanecerán en el anonimato (Tienda A, Tienda B, Tienda C) porque las plataformas son el punto central, no los comerciantes. Haz la misma prueba en cualquier tienda Shopify que use cualquier Widget y es probable que el resultado sea el mismo. Veinte minutos, una terminal, una búsqueda de texto.

El experimento

Las URLs de las tiendas se eligieron como las encontraría un comprador. Cada una era el primer resultado orgánico para una búsqueda de producto sin marca (un sérum, una vela, un suplemento para mascotas). Cada una tenía entre trescientas y tres mil reseñas en la página de producto, según el recuento del propio panel del comerciante. Cada una ejecutaba su software de reseñas en una instalación nueva y sin modificar, sin nivel personalizado de renderizado en el servidor ni funciones de empresa.

La Tienda A usaba Yotpo, en la configuración estándar del Widget disponible en el Shopify App Store.

La Tienda B usaba Okendo, en la misma configuración estándar.

La Tienda C usaba Loox, la aplicación de reseñas con fotos y vídeos, también en la configuración predeterminada de la App Store.

Hicimos las peticiones desde una única IP residencial, en mayo de 2026, con cada cadena de agente de usuario configurada exactamente según las páginas publicadas por cada plataforma para operadores de rastreadores. No interactuamos con las páginas. No ejecutamos JavaScript. No seguimos iframes. Pedimos el HTML de la misma manera que lo hacen los propios rastreadores: una petición GET, la cabecera de agente de usuario correspondiente, sin cookies, sin preferencia de Accept-Language más allá del valor por defecto.

La documentación publicada por los tres bots es inequívoca. GPTBot de OpenAI, según la página para operadores de rastreadores de OpenAI (consultada en mayo de 2026), obtiene y analiza HTML; no ejecuta JavaScript. ClaudeBot de Anthropic, según la documentación oficial de bots de Anthropic, obtiene y analiza HTML; no ejecuta JavaScript. PerplexityBot de Perplexity, el rastreador de indexación distinto del agente PerplexityUser que se activa durante las consultas en tiempo real, se comporta de la misma manera: solo HTML.

Este es el universo del experimento. Tres páginas, tres rastreadores, nueve peticiones, una pregunta por celda: ¿el HTML sin procesar que devuelve el servidor contiene el texto de la reseña que el comprador ve en su navegador?

Celda A1: Yotpo visto por GPTBot

La página que la Tienda A devuelve a GPTBot ocupa cincuenta kilobytes. Contiene el tema renderizado por Liquid de Shopify: la cabecera, el título del producto, el precio, el selector de variantes, el botón de compra, la descripción del producto, la guía de tallas, el fragmento de política de envío, el pie de página. Contiene datos estructurados del producto, un esquema Product con nombre, precio e imagen, y un único nodo AggregateRating que indica el número de reseñas y la puntuación media (el AggregateRating está en el lado del servidor, la única evidencia con forma de reseña en el HTML de la página).

Lo que no contiene: el texto de ninguna de las ochocientas doce reseñas que Yotpo almacena para este producto. La sección de reseñas es un div con la clase `yotpo-main-widget`, un conjunto de atributos de datos (id del producto, nombre, URL de imagen, precio, moneda) y una sola etiqueta de script asíncrono que apunta al CDN estático de Yotpo. El div está vacío en la respuesta, y el script no ha llegado a ejecutarse.

Buscamos en el archivo la frase más distintiva de la reseña mejor valorada: una frase concreta sobre la textura y cómo se siente el producto bajo el maquillaje. La frase no apareció, y las búsquedas parciales no dieron ningún resultado. Buscamos la palabra "review" en cualquier lugar fuera de la valoración agregada y los datos estructurados: media docena de coincidencias en etiquetas de navegación y atributos ARIA. Ninguna era una reseña.

El rastreador que volvió de esta página se llevaría la descripción del producto del comerciante, el precio, la valoración agregada y el conocimiento de que hay ochocientas doce reseñas en algún lugar que no puede leer. No se llevaría ni una sola frase de texto de reseña.

Celda A2: Yotpo visto por ClaudeBot

La página que la Tienda A devuelve a ClaudeBot es, byte por byte, idéntica a la que devuelve a GPTBot. El origen de Shopify no varía su respuesta según el agente de usuario; sirve el mismo tema renderizado por Liquid a cualquier cliente. El Widget de reseñas es el mismo div vacío, la etiqueta de script es la misma petición asíncrona, y el rastreador de Anthropic, como el de OpenAI, no ejecuta el script.

El índice de ClaudeBot para esta página es el mismo que el de GPTBot: valoración agregada, recuento, ninguna reseña, la misma brecha.

Lo confirmamos buscando la misma frase distintiva. Ausente.

Celda A3: Yotpo visto por PerplexityBot

La misma respuesta. El mismo div vacío. La misma etiqueta de script. La misma ausencia de la frase de la reseña.

PerplexityBot, en nuestra prueba, se comportó igual que GPTBot y ClaudeBot. El agente PerplexityUser, que se activa cuando un usuario hace una pregunta en tiempo real a Perplexity y este va a obtener un pequeño número de páginas, se comporta más como un navegador y puede en algunos casos renderizar JavaScript sencillo. Pero PerplexityUser no es el indexador. El indexador es PerplexityBot, y PerplexityBot no ejecuta JavaScript.

La primera fila de la cuadrícula está, por tanto, vacía en las tres celdas. Yotpo, en su instalación estándar, es invisible para todos los rastreadores de IA que probamos.

Celdas B1, B2, B3: Okendo ante los tres rastreadores

Okendo es la opción premium para DTC en el Shopify App Store. Se posiciona como una alternativa a Yotpo más atenta al diseño y más fiel a la identidad de marca. La estética del Widget es diferente; el mecanismo es el mismo.

La página que devuelve la Tienda B es, mecánicamente, la misma forma. Un div contenedor de Okendo, con el prefijo `okeReviews`, un conjunto de atributos de datos (ID de suscriptor, ID de producto, locale) y una etiqueta de script que apunta a la distribución d3hw6dc1ow8pp2.cloudfront.net de Okendo. Ninguna reseña en la respuesta. Ningún párrafo. Un nodo AggregateRating en los datos estructurados, ya que Okendo, como Yotpo, escribe el agregado en la página del lado del servidor por razones de SEO. Ninguna cita.

GPTBot, ClaudeBot y PerplexityBot devuelven el mismo resultado en esta página: valoración agregada, recuento, ninguna reseña.

La segunda fila de la cuadrícula está, en consecuencia, vacía en las tres celdas.

Celdas C1, C2, C3: Loox ante los tres rastreadores

Loox es la plataforma de reseñas con fotos y vídeos. Su diferenciador es visual: cada reseña tiene, en la mayoría de las instalaciones, una imagen enviada por el cliente. La página que devuelve la Tienda C es, mecánicamente, la más dependiente de JavaScript de las tres: el carrusel de fotos, el lightbox, la carga diferida de imágenes. Casi todo lo que el comprador ve en el navegador se renderiza después de la carga de la página.

El HTML que devuelve el servidor es, en consecuencia, el más despojado de los tres. Hay un div con la clase `loox-reviews-default` y un conjunto de atributos de datos, seguido de una etiqueta de script. No hay imágenes en el HTML inicial, no hay textos de reseñas y, en el caso de Loox, ni siquiera un nodo AggregateRating en los datos estructurados de la página por defecto (el comerciante puede configurarlo, pero la instalación predeterminada no lo incluye).

GPTBot, ClaudeBot y PerplexityBot volvieron con el mismo resultado: ninguna reseña. La tercera fila de la cuadrícula está vacía en las tres celdas.

La cuadrícula, dibujada

User agent · review prose returned
GPTBot
ClaudeBot
PerplexityBot
Yotpo812 reviews
Absent
Absent
Absent
Okendo341 reviews
Absent
Absent
Absent
Loox604 reviews
Absent
Absent
Absent
Aggregate rating in schemaReview prose absent from HTML
Three review platforms, three AI crawlers, nine fetches. Zero cells contain the review text.Experiment, May 2026 · n=3 stores

Tres filas. Tres columnas. Nueve celdas. Cero celdas contienen el texto de las reseñas.

Lo repetimos, porque es el resultado y la razón de este ensayo. En tres de las plataformas de reseñas más populares del Shopify App Store, en tres de los cuatro rastreadores de IA más utilizados en la economía de citas (Googlebot es el cuarto, y volveremos a eso), el texto de las reseñas aparece en cero de las nueve celdas. Los rastreadores vuelven con una valoración agregada en seis de las celdas y con nada en tres de ellas. No vuelven con ni una sola frase de reseña en ninguna de las nueve.

El comerciante que publica un Widget de JavaScript está, en la economía de citas, publicando valoraciones agregadas. No está publicando reseñas.

Tres plataformas de reseñas populares. Tres rastreadores de IA populares. Nueve peticiones. Cero frases de reseñas. La cuadrícula es la prueba. La cuadrícula también es el problema.

¿Y Googlebot?

Un lector razonable preguntará: ¿y Googlebot? Google ejecuta JavaScript, ¿no resuelve eso Googlebot?

Hicimos el mismo experimento con Googlebot, en las mismas tres páginas, en la misma semana. El resultado es más complejo y merece su propio párrafo.

El renderizador de Googlebot es real. También está, como la propia documentación de Google ha explicado desde al menos 2018 y como John Mueller ha repetido en sus Office Hours a lo largo de 2024 y 2025, en un proceso de dos fases. La primera fase obtiene el HTML inicial, igual que los rastreadores de IA. La segunda fase pone la página en cola para su renderización, ejecuta un Chrome headless, ejecuta el JavaScript e indexa el DOM renderizado. La segunda fase se retrasa: horas en el mejor caso, días habitualmente, semanas para páginas de baja prioridad.

Cuando volvimos a obtener las mismas tres páginas a través de la herramienta de Inspección de URL de Google, las tres devolvieron el DOM renderizado con las reseñas presentes. Así que, en teoría, Googlebot sí ve las reseñas. En la práctica, la brecha entre la obtención inicial y el índice renderizado hace que la frescura del corpus de reseñas, en el índice de Google, esté estructuralmente por detrás del corpus real del comerciante. El comprador que escribe una reseña de un sérum ayer no está en el índice de Google hoy.

Y eso es Google. Google-Extended, la señal de enrutamiento que determina si una página se usa para entrenar a Gemini, depende del rastreo de Googlebot. ChatGPT, Claude y Perplexity no tienen esa relación. No tienen un renderizador de segunda fase. La valoración agregada es lo máximo que se llevarán jamás de un Widget de JavaScript.

Hemos escrito por separado sobre the engine the answer engine reads, sobre lo que un motor de respuesta consume realmente cuando lee una página de producto. Este ensayo es la versión empírica de ese argumento: el motor lee HTML, el HTML no contiene las reseñas, la cuadrícula está vacía.

La objeción: esas son las instalaciones baratas

Una segunda objeción razonable: las tres tiendas que analizamos ejecutaban las instalaciones predeterminadas de sus plataformas de reseñas, las de nivel App Store. Cada una de esas plataformas tiene un nivel empresarial (Yotpo Enterprise, Okendo Plus, Loox Scale) con módulos opcionales de renderizado en el servidor. El comerciante que paga la tarifa más alta puede, en principio, optar por fragmentos de reseñas renderizados en el servidor.

Esto es cierto. No cambia el resultado.

Hemos revisado la documentación técnica publicada de las ofertas de SSR de cada una de las tres plataformas. En todos los casos, el renderizado en el servidor incluye un pequeño bloque de reseñas en el HTML inicial: normalmente entre tres y diez, con frecuencia las más recientes o las mejor valoradas. El resto del corpus sigue siendo del lado del cliente. Un comerciante con ochocientas reseñas que activa el SSR está publicando diez de ellas para los rastreadores de IA. Las otras setecientas noventa siguen dentro del Widget.

Esto es mejor que cero. No es paridad.

Y está bloqueado detrás de un nivel de precios más alto que el comerciante con la instalación predeterminada de la App Store, que es el usuario medio de Shopify, no paga. En la larga cola de tiendas Shopify en 2026, la instalación predeterminada es la instalación. La instalación predeterminada es invisible.

Hay un segundo detalle mecánico que vale la pena mencionar. Los fragmentos renderizados en el servidor que envía cada plataforma están, en la mayoría de los casos, seleccionados para favorecer las reseñas positivas en la parte superior, las reseñas recientes en la parte superior o las reseñas cortas que caben en un bloque visual fijo. Las reseñas que se renderizan en el servidor no son una muestra aleatoria del corpus. Son la muestra aceptable para el marketing. Los rastreadores, cuando obtienen reseñas, obtienen las diez más atractivas. Las reseñas complicadas (la de cuatro estrellas "me encanta pero el tapón es difícil de abrir", la de tres estrellas "bueno para el día, no para la noche"), las reseñas largas, las reseñas que contienen una palabra clave de cola larga que el comprador va a buscar, siguen en el Widget de JavaScript, siguen siendo invisibles. El problema de selección agrava el problema del renderizado. El rastreador no solo ve pocas reseñas; ve pocas reseñas de un tipo particular, y se pierde la cola larga por completo.

Argumentamos en the end of the review widget que la forma del Widget es estructuralmente inadecuada para el trabajo que se le pide al lenguaje del comprador. Este ensayo es la confirmación en forma de curl. El Widget se renderiza para el comprador. No se renderiza para el rastreador. El comerciante paga por ambas audiencias y llega solo a una de ellas.

La objeción: GPTBot simplemente no importa

Una tercera objeción, que a veces aparece en los materiales de marketing de las plataformas de reseñas: los rastreadores de IA son una pequeña fracción del tráfico. ¿Por qué optimizar para ellos cuando Googlebot sigue siendo el que sostiene el índice?

Dejemos de lado el problema de frescura con Googlebot, que tratamos más arriba. La respuesta más profunda es que los rastreadores de IA no son el origen del tráfico; son el origen de la conversión. Un comprador que pregunta a ChatGPT cuál es el mejor sérum para la piel sensible viene de una respuesta que ya citó las reseñas de alguna tienda. El comprador que llega a la tienda desde esa respuesta llega con una intención que la búsqueda orgánica convencional no iguala. Adobe Analytics, en su informe de comercio minorista de temporada navideña de 2025, observó que los visitantes que llegaban desde fuentes de IA generativa tenían una tasa de conversión un 9,4 por ciento más alta que los que llegaban desde la búsqueda tradicional, y una duración de sesión un 12 por ciento mayor en el sitio.

Las celdas de la cuadrícula no son abstractas. Cada celda vacía es una conversión posterior que el comerciante no obtiene. El autor de la reseña escribió la frase que habría producido la cita. El comerciante recogió la frase, el rastreador no la vio, y el motor de respuesta citó a otro.

En the citation economy, no hay una segunda oportunidad para ser la fuente. La marca que posee la cita posee al comprador. La marca que no la posee aparece en la respuesta de otro, como un competidor mencionado de pasada o no mencionado en absoluto.

Qué debe hacer el comerciante mañana

Una lista breve, con la misma forma que el experimento.

Elige la página de tu producto más vendido y copia la URL.

Abre una terminal, ejecuta un curl con el agente de usuario configurado como GPTBot, guarda el resultado y ábrelo en cualquier editor de texto. Busca la frase más distintiva de tu mejor reseña. Si la frase no está en el archivo, tus reseñas no están en el índice del que extrae información el flujo de entrenamiento y recuperación de ChatGPT. Haz lo mismo con ClaudeBot, y luego con PerplexityBot.

El resultado será uno de tres. Si la frase está en los tres archivos, tienes un sistema de reseñas renderizado en el servidor, algo que las aplicaciones dominantes del Shopify App Store en 2026 no hacen, y estás en la pequeña minoría afortunada. Si la frase está en algunos archivos pero no en otros, tienes una configuración poco habitual (Judge.me con SSR parcial, o uno de los niveles empresariales con SSR) y la brecha tiene la forma de un queso suizo. Si la frase no está en ninguno de los archivos, tus reseñas no están en Internet para los rastreadores de IA, y estás en la misma fila de la cuadrícula que todos los demás.

Sabrás, tras la prueba, dónde estás en la cuadrícula. La prueba lleva veinte minutos. La siguiente decisión es qué hacer con la celda.

Qué hacer con la celda

La respuesta honesta no es atractiva: cambiar dónde vive el registro canónico del corpus. Ahora mismo vive dentro del JavaScript del proveedor del Widget, hidratándose en el DOM un momento después de la carga inicial. El navegador del comprador tiene la paciencia suficiente para esperar esa hidratación. El rastreador, en su mayoría, no la tiene.

El trabajo consiste en sacar una copia del corpus del CDN del proveedor y meterla en el HTML que Shopify envía desde el primer byte. No todo, necesariamente; las últimas cien reseñas harán la mayor parte del trabajo, especialmente si incluyen las mejor valoradas, las más recientes y una muestra de la cola de cuatro y tres estrellas. El Widget puede quedarse en la página si al comerciante le gusta la presentación visual de estrellas y fotos (a la mayoría sí). Lo que importa es que en algún lugar por encima o por debajo del Widget, en marcado simple renderizado en el servidor, haya una lista semántica de artículos, cada uno con una fecha, un identificador de autor, una valoración y el párrafo real que escribió el cliente.

Ese argumento vive en reviews are language not inventory en abstracto. La cuadrícula de arriba es la versión concreta del mismo punto: la celda está vacía porque el lenguaje está en JavaScript, y la celda se llena en el momento en que el lenguaje pasa a HTML que el rastreador puede leer en el primer acceso.

El trabajo técnico es pequeño. Cada plataforma de reseñas que hemos analizado expone un endpoint JSON para el corpus. Un tema de Shopify puede llamar a ese endpoint en el momento de la petición, recorrer la respuesta y renderizar los artículos en la plantilla de producto. Una tarde de trabajo con el tema en la mayoría de los casos, a veces menos, ocasionalmente un día si el comerciante quiere también prealmacenar en caché la respuesta y servirla desde el edge.

Dentro de un año, los comerciantes cuyas cuadrículas estén llenas no serán los que eligieron un Widget más bonito. Serán los que publicaron en silencio una página diferente.

El cierre

Mira, no culpamos realmente a los proveedores de Widgets de ser proveedores de Widgets. Envían lo que fueron construidos para enviar: un elemento de UI, estrellas, un recuento, un carrusel de fotos, una insignia de comprador verificado. Ese era el encargo en 2015 y sigue siendo el encargo en la mayoría de las llamadas de incorporación de comerciantes en 2026. El encargo fue, en sus propios términos, cumplido.

Lo que ha cambiado desde 2015 no es el encargo. Es la segunda audiencia para la que nadie escribió un encargo. Los rastreadores aparecieron en silencio en los últimos dos años y leen el HTML que el servidor les entrega en la primera petición, y lo que se llevan es lo que más tarde se cita en la respuesta de algún comprador en algún otro contexto que el comerciante nunca ve. Esa segunda audiencia siempre estuvo implícita en el trabajo del Widget. Ahora es la mayor de las dos, y es la que el Widget está menos equipado para atender.

Si todavía no has ejecutado el curl contra tu propia tienda, no sabes realmente en qué lado de esa ecuación estás. Así que hazlo. Un comando de terminal, la URL de tu producto más vendido, tres rastreadores uno tras otro. Busca en la respuesta la frase más distintiva de tu reseña mejor valorada. Si no está ahí (y es probable que no esté), acabas de ver exactamente lo que ve un motor de respuesta cuando llega a leer tu tienda. Lo que decidas hacer a continuación vive en la brecha entre ese resultado y lo que tu comprador ve en el navegador.

THE LETTER

When there is a new essay worth sending, it goes here first.

If any of this reads like something your store could use,write to us.

We will write back.

Corrections

[email protected]

Mistakes are listed at the foot of the page when found.