StructuredData — runnea.com

URL objetivo: https://www.runnea.com/zapatillas-running/adidas/adizero-boston-13/1041450/
Fecha: 2026-04-17 15:35
Keyword SERP de referencia: adidas adizero boston 13 review


1. Resumen ejecutivo

La URL implementa 5 bloques JSON-LD con JavaScript activado: Organization, WebSite, BreadcrumbList, Product y FAQPage. Todos los bloques son sintácticamente válidos.

Google Rich Results Test reporta 2 items elegibles (Product + Review), 0 errores, 0 advertencias: la ficha es apta para rich result de producto y review tal cual está. Sin embargo, el validador local detecta 3 propiedades recomendadas ausentes en el bloque Product (offers, aggregateRating, sku) y un segundo LLM identifica un error estructural en hasPart.associatedMedia (usa @type:ImageGallery en ítems anidados donde debería ir ImageObject).

Contra la competencia editorial del TOP 5 (excluyendo runnea en posición 2), runnea es el único que implementa Product con review embebido y reviewRating. Roadrunningreview (pos 1) usa solo NewsArticle; Atmosferasport (pos 4) ni siquiera tiene JSON-LD de producto; solo Runrepeat (pos 3) tiene Product, pero sin aggregateRating ni offers ni sku.

La oportunidad principal es añadir aggregateRating para habilitar estrellas visibles en SERP — ningún competidor lo tiene y la diferenciación visual sería inmediata.


2. Keyword y competidores analizados

# Posición Dominio URL Competidor principal
1 1 roadrunningreview.com https://www.roadrunningreview.com/es/Adidas-Adizero-Boston-13/REVIEW--101414.html
2 2 runnea.com (URL objetivo)
3 3 runrepeat.com https://runrepeat.com/adidas-adizero-boston-13
4 4 atmosferasport.es https://www.atmosferasport.es/blog/adidas-adizero-boston-13-la-mixta-que-te-hara-volar-b125.html
5 5 magazine.365rider.com (no analizado, fuera del TOP-3)

Elementos especiales en la SERP: vídeos (YouTube Shorts) en posiciones 6 y 10. Sin AI Overview, sin PAA, sin carrusel de shopping visible en el TOP 5.


3. Validación — URL objetivo

Bloques detectados (con JS activado)

# @type Soportado Google Sintaxis Warnings local Rich Results Test
0 Organization OK contactPoint, sameAs, legalName ausentes — (no solicitado)
1 WebSite OK No listado para rich results
2 BreadcrumbList OK Sin warnings
3 Product OK offers, aggregateRating, sku ausentes 2 items elegibles, 0 errores
4 FAQPage OK Sin warnings

Bloque Product (muestra recortada)

{
  "@context": "http://schema.org",
  "@type": "Product",
  "name": "Adidas Adizero Boston 13",
  "image": "https://static.runnea.com/images/.../boston-13-1200x1200x90xX.jpg",
  "description": "Análisis y opiniones de Adidas Adizero Boston 13 ...",
  "brand": { "@type": "Brand", "name": "Adidas" },
  "url": "https://www.runnea.com/zapatillas-running/adidas/adizero-boston-13/1041450/",
  "review": {
    "@type": "Review",
    "author": { "@type": "Person", "name": "Asier Rosende", "url": "..." },
    "datePublished": "2024-11-13T20:39:11+01:00",
    "dateModified": "2026-02-18T00:00:00+01:00",
    "reviewBody": "...",
    "positiveNotes": { "@type": "ItemList", "itemListElement": [ ... 4 items ... ] },
    "negativeNotes": { "@type": "ItemList", "itemListElement": [ ... 2 items ... ] },
    "reviewRating": { "@type": "Rating", "ratingValue": 8.9, "bestRating": 10, "worstRating": 1 }
  },
  "hasPart": {
    "@type": "ImageGallery",
    "associatedMedia": [
      { "@type": "ImageGallery", "url": "...", "name": "Adidas Adizero Boston 13" },
      ...
    ]
  }
}

Campos presentes: name, image, description, brand, url, review (con author, datePublished, dateModified, reviewBody, positiveNotes, negativeNotes, reviewRating), hasPart.associatedMedia.

Campos recomendados por Google ausentes: offers, aggregateRating, sku.

Error estructural detectado por contraste LLM: dentro de hasPart.associatedMedia, cada ítem usa @type:ImageGallery — debería ser @type:ImageObject. ImageGallery es un contenedor, no un ítem.

Rich Results Test (dictamen autoritativo de Google)

Contraste de hallazgos entre LLMs


4. Análisis de la competencia

Competidor 1 — roadrunningreview.com (pos 1)

URL: https://www.roadrunningreview.com/es/Adidas-Adizero-Boston-13/REVIEW--101414.html

Bloques JSON-LD detectados: Organization, NewsArticle, VideoObject. Microdata adicional WebPage.

Sin Product, sin Review, sin aggregateRating, sin offers, sin sku, sin brand. El bloque principal es NewsArticle, orientado a publicación editorial.

