Serpion delante de dos pantallas revisando un problema con el rich snippet

El rich snippet que desapareció de la SERP · Serpion 006

🎧 Escuchar: El rich snippet que desapareció de la SERP · Serpion 006

La academia llevaba meses con un resultado enriquecido estable en las búsquedas principales. Estrellitas de valoración, número de reseñas, nombre del curso: todo visible justo debajo del título en la SERP. Ese tipo de presencia tiene un valor real: llama la atención, sube el CTR y transmite confianza antes de que nadie haga clic. Así que cuando llegó el aviso desde el panel de herramientas de búsqueda, nadie en el equipo entendió bien qué había pasado. El resultado seguía indexado, el tráfico no había caído de forma dramática y las páginas de curso respondían con normalidad.

El síntoma era claro: el rich snippet había desaparecido de la SERP. No de forma gradual ni progresiva. Simplemente dejó de mostrarse. Y lo que lo hacía más desconcertante era que el aviso no venía de un problema técnico evidente, sino de algo relacionado con cómo se estaba declarando la información al rastreador. La academia tenía marcado de datos estructurados activo desde hacía tiempo. Nunca había dado problemas. O eso creían.

Algo no me cuadraba. Si el código no había cambiado y la página seguía activa, la señal rota tenía que estar en otro nivel. No en lo que el navegador mostraba, sino en lo que Google estaba leyendo por debajo.

Expediente 006 de Serpion marcado como en investigación
Ficha del expediente Nº: 006

Operario: Serpion

Expediente del caso: El rich snippet que desapareció de la SERP

Empresa o negocio: Academia online

Archivado en: Penalizaciones SEO

Nivel: Avanzado

El rastro del rich snippet en una SERP que ya no lo mostraba

Lo primero que revisé fue el informe de mejoras en Google Search Console. Ahí estaba el aviso, sin ambigüedades: «Marcado de datos estructurados engañoso» sobre el tipo Course. Doce páginas afectadas. Estado: error. Las páginas en cuestión eran los cursos principales de la academia, precisamente los que habían estado mostrando el resultado enriquecido con valoración y reseñas durante meses.

El primer pensamiento fue que algo había cambiado en la configuración del sistema. Actualización del módulo de schema, cambio de plantilla, algún ajuste en el panel de administración que hubiera alterado el output del marcado. Revisé el historial de cambios. No había nada relevante en las semanas previas al aviso. El marcado llevaba funcionando igual desde hacía mucho tiempo. Eso me decía algo importante: el problema no era nuevo. Simplemente había tardado en detectarse.

Entonces consideré otra hipótesis. Google había actualizado sus criterios de elegibilidad para resultados enriquecidos de tipo curso varias veces en el último año. Era plausible que el rich snippet hubiera dejado de mostrarse por un cambio algorítmico que endureciera los requisitos para ese tipo de marcado, no por un error del sitio. La academia no era la única afectada en ese sector: había señales de que varias plataformas similares habían perdido visibilidad en la SERP por esas fechas.

Fui a comprobarlo. Revisé el comportamiento de dominios competidores con estructura similar y el mismo tipo de marcado. Varios seguían mostrando sus resultados enriquecidos sin interrupciones. Si el problema fuera un cambio global de criterios, el impacto debería ser más homogéneo. No lo era. El patrón de pérdida era selectivo, no generalizado. Esa hipótesis quedó descartada.

Una señal rota no siempre grita. A veces solo deja de empujar.

Cuándo el rich snippet dejó de ser representativo de lo que la página mostraba

Volví al marcado estructurado. Usé la herramienta de validación de schema.org y el Test de Resultados Enriquecidos de Google sobre las URLs afectadas. El marcado era sintácticamente correcto. No había errores de formato, las propiedades obligatorias estaban presentes y la estructura JSON-LD se procesaba sin problema. El validador no devolvía ningún fallo técnico.

Ahí estaba la pista buena. No en lo que fallaba, sino en lo que estaba demasiado limpio para ser casualidad.

Si la sintaxis era correcta y Google aun así lo marcaba como engañoso, el problema no era cómo estaba escrito el código. Era qué estaba declarando ese código en relación con lo que el usuario veía en la página.

