Página web de la comunidad de Madrid

Si entendemos las páginas web de la administración como un servicio público, me cuesta muchísimo asumir como en los tiempos que corren seguimos con “cosas” como http://www.madrid.org. A favor tengo que decir que la sede electrónica funciona relativamente bien, pese a que la usabilidad y experiencia de usuario están años luz de lo que creo que deberíamos esperar de la web de una administración pública del calibre de la Comunidad de Madrid

Una de las cosas que más me indigna cada vez que tengo que pelearme con la web es que buscar es prácticamente misión imposible. Ni usando el buscador interno ni con un site:madrid.org desde Google. Siempre acabo perdiendo un montón de rato navegando por menús inútiles e invirtiendo tiempo en descubrir “popups”, links con “ver más” y demás historias que impiden una correcta indexación de la información en buscadores. Lo más curioso de todo es el robots.txt que tienen ¿para qué? ¡es de risa! Por cierto, de navegar con móviles mejor ni hablamos…

En fin, solo espero que gobierne quien gobierne tras el 24M apueste de verdad por una administración electrónica y unos sitios web a la altura de las circunstancias.

Expresiones regulares

Las Expresiones Regulares, comúnmente conocidas como “Regex” son al SEO como el Excel es a la Analítica Web.

Dominarlas te permitirá entre otras cosas pelearte sin miedo con .htaccess así como sacar el máximo partido a herramientas como DeepCrawl, Screaming SEO Frog o Botify, entre otras muchas. Podrás usarlas también en Google Spreadsheet y en ciertas funcionalidades de Excel como buscar y reemplazar. Respecto a esto último de Excel, tengo que comprobar si en Office 2016 puedes usarlas en los filtros, tal y como permiten Libre Office u Open Office. En definitiva, creo que conocer las expresiones regulares es algo importante para cualquier perfil SEO, ya sea técnico o analista. Para entender su funcionamiento no es necesario saber programar para controlarlas, ni mucho menos, pero si tener cierta base sobre como funcionan los algoritmos o conjuntos de instrucciones. Seguro que si te pones con ello no te costará mucho :-)

Algunos enlaces interesantes que te ayudarán:

Manual de Regex en Español: http://www.desarrolloweb.com/
Generador de Expresiones Regulares: https://regex101.com/
Comprobador de expresiones Regulares: http://www.metriplica.com/

regex en el .htaccess

No debemos olvidar que cualquier sentencia en el .htaccess o httpd.conf afectará a nuestro WPO. Para ello tendremos que tratar de usar las expresiones lo más livianas posibles, por ejemplo se suele usar erróneamente (.*) cuando se podría hacer simplemente con ([a-zA-Z0-9_-]+). A menos comprobaciones, menos carga. Una tilde en una URL puede ser perfectamente [aáâàä].

Por otro lado, en el caso de webs extremadamente grandes, a veces puede resultar mejor cargar las redirecciones en ficheros php en lugar de directamente en el .htaccess. Esto hace que su ejecución sea más lenta, pero por contra la carga de las máquinas lo agradece. Pero eso ya si que es cuestión de los programadores :-)

Cron para copiar logs de dreamhost

Una de las partes fundamentales para una buena optimización del crawling pasa por el estudio de los bots mediante sus logs. Este blog está alojado en dreamhost, un proveedor de hosting barato muy barato que por alguna razón, únicamente pone a disposición de los clientes los últimos 5 días del los logs, access.log y error.log. Como queríamos ver el comportamiento de Googlebot y Bingbot (entre otros) nos hemos generado un pqueño script en bash que mediante un CRON que se ejecuta cada medianoche, copia los ficheros cada noche en otro directorio, concatenando la fecha. Este es el código:

TDY=’date +%Y%m%d’
cp /home/_domain_logs/javierlorente/javierlorente.es/http.21368563/access.log.0 ~/logbackup
cp /home/_domain_logs/javierlorente/javierlorente.es/http.21368563/error.log.0 ~/logbackup
mv logbackup/access.log.0 logbackup/access.log.$tdy
mv logbackup/error.log.0 logbackup/error.log.$tdy

¡Importante incluir el ID después del http.x o https.x! Si no lo sabéis, lo ideal es conectarnos por SSH o incluso por SFTP con programas que lo soporten como FileZilla. Incluso es recomendable deshabilitar desde el panel de control el acceso FTP, menos seguro. El ID cambiará por cada dominio o subdominio, incluso para un mismo usuario. Deberéis crear tantas órdenes de copia como logs queráis copiar.

