Source profileQuality 91/100

Thibaultbm/claude-seo-geo/skills/seo-traffic-drop/SKILL.md

seo-traffic-drop

Diagnose a traffic or ranking loss before fixing anything. Input: Search Console exports from a healthy period and a damaged one, plus what changed on the site. Output: whether the drop is real or a reporting artifact, the exact date and shape of the loss (visibility, ranking, click-through, demand), the pages and queries carrying it, a differential diagnosis with the test that confirms each cause, and the handoff to the skill that fixes it. Bundled zero-dependency script compares two exports an

Source repository stars
15
Declared platforms
0
Static risk flags
1
Last source update
2026-08-20
Source checked
2026-08-25

Decision brief

What it does: where it fits

A drop is a diagnostic problem, not a content problem. The failure mode of this work is not missing the cause, it is acting on the first plausible one: a core update landed near the date, so the team rewrites 40 articles, while the actual cause was a noindex shipped in a templat…

Best for

  • "Our traffic dropped", "we lost rankings", "clicks fell off a cliff"
  • Impressions or clicks collapsing in Search Console, on the whole site or one section
  • Pages disappearing from the index, or a sudden coverage change

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/Thibaultbm/claude-seo-geo --skill "skills/seo-traffic-drop"
Safe inspection promptEditorial

