Compare two SEO snapshots by script: gainers, losers, drift classes.

MITAuto-check passedMarketing & SEO

Install SEO Drift

skills CLI
$ npx skills add indranilbanerjee/digital-marketing-pro --skill seo-drift -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install indranilbanerjee/digital-marketing-pro seo-drift --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/indranilbanerjee/digital-marketing-pro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-drift .claude/skills/seo-drift && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo-drift
GitHub stars
862
Used in
1 other repo
Token cost
~2.7k tokens
SKILL.md length
1,168 words
Files
1
Skills in repo
162
Repo updated
First seen
Licence
MIT

At a glance

Compare two SEO snapshots by script: gainers, losers, drift classes.

  • Works in 3 steps: Read… → If no brand exists: ask "Set up a brand… → Apply…
  • Marketing & SEO work in your project
  • SKILL.md covers Purpose, Context efficiency, When to Use and Brand context (auto-applied), plus 9 more sections
  • Calls python

What it does

SEO Drift is an agent skill from indranilbanerjee/digital-marketing-pro. Compare two SEO snapshots by script: gainers, losers, drift classes. "what moved after the core update"

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Marketing & SEO. The repository describes itself as: An open-source AI marketing operating system for strategy, SEO, AEO/GEO, paid media, content, CRM, and analytics - grounded in brand context, human approval, and verifiable… The licence is MIT.

When your agent uses it

  • Marketing & SEO work in your project