Podemos copiar el código del script directamente en el formulario de programación de los crons o desde un .sh y ejecutar el fichero mediante ./nombre_fichero desde el formulario. Recordad darle al .sh permisos de ejecución.

Si queremos ahorrar tiempo y espacio podemos almacenar únicamente los registros que nos interesen, en este caso Googlebot, resumimos el artículo de Lino sobre como tratar los logs de los bots.

cat accesslog.* > logs-Unidos.txt
cat logs-Unidos.txt | grep Googlebot > AccesosTotalesGooglebot.txt
cat AccesosTotalesGooglebot.txt | egrep -io ‘GET (.*)[\.php|/] HTTP’ > Hits-URLs.txt
egrep -c ” Hits-URLs.txt
egrep -c ‘nombreDirectorio’ Hits-URLs.txt
sort Hits-URLs.txt | uniq -c > hits-agrupados-por-urls.txt
egrep -c ” hits-agrupados-por-urls.txt

A partir de aquí os dejo jugar con las infinitas posibilidades del bash scripting.

Crawl Sculpting

nofollow en los enlaces internos

Tras el experimento de las redirecciones 301, 302 y 307. Llega el turno de experimentar sobre qué hacen los bots con los enlaces internos. El nofollow lleva más de 10 años entre nosotros, todos estamos de acuerdo en que la época dorada del pr sculpting ya pasó, pero y el “crawl sculpting“? Si ya lo hacemos con el robots.txt, ¿por qué no probar a ver qué pasa con los links nofollows? No hay mejor forma de verlo que con los logs de los bots. Empiezo una serie de experimentos con uno muy sencillito, 3 links anidados, unos nofollow y otros dofollow. A ver que pasa… pondré aquí las conclusiones.

X-Robots-Tag http header

Otros dos experimentos para comprobar si podemos ahorrar otros 2 céntimos de cuota de rastreo.

En primer lugar vamos a comprobar si Googlebot se descarga todo el HTML de una petición donde la cabecera le devuelve un “none” (noindex, nofollow). Entendería que se descargase el destino de una URL de un canonical, para comprobar que verdaderamente hay lo que dice haber, entendería que se descargase el html de una url donde el none está en el HTML, ¿pero si se lo decimos en las cabeceras? ¿realmente es necesario? Experimentemos con 2 ficheros php con las cabeceras configuradas para devolver un none y un noindex. De nuevo, pondré aquí las conclusiones.

El segundo es parecido, pero esta vez con canonical en las cabeceras. ¿Descubrirá el nuevo contenido a la misma velocidad que si incluimos el canonical en el html? Se gana algo introduciendo el canonical en los encabezados más allá de despistar a tu competencia :-) Probemos!

Botify vs Deepcrawl

A veces tener nuestra web dada de alta en Google, Bing, Yandex y Baidu Webmaster Tools y tener implementado un buen marcado de Google Analytics o Yandex Métrica no es suficiente. En esos casos es necesario recurrir a otras herramientas SEO para el trackeo de posiciones, diagnósticos de popularidad u optimización on page, entre otras cosas. Lo cierto es que me resulta difícil de entender como las herramientas para webmasters de los buscadores no han evolucionado todavía lo suficiente como para que los webmasters no necesitemos herramientas de pago para mejorar la eficiencia del rastreo de los bots. Esto les permitiría ahorrar millones de dólares en crawling inútil. Entiendo que para un seguimiento de posiciones o análisis de popularidad se requieran herramientas de terceros, pero creo que en el tema de seo puramente técnico los buscadores tienen todavía mucho que avanzar. Quizá incluso las herramientas de Bing van un punto por delante respecto a las de Google. En este artículo voy a centrarme en 2 herramientas para optimizar el crawling, ambas de pago; Botify y Deepcrawl. Recordad que hace unos días ya analizamos el módulo Optimizer de la herramienta Sistrix más en profundidad, también haremos alguna mención hacia ella. Botify es un pelín más barata que Deepcrawl, tenéis una prueba de 30 días totalmente gratis, en el caso de deepcrawl también se puede solicitar una demo para un proyecto concreto. En general ambas son potentísimas, pero Botify me ha gustado más. En los 30 días gratis Botify permite rastrear un proyecto de hasta 250.000 URLs. Rastrea a una velocidad de 1URL/Segundo, pero si verificas que eres el dueño del dominio, la velocidad del crawler aumenta de forma ilimitada. Además puedes delegar acceso a tus informes a terceras cuentas. Una de las cosas que más me ha gustado de Botify frenta a Deelcrawl es que puedes generar un robots.txt virtual para que el spider lo respete, ideal para entornos de desarrollo donde el SEO no tiene acceso directo al robots.txt. Esto en concreto es lo que más echo en falta del spider de sistrix, ya que únicamente obedece al user agent “sistrix” del robots.txt, no funciona cuando estableces uno personalizado. Confío en que arreglen este punto próximamente. Por otro lado, uno de los puntos fuertes de ambas herramientas me ha parecido que es el análisis de la profundidad (saltos desde la home necesarios para llegar al contenido) de los diferentes contenidos del sitio. Botify los presenta de forma gráfica y muy visual, incluso sacando la profundidad media de la totalidad de URLs de una web. Resulta increíble ver como simplemente reemplazando enlaces hacia 301 por las urls finales y cambiando en ciertos parámetros el signo ? por la # mejoran estos ratios. Algo que tienen las 3 herramientas es la posibilidad de cruzar los datos de la herramienta con los datos de Google Analytics, simplemente tienes que darle acceso a la herramienta a tus cuentas de la suite de analítica web. Esto nos permite por ejemplo encontrar páginas huérfanas, dentro del sitio. Una pena que ninguna de ellas tengan la implementación para Adobe Analytics. A la hora de filtrar resultados, ambas herramientas poseen filtros avanzados, pero con Deepcrawl tienes que andar con expresiones regulares y Botify posee una interfaz mucho más visual e intuitiva, como este desplegable:

