En este artículo te mostraré paso a paso cómo utilicé Claude Code (la CLI de inteligencia artificial de Anthropic) para automatizar un flujo completo de SEO: desde la conexión con Google Search Console y la API REST de WordPress, hasta la identificación de palabras clave de oportunidad y la publicación automática de contenido optimizado. Todo desde la terminal, sin tocar un navegador.
Como consultor SEO, siempre busco formas de optimizar procesos y obtener resultados más rápidos. Esta metodología combina inteligencia artificial con datos reales de Google para tomar decisiones basadas en evidencia.
¿Qué son las palabras clave de oportunidad?
Las palabras clave de oportunidad son consultas de búsqueda para las cuales tu sitio web ya tiene visibilidad en Google (impresiones y posicionamiento), pero aún no alcanza su máximo potencial de tráfico o CTR. Son keywords donde Google ya reconoce tu URL, pero su posicionamiento, snippet o contenido aún puede optimizarse para escalar posiciones.
Características principales
- Posiciones entre 5 y 20 en los resultados de búsqueda
- Alto volumen de impresiones con bajo número de clics
- CTR bajo respecto a lo esperado para su posición
- URL no optimizada completamente para esa consulta
- Intención de búsqueda alineada al negocio
El valor estratégico de estas keywords es enorme: permiten generar incrementos rápidos de tráfico orgánico sin crear contenido desde cero, trabajando sobre la autoridad que tu dominio ya tiene. Es una de las técnicas con mayor ROI dentro de cualquier estrategia SEO.
Herramientas utilizadas en este proceso
Para ejecutar todo este flujo automatizado necesitamos tres componentes:
- Claude Code: la interfaz de línea de comandos (CLI) de Anthropic que permite interactuar con el modelo Claude directamente desde la terminal. Puede ejecutar scripts, conectarse a APIs y automatizar tareas complejas.
- Google Search Console API: la API oficial de Google que nos permite extraer datos reales de rendimiento orgánico como clics, impresiones, CTR y posición media por consulta y URL.
- WordPress REST API: la API nativa de WordPress que permite leer, crear y actualizar contenido de forma programática usando autenticación con Application Passwords.
Adicionalmente, se utilizan las librerías de Python: google-auth, google-api-python-client y requests.
Video: proceso completo paso a paso
En este video puedes ver el proceso completo en acción, desde la configuración inicial hasta la publicación automática del contenido optimizado en WordPress:
Paso 1: Configurar la cuenta de servicio de Google Search Console
Lo primero es crear una cuenta de servicio en Google Cloud Console para que Claude Code pueda acceder a los datos de Search Console sin necesidad de autenticación interactiva (OAuth en navegador).
1.1 Crear proyecto en Google Cloud
- Ir a Google Cloud Console
- Crear un nuevo proyecto (ej: “kwroportunidad”)
- Habilitar la Google Search Console API desde la biblioteca de APIs
1.2 Crear cuenta de servicio
- Ir a IAM y administración → Cuentas de servicio
- Crear una nueva cuenta de servicio
- Generar una clave JSON y descargarla (este archivo contiene las credenciales)
El archivo JSON descargado tendrá esta estructura:
{
"type": "service_account",
"project_id": "tu-proyecto",
"private_key_id": "abc123...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "tu-cuenta@tu-proyecto.iam.gserviceaccount.com",
"client_id": "123456789",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token"
}
1.3 Dar acceso en Search Console
- Ir a Google Search Console → Configuración → Usuarios y permisos
- Agregar el client_email de la cuenta de servicio como usuario con permisos de lectura
Paso 2: Configurar las credenciales de WordPress
Para que Claude Code pueda leer y modificar contenido en WordPress, necesitamos configurar una Application Password.
2.1 Generar Application Password
- Ir a wp-admin → Usuarios → Tu perfil
- Bajar hasta la sección “Contraseñas de aplicación”
- Escribir un nombre descriptivo (ej: “Claude Code”) y hacer clic en “Añadir nueva contraseña de aplicación”
- Copiar la contraseña generada (se muestra solo una vez)
2.2 Crear archivo .env
Guardar las credenciales en un archivo .env en tu directorio de trabajo:
Usuario: TuUsuario
Pass: XXXX XXXX XXXX XXXX XXXX XXXX
Importante: nunca subas este archivo a un repositorio público. Agrégalo a tu .gitignore.
Paso 3: Conectar Claude Code con Google Search Console
Con las credenciales listas, le pedimos a Claude Code que se conecte a Google Search Console. El proceso es conversacional: simplemente le indicamos qué hacer.
3.1 Verificar la conexión
Al indicarle a Claude Code que se conecte con los datos del archivo JSON de la cuenta de servicio, este genera y ejecuta automáticamente un script en Python:
from google.oauth2 import service_account
from googleapiclient.discovery import build
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
KEY_FILE = 'tu-archivo-credenciales.json'
credentials = service_account.Credentials.from_service_account_file(
KEY_FILE, scopes=SCOPES
)
service = build('searchconsole', 'v1', credentials=credentials)
# Listar sitios disponibles
sites = service.sites().list().execute()
for site in sites.get('siteEntry', []):
print(f"{site['siteUrl']} - {site['permissionLevel']}")

