Mejoras en el esquema del foro de discusión

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.

1 me gusta

Hola, ¡hipo!

Los datos estructurados ayudan a proporcionar más contexto a los motores de búsqueda, esencialmente.

Google Search no encuentra un campo url opcional en ese tema.
Puedes ver en validator.schema.org que es perfectamente válido sin advertencias.

No hay nada de qué preocuparse.
Dicho esto, si Google Search resalta este campo, sería una razón válida para agregarlo en Discourse.

3 Me gusta

Como @Arkshine explicó anteriormente, esto no es un error, sino una sugerencia de Google para agregar un campo opcional en el esquema. Lo investigaré.

2 Me gusta

Del otro hilo:

Entonces, sí, “url” es opcional, pero también hay errores genuinos aquí.

El itemprop="url" ayuda a Google a combinar varios bloques de Comment en diferentes URL que pertenecen al mismo tema.

Intenté reproducir los errores que estás viendo probando temas meta en Google Rich Results Test, pero no veo ningún error.

¿Puedes proporcionar un enlace al tema para el cual Google está mostrando errores?

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”.

https://search.google.com/test/rich-results/result?id=TlLcA6saLMo3BrxbQYnFuw

Cuando cambias el enlace a pruebas de escritorio, aparece el esquema “Foro de Discusión” y señala el problema de “campo url faltante”.

Para reproducir los errores críticos, tienes que probar un hilo largo con el parámetro de URL ?page=2, como este:

1 me gusta

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.

2 Me gusta

El problema descrito en la primera publicación, además de otros problemas, se ha solucionado en este commit:

¡Gracias por las sugerencias aquí @rrit! :+1:

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? :thinking:

1 me gusta

No, no creo que sea así, duplicar contenido nunca sale bien, ¿hay otras opciones?

3 Me gusta

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.

3 Me gusta

Claro, esta suena como una solución mucho más correcta.

1 me gusta

No incluyas los datos/texto de la primera publicación en las páginas subsiguientes, pero siempre añade itemprop="url" apuntando a la primera página:

Ver Google structured data for forums and profile pages - #9 by rrit

3 Me gusta

No hay regla sin excepción: Para DiscussionForumPosting, Google recomienda el uso de Microdata y no JSON-LD.

Consulta Discussion Forum (DiscussionForumPosting, SocialMediaPosting) Schema Markup | Google Search Central  |  Documentation  |  Google for Developers

Directrices técnicas

  • 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.
4 Me gusta

¿Ya está activo en meta.discourse.org?

Por favor, consulta mi comentario en github:

Toda esta etiqueta de enlace solo debería definirse para post.is_first_post, no es necesario repetirla con la misma URL para cada elemento Comment.

En meta.discourse.org, las comillas se están manipulando ahora mismo:
<link itemprop='mainEntityOfPage' href="…">
Ver Schema Markup Validator

3 Me gusta

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.

7 Me gusta

Gracias por la corrección de la propiedad mainEntityOfPage.

Y buen hallazgo en la etiqueta meta frente a la etiqueta link :+1:
<link itemprop='url' content='<%= @topic_view.absolute_url %>'>

Aún mejor:
<link itemprop='url' href='<%= @topic_view.absolute_url %>'>

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.”


Acabo de volver a revisar la documentación proporcionada por Google sobre DiscussionForumPosting: propiedades:

Propiedades requeridas:

  • author
  • author.name
  • datePublished
  • text o image o video

Nota especial sobre: text o image o video

“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)

Datos estructurados: herramientas y recursos

Esquema

schema.org

developers.google.com

Validadores

schema.org

  • 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.
5 Me gusta

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.

7 Me gusta

¡Gracias por el contexto y los consejos, Ryan!

Esto está hecho. Los metadatos para las páginas subsiguientes (página 2 en adelante) se ven bien ahora.

3 Me gusta

¿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?

2 Me gusta