Example prompts

  • “what moved after the core update”
  • “/seo-drift”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json
  2. If no brand exists: ask "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults
  3. Apply skills/context-engine/industry-profiles.md for industry-specific noise thresholds (YMYL industries should use higher --noise to…

What it can do on your machine

Read from SKILL.md and the folder at commit 9e949f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SEO Drift loads about 2.7k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 1,168 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~28
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from indranilbanerjee/digital-marketing-pro at commit 9e949f3, republished under its MIT licence (© indranilbanerjee). 1,168 words, ~2,668 tokens.

Download SKILL.mdSave it as .claude/skills/seo-drift/SKILL.md (or your agent's skills folder).
name
seo-drift
description
Compare two SEO snapshots by script: gainers, losers, drift classes. "what moved after the core update"
argument-hint
<baseline.csv> <current.csv> [--noise 5]
user-invocable
true

/digital-marketing-pro:seo-drift

Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/.

Purpose

Take two snapshots of SEO performance data — separated by weeks, a Core Update, a content refresh, or an algorithm change — and produce a structured drift report: top gainers, top losers, classifications (growth / decline / reshuffle / stable / new / lost), and diagnostic patterns. Works with classic GSC, the new GSC AI Performance Report, rank-tracker exports, and aeo-audit probe results.

Context efficiency

Heavy skill. Grep before Read any referenced file, then Read only matched ranges with offset + limit. List ${CLAUDE_PLUGIN_DATA}/<brand>/ before opening files. On re-invocation mid-session, skip files already in context.

When to Use

  • Monthly performance review — last month vs the month before
  • Core Update triage — pre-update vs post-update + settling window (use 14+ days after rollout-complete)
  • AI Mode citation tracking — quarter-over-quarter aeo-audit outputs to see which queries gained / lost AI Mode citations (Google AI Mode citation diff is a leading indicator for organic decline)
  • Content refresh attribution — before vs after a planned content update to attribute lift to the refresh vs other factors
  • GSC AI Performance Report — month-over-month deltas on the new (3 Jun 2026) combined AI Overviews + AI Mode report
  • Site migration audit — pre-migration baseline vs post-migration settling

Don't use for single-point-in-time analysis (use the source skill — seo-audit, aeo-audit, gsc-ai-performance).

Brand context (auto-applied)

  1. Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json
  2. If no brand exists: ask "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults
  3. Apply skills/context-engine/industry-profiles.md for industry-specific noise thresholds (YMYL industries should use higher --noise to filter out routine Quality Rater Guidelines volatility)

Inputs

InputSourceRequired?
Baseline CSVOlder snapshotyes
Current CSVNewer snapshotyes
Join keysAuto-detected (query, keyword, page, url) or --join-on flagoptional
Noise threshold--noise (default 5%) — % below which a metric is "stable"; YMYL industries should use 10% to filter out Quality Rater Guidelines volatilityoptional
Top-N--top (default 20) — gainers/losers per metricoptional

Both snapshots must come from the same source. Mixing a GSC export with an Ahrefs export will produce nonsense — different sources count different things.

Process (10 steps, numbered-file output)

All outputs go to ${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{YYYY-MM-DD}/.

  1. 00-input.md — capture baseline date range, current date range, source (GSC / GSC AI / rank-tracker / aeo-audit), brand context
  2. 01-baseline.csv — copy baseline export here (so the drift run is reproducible months later)
  3. 02-current.csv — copy current export here
  4. 03-drift-run.json — run the script:
    bash
    python "${CLAUDE_PLUGIN_ROOT}/scripts/seo_drift.py" \
        --baseline "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/01-baseline.csv" \
        --current  "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/02-current.csv" \
        --top 30 --noise 5 \
        --out "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/03-drift-run.json"
  5. 04-quality-scorecard.md — read quality_scorecard from 03-drift-run.json. If status: needs_review, diagnose:
    • date_range_distinct: warn → script couldn't auto-validate. Manually confirm in 00-input.md that baseline and current cover non-overlapping windows.
    • sample_size: fail → either input has < 50 rows. Re-export without row limits.
    • metric_compatibility: fail → no numeric metrics in BOTH inputs. Column-name mismatch — re-export from the same source.
    • no_lookup_collisions: fail → duplicate keys in one input (e.g., same query × page row twice). Re-export with deduplication or use --join-on to add a distinguishing column.
  6. 05-biggest-gainers.md — narrative on the top 10 gainers across impressions / clicks / position. For each: hypothesis on cause (new content? backlinks gained? Core Update favoured E-E-A-T? Featured Snippet rotation?). Hand off candidates to /digital-marketing-pro:content-engine for amplification.
  7. 05-biggest-losers.md — narrative on the top 10 losers. For each: triage matrix — is_yMYL × had_recent_change × Core_Update_window → action (refresh content / restore reverted change / wait for next algo cycle / accept and reallocate).
  8. 06-ai-mode-shift.md (only if input source is GSC AI Performance Report) — queries that LOST AI Mode impressions are a leading indicator. Cross-reference with /digital-marketing-pro:aeo-audit to verify citation loss in synthetic probes.
  9. 07-classification-distribution.md — counts table:
    • growth / decline / reshuffle / stable / new / lost
    • If >40% in decline: likely Core Update or competitor catch-up. Run /digital-marketing-pro:seo-audit for diagnosis.
    • If >20% reshuffle: likely intent shift (AI Mode reweighting). Run /digital-marketing-pro:aeo-geo to align with new intent patterns.
    • If >30% growth: find amplification opportunities. Run /digital-marketing-pro:content-engine to brief follow-ups.
    • If >15% new: new SERP coverage — track and validate intent fit.
  10. PLAN.md — single-page summary: stats + scorecard + top 5 actions ranked by impact × effort, with owner suggestions (SEO lead / content lead / dev team).

Output format

${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/2026-06-04/
├── 00-input.md
├── 01-baseline.csv
├── 02-current.csv
├── 03-drift-run.json
├── 04-quality-scorecard.md
├── 05-biggest-gainers.md
├── 05-biggest-losers.md
├── 06-ai-mode-shift.md       (only when input is GSC AI Performance Report)
├── 07-classification-distribution.md
└── PLAN.md
Show full SKILL.md (508 more words)Show less

Quality scorecard (the four gates)

GateWhat it checksWhy it matters
date_range_distinctBaseline and current cover non-overlapping windowsOverlapping windows produce false-positive deltas — same data on both sides
sample_sizeEach input has ≥ 50 rowsBelow this, drift is noise
metric_compatibility≥ 1 numeric metric exists in both inputsIf columns differ (e.g., Ahrefs vs GSC), there's nothing to compare
no_lookup_collisionsNo duplicate keys within an inputDuplicates make the delta math ambiguous

status: ready requires sample, metric compatibility, and no-collision gates pass (date-range-distinct is warn not fail — the script can't always autodetect dates).

Classification rules

Each row in the report falls into one bucket:

ClassificationTriggerInterpretation
growth≥ 2 metrics moved up > noise%, no metric down > 10%Clear win — investigate for amplification
decline≥ 2 metrics moved down > noise%, no metric up > 10%Clear loss — triage by YMYL × Core-Update-window
reshuffleSignificant moves in opposite directions (e.g., impressions up, position down)AI Mode signature — content is being shown more broadly but for slightly different intents
stableNo metric moved more than noise%No action
newAbsent in baseline, present in currentNew content or new SERP coverage — track
lostPresent in baseline, absent in currentContent removed, deindexed, or fell out of tracking window

Position is special: for position, lower numbers are better. The script automatically inverts position-delta direction for gain/loss ranking — you'll see -85.9% under position as a top gainer (page moved from position 12 to position 2).

Chain handoffs

This skill is typically a consumer + diagnostician:

  1. /digital-marketing-pro:gsc-ai-performance or seo-audit or aeo-audit — generates the snapshots
  2. /digital-marketing-pro:seo-drift — this skill
  3. Branch by finding:
    • High decline → /digital-marketing-pro:seo-audit for technical-side check + /digital-marketing-pro:content-decay-scan for content-side
    • High reshuffle → /digital-marketing-pro:aeo-geo for intent realignment
    • High growth → /digital-marketing-pro:content-engine for amplification briefs

Tips & caveats

  • Don't run during a Core Update rollout. Wait until Google announces "rollout complete" + 7–14 days of settling. Mid-rollout deltas are unreliable.
  • Position deltas are noisier than impression/click deltas — pages bouncing between positions 8 and 12 produce ±30% position deltas that mean nothing. Trust impression/click moves more for diagnosis.
  • GSC's data lag is ~3 days. When pulling "current month" data, use the date range ending 3 days ago, not yesterday.
  • The GSC AI Performance Report (3 Jun 2026) has NO click data. drift on AI report = impressions-only drift. Don't try to compute CTR drift from it.
  • For Core Update triage, run drift twice: pre-update vs day-after-rollout-complete (the "blast"), and pre-update vs 14-days-after (the "settled state"). The two often disagree, and the 14-day view is the one that matters.
  • Reshuffle classification is a leading indicator — when reshuffle counts spike, intent reweighting is happening. The next quarter's drift will usually show clearer growth/decline. Don't react too fast.

Agents used

  • analytics-analyst (primary) — interpretation + cause hypotheses
  • seo-specialist — for technical-cause hypotheses on losers
  • competitive-intel — when decline correlates with a competitor's win
  • market-intelligence — for algo-update context (was there a Core Update in the window?)

See also

  • /digital-marketing-pro:gsc-ai-performance — pull the GSC AI Performance Report (input source)
  • /digital-marketing-pro:seo-audit — diagnose decline causes
  • /digital-marketing-pro:aeo-audit — diagnose AI Mode citation loss
  • /digital-marketing-pro:content-decay-scan — for content-side decline triage
  • /digital-marketing-pro:content-engine — for amplifying gainers
  • scripts/seo_drift.py — the underlying drift engine

© indranilbanerjee, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/seo-drift of indranilbanerjee/digital-marketing-pro.

Open the folder on GitHubat commit 9e949f3

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in indranilbanerjee/digital-marketing-pro, which our catalogue first saw on October 7, 2026.

Compare with similar skills

SEO Drift next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

SEO Drift compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SEO Drift this skillindranilbanerjee/digital-marketing-pro8621 repos~2.7kAutomated safety check: PassMIT
Geo Fundamentalswasp-lang/wasp19k9 repos~861Automated safety check: PassMIT
Ab Testingcoreyhaines31/marketingskills54k3 repos~3.1kAutomated safety check: PassMIT
Hreflang and International SEOAgriciDaniel/claude-seo19k5 repos~3.4kAutomated safety check: PassMIT
Referralscoreyhaines31/marketingskills54k2 repos~2.6kAutomated safety check: PassMIT
SEO GeoReScienceLab/opc-skills1.8k4 repos~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • Geo Fundamentals

    wasp-lang/wasp

    Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).

    19k GitHub starsUsed in 9 repos~861 tokens
    Marketing & SEOAuto-check passed
  • Ab Testing

    coreyhaines31/marketingskills

    When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program.

    54k GitHub starsUsed in 3 repos~3.1k tokens
    Marketing & SEOAuto-check passed
  • Hreflang and International SEO

    AgriciDaniel/claude-seo

    Audits, validates and generates hreflang tags for multi-language and multi-region sites in HTML, HTTP headers or XML sitemaps, flagging common code and return-tag mistakes.

    19k GitHub starsUsed in 5 repos~3.4k tokens
    Marketing & SEOAuto-check passed
  • Referrals

    coreyhaines31/marketingskills

    When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy.

    54k GitHub starsUsed in 2 repos~2.6k tokens
    Marketing & SEOAuto-check passed
  • SEO Geo

    ReScienceLab/opc-skills

    SEO & GEO (Generative Engine Optimization) for websites. An agent skill from ReScienceLab/opc-skills.

    1.8k GitHub starsUsed in 4 repos~2.1k tokens
    Marketing & SEOAuto-check passed
  • Ad Creative

    LeoYeAI/openclaw-marketing-skills

    When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform.

    1k GitHub starsUsed in 8 repos~3.4k tokens
    Marketing & SEOAuto-check passed

More from indranilbanerjee/digital-marketing-pro

All 162 skills in this repo
  • Import Template

    indranilbanerjee/digital-marketing-pro

    Import a deliverable template as a reusable placeholder template per brand.

    862 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Ab Test Plan

    indranilbanerjee/digital-marketing-pro

    Plan an A/B test by script: sample size per variant, days to run, stopping rules.

    862 GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • Aeo Audit

    indranilbanerjee/digital-marketing-pro

    Run a one-time AEO audit of six AI answer engines, scored per surface.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Agent Readiness Audit

    indranilbanerjee/digital-marketing-pro

    Audit agent readiness by script: AI-crawler rules, product schema, no-JS HTML, feeds.

    862 GitHub starsUsed in 1 repo~3.7k tokens
    Auto-check passed
  • Backlink Gap

    indranilbanerjee/digital-marketing-pro

    Find backlink gap domains linking to competitors, not you, scored by script.

    862 GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed
  • C2pa Metadata

    indranilbanerjee/digital-marketing-pro

    Embed C2PA provenance in AI-generated images, video or PDF by script.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed

Categories

Questions about SEO Drift

What does SEO Drift do?

Compare two SEO snapshots by script: gainers, losers, drift classes. SEO Drift is an agent skill from indranilbanerjee/digital-marketing-pro. Compare two SEO snapshots by script: gainers, losers, drift classes.

When should I use SEO Drift?

SEO Drift fits situations like: marketing & SEO work in your project.

How do I install SEO Drift in Claude Code?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill seo-drift -a claude-code`. Or copy the skill folder (skills/seo-drift in indranilbanerjee/digital-marketing-pro) into .claude/skills/seo-drift in your project. Claude Code loads it when a task matches its description.

How do I install SEO Drift in Codex?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill seo-drift -a codex`. Or copy the skill folder (skills/seo-drift in indranilbanerjee/digital-marketing-pro) into .agents/skills/seo-drift in your project. Codex loads it when a task matches its description.

Can I use SEO Drift in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add indranilbanerjee/digital-marketing-pro --skill seo-drift -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-drift, .gemini/skills/seo-drift, .github/skills/seo-drift and .opencode/skills/seo-drift in your project.

What does SEO Drift need to run?

Going by SKILL.md and its folder, SEO Drift needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does SEO Drift access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is SEO Drift safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does SEO Drift use?

SEO Drift is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SEO Drift use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to SEO Drift?

Skills that share tags, products or a category with SEO Drift: Geo Fundamentals (wasp-lang/wasp, 19k stars), Ab Testing (coreyhaines31/marketingskills, 54k stars), Hreflang and International SEO (AgriciDaniel/claude-seo, 19k stars) and Referrals (coreyhaines31/marketingskills, 54k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SEO Drift?

indranilbanerjee (a GitHub user) maintains it in indranilbanerjee/digital-marketing-pro, which has 862 GitHub stars. The repository holds 162 skills in this directory. The repository was last updated on October 9, 2026.

Source: indranilbanerjee/digital-marketing-pro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.