Competidor 2 — runrepeat.com (pos 3)

URL: https://runrepeat.com/adidas-adizero-boston-13

Bloques JSON-LD: WebPage, BreadcrumbList, Product (x2). Claves de primer nivel en Product: @context, @type, name, brand, image, description, review.

Campo Presente
aggregateRating NO
offers NO
sku NO
brand
review SÍ (embebido)

Competidor 3 — atmosferasport.es (pos 4)

URL: https://www.atmosferasport.es/blog/adidas-adizero-boston-13-la-mixta-que-te-hara-volar-b125.html

Bloques JSON-LD: WebPage únicamente. Microdata adicional: newsarticle, Organization, ImageObject. Sin Product, sin Review estructurado.


5. Tabla comparativa

Campo / Dominio runnea.com (obj) roadrunningreview (p1) runrepeat (p3) atmosferasport (p4)
@type:Product ✅ (x2)
@type:Review embebido
reviewRating individual ✅ (8.9/10)
aggregateRating
offers / price
sku / gtin / mpn
brand ✅ (Adidas)
BreadcrumbList
FAQPage
NewsArticle / editorial — (Microdata)

Resumen posicional: runnea es quien tiene la implementación más completa del TOP-5 (Product + Review + FAQ + Breadcrumb), seguida de runrepeat (Product + Review + Breadcrumb).


6. Recomendaciones accionables

R1 — Corregir tipado en hasPart.associatedMedia (crítico)

Los ítems dentro de associatedMedia usan @type:ImageGallery cuando deberían ser ImageObject. ImageGallery es el contenedor; los ítems son imágenes individuales.

   "hasPart": {
     "@type": "ImageGallery",
     "associatedMedia": [
-      {
-        "@type": "ImageGallery",
-        "url": "https://static.runnea.com/images/202504/adidas-adizero-boston-13-zapatillas-running-1200x1200x90xX.jpg?1",
-        "name": "Adidas Adizero Boston 13"
-      }
+      {
+        "@type": "ImageObject",
+        "contentUrl": "https://static.runnea.com/images/202504/adidas-adizero-boston-13-zapatillas-running-1200x1200x90xX.jpg?1",
+        "name": "Adidas Adizero Boston 13"
+      }
     ]
   }

Re-pasar: validate_jsonld.py y Rich Results Test (Vía B subagente).

R2 — Añadir aggregateRating al Product (alto impacto SERP)

Ningún competidor del TOP-5 lo tiene. Implementarlo habilita estrellas visibles en SERP y es diferenciación inmediata. Si solo hay un review editorial, se puede mapear al valor del reviewRating individual mientras no haya valoraciones de usuarios; si Runnea tiene valoraciones de usuarios en la ficha, usarlas.

   "brand": { "@type": "Brand", "name": "Adidas" },
   "url": "https://www.runnea.com/zapatillas-running/adidas/adizero-boston-13/1041450/",
+  "aggregateRating": {
+    "@type": "AggregateRating",
+    "ratingValue": "8.9",
+    "bestRating": "10",
+    "worstRating": "1",
+    "ratingCount": "1",
+    "reviewCount": "1"
+  },
   "review": { ... }

Re-pasar: validate_jsonld.py y Rich Results Test.

R3 — Añadir offers si Runnea muestra precio de afiliados (opcional, alto CTR)

Si la ficha muestra precio real de alguna tienda afiliada, declararlo como offers dispara el snippet con precio visible en SERP. Si la ficha es puramente editorial (sin precio mostrado), omitir esta recomendación.

   "review": { ... }
+  ,
+  "offers": {
+    "@type": "Offer",
+    "price": "160.00",
+    "priceCurrency": "EUR",
+    "availability": "https://schema.org/InStock",
+    "url": "https://www.runnea.com/zapatillas-running/adidas/adizero-boston-13/1041450/",
+    "priceValidUntil": "2026-12-31"
+  }

Re-pasar: validate_jsonld.py y Rich Results Test.

R4 — Enriquecer Organization (impacto menor, consistencia de marca)

 {
   "@context": "https://schema.org",
   "@type": "Organization",
   "name": "Runnea",
-  "url": "https://www.runnea.com/"
+  "url": "https://www.runnea.com/",
+  "logo": "https://www.runnea.com/.../logo.png",
+  "sameAs": [
+    "https://twitter.com/runneacom",
+    "https://www.instagram.com/runneacom/",
+    "https://www.facebook.com/runneacom"
+  ],
+  "contactPoint": {
+    "@type": "ContactPoint",
+    "contactType": "customer support",
+    "email": "info@runnea.com"
+  }
 }

Re-pasar: validate_jsonld.py.

R5 — Revisar si WebSite debe mantenerse

El validador local marca WebSite como no soportado para rich results (Sitelinks SearchBox está deprecado). Si no se usa potentialAction.SearchAction, considerar eliminar el bloque para reducir ruido.


7. Ideas / Apuntes para humanos