Sin duda, creo que lo que me hace decantarme por botify frente a deepcrawl es la extensión para chrome. Una vez que ya has rastreado tu sitio, la extensión te va sacando las alertas concretas de cada URL de tu sitio por donde vas navegando. Brillante. Finalmente, en el caso de Botify la guinda del pastel la pone el “log Analyzer” para los usuarios más técnicos, con acceso a sus logs y con buen presupuesto. En el apartado de características avanzadas, tienes todo lo que podrías hacer con esta extensión de la herramienta. Deepcrawl prácticamente hace todo lo que hace botify salvo pequeños detalles, también tiene otros que Botify no. Sin embargo, una de las funcionalidades más destacables de la herramienta es la posibilidad de rastrear una web en preproducción. Esta funcionalidad está especialmente indicada para migraciones donde puedes ver si la migración va a ir bien en términos SEO o hay que pulir cosas antes del lanzamiento definitivo. Puedes indicarle unas DNS personalizadas al dominio e incluso darle unas credenciales al spider de Deepcrawl para que se rastree en tu área todavía privada. Botify permite rastrear áreas privadas pero no incluirle tus propios DNS. También me ha gustado mucho la forma en la que presenta los datos. Puedes exportar en CSV absolutamente todos los informes y filtrar y cruzar una infinidad de datos. Uno de los informes que más me ha gustado y más jugo le voy a sacar es el de las redirecciones 301. En una migración de sitios medianamente grandes es muy habitual que se queden enlaces apuntando hacia redirecciones, este informe te saca todas las URLs que contienen en su cuerpo enlaces que apuntan a redirecciones, junto con el destino final de las mismas, 3 columnas en un solo CSV. Lo mejor de todo es que si tienes varias concatenadas, también te las clasifica junto con sus respectivos orígenes. Trasteando un poco con excel y unos cuantos reemplazos y conseguirás dejar todos tus links con un precioso 200. Botify no te devuelve este análisis de redirecciones concatenadas tan mascadito como Deepcrawl, sin embargo, Botify puede exportar este informe junto con el número de inlinks de cada 3XX o 4XX. Algo que no tienen ninguna de las 2 anteriores ni tampoco sistrix: Se echa en falta en las 3 la comunicación con Google Webmaster Tools tal y como hacen con Google Analytics. No me explico como ninguna de las 3 herramientas tiene una implementación del API de las herramientas para webmasters para poder cruzar más datos todavía. Buscador de código fuente, sistrix sí, botify & deepcrawl no: Ninguna de las dos anteriores tiene un buscador en el código fuente como tiene sixtrix, a la que únicamente le falta implementar operadores booleanos y poder exportar los resultados del buscador. Ya podrían Google, Bing o Yandex sacar algo parecido en sus herramientas para webmasters. Hasta donde yo sé la funcionalidad de buscar código fuente dentro de un sitio web está en el roadmap de nerydata, pero todavía no lo han sacado.