Extraer datos SEO de Google Search Console utilizando Python

python google search console

Cuando comienzas en el mundo del SEO, hacer una auditoría no es nada sencillo. Pero ya una vez lo dominas, intentas profundizar en alguna otra área para poder enriquecerte como profesional. 

La utilización de las ciencias de la computación es una de ellas y, a cierto nivel, se vuelven imprescindibles para realizar tareas complejas eficientemente.

La idea de hoy es que aprendas a utilizar la API de Google Search Console y Python para sacarle todo el partido que te imagines.

Ahora bien, si vos aún no sabes nada de programación, no te preocupes porque te daré algunos consejos para empezar y luego de saber lo básico de Python podrás hacer estas tareas.

Este artículo está dividido en 2:

  • Lo que necesitamos para extraer data desde Google Search Console (requisitos)
  • Diferentes ejemplos de lo que podemos hacer con este tutorial

¿Qué es una API?

La definición dice: “API (Application Programming Interface) es español significa Interfaz de Programación de Aplicaciones que es un conjunto de reglas y herramientas que permite la comunicación entre sistemas de software”.

En criollo esto significa que es una manera de que nuestro programa se pueda comunicar con otro programa. Es un intermediario entre 2 puntos (por ejemplo: nuestro programa y google search console).

A las reglas para comunicarnos las establece ese otro software. Nos dice qué debemos solicitar si queremos determinada información y qué cosas podemos hacer con ella utilizando algunas funciones (herramientas) que vienen establecidas. Por ejemplo: en este caso, podremos filtrar información (la marca) para extraer solamente la data que queremos.

El cómo accedemos es algo relativamente global, dependiendo ya más del lenguaje de programación que estamos utilizando que otra cosa. Espero haber traducido bien para personas no técnicas esta definición. Y si te cuesta entenderlo porque te parece algo abstracto, no te preocupes porque lo es.

Requisitos

Este paso te tomará aproximadamente 10-20 minutos.

Estos son los requisitos para poder completar los ejercicios aquí mencionados:

  • Nociones mínimas de python
  • Python, pip y search console instalados en tu ordenador
  • Cuenta de Google Cloud Platform (tiene que ser la misma que Google Search Console)

Si no tienes idea de programación y/o Python, te super recomiendo que te mires algún curso de YouTube sobre este lenguaje de programación. Con saber lo básico podrás hacer estos ejercicios. Este que te dejo aquí es un buen ejemplo. Demora solo 3 hs 15 min y va directo al grano.

Adicionalmente, tendrás que usar un editor de texto para programación. El que te recomiendo es Visual Studio Code. Estoy seguro que si te esfuerzas a pesar de lo difícil que podrías pensar que es, vas a lograr hacer los ejercicios aquí descritos y con el tiempo muchas cosas más.

Pero antes de irte, si no sabes nada de programación y python, puedes saltearte la sección de requisitos e ir directamente a Extraer las palabras claves. Ahí explico para todos los públicos lo que está haciendo nuestro programa y también en todos los pasos posteriores.

Si sabes algo ya de Python, vamos a la siguiente sección entonces.

Habilitar la API de Google Search Console en Google Cloud Platform

Parece un trabalenguas, pero no lo es. Debes habilitar la API de Google Search Console para poder comunicarte con ella. Esto se hace dentro de Google Cloud Platform.

Una vez creaste una cuenta en Google Cloud Platform (debe ser con la misma cuenta que tenés en Google Search Console) y creaste un proyecto con cualquier nombre, debes ir al menú de la izquierda e ir a la opción APIs y Servicios (o APIs & Services si lo tenés en inglés). Luego clic en Biblioteca y en el buscador escribís google search console. Te aparecerá la única opción llamada Google Search Console API. Clic en ella y habilitar. 

Una vez hecho esto, nos vamos a la opción Credenciales del menú a la izquierda. Cliqueamos en la opción Crear Credenciales > ID de cliente 0Auth > Tipo de Aplicación: App de escritorio. El nombre de la aplicación ingresá el que vos quieras. Como es para extraer info desde Google Search Console, yo usaré gsc para identificar esto, la llamaré gsc-reportes.

