# Seo Drift > Monitoreo de deriva SEO: captura líneas base de elementos críticos, detecta cambios y sigue regresiones en el tiempo. Como git para tu SEO. Úsalo para 'baseline', 'track changes' o 'SEO regression'. Fuente: https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-drift Markdown: https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-drift.md Repositorio: https://github.com/AgriciDaniel/claude-seo Autor: AgriciDaniel Licencia: MIT Actualizado: el mes pasado Coste de contexto: 91 tok instalada, 1.7k tok al activarse, 3.2k tok con todos los archivos del bundle Bundle: 2 archivos, 12 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent claude-code # Cursor npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent cursor # Codex npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent codex # Gemini CLI npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent gemini # Windsurf npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent windsurf # Cline npx -y skills add AgriciDaniel/claude-seo --skill seo-drift --agent cline ``` ## Qué hace - Captura una línea base de title, meta description, canonical, robots, encabezados, schema, Open Graph y Core Web Vitals de una URL, y la guarda en SQLite local - Compara el estado actual contra la última línea base con 17 reglas en 3 niveles de severidad (crítico, advertencia, info) - Muestra el historial de cambios de una URL y recomienda qué otra skill de claude-seo usar según el tipo de cambio detectado ## Cuándo usarla - El usuario quiere comparar el estado de una página antes/después de un deploy, o pregunta 'did anything break' ## Qué la activa - "Captura la línea base SEO de esta página antes del deploy" - "Compara el estado actual de mi página con la última línea base" ## Antes de instalar - makes network requests ## Archivos - SKILL.md — 7 KB - references/comparison-rules.md — 6 KB ## SKILL.md Reproducido tal cual desde AgriciDaniel/claude-seo bajo MIT. Esta sección es el documento original y está en inglés. # SEO Drift Monitor (April 2026) Git for your SEO. Capture baselines, detect regressions, track changes over time. --- ## Commands | Command | Purpose | |---------|---------| | `/seo drift baseline ` | Capture current SEO state as a "known good" snapshot | | `/seo drift compare ` | Compare current page state to stored baseline | | `/seo drift history ` | Show change history and past comparisons | --- ## What It Captures Every baseline records these SEO-critical elements: | Element | Field | Source | |---------|-------|--------| | Title tag | `title` | `parse_html.py` | | Meta description | `meta_description` | `parse_html.py` | | Canonical URL | `canonical` | `parse_html.py` | | Robots directives | `meta_robots` | `parse_html.py` | | H1 headings | `h1` (array) | `parse_html.py` | | H2 headings | `h2` (array) | `parse_html.py` | | H3 headings | `h3` (array) | `parse_html.py` | | JSON-LD schema | `schema` (array) | `parse_html.py` | | Open Graph tags | `open_graph` (dict) | `parse_html.py` | | Core Web Vitals | `cwv` (dict) | `pagespeed_check.py` | | HTTP status code | `status_code` | `fetch_page.py` | | HTML content hash | `html_hash` (SHA-256) | Computed | | Schema content hash | `schema_hash` (SHA-256) | Computed | --- ## How Comparison Works The comparison engine applies **17 rules across 3 severity levels**. Load `references/comparison-rules.md` for the full rule set with thresholds, recommended actions, and cross-skill references. ### Severity Levels | Level | Meaning | Response Time | |-------|---------|---------------| | **CRITICAL** | SEO-breaking change, likely traffic loss | Immediate | | **WARNING** | Potential impact, needs investigation | Within 1 week | | **INFO** | Awareness only, may be intentional | Review at convenience | --- ## Storage All data is stored locally in SQLite: ``` ~/.cache/claude-seo/drift/baselines.db ``` ### Tables - **baselines**: Captured snapshots with all SEO elements - **comparisons**: Diff results with triggered rules and severities URL normalization ensures consistent matching: lowercase scheme/host, strip default ports (80/443), sort query parameters, remove UTM parameters, strip trailing slashes. --- ## Command: `baseline` Captures the current state of a page and stores it. **Steps:** 1. Validate URL (SSRF protection via `google_auth.validate_url()`) 2. Fetch page via `scripts/fetch_page.py` 3. Parse HTML via `scripts/parse_html.py` 4. Optionally fetch CWV via `scripts/pagespeed_check.py` (use `--skip-cwv` to skip) 5. Hash HTML body and schema content (SHA-256) 6. Store snapshot in SQLite **Execution:** ```bash claude-seo run drift_baseline.py claude-seo run drift_baseline.py --skip-cwv ``` **Output:** JSON with baseline ID, timestamp, URL, and summary of captured elements. --- ## Command: `compare` Fetches the current page state and diffs it against the most recent baseline. **Steps:** 1. Validate URL 2. Load most recent baseline from SQLite (or specific `--baseline-id`) 3. Fetch and parse current page state 4. Run all 17 comparison rules 5. Classify findings by severity 6. Store comparison result 7. Output JSON diff report **Execution:** ```bash claude-seo run drift_compare.py claude-seo run drift_compare.py --baseline-id 5 claude-seo run drift_compare.py --skip-cwv ``` **Output:** JSON with all triggered rules, old/new values, severity, and actions. After comparison, offer to generate an HTML report: ```bash claude-seo run drift_report.py --output drift-report.html ``` --- ## Command: `history` Shows all baselines and comparisons for a URL. **Execution:** ```bash claude-seo run drift_history.py claude-seo run drift_history.py --limit 10 ``` **Output:** JSON array of baselines (newest first) with timestamps and comparison summaries. --- ## Cross-Skill Integration When drift is detected, recommend the appropriate specialized skill: | Finding | Recommendation | |---------|----------------| | Schema removed or modified | Run `/seo schema ` for full validation | | CWV regression | Run `/seo technical ` for performance audit | | Title or meta description changed | Run `/seo page ` for content analysis | | Canonical changed or removed | Run `/seo technical ` for indexability check | | Noindex added | Run `/seo technical ` for crawlability audit | | H1/heading structure changed | Run `/seo content ` for E-E-A-T review | | OG tags removed | Run `/seo page ` for social sharing analysis | | Status code changed to error | Run `/seo technical ` for full diagnostics | --- ## Error Handling | Scenario | Action | |----------|--------| | URL unreachable | Report error from `fetch_page.py`. Do not guess state. Suggest user verify URL. | | No baseline exists for URL | Inform user and suggest running `baseline` first. | | SSRF blocked (private IP) | Report `validate_url()` rejection. Never bypass. | | SQLite database missing | Auto-create on first use. No error. | | CWV fetch fails (no API key) | Store `null` for CWV fields. Skip CWV rules during comparison. | | Page returns 4xx/5xx | Still capture as baseline (status code IS a tracked field). | | Multiple baselines exist | Use most recent unless `--baseline-id` specified. | --- ## Security - **All URL fetching** goes through `scripts/fetch_page.py` which enforces SSRF protection (blocks private IPs, loopback, reserved ranges, GCP metadata endpoints) - **No curl, no subprocess HTTP calls** -- only the project's validated fetch pipeline - **All SQLite queries** use parameterized placeholders (`?`), never string interpolation - **TLS always verified** -- no `verify=False` anywhere in the pipeline --- ## Typical Workflows ### Pre/Post Deployment Check ``` /seo drift baseline https://example.com # Before deploy # ... deploy happens ... /seo drift compare https://example.com # After deploy ``` ### Ongoing Monitoring ``` /seo drift baseline https://example.com # Initial capture # ... weeks later ... /seo drift compare https://example.com # Check for drift /seo drift history https://example.com # Review all changes ``` ### Investigating a Traffic Drop ``` /seo drift compare https://example.com # What changed? /seo drift history https://example.com # When did it change? ``` ## Dónde encaja - Categoría: [SEO y GEO](https://skillsagentes.com/categorias/seo-geo.md) — Keywords, auditorías on-page, datos estructurados y visibilidad en respuestas de IA. - Creador: [AgriciDaniel](https://skillsagentes.com/creators/agricidaniel.md) — 31 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Seo Google](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-google.md): APIs SEO de Google: Search Console, PageSpeed Insights, CrUX con historial de 25 semanas, Indexing API y tráfico orgánico de GA4. Da datos reales de campo para Core Web Vitals, indexación, rendimiento de búsqueda y tráfico. - [Seo Flow](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-flow.md): Integración del framework FLOW: SEO basado en evidencia con el ciclo Find → Leverage → Optimize → Win. Expone 41 prompts de IA por etapa desde la base de conocimiento FLOW (CC BY 4.0). - [Seo Cluster](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-cluster.md): Agrupación semántica de keywords basada en solapamiento real de SERP (no similitud de texto) para planear arquitectura de contenido. Diseña clusters hub-and-spoke con matriz de enlaces internos y genera una visualización interactiva. - [Seo](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo.md): Análisis SEO integral para cualquier sitio: auditorías completas, análisis de una página, SEO técnico (rastreo, indexación, CWV con INP), schema, E-E-A-T, imágenes, sitemaps y GEO para AI Overviews/ChatGPT/Perplexity. - [Seo Audit](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-audit.md): Auditoría SEO completa del sitio con delegación paralela a sub-agentes. Rastrea hasta 500 páginas, detecta el tipo de negocio, delega en hasta 15 especialistas (8 siempre + 7 condicionales) y genera un health score. ## Skills relacionadas - [Seo Firecrawl](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-firecrawl.md): Rastreo, scraping y mapeo de sitio completo vía Firecrawl MCP. Úsalo para 'crawl site', 'map site', 'full crawl', 'find all pages', 'broken links' o 'JS rendering'. - [Seo Seranking](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-seranking.md): Analista de visibilidad en IA con SE Ranking (extensión). Sigue el Share-of-Voice en ChatGPT, Gemini, Perplexity, AI Overviews y AI Mode en una sola consulta. - [Seo Competitor Pages](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-competitor-pages.md): Genera páginas de comparación y alternativas optimizadas para SEO: layouts 'X vs Y', páginas 'alternativas a X', matrices de funciones, schema y optimización de conversión. - [Seo Ecommerce](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-ecommerce.md): Análisis de SEO para e-commerce: visibilidad en Google Shopping, inteligencia de marketplace de Amazon, validación de schema Product, análisis de precios de competidores y brechas de keywords entre orgánico y Shopping. - [Seo Images](https://skillsagentes.com/skills/agricidaniel/claude-seo/seo-images.md): Análisis de optimización de imágenes para SEO y rendimiento: alt text, tamaño de archivo, formato, imágenes responsive, lazy loading, prevención de CLS, ranking en SERP de imágenes y optimización de archivos. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)