seo-performance-audit
Skill7 starsChanged 13 days agoMITView on GitHub
Audit organic search performance from Search Console and analytics data to explain what rose, dropped or stalled, the likely cause, and what to do next. Use for "why did my traffic drop", "what changed in Search Console", "analyse my GSC data", "which pages are declining".
In this repository49 other files it gives its agents.
- ai-agent-readinessSkill
- ai-brand-factsSkill
- ai-citable-pagesSkill
- ai-prompt-researchSkill
- ai-search-visibilitySkill
- ai-shopping-visibilitySkill
- ai-traffic-analyticsSkill
- backlink-profile-reviewSkill
- best-of-list-inclusionSkill
- chatgpt-business-profileSkill
- cms-publishing-adapterSkill
- comparison-page-writerSkill
- dataforseo-ai-trackerSkill
- ecommerce-seo-auditSkill
- eeat-trust-reviewSkill
- google-ai-overviews-auditSkill
- hreflang-internationalSkill
- image-seoSkill
- internal-linking-planSkill
- keyword-cannibalization-checkSkill
- landing-page-writerSkill
- linkedin-for-ai-searchSkill
- local-ai-visibilitySkill
- local-seo-auditSkill
- on-page-seo-reviewSkill
- page-to-social-postsSkill
- parasite-seo-planSkill
- posthog-change-impactSkill
- programmatic-seo-planSkill
- query-fan-out-coverageSkill
- reddit-quora-answersSkill
- reviews-for-ai-answersSkill
- schema-markupSkill
- search-intent-matchSkill
- seo-blog-writerSkill
- seo-change-monitorSkill
- seo-content-briefSkill
- seo-content-qaSkill
- seo-opportunity-researchSkill
- seo-start-hereSkill
- seo-strategy-planSkill
- site-content-inventorySkill
- site-migration-checkSkill
- sponsored-placement-vettingSkill
- technical-seo-auditSkill
- title-meta-ctrSkill
- topic-cluster-mapSkill
- xml-sitemap-checkSkill
- youtube-for-ai-answersSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 13 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈13
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Search Console and analytics disagree and you need to know what that disagreement means.
- Distinctive: line 39
Search performance data: query, page, clicks, impressions, CTR, position, country, device, date.
- Distinctive: line 59
Search movement must be interpreted with impressions and CTR, not position alone.
- Distinctive: line 61
Do not call normal fluctuation a problem.
- Distinctive: line 62
Do not recommend risky title/meta edits casually, especially on pages already ranking.
- Distinctive: line 64
Do not duplicate active tasks.
- Distinctive: line 97
Read recent reports or saved findings for the comparison horizon.
- Distinctive: line 98
Read active tasks/issues so repeated opportunities are marked already tracked.
- Distinctive: line 113
Use conversions to raise priority for pages that affect signups, demos, trials, purchases, or lead quality.
- Distinctive: line 129
Prioritize: Use the library's priority labels.
- Distinctive: line 157
Check existing tasks by URL, keyword cluster, and intent.
- Distinctive: line 158
If matched, mark already tracked with task id or reference.
- Distinctive: line 159
Only create a new recommendation when the action, page, or keyword cluster is materially different.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SEO performance audit
Explain what rose, dropped, stalled, or became newly actionable across organic search and analytics. This skill is not a rank-tracker dump. It is a decision filter: identify meaningful movement, suppress noise, diagnose likely cause, and recommend the next action. It hands back a short audit of the movements that matter, each with evidence, a likely cause, a priority and the next skill to run.
Romeo's rule: Most ranking wobbles are weather, not climate; report only the movement that changes what someone should do this week.
Use this when
- Traffic or clicks dropped or jumped and you want to know why.
- You want a weekly or monthly read of Search Console data that surfaces hidden movement, not the same top terms every time.
- Search Console and analytics disagree and you need to know what that disagreement means.
- A migration, redesign, redirect batch or big content update shipped and you need to separate expected volatility from real damage.
- You want page-2, low-CTR, scaling and new-query opportunities pulled out of existing performance data.
Don't use this for
- Finding new keywords to target →
seo-opportunity-research. - Digging into a suspected crawl, indexing, canonical or redirect problem →
technical-seo-audit. - Rewriting weak titles and meta descriptions →
title-meta-ctr. - Snapshotting signals before a deploy so you can compare after →
seo-change-monitor.
What you need
Required
- Site domain and canonical URL rules.
- Date range and comparison range.
- Target countries/languages and excluded locales.
- Search performance data: query, page, clicks, impressions, CTR, position, country, device, date.
- Site inventory with page type, target keyword, status, content owner, last updated date.
- Known changes: migrations, redirects, launches, page updates, title/meta edits, outages, campaigns, seasonality.
- Existing tasks and prior audit reports.
Helpful
- Analytics by URL: sessions, pageviews, users, organic segment, conversions, engagement.
- Rank tracker or SERP snapshots.
- Crawl/indexing data.
- Revenue/lead-quality data by landing page.
- Server logs, AI-bot fetches, internal search, or support demand.
No tools?
Search Console's Performance report is free and enough for a basic audit. Use its Compare option (last 28 days vs the previous period, or vs the same period last year for seasonal sites), export the Queries and Pages tabs as CSV, and filter by country and device. For any page with a sudden impressions drop, open the Page indexing report and URL Inspection. If there is no analytics export, ask for screenshots of organic landing pages by period from GA4 or whichever analytics tool the site uses. Without a change log, ask the user what shipped in the window and check the Wayback Machine for title or layout changes on pages that dropped. Remember that Search Console data lags by a few days and hides rare queries for privacy, so query rows will not add up to page totals.
Ground rules
- Lead with hidden movement, not the same known top terms every day.
- Search movement must be interpreted with impressions and CTR, not position alone.
- Analytics and Search Console (GSC) can disagree; that disagreement is often the finding.
- Do not call normal fluctuation a problem.
- Do not recommend risky title/meta edits casually, especially on pages already ranking.
- Ignore configured irrelevant locales, test pages, and suppressed clusters.
- Do not duplicate active tasks.
Data sources
Normalize data from Google Search Console, GA4, PostHog, Plausible, Amplitude, Fathom, server logs, DataForSEO, Ahrefs, Semrush, SearchAPI, crawlers, or CSV uploads.
Work from compact normalized rows. Never pass raw large API payloads into the reasoning step.
Default movement rules
Tune thresholds per site size, but start with these defaults:
- Page-2 opportunity: average position 11-30 and meaningful impressions or keyword volume >100.
- Low CTR opportunity: >200 impressions, CTR <1%, and page appears relevant.
- Severe low CTR: >1000 impressions, CTR <1%.
- Scaling opportunity: CTR >3% with <100 impressions/week or low distribution.
- Big mover: average position changes by >=5 positions.
- Core/high-volume terms: only alert on >=10 position movement unless explicitly watched.
- Sharp traffic movement: pageviews/sessions change >=25% with enough baseline volume.
- New query discovery: relevant query appears with impressions/rank that did not exist in prior window.
- Decay candidate: clicks or impressions down for 2+ comparable periods while ranking/intent was previously stable.
Steps
- Normalize and filter.
- Align timezones, date windows, and data freshness. Remember GSC is delayed.
- Normalize URLs and strip parameters.
- Group by URL, query, country, device, page type, and content cluster.
- Exclude configured languages/locales, staging/test URLs, branded terms when requested, and known suppressed clusters.
- Compact external data before analysis.
- Load context before judging movement.
- Pull site inventory and target keyword mapping.
- Read recent reports or saved findings for the comparison horizon.
- Read active tasks/issues so repeated opportunities are marked already tracked.
- Load known launches, redirects, title/meta changes, deployments, and campaigns.
- Detect search movement.
- Find rising pages and queries.
- Find slipping pages and queries.
- Find page-2 clusters that can be pushed to page 1.
- Find high-impression/low-click rows.
- Find high-CTR/low-impression pages worth scaling.
- Find new queries that reveal language customers use.
- Find cannibalization candidates where several URLs split one intent.
- Cross-check analytics.
- Compare organic search movement to pageviews/sessions/conversions.
- Flag cases where GSC is up but analytics is flat/down, or analytics is up without GSC support.
- Use conversions to raise priority for pages that affect signups, demos, trials, purchases, or lead quality.
- Skip top-known pages if the audit goal is hidden opportunities.
- Diagnose likely cause.
- Content decay: old page slipping, competitor content fresher, weak top section.
- SERP shift: page type changed, forums/videos/tools now dominate, featured snippet changed, or an AI Overview now answers the query (impressions hold while clicks fall; Search Console's generative AI performance report shows whether the page is cited there).
- Snippet issue: impressions high, CTR low, title/meta or visible promise weak.
- Intent mismatch: page ranks for query but does not answer the query quickly.
- Cannibalization: multiple pages target same intent.
- Internal-link gap: relevant page exists but lacks authority flow from related content.
- Indexing/technical issue: sudden impressions drop, URL excluded, canonical/redirect/crawl issue suspected.
- Tracking issue: analytics changed without search data support.
- Seasonality: predictable demand shift.
- Google update or manual action: the drop starts on the dates of a core, spam or other ranking update on Google's Search Status Dashboard, or Search Console's Manual actions or Security issues report is not empty. Check both before blaming a page.
- Expected volatility: recent redirect/consolidation or major page update. Do not over-alert for 2-4 weeks after redirects.
- Prioritize. Use the library's priority labels.
Fix next(Fix nowwhen the drop hits a conversion page or has a sitewide technical cause):- page-2 rank 11-20 with business-fit demand
500 impressions and near-zero clicks
- conversion page affected
- sharp sustained drop on important page
- newly discovered cluster with clear commercial fit
Worth doing:- rank 21-30 with good fit
- high CTR low impressions
- internal-link improvements
- refreshes that do not require design/CMS dependencies
Leave it(say why):- minor rank noise
- low-fit generic terms
- duplicate findings
- known suppressed clusters
- Choose action.
- Brief for create/refresh/comparison/landing page (
seo-content-brief). - Internal-link task (
internal-linking-plan). - Snippet/title/meta review with risk flag (
title-meta-ctr). - Technical/indexing investigation (
technical-seo-audit). - Consolidation plan (
keyword-cannibalization-check). - Continue watching.
- Suppress/ignore.
- Brief for create/refresh/comparison/landing page (
- De-duplicate.
- Check existing tasks by URL, keyword cluster, and intent.
- If matched, mark already tracked with task id or reference.
- Only create a new recommendation when the action, page, or keyword cluster is materially different.
- Include a duplicate-check note in every audit.
Required evidence per finding
Each finding needs:
- URL or proposed URL.
- Query/cluster.
- Current metrics and comparison metrics.
- Why it is meaningful.
- Recommended action.
- Confidence.
- Whether it is new, repeated, or already tracked.
What to hand back
Fill in this template. Write every finding in the finding format shown under Rises; leave a section out only if it has nothing in it, and say so in one line.
# SEO performance audit: <site>, <date range> vs <comparison range>
**What I found:** <one plain-English sentence>
**What matters most:** <one sentence>
**What to do first:** <one sentence>
## Executive summary
- <what matters, not a raw data tour>
## Rises
- **<URL or proposed URL>** | <query/cluster>
- Now vs before: <clicks, impressions, CTR, position, current vs comparison>
- Why it is meaningful: <interpretation>
- Recommended action: <...>
- Confidence: high / medium / low (seen / tool / inferred)
- Status: new / repeated / already tracked (<task id or reference>)
## Drops
- <finding format, plus likely cause and risk level: high / medium / low>
## Page-2 opportunities
## CTR opportunities
## New query discoveries
## Analytics mismatches
## Cannibalization or duplicate-intent notes
## Already tracked or suppressed
- <item>: <task id, reference or suppression reason>
## Recommended actions
1. <action> | priority: `Fix now` / `Fix next` / `Worth doing` / `Leave it` | page: <URL> | owner or destination: <who or what acts on it> | next skill: `<slug>`
## Duplicate check
- <tasks and prior reports checked; what matched>
## Data gaps or failed sources
- <source, what failed, what it means for confidence>
## What I could not check
- <...>Stop and flag if
Fail the audit, and say so instead of handing it back as done, if:
- It includes excluded languages/locales.
- It reports raw API dumps.
- It alerts on minor fluctuations without business context.
- It repeats unchanged findings from recent reports without saying already tracked.
- It skips duplicate checks.
- It recommends risky title/meta changes on a ranking page without warning.
- It ignores analytics/conversion data when available.
Next step
- For each
Fix noworFix nextcreate, refresh, comparison or landing action, runseo-content-briefwith the URL, query cluster, metrics and diagnosed cause. - For suspected indexing or technical causes, run
technical-seo-auditon the affected URLs before touching content. - For page-2 clusters and new query discoveries that need fresh demand data, run
seo-opportunity-research.
Part of the free RomeoSEO skill library: https://romeoseo.com/skills
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

