Skip to content

seo-agent

Mundo para hacer SEO.

Ver AGENTS.md para contexto completo, TASKS.md para el backlog y CLAUDE.md para las convenciones heredadas del universo.

Plugin claude-seo (v2.2.4) instalado local en .claude/skills/ (no global). 25 sub-skills, 18 sub-agents. Invocar con /seo <subcomando>.

Comando Uso
/seo audit <url> Auditoría completa del sitio, subagentes en paralelo
/seo page <url> Análisis profundo de una sola página
/seo technical <url> SEO técnico en 9 categorías
/seo content <url> E-E-A-T y calidad de contenido
/seo content-brief <topic> Brief de contenido: keywords, outline, links internos
/seo schema <url> Detección, validación y generación de schema markup
/seo sitemap <url> Validación de sitemap
/seo sitemap generate Crear sitemap nuevo con templates por industria
/seo images <url> Optimización de imágenes
/seo geo <url> Optimización para AI search (GEO)
/seo local <url> SEO local (GBP, citations, reviews)
/seo maps [command] Inteligencia de mapas (geo-grid, GBP audit, competidores)
/seo backlinks <url> Análisis de perfil de backlinks
/seo cluster <seed> Clustering semántico basado en SERP
/seo sxo <url> Search Experience Optimization
/seo drift baseline|compare|history <url> Monitoreo de drift SEO
/seo ecommerce <url> SEO de e-commerce
/seo hreflang [url] Hreflang y SEO internacional
/seo plan <type> Planificación estratégica por industria
/seo programmatic [url|plan] SEO programático
/seo competitor-pages [url|generate] Páginas de comparación con competidores
/seo flow [stage] [url|topic] Prompts del framework FLOW
/seo google [command] [url] APIs de Google (GSC, PSI, CrUX, GA4)
/seo dataforseo [command] Datos SEO en vivo (extensión)
/seo image-gen [use-case] <desc> Generación de imágenes con IA (extensión)
/seo firecrawl [command] <url> Crawling de sitio completo (extensión)
/seo ahrefs [command] <url> Backlinks, keywords orgánicas y contenido vía Ahrefs MCP (extensión)
/seo seranking [command] Share-of-voice en ChatGPT, Gemini, Perplexity, AI Overviews (extensión)
/seo profound [command] Tracking de citaciones LLM con series temporales (extensión)
/seo bing [command] <url> Bing Webmaster Tools + IndexNow (extensión)
/seo unlighthouse <url> Lighthouse multi-página, corre local (extensión)

Fuente: claude-seo/CLAUDE.md.

MCP opcionales (GSC, PageSpeed) — no requeridos, los scripts propios ya pegan directo a las APIs de Google: docs/MCP-INTEGRATION.md.

  • SEO clásico: rankear en el listado azul de resultados.
  • AEO (Answer Engine Optimization): ser LA respuesta directa — featured snippets, People Also Ask, voice assistants, posición cero. Nació con Siri/Alexa/Google Assistant, antes de los LLMs conversacionales.
  • GEO (Generative Engine Optimization): ser citado dentro de una respuesta generada por un LLM (ChatGPT, Perplexity, Claude, AI Overviews).
  • Agent Readiness (concepto de isitagentready.com, cuarto/quinto pilar, no confundir con los anteriores): qué tan operable es un sitio para un agente de IA que actúa (compra, se autentica, llama una herramienta expuesta), no que solo responde preguntas. Evalúa 5 categorías: Discoverability, Content Accessibility (negociación Markdown vía Accept: text/markdown), Bot Access Control, Protocol Discovery (MCP, Agent Skills, WebMCP, Auth.md), Commerce (x402, MPP, UCP, ACP). Categoría emergente (protocolos de 2024-2026, sin adopción masiva) — tratar como radar de tendencia, no checklist urgente. Discoverability y Bot Access Control ya cubiertos por seo-technical/seo-sitemap/seo-geo; Content Accessibility, Protocol Discovery y Commerce son gap real pero sin caso de uso en este world todavía (ningún target audita tiene API/MCP propio ni comercio agéntico) — no construir skill nuevo hasta que aparezca un target real que lo necesite (YAGNI).

En la práctica SEO/AEO/GEO se solapan mucho (contenido citable, respuestas directas, autoridad); gran parte de AEO ya vivía en este world bajo el nombre “GEO” antes de las novedades de abajo.

Resuelto:

  • /seo speakable <url> — sub-skill/agente propio del world (no toca el plugin vendored), detecta y genera SpeakableSpecification (Schema.org) para voice assistants (Google Assistant/Alexa), audita formato “featured-snippet-ready” (heading-pregunta + respuesta de 40-60 palabras, listas/tablas). Hookeado en dispatch de /seo audit.
  • AI Overview de Google en texto — /seo dataforseo serp y /seo geo ya traen el bloque ai_overview (texto completo + fuentes citadas) vía serp_organic_live_advanced. Sin screenshot: Google prohíbe capturar su SERP automatizado.
  • /seo content-brief fuerza formato pregunta→respuesta directa en las secciones marcadas como target de featured snippet (“FS target”), referencia cruzada a seo-speakable.