Cuando terminamos esto, debemos descargarnos el archivo client_secret_[…].json. Para hacer eso, volvemos a hacer clic en Credenciales y ahora debajo de ID de Clientes 0Auth 2.0 veremos nuestra aplicación. A la derecha, debajo de la columna Acciones, podremos descargar dicho archivo. Una vez descargado, lo renombraremos por client_secret.json.

Instalar Search Console wrapper

Un paso adicional y simple es instalar el wrapper de Search Console. Esta herramienta la creó Josh Carty para facilitarnos la comunicación entre nuestro programa y Google Search Console.

Para hacerlo, vamos a este link y seguimos los pasos para instalarlo mediante pip. Simplemente escribimos en la terminal:

pip install git+https://github.com/joshcarty/google-searchconsole

Ahora prepararemos el programa, esto no nos toma más de 5 minutos.

Preparar el programa

En 5 minutos preparamos todo:

  • Creamos una carpeta (en el escritorio, si quieres) llamada gsc-extraer_info. El nombre puede ser cualquier otro, es solo para que no pierdas tiempo pensando en algo trivial.
  • Copiamos el archivo client_secret.json y lo pegamos en dicha carpeta.
  • Abrimos la carpeta en el Visual Studio Code.
  • Creamos un archivo en Archivo > Nuevo archivo >  le indicamos el nombre main.py y guardamos.

Ahora pegamos esto al inicio del programa y guardamos en Editar > Guardar o presionamos CTRL/CMD + S.

Extraer las palabras claves

Ahora haremos una serie de ejemplos, pero solamente extrayendo las palabras claves.

No quiero poner contenido de relleno acá, así que vámonos al barro.

Extraer solo los datos del último mes.

Para lograr esto, debemos escribir en el archivo main.py lo siguiente:

import searchconsole as sc
import pandas as pd

# Iniciamos sesion con GSC (no te olvides de guardar los archivos en la misma carpeta)
account = sc.authenticate(client_config ='client_secret.json', credentials ='credentials.json')

# Inserte el cliente, la marca y la propiedad.
# Esto lo hacemos para poder usar el script de manera dinámica.
client = input('Escribe el nombre del cliente: ')
brand = input('Escribe el nombre de la marca: ')
client_property = input('Escribe el nombre de la propiedad en GSC (exacta): ')

# Nos conectamos a la propiedad de GSC que indicamos.
# Recuerda que debe ser exacta.
webproperty = account[client_property]

# Obtener la información desde GSC
exportGSC = webproperty.query.range(
    f'2023-02-01', f'2023-02-28').dimension('query').get()

exportReport = pd.DataFrame(data=exportGSC)

exportReport.to_csv(f'./2023_02_{client}', index=False)

Dicho programa hace:

  • Líneas 1 y 2: importa los paquetes necesarios.
  • Línea 5: inicia sesión en nuestra cuenta de Google Cloud Console
  • Línea 9, 10 y 11: ingresamos el nombre del cliente, la marca y la propiedad exactamente como está en Google Search console
    • Cliente porque podemos hacer cosas dinámicas como exportar el archivo con del nombre cliente
    • Marca porque más adelante filtraremos tráfico non-brand
    • Propiedad: la necesitamos para decirle a GSC cuál es la web que queremos obtener dicha información
  • Línea 15: establecemos la propiedad que queremos acceder
  • Línea 18: obtenemos los datos deseados.
    • En este caso, con la función range le decimos la fecha inicial y final de los datos.
    • Con la función dimensión (obligatoria), le decimos a GSC qué tipo de dato queremos extraer
    • Y la función get finalmente hace la petición con los dos parámetros anteriores
  • Línea 23: guardamos la información en un tipo de archivo que es como un csv virtual en python.
  • Línea 25: exportamos la información a un archivo .csv con el nombre: año_mes-cliente.csv.

Para correr esto, si no sabes nada de python, en el menú superior click en Ejecutar (Run) > Ejecutar sin depuración (Run without debugging).

Te pedirá que ingreses el cliente, la marca y la propiedad en la terminal, similar a como me aparece a mi (no te fijes en los colores ni los estilos, es personalizable):

En rojo ves que solicita que inicies sesión en tu cuenta de Google Cloud Console y en verde la información del cliente. Luego, tendrás la información en un archivo nuevo del tipo .csv. Puede ser que demore unos segundos hasta que el programa termine. Te darás cuenta que terminó porque el archivo ya aparece alli en la barra izquierda donde aparecen todos los archivos del proyecto dentro de Visual Studio Code.

