Hola. Actualmente estamos recibiendo este mensaje en nuestra Google Search Console. No estoy del todo seguro de lo que significa. ¿Podrían darme más claridad sobre este problema? ¿Hay una solución? Además, me gustaría mencionar que hemos intentado usar varios temas para la plataforma, pero el mismo error persiste.
Lo primero que debes notar es que el enlace que mostraste indica que el enlace no tiene el Esquema de Foro de Discusión. Ese enlace solo tiene el esquema “Breadcrumbs”, ningún esquema de “Foro de Discusión” en absoluto. Eso sucede porque estás probando el enlace en modo “smartphone”, y no en modo “desktop”.
Debo señalar que creo que es un error importante en Discourse que el esquema no aparezca en modo smartphone. Google no sabría marcarlo (porque Google solo marca errores en el esquema que está presente), pero la rastreo e indexación de smartphones es el predeterminado para Google desde hace años, por lo que es importante que cualquier esquema aparezca en modo smartphone y en modo escritorio.
Esto está sucediendo porque la primera publicación no se incluye a partir de la segunda página en la vista del rastreador. @sam, ¿deberíamos incluir la primera publicación en todas las páginas en la vista del rastreador para solucionar los problemas del esquema?
La otra opción sería reemplazar el microdata schema con JSON-LD (que Google recomienda). Esto desacoplaría los datos renderizados de los datos estructurados y también funcionaría en dispositivos móviles (como señaló Dan arriba).
Ya estamos utilizando el esquema JSON-LD en el plugin solved.
A diferencia de nuestra preferencia general de datos estructurados, recomendamos proporcionar el marcado DiscussionForumPosting en Microdata (o RDFa) si es posible. Esto evita que necesites duplicar grandes bloques de texto dentro del marcado. Sin embargo, esta es solo una recomendación y JSON-LD todavía es totalmente compatible.
Sí, lo estamos haciendo ahora según el commit reciente, pero incluso después de añadir eso, nos faltan algunos campos requeridos (author, datePublished, text) para páginas posteriores (?page=2).
¡Gran acierto! Corregido en este PR:
Oh, sí. Esto también fue confirmado por @rrlevering aquí:
Así que supongo que tendremos que mejorar el esquema de microdatos asegurándonos de no terminar duplicando contenido en páginas posteriores.
Ver:
– Este enlace es antiguo, pero YouTube todavía usa <link itemprop='url' href='…'> hoy. –
“Para proporcionar una URL en HTML5, […] [para la etiqueta link] usa el atributo href”
“Si usas una URL como valor del atributo content de un elemento meta, representará una cadena (que parece una URL), no una URL.”
→ “Esto no es obligatorio si estás representando una publicación en otra página (con una url externa) como en páginas posteriores de foros o páginas de categorías de foros.” ←
Propiedades recomendadas
url
[…]
Nota especial sobre: url
“La URL canónica de la discusión. En hilos de varias páginas, establece esta propiedad a la URL de la primera página. Para una discusión única, esta es generalmente la URL actual.”
Así que concluyo:
No necesitamos añadir text de nuevo en página=2+ (HECHO)
Debemos añadir la propiedad opcional url, especialmente a página=2+ (HECHO)
Necesidad de investigación adicional:
¿Son estas “propiedades requeridas” author, author.name y datePublished realmente requeridas en página=2+ o podemos prescindir de repetirlas?
→ validator.schema.org no se queja de la falta de propiedades en página=2+. (HECHO)
→ Esperar y comprobar “Consola de Búsqueda de Google → Informe: Mejoras → Foro de discusión” para obtener nuevos datos en vivo después de que estas correcciones ya implementadas estén activas durante algún tiempo. (POR HACER)
Validador general: https://validator.schema.org/
Esto verifica el cumplimiento de los datos estructurados con las definiciones de Esquema y que el marcado sea compatible con HTML/XML.
→ Los requisitos comprobados siguen el Standard™ y son bastante amplios y no específicos.
→ Recomiendo corregir cada error detectado.
Consola de Búsqueda de Google
Informe: Mejoras → Foro de discusión: https://search.google.com/search-console/r/discussion-forum?hl=en
Esto proporciona feedback directo sobre la información procesada por el rastreador de Google.
→ Estos informes son de alguna manera hechos vinculantes sobre el SEO de Google: Si Google anuncia algo como incorrecto, Google también piensa que es incorrecto, ¡incluso si no lo es!
→ Si algo se marca como “inválido” o “a mejorar”, recomiendo pensar primero en una solución. Y si no hay efectos secundarios conocidos, siempre implementa una solución.
Google: Prueba de Resultados Enriquecidos
https://search.google.com/test/rich-results?hl=en
Esto solo proporciona feedback simulado y no es el rastreador de Google.
Mi opinión: Herramienta de marketing de Google para decir a los propietarios de sitios “¡Hagan algo con sus datos estructurados!”.
→ Esta herramienta es de alguna manera descuidada por Google y no siempre está actualizada con las últimas recomendaciones técnicas proporcionadas por el propio Google.
→ Rich Results Test no siempre proporciona el mismo resultado que Google Search Console – en caso de duda: Confía mejor en Google Search Console.
Permítanme escribir pseudocódigo para la verificación actual que se muestra en la Consola de Búsqueda. Creo que eso ayudará mucho en estos hilos. Podría enviarles ShEx o SHACL, pero esos son mucho menos legibles para los humanos.
si no (IsDeletedContent() O IsExternalContent())
entonces si no ("text" O "articleBody" O "sharedContent" O "image" o "video")
entonces report(OneOfThreeRequired("text", "image", "video"))
si no ("author")
entonces Report(Required("author"))
si no ("datePublished")
entonces Report(Required("datePublished")
La idea es que si el DiscussionForumPosting/OP tiene su contenido en la página actual, debería haber algún tipo de campo de contenido.
Si el DiscussionForumPosting hace referencia a contenido en una página diferente (como en la página original de contenido multipágina), puede tener solo un marcador de posición que contenga lo que sea (como el título del tema del OP) y luego hacer referencia a la URL de la primera página. Esa es la verificación IsExternalContent(), que simplemente comprueba si la URL es diferente de la URL de la página.
El segundo ejemplo en nuestra documentación supuestamente modelaba exactamente este caso (la página 14 hace referencia a una publicación de marcador de posición de la primera página).
author y date son actualmente obligatorios en cualquier caso en nuestras reglas de validación. Eso es principalmente para evitar un salto adicional para encontrar estos datos. Al menos podría ver lo útil que sería saber la fecha del OP para comprender cuán desactualizado está el comentario. ¿Puede simplemente agregar elementos meta con esos datos? No me preocupaban tanto esos campos en cuanto a inflar la página con datos redundantes.
¿Sigue teniendo sentido añadir la URL del author mientras su ruta está bloqueada por nuestro robots.txt predeterminado? ¿Deberíamos eliminar el bloqueo del robots.txt ahora que promocionamos esas URL?