Score de “AI Search Readiness” queda fragmentado a propósito entre seo-geo/seo-speakable/seo-profound/seo-seranking — decisión explícita del usuario, no unificar.

Riesgo conocido: seo-geo/seo-schema/etc. son plugin vendored de terceros (AgriciDaniel, v2.2.4) trackeado en git — cualquier edición directa a esos archivos diverge de futuras actualizaciones del plugin upstream. Por eso seo-speakable es sub-skill propio y nuevo, no toca el vendored.

Credenciales Google (/seo google, requerido para GSC/GA4/PSI/CrUX/Indexing)

Section titled “Credenciales Google (/seo google, requerido para GSC/GA4/PSI/CrUX/Indexing)”

Estado actual: sin configurar (~/.config/claude-seo/ no existe).

Guía completa paso a paso, con las 6 APIs a habilitar en Google Cloud Console y el service account: docs/GOOGLE-AUTH-SETUP.md (copia de la referencia propia del skill en .claude/skills/seo-google/references/auth-setup.md — esa se deja intacta, la usa el skill en runtime).

Resumen: API key (PSI/CrUX, gratis) + service account JSON (GSC/GA4/Indexing, gratis) → ~/.config/claude-seo/google-api.json. Verificar con claude-seo run google_auth.py --check.

Limitación clave: solo URL, no lee código

Section titled “Limitación clave: solo URL, no lee código”

claude-seo analiza URLs vivas, no proyectos/código. Todo script pasa por fetch_page.py / render_page.py, que solo aceptan un argumento url — sin soporte para rutas locales ni file://. Además url_safety.py bloquea loopback e IPs privadas a propósito (guard SSRF): no sirve apuntar a localhost. Y el plugin nunca escribe código — solo genera reportes y snippets (JSON-LD, sitemap XML, meta tags sugeridos); los fixes los aplica Claude Code a mano.

Necesitás una URL alcanzable: deploy real, preview (Vercel/Netlify) o un túnel público (ngrok/cloudflared) si el target todavía no está deployado.

Ciclo completo por target, documentado como tareas en TASKS.md (módulo [seo-cycle], cadena secuencial [S]):

  1. Deploy/preview del target (ver limitación arriba).
  2. Auditar — /seo audit <url> (o comando específico) desde este world.
  3. Reportar — output a reports/<world>-<fecha>/, nunca dentro del world objetivo.
  4. Corregir — Claude Code aplica fixes con Edit tool, en rama seo/<slug>-<fecha> dentro del world objetivo. Nunca commit directo a main/master del target.
  5. Verificar — re-deploy/preview + re-audit o /seo drift compare contra el baseline.

.claude/commands/seo-run-on.md (symlink desde _shared/commands/, curado en .claude/commands.manifest.txt) ejecuta claude-seo contra otro world del monorepo sin instalarlo ahí: /seo-run-on <world-name> [comando-seo].

/seo-run-on cnm-cigars audit
/seo-run-on lippia-alba schema
/seo-run-on melloeat content-brief "restaurant ordering app"

Pasos: get_world_context($1) vía MCP orchestrator → resuelve ../$1 → si el subcomando es solo lectura, corre /seo $2 <url-real> (siempre URL, nunca ruta local — misma limitación de arriba) y guarda en reports/$1-<fecha>/; si modifica código (o se pide SEO sin URL desplegada), abre rama seo/$2-<fecha> en el target e invoca el agente seo-specialist (Read/Write/Edit/Grep, sin URL, trabaja directo sobre archivos: meta tags, JSON-LD, sitemap, canonical, CWV), commitea (sin push/merge) y reporta.

Dos vías distintas para SEO en un world, no una sola: /seo (claude-seo, URL-only, nunca edita) para auditar; agente seo-specialist (local, Edit) para implementar. El comando /seo-run-on ya rutea entre ambas.

/seo-run-on <world-name> [comando-seo]
  • <world-name>: carpeta hermana en worlds/ (ej. cnm-cigars), sin ruta.
  • [comando-seo]: subcomando de /seo (default audit) si es de solo lectura, o sitemap generate/similar si modifica código.

Solo lectura (audit, technical, content, schema, geo, backlinks, sitemap, images, competitor-pages, local, hreflang, cluster, sxo, drift, ecommerce) → necesita el target ya desplegado (prod/preview/túnel). Sin URL viva, el comando avisa y no corre — no inventa ruta local.

Modifica código, o se pide SEO sin deploy (proyecto desde 0) → no necesita URL. Abre rama, corre seo-specialist sobre ../<world-name>, commitea local (nunca push/merge automático).

Prerrequisitos:

  • MCP orchestrator conectado, para get_world_context (paso 2). Si no está disponible, el comando degrada solo — lee CLAUDE.md/CONVENTIONS.md/ TASKS.md del target directo, no aborta.
  • Opcional: si el target ya corrió graphify update . (existe graphify-out/graph.json ahí), seo-specialist lo consulta antes de editar para ubicar <head>, sitemap generator, layout compartido — mejor puntería que grep a ciegas. No es requisito.

Fuente completa de los pasos: .claude/commands/seo-run-on.md.