
Google Webmaster Tools ofrece una abundante información sobre el estado de un sitio web. Pero para integrar esta información en un sistema que permita, por ejemplo, generar alertas cuando se cumplan determinadas condiciones, es necesario disponer de un procedimiento que permita descargar esta información de manera automatizada.
En este artículo se presenta una utilidad escrita en PHP que implementa esta funcionalidad.
1. Descarga de la aplicación
La aplicación GWTData está disponible en github. Para descargarla, accedemos a la página:
https://github.com/eyecatchup/php-webmaster-tools-downloads
Desde allí podemos descargar un fichero zip «php-webmaster-tools-downloads-master.zip». En su interior se encuentra el fichero «gwtdata.php», que contiene la clase GWTdata.
2. script de descarga
Para descargar un informe de GWT, en el mismo directorio en el que se encuentra el fichero «gwtdata.php», preparamos un script «descarga.php», que utilizará la clase GWTdata:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php include 'gwtdata.php'; try { $email = "username@gmail.com"; $password = "******"; # If hardcoded, don't forget trailing slash! $website = "http://www.domain.com/"; # Valid values are "TOP_PAGES", "TOP_QUERIES", # "CONTENT_KEYWORDS", "INTERNAL_LINKS", # "EXTERNAL_LINKS", "SOCIAL_ACTIVITY", and "LATEST_BACKLINKS". $tables = array("TOP_QUERIES"); $gdata = new GWTdata(); if($gdata->LogIn($email, $password) === true) { $gdata->SetTables($tables); $gdata->DownloadCSV($website); } else { echo "Login incorrecto\n"; } } catch (Exception $e) { die($e->getMessage()); } |
Deberemos editar el script para introducir nuestro usuario y contraseña de acceso a GWT (líneas 4 5), y el sitio web (línea 8)
En la línea 13 se especifican los informes que deseamos descargar, en un array $tables. Actualmente, la librería no permite especificar más de dos informes en este array.
3. Habilitar el acceso a GWT desde aplicaciones menos seguras
Cuando probamos por primera vez a descargar un informe, puede ocurrir que el script finalice su ejecución con el mensaje «Login incorrecto», a pesar de haber introducido el usuario y la contraseña correctas en las líneas 4 y 5. Esto puede deberse a que la cuenta tiene inhabilitado el acceso desde aplicaciones menos seguras, y sólo permite conectarse desde un navegador web con protocolo HTTPS. Si es así, Google nos enviará un mensaje de correo informándonos del intento de acceso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Hi Openalfa, We recently blocked a sign-in attempt to your Google Account [openalfa@gmail.com]. Sign-in attempt details Date & Time: Thursday 12 February, 8:04 pm CET Location: Madrid, Spain If this wasn't you Please review your Account Activity page at https://security.google.com/settings/security/activity to see if anything looks suspicious. Whoever tried to sign in to your account knows your password; we recommend that you change it right away. If this was you You can switch to an app made by Google such as Gmail to access your account (recommended) or change your settings at https://www.google.com/settings/security/lesssecureapps so that your account is no longer protected by modern security standards. To learn more, see https://support.google.com/accounts/answer/6010255. |
Como vemos, en el propio mensaje explica cómo corregir el problema, accediendo a la configuración de seguridad de la cuenta en la url:
https://www.google.com/settings/security/lesssecureapps
y seleccionando «Turn on».
4. Informes descargables
4.1. TOP_PAGES
El fichero descargado se llama TOP_PAGES-website-YYYYmmDD-HHMMSS.csv, y contiene un informe en formato CSV, con la relación de las páginas del sitio web que han tenido un mayor número de accesos.
Ejemplo:
TOP_PAGES-blog.openalfa.com-20150212-191957.csv
1 2 3 4 5 6 7 8 9 |
Page,Impressions,Change,Clicks,Change,CTR,Change,Avg. position,Change http://blog.openalfa.com/como-implementar-wsdl-soap-en-php,4954,40%,821,38%,17%,-0.2,6.0,-0.2 http://blog.openalfa.com/como-renombrar-una-base-de-datos-en-mysql,2515,44%,776,35%,31%,-2.0,3.3, http://blog.openalfa.com/restricciones-de-clave-externa-en-mysql,5911,42%,709,29%,12%,-1.0,7.6,-0.3 http://blog.openalfa.com/como-cambiar-de-nombre-un-fichero-en-java,2606,36%,685,22%,26%,-3.0,2.8,-0.4 http://blog.openalfa.com/como-leer-y-escribir-ficheros-json-en-java,3651,25%,666,30%,18%,0.6,4.7,-0.2 ... |
4.2. TOP_QUERIES
Este informe en formato CSV contiene las búsquedas realizadas por los usuarios en Google para las que aparecieron páginas del sitio en los resultados de búsqueda, y el total de ocasiones en que se hizo click para acceder a ellas.
Ejemplo:
TOP_QUERIES-blog.openalfa.com-20150212-191957.csv
1 2 3 4 5 6 7 8 |
Query,Impressions,Change,Clicks,Change,CTR,Change,Avg. position,Change captura de pantalla sony xperia sp,165,-9%,111,5%,67%,9.0,1.1,0.2 captura de pantalla xperia sp,175,-9%,92,-29%,53%,-10,1.2,-0.2 renombrar base de datos mysql,116,13%,83,4%,72%,-6.0,1.0, xsd,1265,23%,69,28%,5%,0.2,5.4, ... |
4.3. CONTENT_KEYWORDS
Este informe contiene una serie de registros con los siguientes campos:
- Keyword – La palabra clave presente en el contenido del sitio
- Occurences – El número de veces que aparece dicha palabra clave en el contenido del sitio
- Variants encountered – La palabra clave en plural, sinónimos y otras variaciones encontradas, separadas por comas y encerradas entre comillas
- Top URLs – Las URLs de las páginas en las que la palabra clave es más relevante. las urls están separadas por el carácter «:», y la lista está encerrada entre corchetes cuadrados «[» y «]»
Ejemplo:
CONTENT_KEYWORDS-blog.openalfa.com-20150212-152943.csv
1 2 3 4 5 6 7 8 9 10 11 |
Keyword,Occurrences,Variants encountered,Top URLs blog,2448,"blog, blogs",[http://blog.openalfa.com/como-configurar-un-feed-rss-en-un-blog-wordpress: http://blog.openalfa.com/como-implementar-suscripciones-por-correo-en-wordpress-con-jetpack: http://blog.openalfa.com/como-instalar-y-configurar-wordpress: http://blog.openalfa.com/introduccion-a-jetpack-de-wordpress: http://blog.openalfa.com/como-incluir-un-video-en-un-blog-de-wordpress: http://blog.openalfa.com/como-recuperar-un-sitio-wordpress-que-ha-sido-atacado: http://blog.openalfa.com/como-hacer-el-seguimiento-de-un-sitio-web-con-subdominios-en-analytics: http://blog.openalfa.com/como-instalar-un-blog-multi-idioma-con-wordpress] |
Nota: Aunque el registro que aparece en el ejemplo está en una única línea, aquí lo hemos dividido en varias para hacerlo más legible.
En el registro se indica que la palabra «blog», en singular o en plural «blogs», aparece 2448 veces en el contenido del sitio indexado por Google.
4.4. INTERNAL_LINKS
Este informe contiene la relación de páginas del sitio, con el número de enlaces hacia ellas desde otras páginas del sitio.
Ejemplo:
INTERNAL_LINKS-blog.openalfa.com-20150213-154247.csv
1 2 3 4 5 6 7 8 |
Target pages,Links http://blog.openalfa.com/,203 /informacion,201 /indice-de-articulos-sobre-programacion-en-php,52 /indice-de-articulos-sobre-programacion-en-java,22 /como-enviar-emails-desde-un-script-php,14 |
4.5. EXTERNAL_LINKS
Este informe contiene la relación de dominios desde los cuales se enlaza a páginas del sitio, indicando el número de enlaces encontrados en ellos, y el número de páginas del sitio enlazadas.
Ejemplo:
EXTERNAL_LINKS-blog.openalfa.com-20150213-154247.csv
1 2 3 4 5 6 7 |
Domains,Links,Linked pages blogspot.com,18,7 wordpress.com,17,5 tumblr.com,11,1 ... |
En este ejemplo, en el primer registro vemos que hay 18 enlaces encontrados en páginas de blogspot.com, apuntando a 7 páginas distintas de nuestro sitio.
4.6. LATEST_BACKLINKS
En este informe se relacionan las urls de otros dominios en las que se han encontrado enlaces a páginas del sitio, indicando la fecha en la que fueron descubiertos.
Ejemplo:
LATEST_BACKLINKS-blog.openalfa.com-20150213-154247.csv
1 2 3 4 |
Links,First discovered "http://forumsmysql.helloresource.com/read.php?71,603681,603681,quote=1",2015-02-08 |
Descarga del informe de errores de rastreo
Las primeras versiones de la clase GWTdata permitían también descargar el informe de errores de rastreo del sitio (CRAWL_ERRORS), pero el autor ha movido esta funcionalidad a un script específico, que se puede descargar desde:
https://github.com/eyecatchup/GWT_CrawlErrors-php
Artículos relacionados
—