{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Curso de Estrategia Digital Avanzada",
  "description": "Aprende a construir estrategias digitales...",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "347"
  }
}

Eso era lo que el marcado declaraba. Una valoración media de 4,8 sobre un total de 347 reseñas. Datos que Google leía directamente desde el JSON-LD y usaba para construir el rich snippet con las estrellitas en la SERP. Datos que, en teoría, deberían aparecer visibles también en la página para el usuario.

Fui a revisar las páginas de curso directamente. Ninguna mostraba las reseñas. No había un bloque de valoraciones, no había estrellas visibles, no había contador de opiniones. Las reseñas de los estudiantes existían, sí, pero estaban alojadas en una plataforma externa de gestión de cursos. La página de la academia embebía un iframe con acceso a esa plataforma, pero las reseñas no quedaban representadas como contenido propio de la página. Al depender de un iframe de un tercero, Google no podía utilizarlas como respaldo fiable del marcado declarado.

El marcado declaraba 347 reseñas y 4,8 de valoración. La página visible no mostraba ninguna de las dos cosas. Eso, para Google, no es un error técnico. Es una declaración que no se sostiene con lo que el usuario puede ver. Y eso tiene un nombre concreto en sus directrices: marcado engañoso.

Lo que Google leía y lo que la página realmente mostraba

La consecuencia directa fue la pérdida del rich snippet. Google no retiró la indexación de las páginas ni aplicó ninguna penalización que afectara al posicionamiento orgánico en sí. Las URLs seguían clasificando en resultados normales. Pero el resultado enriquecido, que había sido el activo más visible de esas páginas en la SERP durante meses, desapareció por completo.

El mecanismo es bastante directo: cuando Google detecta que el marcado de datos estructurados declara información que no está accesible ni verificable para el usuario en la misma página, puede considerar ese marcado engañoso según sus directrices. No importa que las reseñas existan en otro lugar. Si no están en la página donde el schema las declara, Google no puede validarlas. Y si no puede validarlas, no las muestra. Y si el marcado persiste con esa información no representada, puede emitir un aviso de contenido engañoso.

Lo que había pasado aquí era bastante habitual en academias que gestionan reseñas a través de plataformas externas: el marcado se implementó en un momento en que quizás las reseñas sí eran visibles directamente en la página. Con el tiempo, la integración cambió hacia un iframe de plataforma externa. El schema no se actualizó. Nadie reparó en que el marcado seguía declarando datos que ya no eran visibles para el rastreador.

 Ejemplo de lo que Google encontraba al rastrear la página 
 El HTML renderizado no contenía ningún bloque con esta información 

 Búsqueda en el DOM de la página: 
 "ratingValue"     → no encontrado en contenido visible 
 "ratingCount"     → no encontrado en contenido visible 
 Iframe externo   → contenido no procesado por Googlebot 
 Propiedad aggregateRating declarada en schema
 sin representación visible en la página. 

Google no estaba fallando. Estaba obedeciendo sus propias directrices al pie de la letra.

Ahí estaba el diagnóstico completo: el rich snippet no había desaparecido por un error de rastreo ni por un cambio algorítmico externo. Había desaparecido porque el marcado estructurado de la academia llevaba declarando información que la página no podía respaldar visualmente, y Google finalmente lo detectó y emitió el aviso correspondiente.

Reconstruir la señal desde dentro

Con el diagnóstico claro, el siguiente paso era decidir cómo corregirlo. Y aquí había una decisión que no era tan obvia como parecía.

Qué retirar, qué reconstruir y por qué el orden importaba

La tentación inmediata era corregir el schema directamente: quitar la propiedad aggregateRating del JSON-LD, limpiar el aviso y solicitar la revisión. Técnicamente correcto. Pero hacerlo así, sin más, hubiera dejado el marcado de curso sin ningún dato de valoración, y eso significaba renunciar definitivamente a cualquier posibilidad de recuperar el rich snippet con estrellitas en el futuro.

