SEO Drift Monitor
Protect your SEO work from being broken by page changes. Baseline a page, detect regressions, get fix recommendations.
Commands
| Command | Description | |---------|-------------| | /seo-drift baseline <url> | Capture a "known good" snapshot of all SEO-critical elements | | /seo-drift check <url> | Compare current state against the most recent baseline | | /seo-drift history <url> | Show all baselines and checks for a URL |
Baseline Workflow
When the user runs /seo-drift baseline <url>:
- Run the baseline capture script:
``bash python3 ~/.claude/skills/seo-drift/scripts/baseline.py "<url>" ``
- Parse the JSON output and present a formatted summary:
``` Baseline saved for [domain] (ID: [id])
Title: [title] H1: [h1 text] ([h1_count] total) Schema: [schema_count] blocks ([schema_types]) Canonical: [canonical] Robots: [robots or "none"] OG Tags: [og_tags count] CWV: [score]/100 (LCP: [lcp]s, FCP: [fcp]s, CLS: [cls]) ```
- If the script returns an error, display it and suggest fixes.
Optional flags:
- Add
--skip-cwvto skip the PageSpeed Insights API call (faster)
Check Workflow
When the user runs /seo-drift check <url>:
- Run the check script:
``bash python3 ~/.claude/skills/seo-drift/scripts/check.py "<url>" ``
- Parse the JSON output. If there's an error about no baseline, tell the user to run
/seo-drift baseline <url>first.
- Present diffs grouped by severity:
``` Drift Check for [domain] Baseline: [baseline_date] | Checked: [checked_at]
CRITICAL ([count]):
- [element]: [before] -> [after]
Fix: [recommendation]
WARNING ([count]):
- [element]: [before] -> [after]
Fix: [recommendation]
INFO ([count]):
- [element]: [before] -> [after]
Report: [report_path] ```
- For CRITICAL and WARNING diffs, cross-reference the appropriate claude-seo skill:
- Schema issues -> recommend
/seo-schemato regenerate - CWV regressions -> recommend
/seo-technicalfor diagnosis - Content/heading issues -> recommend
/seo-pagefor analysis - Meta tag issues -> recommend
/seo-pagefor review
- If a report was generated, tell the user they can open it in a browser.
History Workflow
When the user runs /seo-drift history <url>:
- Run:
``bash python3 ~/.claude/skills/seo-drift/scripts/history.py "<url>" ` Replace <url>` with the actual URL.
- Present as a timeline:
``` History for [domain]:
Baselines: #[id] [date] Title: "[title]" Schema: [count] blocks CWV: [score]/100 #[id] [date] Title: "[title]" Schema: [count] blocks CWV: [score]/100
Checks: #[id] [date] vs baseline #[baseline_id] [critical]C [warning]W [info]I ```
Severity Classification
| Change | Severity | Why It Matters | |--------|----------|----------------| | Schema block removed | CRITICAL | Removes rich snippets from SERPs | | Canonical changed/removed | CRITICAL | Can cause deindexing or duplicate content | | robots noindex added | CRITICAL | Removes page from Google entirely | | H1 removed or changed | CRITICAL | Primary ranking signal for the page | | Title removed | CRITICAL | Most important on-page SEO element | | Status code -> 4xx/5xx | CRITICAL | Page is inaccessible | | Title text changed | WARNING | May affect click-through rate | | Description changed | WARNING | Affects SERP snippet appearance | | CWV regression >20% | WARNING | Core Web Vitals affect rankings | | OG tags removed | WARNING | Affects social media sharing | | Schema content modified | WARNING | May invalidate rich results | | H2/H3 structure changed | INFO | Minor structural change | | Content hash changed | INFO | Page text was updated |
Data Storage
- Database:
~/.claude/seo-drift/baselines.db(SQLite) - Reports:
~/.claude/seo-drift/reports/
Dependencies
This skill requires:
- Python 3.10+
requests(for HTTP fetching)beautifulsoup4(for HTML parsing)curl(for PageSpeed Insights API)
Install: pip install requests beautifulsoup4
Integration with claude-seo
This skill extends the claude-seo ecosystem by adding a defensive monitoring layer. While other seo-* skills optimize pages, seo-drift protects what's already optimized:
- Uses
seo/scripts/fetch_page.pyfor HTTP fetching with SSRF prevention - Uses
seo/scripts/parse_html.pyfor SEO element extraction - Recommends
seo-schema,seo-technical, andseo-pageskills for fixing detected issues