Ahora, tendremos un csv con las consultas del último mes. Así:

Yo mostré solo 10 filas, pero hay +30k porque es un cliente grande para lo que es Uruguay.

Bien, ahora haremos algo un poco más divertido.

Extraer solamente el tráfico non-brand

El tráfico non-brand sabemos que es extremadamente importante ya que es una de las mejores maneras de medir el impacto que nuestra estrategia SEO está teniendo. Por lo tanto, obtener esta información es muy valiosa para nosotros.

Para hacer esto, simplemente en la línea 19, luego que termina el paréntesis de .dimension(), agregamos este texto:

.filter(‘query’, marca, ‘not-contains’)

# Obtener la información desde GSC
exportGSC = webproperty.query.range(
    f'2023-02-01', f'2023-02-28').dimension('query').filter(
        'query', brand, 'not-contains').get()

Lo ejecutamos de la misma manera: en el menú superior click en Ejecutar (Run) > Ejecutar sin depuración (Run without debugging). De nuevo te pedirá loguearte y tendrás la información en el mismo archivo. Si lo quieres con diferente nombre, solamente agregale non_brand antes del .csv en la línea 24.

Si quieres, en la línea 23, puedes cambiar el nombre del archivo, así:

exportReport.to_csv(f'./2023_02_{client}_non-brand-keywords.csv', index=False)

Esto, nos permitirá tener un archivo diferente:

Extraer solamente las queries de páginas dentro de un mismo directorio

Para hacer esto, en la línea 19 cambiamos el filtro de query a page, en donde dice marca pondremos el directorio (en este caso usare /dormitorio/, y en vez de not-contains usaremos contains.

# Obtener la información desde GSC
exportGSC = webproperty.query.range(
    f'2023-02-01', f'2023-02-28').dimension('query').filter(
        'page', '/impresoras-y-cartuchos/', 'contains').get()

Ahora, tendremos solamente las queries que han generado todas las páginas bajo el directorio /impresoras-y-cartuchos/. También podemos agregar un segundo filtro para quitar las keywords de marca y tener un análisis mucho más profundo. Así:

# Obtener la información desde GSC
exportGSC = webproperty.query.range(
    f'2023-02-01', f'2023-02-28').dimension('query').filter(
        'page', '/impresoras-y-cartuchos/', 'contains').filter(
            'query', brand, 'not-contains').get()

Ahora tendremos información super valiosa, que no podríamos encontrar en el dashboard de Google Search Console y que podríamos automatizar:

Extraer info de las páginas

Ahora haremos un ejemplo de la info que podremos obtener usando como dimensión secundaria las páginas. Lo que obtendremos será algo extremadamente útil: las keywords que cada url está generando.

Para eso, solamente agregaremos ‘page’ a la función .dimension(), después de ‘query’. Quedaría así:

# Obtener la información desde GSC
exportGSC = webproperty.query.range(
    f'2023-02-01', f'2023-02-28').dimension('query', 'page').filter(
        'page', '/impresoras-y-cartuchos/', 'contains').filter(
            'query', brand, 'not-contains').get()

Y ahora no solo obtendremos las queries, sino las URLs asociadas a esas keywords:

¿Qué podemos hacer con esto?

  • Detectar canibalizaciones
  • Detectar contenido duplicado
  • Variantes de keywords para utilizar en las páginas (muy valioso para landing pages y blog post)
  • Saber el rendimiento de cada una de las páginas (haciendo otros cálculos)

Conclusión

Espero que te haya sido de utilidad. También espero haberme explicado lo mejor posible para que si no tenés mucha experiencia con la programación, puedas hacerlo con unas cuantas horas de aprender python y otros tutoriales que necesites.

Cualquier feedback es bienvenido. Así que siéntete libre de comentar ya sea en nuestro blog como en las redes sociales donde hemos publicado este artículo.

Sabemos que todo esto del mundo SEO es complejo, por eso, si necesitas ayuda profesional para mejorar estos aspectos tan importantes para un web, aprovechá que estás acá y ¡contactanos!

Picture of Martin Arzuaga

Martin Arzuaga

SEO Manager en dahseo - SEO Specialist y docente con +7 años de experiencia. Estratega, Técnico y Pythonista.
Compartir este artículo