El otro camino era hacer las reseñas visibles en la página. Si las valoraciones de los estudiantes se mostraban directamente en el HTML que Google procesaba, el schema podría volver a declararlas con respaldo real. Eso era lo correcto a largo plazo, pero requería trabajo de integración con la plataforma externa y un tiempo de implementación que el equipo no tenía de inmediato.

Optar por la segunda opción sin terminarla era el error más peligroso que podía cometerse. Si se dejaba el marcado con aggregateRating mientras se trabajaba en la integración, el aviso de contenido engañoso seguiría activo. Cada día adicional con ese aviso sin resolver era un día más en que Google tenía razones para no confiar en el marcado de ese dominio. No era un riesgo teórico: mantener marcado engañoso durante tiempo puede afectar a la confianza que Google deposita en esos datos estructurados y dificultar la aparición de resultados enriquecidos.

La decisión fue hacer las dos cosas, pero en orden. Primero, retirar la propiedad aggregateRating del schema de todas las páginas afectadas para eliminar el contenido engañoso de inmediato. Segundo, solicitar la revisión en Search Console una vez limpio el marcado. Tercero, mientras se tramitaba la revisión, trabajar en paralelo en la integración real de reseñas visibles en las páginas de curso. Y cuarto, cuando esa integración estuviera lista y las valoraciones fueran parte del HTML procesable, volver a incluir aggregateRating en el schema con datos que Google pudiera verificar.

El riesgo de ejecutar mal este proceso era claro: solicitar la revisión antes de limpiar el marcado, o volver a introducir el aggregateRating antes de que las reseñas fueran visibles, podría derivar en un segundo aviso. Y un segundo aviso del mismo tipo, sobre el mismo dominio, tiene muchas menos probabilidades de resolverse con rapidez.

Después de limpiar el marcado y solicitar la revisión, el aviso desapareció de Search Console en algo menos de dos semanas. Las páginas dejaron de mostrar el error y recuperaron la posibilidad de ser consideradas para resultados enriquecidos. La recuperación del rich snippet con valoraciones quedó condicionada a completar la integración de reseñas visibles, que se planificó como siguiente fase del proyecto.

Cuando una corrección depende de un dato que todavía no está donde debe estar, hay que limpiar primero y construir después. No al revés.

Serpion expediente 006 marcado como cerrado

💡 Qué he aprendido

Este caso me confirmó algo que ya sospechaba pero que nunca había visto tan limpio: el marcado de datos estructurados no es un elemento estático que se implementa una vez y ya está. Es una declaración que Google compara activamente con lo que el usuario puede ver en la página. Si esa comparación deja de cuadrar, el aviso llega. Da igual que el schema lleve meses funcionando sin problema. Lo que importa es si sigue siendo representativo del contenido visible en el momento en que Google lo comprueba.

Lo que cambió en mi forma de trabajar después de este expediente fue cómo reviso el marcado de resultados enriquecidos en proyectos que llevan tiempo activos. Antes me centraba en la corrección técnica del schema: propiedades, tipos, sintaxis. Ahora también compruebo si los datos que declara el marcado están realmente presentes en el HTML procesable de la página. Son dos cosas distintas, y no siempre van de la mano.

Las academias online que gestionan reseñas a través de plataformas externas son especialmente vulnerables a este tipo de desconexión. El contenido existe, las valoraciones son reales, pero si el rastreador no puede leerlas en la misma página donde el schema las declara, Google no puede validarlas. Y lo que Google no puede validar, no lo muestra.

Bitácora de Serpion

Analista Digital

Expediente Nº 006: El rich snippet que desapareció de la SERP

🧩 Notas del caso

⬋⬋

Una academia online perdió su resultado enriquecido de tipo curso en la SERP tras recibir un aviso de marcado de datos estructurados engañoso en Search Console. El marcado JSON-LD declaraba valoraciones y número de reseñas que no aparecían en el HTML procesable de la página: el contenido estaba en una plataforma externa embebida mediante iframe.

