SEO y Python: Detección de oportunidades en Google Search Console

SEO
seo python gsc

Como especialistas en SEO, sabemos que la optimización no se trata solo de encontrar palabras clave, sino de detectar oportunidades que impulsen el rendimiento de un sitio web. Con Google Search Console (GSC) y Python, podemos identificar áreas de mejora, optimizar contenido y asegurarnos de que nuestras páginas aprovechan al máximo su potencial en los resultados de búsqueda.

En este artículo, aprenderás paso a paso cómo crear y ejecutar un script en tu máquina local, utilizando un entorno virtual para gestionar dependencias, y cómo conectar con la API de GSC para extraer datos, analizarlos y detectar oportunidades de optimización SEO.


Parte 1: Configuración del Entorno Local

Antes de crear el script, es importante preparar nuestro entorno de desarrollo.

1.1. Requisitos Previos

  • Python instalado: Asegúrate de tener instalada la versión 3.7 o superior.
  • Acceso a Google Cloud Console: Para generar las credenciales de la API de Google Search Console.

1.2. Crear el Proyecto y el Entorno Virtual

  • Crea una carpeta para el proyecto.
    Abre tu terminal (donde verás el cursor parpadeando, listo para recibir comandos) y ejecuta:
mkdir seo_gsc_project 
cd seo_gsc_project
  • Crea un entorno virtual.
    Esto te ayudará a aislar las dependencias del proyecto. Ejecuta:
python -m venv env
  • Activa el entorno virtual.
    • En Linux/macOS
  • source env/bin/activate
    • En Windows:
env\Scripts\activate
  • Verás que el prompt de la terminal cambia para indicar que estás dentro del entorno virtual (por ejemplo, (env) aparecerá al inicio).

1.3. Instalar las Bibliotecas Necesarias

Con el entorno activado, instala las dependencias ejecutando:

pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client pandas numpy matplotlib seaborn

Parte 2: Configuración de la API de Google Search Console

2.1. Habilitar la API de GSC y Obtener Credenciales

  1. Accede a Google Cloud Console.
    Ve a Google Cloud Console.
  2. Crea un nuevo proyecto y habilita la API de Search Console.
  3. Genera credenciales de Cuenta de Servicio:
    • En la sección “APIs y Servicios > Credenciales”, crea una nueva cuenta de servicio.
    • Descarga el archivo JSON con las credenciales y guárdalo en la carpeta del proyecto, por ejemplo, con el nombre credenciales.json.

Parte 3: Creación del Script en Local

Ahora crearemos el script seo_script.py que realizará la conexión a la API, extraerá y analizará los datos.

3.1. Crear el Archivo del Script

En la carpeta del proyecto, crea un archivo llamado seo_script.py y pega el siguiente código:

# seo_script.py
from googleapiclient.discovery import build
from google.oauth2 import service_account
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 1. Autenticación con Google Search Console API
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SERVICE_ACCOUNT_FILE = 'credenciales.json'  # Asegúrate de que la ruta sea correcta

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# Construir la conexión con GSC
service = build('webmasters', 'v3', credentials=credentials)

# 2. Obtener lista de sitios asociados a la cuenta
site_list = service.sites().list().execute()
print("Sitios asociados a la cuenta:")
print(site_list)

# 3. Definir parámetros para extraer datos de rendimiento SEO
site_url = 'https://www.tudominio.com/'  # Reemplaza con el dominio verificado en GSC
query = {
    'startDate': '2024-01-01',
    'endDate': '2024-01-31',
    'dimensions': ['query'],
    'rowLimit': 1000
}

# Ejecutar consulta a la API
response = service.searchanalytics().query(siteUrl=site_url, body=query).execute()

# Comprobar si se han obtenido resultados
if 'rows' not in response:
    print("No se han encontrado datos para el periodo especificado.")
    exit()

# 4. Convertir resultados a DataFrame
seo_data = pd.DataFrame(response['rows'])
seo_data.columns = ['query', 'clicks', 'impressions', 'ctr', 'position']
print("Primeros datos extraídos:")
print(seo_data.head())

# 5. Identificar oportunidades SEO
# Buscamos consultas con alta impresión, bajo CTR y posición media mejorable
imp_threshold = 500   # Impresiones mínimas
ctr_threshold = 0.02  # CTR menor al 2%
position_threshold = 6  # Posición media superior a 6

seo_opportunities = seo_data[
    (seo_data['impressions'] > imp_threshold) &
    (seo_data['ctr'] < ctr_threshold) &
    (seo_data['position'] > position_threshold)
]

print("\nOportunidades de optimización SEO detectadas:")
print(seo_opportunities)

# 6. Visualización de Datos
plt.figure(figsize=(10, 6))
sns.scatterplot(
    data=seo_opportunities,
    x='position',
    y='impressions',
    size='ctr',
    hue='ctr',
    palette='coolwarm',
    alpha=0.7
)
plt.xlabel('Posición en Google')
plt.ylabel('Impresiones')
plt.title('Oportunidades de Optimización SEO')
plt.show()

3.2. Explicación del Script

  1. Autenticación y Conexión a la API:
    • Se importa la librería necesaria para conectarse a la API de GSC.
    • Se carga el archivo credenciales.json y se establece la conexión.
  2. Extracción de Datos:
    • Se define el dominio a analizar y los parámetros de consulta (fechas, dimensiones y límite de filas).
    • Se ejecuta la consulta a la API y se transforma la respuesta en un DataFrame de pandas.
  3. Filtrado de Oportunidades:
    • Se aplican filtros para identificar aquellas consultas que tienen un gran número de impresiones pero un CTR bajo y una posición media mejorable.
  4. Visualización:
    • Se utiliza Seaborn y Matplotlib para representar las oportunidades detectadas en un gráfico de dispersión.

