¡Mejora tu SEO en una hora! Agenda una reunión y lleva tu negocio a los primeros lugares
Un logo circular que representa el diseño web y la optimización SEO
ALPRADO
Haciendo una investigación de palabras clave para SEO con Python

Investigación de Palabras Clave para SEO con Python y Gemini

Toda estrategia de posicionamiento comienza con una investigación de palabras clave y aunque existen numerosas herramientas todas tienen una grave desventaja: son costosas.

Por suerte podemos utilizar el poder de los nuevos modelos de lenguaje para hacer una investigación exitosa y gratuita.

¿Qué son los modelos de lenguaje?

Un modelo de lenguaje es un sistema que tiene la capacidad de predecir el lenguaje humano mediante el procesamiento de enormes cantidades de texto.

Realmente los modelos de lenguaje no comprenden lo que les decimos, pero gracias al análisis de millones de documentos pueden generar respuestas que parecen ser adecuadas.

Cuando digo que las respuestas generadas «parecen ser adecuadas» me refiero a que los modelos de lenguaje no comprueban lo que dicen, solo generan respuestas que pueden sufrir de «alucinaciones».

Ejemplo de alucinaciones de ChatGPT

Generando una lista de palabras clave de la competencia

Uno de los primeros consejos al hacer una investigación de palabras clave para SEO es mirar lo que esta haciendo la competencia.

Al analizar a nuestros competidores podemos saber que segmentos del mercado nos falta abarcar y nos ayuda a tener un sitio más completo.

Descargando el código HTML

El primer paso es obtener el contenido del sitio web utilizando la librería requests y ultimate-sitemap-parser.

import requests
from bs4 import BeautifulSoup
from usp.tree import sitemap_tree_for_homepage

dominio = "https://amigurumis.com.mx/"

for page in sitemap_tree_for_homepage(dominio).all_pages():

    response = requests.get(page.url)

El script anterior carga el sitemap del sitio que vamos a analizar y nos devuelve la URL de todas las páginas que contiene.

Después utiliza el método requests.get para descargar el código HTML de cada página.

Usando BeautifulSoup para aislar el texto

Ahora que tenemos el código HTML vamos a utilizar BeautifulSoup para obtener solo el texto que consideramos parte importante de nuestra investigación.

¿Y que contenido es importante? Sin revisar la estructura de la página es una pregunta difícil de responder pero podemos utilizar solo los encabezados (H1, H2, H3 ,H4 ,H5 ,H6) y los párrafos (P) para comenzar a generar la lista de palabras clave.

import requests
from bs4 import BeautifulSoup
from usp.tree import sitemap_tree_for_homepage

dominio = "https://amigurumis.com.mx/"

for page in sitemap_tree_for_homepage(dominio).all_pages():

    response = requests.get(page.url)
    soup = BeautifulSoup(response.content, 'html.parser')
    contenido = map(lambda t: t.text.strip().lower(), soup.select("h1, h2, h3, h4, h5, h6, p"))

El metodo soup.select nos devuelve una lista con los elementos HTML que BeautifulSoup pudo encontrar en el documento, después utilizamos la función map para obtener una lista con cadenas de texto en minúsculas y sin espacios en los extremos.

Generando las palabras clave SEO con Gemini 1.5 Flash

El último paso consiste en utilizar el paquete oficial google.generativeai para utilizar el modelo Gemini 1.5 Flash.

Para poder utilizarlo vas a necesitar una llave, pero no es un problema, puedes generarla desde el sitio de Google AI Studio de manera gratuita.

La versión final del script se ve así:

import requests, json, time
import google.generativeai as genai
from bs4 import BeautifulSoup
from usp.tree import sitemap_tree_for_homepage

dominio = "https://amigurumis.com.mx/"

prompt = "Actua como un experto en SEO y utiliza este contenido para crear una lista de palabras clave (intenta usar palabras longtail), despues almacenalas en un arreglo que se llame 'palabras': "
genai.configure(api_key="TU_LLAVE")
model = genai.GenerativeModel('gemini-1.5-flash', generation_config={"response_mime_type": "application/json"})

for page in sitemap_tree_for_homepage(dominio).all_pages():

    response = requests.get(page.url)
    soup = BeautifulSoup(response.content, 'html.parser')
    c = map(lambda t: t.text.strip().lower(), soup.select("h1, h2, h3, p"))

    response = json.loads(model.generate_content(prompt + "\n".join(c)).text)

    for keyword in response["palabras"]:
        print(keyword)

    time.sleep(5)

Una vez que ejecutes el script vas a obtener un enorme listado de palabras clave generadas por Gemini Flash 1.5 a partir del contenido del sitio.

Comprobando el volumen de búsqueda

Después de generar una pequeña lista de palabras utilizando el contenido de amigurumis.com.mx voy a comprobar el volumen de busquedas utilizando Keyword Planner.

Estos son algunos ejemplos de los resultados que obtuve.

Palabra claveVolumen de búsqueda
Amigurumis Personalizados100 a 1 K
Cajas de Regalo originales100 a 1 K
cajas de regalo creativas100 a 1 K
amigurumis animales 100 a 1 K
tejidos a dos agujas100 a 1 K
patrones gratuitos de amigurumis100 a 1 K
amigurumis faciles para principiantes10 a 100
amigurumis para regalar10 a 100
amigurumis kawai10 a 100
amigurumis personajes10 a 100

No es necesario utilizar Keyword Planner, pero a diferencia de otras herramientas importar el conjunto de palabras es completamente gratuito.

Consultando el volumen de búsqueda con Keyword Planner

Algunas mejoras

El script es funcional, pero tambien seria interesante implementar estas funciones:

  • Consultor automaticamente el volumen de busqueda
  • Exportar a CSV
  • Comprobar si la palabra ya se uso en el sitio
  • Calificar la calidad del contenido

¿Tienes problemas con el SEO de tu sitio?

Me encuentro disponible para trabajar en tu sitio web y llevarlo a los primeros resultados de Google. Si ya estas trabajando con una Agencia podría interesarte mi servicio de SEO en 1 hora para evaluar los resultados de tu equipo actual.