Google detectó la discrepancia entre lo que el schema declaraba y lo que el usuario podía ver, retiró el resultado enriquecido y emitió el aviso. La corrección requirió limpiar el marcado engañoso antes de solicitar la revisión, y planificar la integración real de reseñas visibles como paso necesario para recuperar la elegibilidad del snippet.

🔎 Pistas SEO extraídas del caso

⬋⬋

  • Aviso de «marcado de datos estructurados engañoso» sobre tipo Course en Search Console, con 12 páginas afectadas y pérdida inmediata del resultado enriquecido.
  • El schema era sintácticamente correcto y pasaba la validación técnica; el problema no era de formato sino de representatividad del contenido declarado.
  • Las reseñas existían en una plataforma externa embebida por iframe: visibles para el usuario humano, invisibles para Googlebot al procesar el HTML.
  • La pérdida del snippet fue selectiva, no generalizada: descartó un cambio algorítmico externo como causa y apuntó a una desconexión interna entre schema y contenido visible.
  • El historial de cambios del sitio no registraba modificaciones recientes: el desfase entre marcado y contenido visible se había acumulado sin que nadie lo detectara.

🚫 Errores SEO detectados en el caso

⬋⬋

  • Schema no representativo del contenido visible: la propiedad aggregateRating declaraba datos de valoración que no aparecían en el HTML procesable de la página, incumpliendo las directrices de Google para datos estructurados.
  • Dependencia de iframe para contenido relevante: las reseñas se gestionaban mediante una plataforma externa embebida, lo que las hacía inaccesibles para el rastreador y no verificables como respaldo del schema.
  • Falta de revisión periódica del marcado activo: el schema se implementó en un contexto que luego cambió; nadie comprobó si seguía siendo coherente con el estado real del contenido visible.
  • Solicitud de revisión aplazada: el aviso estuvo activo durante tiempo sin que se actuara, aumentando el riesgo de que el impacto se extendiera a otras mejoras de datos estructurados del mismo dominio.
  • Ausencia de validación cruzada schema–página: el proceso de revisión técnica se limitaba a la corrección sintáctica del marcado, sin comprobar si los datos declarados tenían representación real en el HTML renderizado.

📘 Glosario SEO del expediente

⬋⬋

  • Rich snippet: resultado de búsqueda enriquecido con datos adicionales extraídos del marcado estructurado, como valoraciones, precios o fechas.
  • Datos estructurados engañosos: marcado schema que declara información no representada ni verificable en el contenido visible de la página para el usuario.
  • JSON-LD: formato de marcado estructurado recomendado por Google, insertado en el head o body de la página como bloque de script independiente del HTML visible.
  • aggregateRating: propiedad de schema que declara la valoración media y el número de reseñas de un producto, curso o entidad; debe reflejar información que Google pueda verificar en el contenido accesible de la página.
  • Elegibilidad para resultados enriquecidos: condición que determina si una página puede mostrar un rich snippet en la SERP; se pierde cuando el marcado no cumple las directrices de calidad de Google.

📏 Mini guía práctica

⬋⬋

  1. Revisa periódicamente que los datos declarados en el schema coincidan con el contenido visible en el HTML procesable de cada página, no solo con lo que el usuario puede ver en el navegador.
  2. Comprueba con el Test de Resultados Enriquecidos de Google si el marcado de tus páginas activas sigue siendo elegible para snippet, especialmente después de cambios de integración o de plantilla.
  3. Antes de solicitar una revisión por aviso de datos estructurados engañosos, elimina primero el marcado conflictivo; no solicites la revisión mientras el problema siga activo en el código.
  4. Si gestionas reseñas o valoraciones a través de plataformas externas embebidas, verifica que el contenido sea accesible para Googlebot antes de declararlo en el schema con aggregateRating.
  5. Documenta el estado del marcado estructurado activo en cada proyecto y vincúlalo al estado real del contenido visible, para detectar desfases antes de que Google los registre como avisos.

Comparte el conocimiento. Comparte la historia

Expedientes y Archivos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respetamos tu privacidad. Los datos que proporciones se utilizarán únicamente para gestionar y mostrar tu comentario, así como para prevenir el uso indebido o el spam. Puedes consultar más información en nuestra política de privacidad.

Subir