Inspect the Agent Skill "seo-traffic-drop" from https://github.com/Thibaultbm/claude-seo-geo/blob/939ace55e904a78f33940864cc3d163992d70b75/skills/seo-traffic-drop/SKILL.md at commit 939ace55e904a78f33940864cc3d163992d70b75. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Step 0: Freeze the scene

    Before any analysis, stop changes to the site. Every deploy during an investigation destroys evidence and adds a variable, and a drop that gets "fixed" mid-diagnosis by three simultaneous changes teaches nobody anything.

    Search Console exports: the performance report for the damaged period and for an equal-length healthy period, same property, same filters. Export Queries, Pages, and Dates. Equal length matters: comparing 28 days agains…The deployment and release log, or a git log, covering the six weeks before the drop.Anything non-technical that changed: a rebrand, a price change, a product discontinued, a campaign that ended, a season that turned, a competitor that launched.
  2. 02

    Step 1: Is the loss real

    Three things masquerade as traffic drops. Rule them out before spending a day on causes.

    The num=100 removal of September 2025. Rank trackers stopped loading 100-result pages, so many properties saw desktop impressions collapse and average position improve overnight, with clicks flat (https://searchenginela…The Search Console impression logging error, disclosed on the Data Anomalies page: from 13 May 2025 until the fix rolled out on 27 April 2026, impressions were logged inaccurately, which also distorted CTR and average p…Three things masquerade as traffic drops. Rule them out before spending a day on causes.
  3. 03

    Step 2: Date the drop

    python3 scripts/gscdiff.py --dates Dates.csv

    python3 scripts/gscdiff.py --dates Dates.csvThe script reads a day-level export and reports the shape: a cliff (one day carries most of the decline, and the site stays down) or a slope (the loss accumulates over weeks). It dates the onset and lists the steepest s…The distinction sets the whole investigation:
  4. 04

    Step 3: Shape the loss

    python3 scripts/gscdiff.py before/Pages.csv after/Pages.csv --sections 2 python3 scripts/gscdiff.py before/Queries.csv after/Queries.csv --top 25

    python3 scripts/gscdiff.py before/Pages.csv after/Pages.csv --sections 2 python3 scripts/gscdiff.py before/Queries.csv after/Queries.csv --top 25The script reports totals with deltas, names the mechanism, measures how concentrated the loss is, lists the biggest losers with a per-row reason, flags rows that disappeared entirely, and shows what gained while the re…Four mechanisms, distinguished by which metric moved:
  5. 05

    Step 4: Differential diagnosis

    Match the shape to the candidates, then run the confirming test. The test matters more than the table: a cause you cannot confirm is a guess with a citation.

    Correlation with an update date is not a diagnosis. Updates are the most over-attributed cause in the field, because the date is public and the alternative requires work.Two causes can coexist, and often do. A site can lose to an update and ship a broken canonical in the same month. Quantify each rather than picking a winner.The absence of a finding is a finding. Write down what you checked and ruled out, or the next person repeats it.

Permission review

Static risk signals and limitations

Network access

medium · line 106

The documentation includes network, browsing, or remote request actions.

| Cliff, everything, impressions to near zero | noindex shipped, robots.txt Disallow, DNS or certificate expiry, server outage, domain not renewed, WAF blocking Googlebot, hack | Fetch the raw HTML and robots.txt; Search Console URL Inspect

Network access

medium · line 112

The documentation includes network, browsing, or remote request actions.

| A handful of URLs, others gaining | Cannibalization from a page published recently, or an internal link change | Query-level export: does the losing URL's query now map to another URL of yours; check what was published in the six weeks be

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars15SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
Thibaultbm/claude-seo-geo
Skill path
skills/seo-traffic-drop/SKILL.md
Commit
939ace55e904a78f33940864cc3d163992d70b75
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Traffic drop: find what changed before changing anything

A drop is a diagnostic problem, not a content problem. The failure mode of this work is not missing the cause, it is acting on the first plausible one: a core update landed near the date, so the team rewrites 40 articles, while the actual cause was a noindex shipped in a template on the same week. The rewrite then hides the evidence.

So the order is fixed. Confirm the loss is real, date it, shape it, name the candidate causes, confirm one with a test that could have failed, and only then fix. Every step below produces evidence someone else can check.

Company knowledge first (Obsidian)

If the working environment contains an Obsidian vault or any local knowledge base (a folder of .md notes, often with a .obsidian directory), read the relevant notes before acting: the SEO action log (what was shipped and when), past incidents, the site's seasonality, migrations, and known technical debt. The action log is the highest-value note in a drop investigation, because it answers "what changed" without waiting for the client. At the end of the session, append the diagnosis, the evidence and the remediation to that log so the next incident starts with a history. Vault structure and protocols: the obsidian-brain skill.

When to use this skill

Use it for:

  • "Our traffic dropped", "we lost rankings", "clicks fell off a cliff"
  • Impressions or clicks collapsing in Search Console, on the whole site or one section
  • Pages disappearing from the index, or a sudden coverage change
  • A suspected core update, a manual action, or a penalty
  • Traffic loss after a migration, a redesign, a replatform or a big deploy
  • Sessions falling in GA4 while Search Console looks fine, or the reverse
  • AI referral traffic falling, or the brand losing its citations in AI answers

Hand off once the cause is named:

Confirmed causeSkill that fixes it
Indexation, robots, rendering, speed, migration, hackseo-technical
Client-rendered site built by an AI generatorseo-ai-site-builders
Thin, stale or outranked contentseo-content-blog and the page-type content skills
Blocks missing from a page that competitors haveseo-page-sections
Cannibalization, orphaned pages, weak internal linksseo-internal-linking
Lost or toxic backlinksseo-backlinks
Local pack or Business Profile lossseo-local
Lost AI citations, AI Overview displacementgeo-visibility
No measurement to detect the next onegeo-tracking

Step 0: Freeze the scene

Before any analysis, stop changes to the site. Every deploy during an investigation destroys evidence and adds a variable, and a drop that gets "fixed" mid-diagnosis by three simultaneous changes teaches nobody anything.

Collect, in this order:

  1. Search Console exports: the performance report for the damaged period and for an equal-length healthy period, same property, same filters. Export Queries, Pages, and Dates. Equal length matters: comparing 28 days against 90 measures the calendar.
  2. The deployment and release log, or a git log, covering the six weeks before the drop.
  3. Anything non-technical that changed: a rebrand, a price change, a product discontinued, a campaign that ended, a season that turned, a competitor that launched.
  4. Search Console Manual Actions and Security Issues. Two clicks, binary answer, and it reframes everything if positive.

If the client cannot say what shipped and when, that gap is itself a finding worth reporting.

Step 1: Is the loss real

Three things masquerade as traffic drops. Rule them out before spending a day on causes.

Reporting artifacts. Two documented events sit inside the window most investigations look at:

The operating rule that survives both: clicks are the metric that pays. An impressions drop with flat clicks is a measurement story until proven otherwise. Check the Data Anomalies page for the period under investigation before writing any conclusion.

Measurement breakage. If GA4 fell but Search Console did not, the problem is downstream of Google: a tag removed in a redesign, a consent banner change, a bot filter, a new cookie mode, a GA4 property or filter change. Compare Search Console clicks against GA4 organic sessions over the same days. They never match exactly; they should move together.

Seasonality and demand. Compare against the same period last year, not last month. A B2B site in August and a tax service in May both look catastrophic month-over-month and are perfectly normal year-over-year. When rankings hold and impressions fall, verify the trend in Google Trends before diagnosing anything on the site.

Step 2: Date the drop

python3 scripts/gsc_diff.py --dates Dates.csv

The script reads a day-level export and reports the shape: a cliff (one day carries most of the decline, and the site stays down) or a slope (the loss accumulates over weeks). It dates the onset and lists the steepest steps. It discriminates by asking how much of the total decline the single steepest step explains, which is robust where counting days over a threshold is not.

The distinction sets the whole investigation:

ShapeWhat it meansFirst question
CliffA site event or a switch being flippedWhat shipped on that exact date
Slope over 1 to 3 weeksAn update rollout, or a competitor gainingWhich confirmed update overlaps this window
Slope over monthsDecay, staleness, or a market movingWhich pages lost first, and what replaced them
Step down then partial recoveryA temporary block, an outage, a crawl issueWhat was broken and for how long

For update windows, use the Google Search Status Dashboard, which publishes confirmed ranking updates with official start and end dates (https://developers.google.com/search/help/status-dashboard). A drop that starts three days before an update window did not come from that update, and this single check kills most false attributions.

Step 3: Shape the loss

python3 scripts/gsc_diff.py before/Pages.csv after/Pages.csv --sections 2
python3 scripts/gsc_diff.py before/Queries.csv after/Queries.csv --top 25

The script reports totals with deltas, names the mechanism, measures how concentrated the loss is, lists the biggest losers with a per-row reason, flags rows that disappeared entirely, and shows what gained while the rest fell. --sections N aggregates URLs by path prefix, which is how a template-level cause becomes visible in one line.

Four mechanisms, distinguished by which metric moved:

MechanismSignatureReading
Visibility collapseImpressions and clicks fall together, rows disappearThe pages are not being shown. Indexation, not ranking
Ranking lossPosition worsens materially, impressions followBeing outranked. Update, regression, lost links, cannibalization
Click-through lossImpressions and position hold, clicks fallStill ranking, not being clicked. SERP layout, AI Overviews, titles
Demand or coverage lossPosition holds, impressions fall, CTR holdsFewer searches or fewer matching queries. Verify externally

Then read concentration and gainers together. A loss carried by a handful of URLs is a page-level cause; a loss spread across one directory is a template cause; a loss across everything is an update, a sitewide technical regression, or demand. And a page that gained while a similar page fell is the signature of cannibalization or internal redistribution, which has an internal cause and no amount of update analysis will explain it.

Step 4: Differential diagnosis

Match the shape to the candidates, then run the confirming test. The test matters more than the table: a cause you cannot confirm is a guess with a citation.

SignatureLikely causesTest that confirms or kills it
Cliff, everything, impressions to near zeronoindex shipped, robots.txt Disallow, DNS or certificate expiry, server outage, domain not renewed, WAF blocking Googlebot, hackFetch the raw HTML and robots.txt; Search Console URL Inspection on three URLs; check the Pages report reason; check server logs for Googlebot 4xx and 5xx
Cliff, everything, impressions intactManual action, or a tracking or property changeSearch Console Manual Actions; confirm the property and filters are the same in both exports
Cliff, one section or templateA template regression: canonical pointing elsewhere, noindex on a template, internal links removed, rendering switched to client-side, pagination brokenCompare the raw HTML of a losing page against an archived copy; check the canonical and meta robots as served; run the rendering check from the seo-ai-site-builders skill
Cliff, right after a migration or redesignRedirects missing or chained, URLs changed, content dropped, hreflang brokenCrawl the old URL inventory and check every 301 resolves in one hop to a relevant page; the migration protocol lives in seo-technical Step 7
Slope over 1 to 3 weeks, sitewide, positions worseA core or ranking system updateConfirm the window on the Search Status Dashboard; check whether losses concentrate on a content type; compare against competitors in the same SERPs
Slope, positions hold, CTR fallsAI Overviews or a new SERP feature on those queries, rewritten titles, competitor snippetsInspect the live SERP for the top losing queries; measure how many now carry an AI Overview; check whether Google rewrote the titles
A handful of URLs, others gainingCannibalization from a page published recently, or an internal link changeQuery-level export: does the losing URL's query now map to another URL of yours; check what was published in the six weeks before
Gradual, oldest content firstContent decay, staleness, competitors publishing betterCompare the losing pages against what now ranks; check publication and update dates
One country or one language onlyGeo-blocking by a WAF or CDN, hreflang regression, a local competitor, a market eventFetch the site through an exit in that country; check hreflang reciprocity
One device onlyMobile rendering or speed regression, an interstitial, a mobile template bugTest the mobile page directly; compare Core Web Vitals per device
Clicks fell, conversions and revenue did notThe lost traffic was low value, or the loss is in a non-commercial sectionSegment by page group and by landing page revenue before treating this as an emergency
Impressions fell, clicks flatA reporting artifact, or lost long-tail visibilityCheck the Data Anomalies page for the period; confirm whether the loss is in positions 20 to 100
Search Console flat, GA4 downTagging, consent, bot filtering, a GA4 configuration changeCompare Search Console clicks against GA4 sessions day by day; check the tag fires

Rules that keep this honest:

  • Correlation with an update date is not a diagnosis. Updates are the most over-attributed cause in the field, because the date is public and the alternative requires work.
  • Two causes can coexist, and often do. A site can lose to an update and ship a broken canonical in the same month. Quantify each rather than picking a winner.
  • The absence of a finding is a finding. Write down what you checked and ruled out, or the next person repeats it.

Step 5: Quantify, then decide what is worth fixing

Not every loss is worth recovering. Before recommending work, split the loss into: recoverable by fixing something broken, recoverable by outcompeting, and structurally gone.

Structurally gone is a real category in 2026: queries absorbed by AI Overviews, informational traffic that now resolves in the answer, a product line discontinued, a market that shrank. On the AI Overview side the measured impact varies widely by study and query set, from roughly 15 percent to over 50 percent fewer clicks on affected queries (Amsive across 700,000 keywords at the conservative end, Pew across 68,000 queries near the middle, Ahrefs and Seer at the high end), so treat any single figure quoted at you as a range and measure your own queries rather than importing someone else's number.

One split in that data is directly diagnostic. In the Amsive set, non-branded queries with an AI Overview lost about 20 percent of their CTR while branded queries with one gained about 19 percent, and the worst case was a query carrying both an AI Overview and a featured snippet, at roughly 37 percent lost. So a CTR loss concentrated on non-branded, informational queries fits the AI Overview explanation; a CTR loss that includes branded queries does not, and points instead at a title rewrite, a brand problem, or a SERP competitor. Segment branded against non-branded before accepting the easy answer.

What this traffic is not is recoverable by rewriting the page: the fix is to compete for the citation and for the queries that still produce clicks, which is the geo-visibility skill's territory.

Say this plainly in the deliverable. A recovery plan that implicitly promises a return to a pre-AI-Overview baseline sets up a failure that no amount of good work will avoid.

Step 6: Fix, then verify with a date

Hand the confirmed cause to the skill that owns it (table in the "When to use" section), then:

  1. Record the fix date. Recovery is measured from it, not from the drop.
  2. Set the re-measure date honestly: a technical fix needs a recrawl before anything moves, so weeks on a site of any size. Recovery from an update usually waits for the next update; Google's own guidance is that there is nothing to fix in the sense of a penalty, and that broad recoveries often come with later updates (https://developers.google.com/search/docs/appearance/core-updates).
  3. Re-run the same comparison on the same dimension after the fix, so the before and after come from the same instrument.
  4. Write the incident into the vault action log: date, shape, evidence, cause, fix, outcome. The second occurrence of the same cause is diagnosed in minutes if this exists.

Rules and thresholds

CheckTargetBasis
Compared periodsEqual length, same property, same filtersField rule
Material drop10 percent of clicks or moreField heuristic
Metric of recordClicks, always. Impressions are contextField rule after two documented logging artifacts
Manual actions checkBefore any analysisOfficial (binary and cheap)
SeasonalityYear over year, never month over monthField rule
Update attributionOnly when the window is confirmed on the Search Status Dashboard and the drop starts inside itOfficial plus field rule
Cause confirmationEvery named cause has a test that could have falsified itField rule
Site changes during diagnosisFrozen until the cause is namedField rule
Recovery expectationWeeks after recrawl for technical fixes; next update for update lossesOfficial (core updates guidance)
Incident recordWritten to the vault action log with evidenceField rule

GEO layer

Two AI-specific failure modes do not appear in Search Console at all, so a drop investigation that stops at GSC will miss them.

Losing the citation while keeping the ranking. A page can hold position 3 and stop being the source AI Overviews, ChatGPT or Perplexity quote. Classic metrics stay flat while the brand disappears from the answers that increasingly precede the click. Detection is a prompt panel, not a rank tracker: the protocol is in the geo-tracking skill, and the citability work is in geo-visibility.

Losing AI referral traffic. Referrals from chatgpt.com, perplexity.ai and similar sources fall when the site stops being retrievable: a rendering regression makes content invisible to crawlers that never execute JavaScript, a robots.txt change blocks an AI crawler, or a migration breaks the URLs the engines had learned. This drop is invisible in Search Console by construction. Check the AI channel in GA4 first, then the crawler access rules in the seo-technical reference, then rendering with the seo-ai-site-builders script.

The reverse case matters for honest reporting: when classic clicks fall while AI referrals and branded search rise, the site is not losing, the channel is shifting. Report both or the conclusion is wrong.

Output format

# Traffic drop diagnosis: {domain} ({date})

## Verdict
One sentence: what happened, when, and how confident you are.

## Is it real
Artifacts, measurement and seasonality ruled out, with the check that ruled each one out.

## When
The date or window, the shape (cliff or slope), and what shipped around it.

## Where
The mechanism (visibility, ranking, click-through, demand), how concentrated,
which sections, pages and queries carry the loss, with the numbers.

## Why
The confirmed cause, the test that confirmed it, and the causes ruled out
with the evidence that ruled them out.

## What is recoverable
Split into: broken and fixable, competitive, structurally gone. With numbers.

## Plan
Ordered fixes, each with its owning skill, effort, and expected effect.

## Re-measure
The date, the exact comparison to re-run, and the baseline to beat.

Never deliver a diagnosis without the two numbers that anchor it: clicks lost, and the share of that loss the named cause explains.

Common mistakes

MistakeConsequenceDo instead
Blaming the nearest core updateMonths of content work on a broken canonicalConfirm the window on the Status Dashboard and check the drop starts inside it
Reading an impressions drop as a traffic lossEmergency response to a logging fixCheck clicks first, then the Data Anomalies page
Comparing unequal periodsMeasuring the calendarEqual length, same property, same filters
Month-over-month on a seasonal siteDiagnosing AugustYear over year
Fixing during the investigationEvidence destroyed, cause never knownFreeze the site until the cause is named
Shipping five fixes at onceNo attribution, no learningOne change at a time on a dated timeline
Skipping the manual actions checkWeeks lost on the wrong hypothesisTwo clicks, first
Stopping at the first plausible causeThe real one keeps operatingRun the confirming test, and quantify each cause
Treating AI Overview losses as recoverable by rewritingPromises that cannot be keptSegment it as structural, compete for the citation
Ignoring gainers in the same exportMissing cannibalization entirelyRead gainers against losers
Diagnosing only in Search ConsoleAI citation and referral losses invisibleCheck the AI channel and the prompt panel too
No incident recordThe same cause diagnosed from scratch next yearWrite it to the vault action log

Sources

Frequently asked questions

What to verify before installation and use

What does the seo-traffic-drop source document cover?

A drop is a diagnostic problem, not a content problem. The failure mode of this work is not missing the cause, it is acting on the first plausible one: a core update landed near the date, so the team rewrites 40 articles, while the actual cause was a noindex shipped in a templat…

How do I install seo-traffic-drop?

The source record exposes this install command: npx skills add https://github.com/Thibaultbm/claude-seo-geo --skill "skills/seo-traffic-drop". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged network in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 9345,511

coreyhaines31/marketingskills

attribution

When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an attribution model, or reconcile conflicting numbers across tools. Also use when the user mentions "attribution," "attribution model," "first-touch vs last-touch," "multi-touch," "which channel drives revenue," "what's my real CAC," "my dashboards disagree," "Google/Meta says X but GA says Y," "media mix model," "MMM," "incrementality," "geo lift," "holdout test," "how did you hear ab

Computed 91733

rampstackco/claude-skills

qa-testing

Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full). Use this skill whenever the user asks to QA a page or site, run a smoke test after a deploy, verify a page before launch, or run a regression sweep. Triggers on QA, QA sweep, smoke test, regression test, post-deploy check, pre-launch check, verify the deploy, test this page, does the page render, broken link, 404, image not loading. Also triggers proactively after a deploy or a new page launch wh

Computed 915

bestdeejay-design/agent-skills

frontend-perfection

Audit and polish frontend (static HTML/CSS/JS or built SPA) to measurable perfection: real-Chrome Lighthouse >=13 runs (mobile+desktop, no Playwright internals), SEO meta layer, WCAG contrast by computed luminance, heading order, a11y checks (axe-core subset: img-alt/button-name/link-name/label/aria-valid/landmark-unique), back-to-top navigation check, design tokens (zero raw hex outside tokens), adaptive checks, and OG-image generation with a crop-safe layout. Front-End Checklist-inspired check

Computed 90203

PramodDutta/qaskills

Website Audit

Comprehensive website auditing skill using Lighthouse, PageSpeed Insights, and web performance APIs to audit performance, accessibility, SEO, best practices, and security.