3.2 Extraer las URLs con más clics
Claude Code consulta automáticamente las URLs ordenadas por clics en los últimos 4 meses:
from datetime import datetime, timedelta
end_date = datetime.now().strftime('%Y-%m-%d')
start_date = (datetime.now() - timedelta(days=120)).strftime('%Y-%m-%d')
request = {
'startDate': start_date,
'endDate': end_date,
'dimensions': ['page'],
'rowLimit': 25
}
response = service.searchanalytics().query(
siteUrl='sc-domain:tudominio.com',
body=request
).execute()

Paso 4: Identificar keywords de oportunidad por URL
Una vez identificada la URL con más potencial, Claude Code extrae las keywords específicas que generan impresiones para esa página:
request = {
'startDate': start_date,
'endDate': end_date,
'dimensions': ['query'],
'dimensionFilterGroups': [{
'filters': [{
'dimension': 'page',
'expression': 'https://tudominio.com/tu-url/',
'operator': 'equals'
}]
}],
'rowLimit': 50
}
response = service.searchanalytics().query(
siteUrl='sc-domain:tudominio.com',
body=request
).execute()
¿Cómo identificar las oportunidades?
Claude Code analiza los datos aplicando estos criterios del framework de priorización:
- Posiciones 5-20: keywords que están cerca de la primera página o en segunda página, con potencial de escalamiento rápido
- Alto volumen de impresiones + bajo CTR: indica que el sitio tiene visibilidad pero el snippet no es competitivo
- Gaps de contenido: keywords que generan impresiones pero no tienen una sección dedicada en el artículo

Por ejemplo, en nuestro caso real detectamos que la keyword “que es un led” tenía 2,755 impresiones pero estaba en posición 6.8 con un CTR de solo 0.2%. Siendo la keyword principal del artículo, debería estar en el top 3.
Paso 5: Conectar con la API REST de WordPress
Claude Code se conecta a WordPress usando la API REST nativa con autenticación Basic Auth (Application Passwords):
5.1 Verificar la conexión
curl -s --user "Usuario:PASS" \
"https://tudominio.com/wp-json/wp/v2/users/me"

5.2 Leer el contenido actual del post
import requests
auth = ("Usuario", "XXXX XXXX XXXX XXXX XXXX XXXX")
url = "https://tudominio.com/wp-json/wp/v2/posts?slug=tu-slug"
response = requests.get(url, auth=auth)
post = response.json()[0]
post_id = post['id']
current_content = post['content']['rendered']
5.3 Analizar la estructura actual
Claude Code extrae automáticamente los encabezados (H2, H3) del artículo para identificar qué temas ya están cubiertos y cuáles faltan:

Paso 6: Generar y publicar contenido optimizado
Con toda la información recopilada (keywords de oportunidad, contenido actual, gaps detectados), Claude Code propone nuevas secciones para agregar al artículo.
6.1 Criterios para las nuevas secciones
Según el framework de keywords de oportunidad, las nuevas secciones deben:
- Responder directamente a las queries detectadas en Search Console
- Incluir la keyword principal y sus variantes en H2, H3 y primeros párrafos
- Ampliar la cobertura semántica sin canibalizar la keyword principal
- Incluir FAQs para capturar featured snippets

6.2 Publicación automática
Una vez aprobado el contenido, Claude Code lo publica directamente en WordPress:
new_sections = "<h2>Nueva sección optimizada</h2><p>Contenido...</p>"
updated_content = current_content + new_sections
response = requests.post(
f"https://tudominio.com/wp-json/wp/v2/posts/{post_id}",
auth=auth,
json={"content": updated_content}
)
if response.status_code == 200:
print("Post actualizado exitosamente")

Flujo completo resumido

Este es el flujo de trabajo completo que ejecutamos con Claude Code desde la terminal:
- Configuración inicial: archivo JSON de cuenta de servicio (GSC) + archivo .env con credenciales de WordPress
- Conexión a GSC: Claude Code se autentica y lista los sitios disponibles
- Análisis de URLs: extrae las páginas con más clics e impresiones de los últimos 4 meses
- Análisis de keywords por URL: identifica las consultas específicas para la URL seleccionada
- Detección de oportunidades: aplica el framework de priorización (posición, impresiones, CTR, gaps)
- Conexión a WordPress: verifica credenciales y obtiene el contenido actual del artículo
- Análisis de contenido: extrae encabezados y detecta gaps temáticos vs keywords
- Generación de contenido: propone nuevas secciones H2/H3 + FAQs optimizadas
- Aprobación humana: muestra la propuesta antes de publicar
- Publicación: actualiza el post vía API REST de WordPress
Ventajas de automatizar el SEO con Claude Code
- Velocidad: todo el proceso (análisis + propuesta + publicación) se ejecuta en minutos, no en horas
- Datos reales: las decisiones se basan en datos directos de Google Search Console, no en estimaciones
- Consistencia: el framework de priorización se aplica de forma sistemática a cada URL
- Control humano: Claude Code siempre muestra la propuesta antes de publicar, manteniendo la supervisión editorial
- Escalabilidad: el mismo flujo se puede replicar para decenas de URLs en una sola sesión
- Sin herramientas de pago: no requiere Ahrefs, SEMrush ni otras herramientas de terceros; usa directamente la fuente oficial
Requisitos técnicos
- Claude Code instalado (
npm install -g @anthropic-ai/claude-code) - Python 3 con las librerías: google-auth, google-api-python-client, requests
- Cuenta de servicio de Google Cloud con acceso a Search Console API
- WordPress con Application Passwords habilitado (incluido por defecto desde WordPress 5.6)
