Skip to content

Guide · Agent skill

How to use the SEO Drift Monitor agent skill (seo-drift)

Updated · written with AI from the project's own documentation and checked against our catalogue data

seo-drift is an agent skill for Claude that works like version control for a web page's SEO. You save a known good snapshot of key on-page elements, then later compare the live page against it and get the changes ranked by severity. This guide explains what the skill does, how to install it, how to ask for it in plain language, and what it needs to run.

SEO Drift MonitorAgriciDaniel/claude-seo · MIT

Quick start

  1. 1Download the ZIP. Download the seo-drift ZIP from this page.
  2. 2Install the skill. Unzip into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder, or upload the ZIP under Settings → Capabilities → Skills in the Claude apps.
  3. 3Install the Claude SEO scripts. Make sure the Claude SEO plugin scripts and a Python environment are available for the scripts/claude-seo runner.
  4. 4Capture a baseline. Ask the agent to take an SEO baseline of your URL, or run /seo drift baseline <url>, before making changes.
  5. 5Compare after changes. After deploying, ask the agent to compare SEO on the same URL, or run /seo drift compare <url>.
  6. 6Review the severity-ranked findings. Start with CRITICAL items, then WARNING and INFO, and follow the suggested specialised skill for each.

What the seo-drift skill makes the agent do

An agent skill is a folder of instructions that an AI agent loads when a request matches it. This one teaches the agent to capture a baseline of SEO-critical elements for a URL, compare the current page to that baseline, and show the history of past comparisons.

It tracks the title tag, meta description, canonical URL, robots directives, H1 to H3 headings, JSON-LD schema, Open Graph tags, Core Web Vitals, HTTP status code, and hashes of the HTML body and schema. Changes are reported as CRITICAL, WARNING or INFO, and the skill suggests which deeper SEO check to run next. Data is stored locally in SQLite.

  • baseline: capture the current state as a known good snapshot
  • compare: diff the live page against the most recent baseline
  • history: list past baselines and comparisons for a URL
/seo drift baseline <url> /seo drift compare <url> /seo drift history <url>

Install the seo-drift skill

Download the ZIP for seo-drift from this page. Then choose one of two routes.

For a personal install, unzip it into ~/.claude/skills/. For a single project, unzip it into that project's .claude/skills/ folder. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

  • Personal: unzip into ~/.claude/skills/
  • Project only: unzip into .claude/skills/ inside the project
  • Claude apps: Settings → Capabilities → Skills, then upload the ZIP

Set up the scripts it depends on

The skill does not work from SKILL.md alone. Its commands call the Claude SEO plugin scripts through a runner called scripts/claude-seo, which runs Python scripts such as fetch_page.py, parse_html.py, drift_baseline.py and drift_compare.py. You therefore need the Claude SEO plugin scripts and a Python environment for them.

Core Web Vitals are optional. They come from pagespeed_check.py and use the PageSpeed Insights API. Without an API key, the CWV fields are stored as null and the CWV rules are skipped during comparison. You can also pass --skip-cwv to leave them out.

  • Claude SEO plugin scripts (scripts/claude-seo runner)
  • Python environment for the bundled scripts
  • SQLite, which is used locally and created automatically on first use
  • Optional: PageSpeed Insights API key for Core Web Vitals

Trigger the skill with natural requests

You do not have to type the slash commands. The skill's description lists phrases that should activate it, including "SEO drift", "baseline", "track changes", "did anything break", "SEO regression", "compare SEO", "before and after", "monitor SEO changes" and "deployment check". Name the URL in your request so the agent knows which page to use.

The skill also accepts an argument hint of baseline, compare or history followed by a URL, if you prefer the explicit form.

  • "Take an SEO baseline of https://example.com before we deploy."
  • "Did anything break on https://example.com after the release?"
  • "Compare SEO on https://example.com to the last baseline."
  • "Show me the SEO drift history for https://example.com."

Run a before-and-after deployment check

The main workflow is a pre and post deployment check. Capture a baseline before the release, deploy, then run a comparison. The compare command loads the most recent baseline unless you specify a baseline ID.