Parte 4: Ejecución del Script en Local

Con el entorno virtual activado y el script creado, sigue estos pasos:

  1. Verifica que estás en la carpeta del proyecto (donde se encuentra seo_script.py y credenciales.json).
  2. Ejecuta el script:
python seo_script.py 

Observa cómo en la terminal (con el cursor listo para registrar la salida) se imprimen la lista de sitios asociados, los primeros datos extraídos y las oportunidades SEO identificadas. Además, se abrirá una ventana con el gráfico de visualización.


Conclusión

Con este procedimiento has aprendido a:

  • Configurar un entorno virtual para aislar las dependencias de tu proyecto.
  • Conectar Python con la API de Google Search Console utilizando credenciales de cuenta de servicio.
  • Extraer y analizar datos clave de SEO.
  • Identificar oportunidades de mejora y visualizarlas de manera gráfica.

Este flujo de trabajo te permitirá detectar de forma automatizada áreas de mejora en el rendimiento SEO de tus sitios web. Ahora, ¡estás listo para ejecutar y adaptar el script según tus necesidades!

Un extra

Te comparto un prompt que te permitirá crear un script como el anterior, puedes iterar mejoras sobre él propio prompt hasta conseguir el resultado que necesites:

Eres un experto en desarrollo en Python, SEO y seguridad en aplicaciones. Necesito que generes un script en Python que cumpla los siguientes objetivos, siguiendo las mejores prácticas de eficiencia y seguridad:

1. **Conexión Segura a la API de Google Search Console:**
   - El script debe conectarse a la API de Google Search Console utilizando credenciales de una Cuenta de Servicio.
   - Las credenciales deben cargarse de forma segura, por ejemplo, leyendo la ruta al archivo JSON desde una variable de entorno (no incrustar la ruta de forma fija en el código).
   - El ámbito de la API debe ser `'https://www.googleapis.com/auth/webmasters.readonly'`.

2. **Extracción de Datos SEO:**
   - Conectarse a la API y obtener la lista de sitios asociados a la cuenta.
   - Seleccionar un dominio verificado (configurable en una variable) para extraer datos de rendimiento.
   - Extraer datos de rendimiento SEO de un periodo específico (por ejemplo, del 2024-01-01 al 2024-01-31) y recuperar las dimensiones necesarias (al menos la consulta o 'query') y métricas como clicks, impresiones, CTR y posición.

3. **Procesamiento y Análisis de Datos:**
   - Convertir la respuesta de la API en un DataFrame de Pandas.
   - Asegurarse de que el DataFrame contenga columnas claras (por ejemplo, 'query', 'clicks', 'impressions', 'ctr', 'position').
   - Implementar un filtrado que identifique oportunidades SEO basadas en umbrales definidos:
     - Impresiones mayores a 500.
     - CTR menor al 2% (0.02).
     - Posición media mayor a 6.
   - Manejar de forma segura el caso en que no se encuentren datos para el periodo especificado, mostrando un mensaje adecuado y terminando la ejecución sin errores.

4. **Visualización de Datos:**
   - Utilizar Matplotlib y Seaborn para crear un gráfico de dispersión (scatter plot) que muestre las oportunidades SEO detectadas.
   - El eje X debe representar la posición en Google, el eje Y las impresiones, y se debe usar la métrica CTR para definir el tamaño y el color de los puntos.
   - Incluir títulos y etiquetas claras en el gráfico.

5. **Buenas Prácticas y Manejo de Errores:**
   - Incluir comentarios en el código que expliquen cada sección y paso.
   - Utilizar un manejo de excepciones para detectar y reportar errores en la conexión con la API o en la consulta de datos.
   - Asegurarse de que el script es modular y legible.

6. **Configuración del Entorno Virtual en Local:**
   - Incluir en el script o en la documentación instrucciones detalladas sobre cómo crear un entorno virtual (por ejemplo, usando `python -m venv env`), activarlo y cómo instalar todas las dependencias necesarias (por ejemplo, `google-auth`, `google-api-python-client`, `pandas`, `numpy`, `matplotlib` y `seaborn`).

7. **Ejecución del Script:**
   - Incluir al final del script una sección que permita ejecutar el proceso completo (conectar, extraer, analizar y visualizar) al correr el script desde la línea de comandos.

Genera el script completo en Python siguiendo estas instrucciones, asegurándote de que sea eficiente, seguro y bien comentado, para que cualquier usuario pueda entender y utilizar el código en un entorno local.
Daniel Pajuelo
Daniel Pajuelo es ingeniero informático y SEO Senior, actualmente trabajando en Guruwalk e impartiendo clases en BIG School (antes BIGSEO Academy). Ver más
Categorías SEO

Continua leyendo

Detección de oportunidades SEO usando Google Trends y Python

En este artículo, te mostraré cómo utilizar Google Trends con Python para analizar tendencias de búsqueda, extraer insights valiosos y mejorar tu posicionamiento en buscadores de manera efectiva.

Por qué posicionar en Bing debería estar en tu estrategia SEO en la era ChatGPT

El universo de la búsqueda web ha dado la bienvenida a un nuevo competidor: ChatGPT, ... Leer más

ChatGPT y Claude no renderizan JS aún

1. AI Crawlers y JavaScript • Los AI crawlers no renderizan JavaScript aún: Los crawlers ... Leer más