He estado intentando que Discourse sirva completamente la aplicación JS a Googlebot; estoy muy cerca.
Por cortesía de @pfaffman y ejecutando el siguiente código (en la consola de Rails), pude hacer que la aplicación JS apareciera al usar Chrome y falsificar el agente de usuario a Googlebot o Googlebot Smartphone.
Sin embargo, cuando pruebo con la herramienta de Google para móviles (o la inspección de URL en la consola de búsqueda de Google), me da una captura de pantalla en blanco con el siguiente HTML.
Bing es similar, pero con ellos muestra el contenido. Creo que Bing muestra el contenido porque su rastreador no es “móvil”. Publicación relevante aquí de @sam
Según @david y esta publicación, parece que la “detección de características” es la culpable.
Soy cautelosamente optimista de que hay una solución simple. Cada 10-20 intentos al usar la herramienta, Googlebot renderiza la APLICACIÓN correctamente.
Mi teoría es que, dado que Googlebot es famoso por no descargar todos los recursos al acceder a una página, ese JS específico (que tiene la detección de características y causa la reversión) no se carga y, por lo tanto, la página se ve bien.
Entonces, en conclusión, ¿cómo podría alguien deshabilitar la detección de características para Googlebot (o si es más fácil, para todos los rastreadores/bots)?
Editar Por si acaso me equivoco con la terminología, cuando se menciona “detección de características” en meta, ¿se refiere a la detección del navegador? (¿quizás con archivos como browser-detect.js y otras dependencias?)
¿O es “detección de características” una frase amplia para lo que hace Discourse cuando intenta comprender la tecnología que intenta acceder a la aplicación?
¿Hay alguna razón por la que quieras servir la versión JS a Googlebot? Google probablemente no podrá encontrar vistas de listas paginadas, incluida la página principal paginada y los temas que tienen más de un cierto número de publicaciones. En la vista del bot, las listas de temas son rastreables, pero es probable que Googlebot no active el desplazamiento infinito.
Tuvimos una actualización de sitio muy descuidada alrededor de septiembre/octubre de 2019, el sitio principal se hundió justo en ese momento.
Nunca nos recuperamos. El sitio nunca ha estado mejor en cuanto a SEO. Claro, no es perfecto, pero estamos a años luz de algunos de la competencia. Sitios que usan nuestras imágenes y textos de muchos años nos superan en páginas. Estamos en la tercera y ellos quizás en la cima de la segunda página.
He pasado por innumerables blogs, videos, publicaciones de SEO e incluso he tenido algunos intercambios con John Mueller (en Reddit).
Lo máximo que obtuve de él fue que podrían ser “problemas de calidad”. Hemos mejorado drásticamente el sitio principal desde el 1 de enero de este año. Ni siquiera un pequeño cambio en el tráfico orgánico.
Discourse: Lo instalé en 2013 y me olvidé de él. Apenas revisaba su tráfico.
Si miras las analíticas del sitio principal, verás una caída brusca hacia el final del gráfico. Esto es cuando comencé a trabajar en Discourse.
Al probar prerender.io en discourse, el ranking del sitio principal estaba por todas partes. A veces subía 10-15 puestos de la noche a la mañana, luego volvía. (Desde entonces he dejado de usar prerender ya que no podían renderizar el menú principal, el inicio de sesión, etc.)
Por lo que he leído en línea, esto es una señal de que Google no sabe dónde colocarte. Dicen que solo un poco “más” y estarás en el lado bueno del algoritmo.
Nada de lo que hemos hecho en los últimos 3 años ha provocado estas fluctuaciones en los SERPs.
(Jugar con la herramienta de desautorización de Google, limpiar código, URLs limpias, estructura del sitio, enlaces internos, redes sociales, contenido, etc.)
Podrías argumentar, ¿por qué Google no me penalizó en 2018? (también tenías discourse en el subdominio entonces)
Bueno, creo que fue una multitud de factores únicos del sitio, su historia, perfil de enlaces. lo que hizo que se hundiera a finales de 2019. Parece que Google reorganizó el ranking del sitio y quizás dio más peso a las URLs de discourse de lo que dio anteriormente.
Y la cosa es… me encanta Discourse. Especialmente ahora que he estado más en meta, todos estos complementos y funciones geniales que no tenía idea de que existían. Wiki, pagos por suscripción, tabla de contenido y ¡ahora el chat!
Así que alejarse de discourse no es realmente una opción, demasiado invertido en este punto.
Consideré esto y estoy dispuesto a arriesgarme. Sé que no será perfecto, pero por lo que he leído y visto, Google se ha vuelto muy bueno entendiendo JS últimamente.
Así que el plan es servir la aplicación a Google, hacer mi mejor esfuerzo para solucionar cualquier problema de SEO que pueda surgir y disfrutar del aumento de tráfico.
Luego podré informar los resultados en meta y argumentar que Discourse debería considerar optimizar el JS para Google.
Por ejemplo, tal vez algo como esto (del blog de Google) ayudaría con las preocupaciones de paginación y desplazamiento.
Y mantener la versión no rastreadora para navegadores antiguos.
Antes de enviar la versión JS a Google, estuve jugueteando con ella.
Probé a enviar la versión JS a Google a principios de abril aproximadamente. Recuerdo que devolvía un resultado la mayor parte del tiempo (incluso si parecía roto). Usando la herramienta móvil de Google.
Pensé que podría ser este commit - Hice las ediciones de código, reinicié y el mismo comportamiento.
¿Quizás alguien recuerda un PR o commit en los últimos meses que pudiera haber alterado la detección de navegadores y/o rastreadores?
Edición Disculpen todas las actualizaciones, cuanta más información, mejor, ¿verdad?
Mientras probaba prerender el mes pasado, Google terminó añadiendo 2000 URLs a la cobertura del foro. ( principalmente estas URLs )
Todas fueron servidas en 0.005 segundos, prerender tenía las URLs cacheadas y listas para que el googlebot accediera. Así que las tomó todas rápidamente.
El punto es que, quizás el rastreador se “acostumbró mucho” a la ausencia de JS y comprometió recursos para obtener esas 2k páginas.
Así que ahora está accediendo al sitio de esta manera hasta que lo entienda (y necesite acceder con JS más), solo es una teoría.
¿Estabas trabajando en algo que cambió la forma en que Discourse es rastreado, como intentar usar prerender en él entonces?
Si revisas tu informe de páginas de destino en GA, ¿te da alguna pista sobre qué parte del sitio se vio afectada?
Para el sitio principal, si John Muller sugirió que hay problemas de calidad, revisaría sus documentos de calidad y te preguntarías si alguno de ellos aplica.
Un candidato para una penalización repentina es que las URL del sitio de 2019 tienen 6 redirecciones, pero Google dice que las mantengas “menos de 5” o podrían no seguir las redirecciones. Eso podría haber hecho que pareciera a Google que las páginas antiguas desaparecieron de la Web.
Buena observación y, aunque mal ejecutado, tardó muchos meses, Google parece haber descifrado qué páginas significan qué.
En otras palabras, con el tiempo, comencé a ver cada vez más las páginas a las que hice 301 para las palabras clave utilizadas en las páginas antiguas.
Esto tiene mucho sentido y veré cómo puedo implementarlo. Actualmente, la consola de búsqueda no muestra que el rastreador reciba 301 con frecuencia. Parece que cuando el rango mejora, seguirán más 301. Causalidad sin correlación, quizás.
No es una crítica a Discourse en absoluto. Simplemente no me convence fácilmente “miles de usuarios de Discourse tienen un gran tráfico orgánico”.
Google tampoco nos lo dirá realmente.
Siempre debemos recordar que Google es un algoritmo, no lo mira desde los ojos de un humano.
Si bien ambas versiones comparten contenido similar y Google sabe que no es enmascaramiento malicioso, aún tienen que ajustar el rango.
Una versión se ve mucho mejor, funciona mejor y da una idea de la estructura de enlaces internos. La otra es un feed RSS glorificado.
Google no tiene idea de que tengo este foro elegante que funciona en todos los dispositivos [modernos], fomenta el debate y es una de las cosas más geniales que Internet ha creado.
Siempre me gusta usar el enlace “do-follow” de “Powered by discourse” en la versión del rastreador. (simplemente porque es fácil)
Nuevamente, sé que no es malicioso, pero debes mirarlo a través de los ojos de Google. Tú, FlyNumber (no https://community.cloudflare.com/), nos estás dando esta versión para rastreadores con un enlace externo que no muestras a los navegadores normales.
Podría ver perfectamente que el algoritmo capte lo que está sucediendo e ignore el enlace externo para el dominio de Cloudflare (ya que es una autoridad tan grande).
No es como si lo que Google aplica a Cloudflare se aplicara a mí.
¿Alguien te pagó por este enlace externo que muestras a los bots (pero no quieres mostrar a los usuarios normales)? se trata más de cómo podrían ver el sitio. No digo que sea esto, pero es una posibilidad que querrás eliminar.
En términos más simples, la versión del rastreador no tiene menú ni estructura real.
Ese es el contenido que el algoritmo cree que quieres servir a los usuarios finales.
Desde una perspectiva muy general, no veo que el algoritmo recompense eso.
Quizás sea hora de que comencemos a considerar una revisión real de la versión del rastreador. Al menos agrega el menú principal y los temas sugeridos en la parte inferior.
Interesante actualización: Google ha agregado “JSON” a los “tipos de archivo” en las estadísticas de rastreo para mi instancia de Discourse. “Javascript” es un “tipo de archivo” separado.
Empiezo a pensar que mi lógica estuvo mal desde el principio. Explicaría por qué nadie respondió; tal vez no haya nada malo.
Aquí hay un nuevo artículo sobre cómo es normal que Google muestre una página blanca en la captura de pantalla.
Ahora puedo ver el HTML “rastreado” de la página de inicio, esta es la versión indexada, no desde la “Prueba en vivo”, muestra la página completa. Ten en cuenta que Google descubrió esto mientras les servía la aplicación JS completa.
Lo interesante es que llegaron hasta la publicación número 27 en la página de inicio en cuanto a indexación. Así que el desplazamiento infinito es algo que Google entiende.
No estoy seguro si ayudó, pero desmarqué la configuración de ajax en la configuración de administrador. Hizo que Google encontrara URL como la siguiente (y sirviera la versión del rastreador); la desmarqué y ahora esa URL mostrará la versión JS.
Después de al menos un mes o más de servir la versión SPA (versión completa de JS) de Discourse, he vuelto a la versión del rastreador.
Puedes consultar mi historial de publicaciones, pero argumentaba que Google podría entender la versión JS y clasificarla mejor que la versión del rastreador. Me equivoqué.
Parece que Google descubrió el sitio, pero lo clasificó más o menos igual (si no un poco más bajo).
La versión del rastreador también se actualizó en abril/mayo en cuanto a los colores de los enlaces, el formato, etc., lo que es una buena ayuda.
En mi humilde opinión, si añadiéramos un menú simple y los “temas sugeridos” a la versión del rastreador, marcaría una gran diferencia en el SEO de todos.
Aparte de eso, solo quería compartir esto por si a alguien le interesaba.