After a comparison the skill can offer an HTML report. It is generated from the comparison JSON file.

  • Baseline before the deploy
  • Compare after the deploy
  • Review any CRITICAL findings first, then WARNING, then INFO
  • Optionally generate an HTML report from the comparison output
/seo drift baseline https://example.com /seo drift compare https://example.com /seo drift compare https://example.com --baseline-id 5

Understand the results and what to do next

The comparison engine applies 17 rules. CRITICAL findings mean an SEO-breaking change that is likely to cause traffic loss and need immediate action. WARNING findings have potential impact and should be investigated within a week. INFO findings are for awareness and may be intentional.

The skill does not fix problems itself. When drift is found, it recommends a specialised skill: schema changes point to /seo schema, CWV regressions and canonical or noindex changes point to /seo technical, title or meta description changes point to /seo page, and heading changes point to /seo content.

  • Schema removed or modified: run /seo schema <url>
  • CWV regression: run /seo technical <url>
  • Title or meta description changed: run /seo page <url>
  • Canonical changed or removed: run /seo technical <url>
  • Heading structure changed: run /seo content <url>

Safety notes: scripts and network access

This skill runs scripts and sends network requests. It fetches the target URL repeatedly, and it may call the PageSpeed API. Only use it on sites you own or have permission to fetch repeatedly.

URL fetching goes through fetch_page.py, which blocks private IPs, loopback, reserved ranges and GCP metadata endpoints. The skill states that TLS is always verified and that SQLite queries use parameterised placeholders. It also says fetched page content is untrusted data, so instructions found inside a page are reported rather than executed.

  • Only fetch sites you own or are permitted to monitor
  • Private and loopback addresses are blocked by design
  • Stored data stays in ~/.cache/claude-seo/drift/baselines.db

Tips for reliable drift checks

Capture a baseline before every release so you have a clean reference point. Keep the same URL form, because URLs are normalised: the scheme and host are lowercased, default ports 80 and 443 are removed, query parameters are sorted, UTM parameters are dropped and trailing slashes are stripped.

If a comparison fails because a page is unreachable, the skill reports the fetch error and does not guess the page state. If no baseline exists for a URL, it asks you to create one first. A page returning 4xx or 5xx is still captured, since status code is a tracked field.

  • Baseline before each deploy, not after
  • Use --skip-cwv if you have no PageSpeed API key
  • Use history to find when a change first appeared

What people use it for

  • Confirming a release did not remove JSON-LD schema or change the canonical URL on key landing pages.
  • Catching a title or meta description that a template change overwrote across a set of pages.
  • Checking whether a noindex directive was added by accident after a deployment.
  • Keeping a dated history of SEO changes for a client site as part of agency reporting.
  • Running a quick did-anything-break check on a page after a developer ships a change.

Frequently asked questions

Is the seo-drift skill free to use?

The skill is released under the MIT licence, as stated on this page. Core Web Vitals use the optional PageSpeed Insights API, and without an API key those fields are stored as null instead of being fetched.

What do I need to run seo-drift?

You need the Claude SEO plugin scripts with the scripts/claude-seo runner, a Python environment for the bundled scripts, and SQLite, which is created automatically on first use. A PageSpeed Insights API key is optional.

How do I install an agent skill like seo-drift?

Download the ZIP and unzip it into ~/.claude/skills/ for personal use or into a project's .claude/skills/ folder. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

Does seo-drift replace a full SEO audit?

No. It only compares a page to a stored baseline and does not judge overall quality or do keyword research. When it finds drift, it suggests other skills such as /seo technical or /seo schema for deeper checks.

Where is my data stored?

All baselines and comparisons are stored locally in a SQLite database at ~/.cache/claude-seo/drift/baselines.db.

What if the comparison says there is no baseline?

The skill tells you no baseline exists for that URL and suggests running the baseline command first. If the page is unreachable, it reports the fetch error rather than guessing.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use seo-drift if you manage a site, ship releases often, or look after client pages and want a quick check that titles, canonicals, robots directives and schema survived a change. Pick a full audit tool instead if you need an overall SEO quality review or keyword research, since this skill only reports differences from a baseline.

Download the skill