Systems Lab

Agent skill

technical-seo-monitor

This skill should be used when the user asks to \"fix indexing problems\", \"check sitemap health\", \"diagnose crawl issues\", or mentions \"pages not appearing in Google\", \"canonical URL conflicts\", or \"technical SEO audit\".

activeSelf-containedInstructions only1,808 words

Filed under Content and SEO.

From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10

What it does when it runs

This skill should be used when the user asks to \"fix indexing problems\", \"check sitemap health\", \"diagnose crawl issues\", or mentions \"pages not appearing in Google\", \"canonical URL conflicts\", or \"technical SEO audit\". Do NOT use for: organic search performance analysis or CTR optimization (use gsc-performance-analyzer).

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about technical-seo-monitor

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin
git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/technical-seo-monitor"
mkdir -p ~/.claude/skills/technical-seo-monitor
cp -R "/tmp/ad-superpowers-plugin/plugin/skills/technical-seo-monitor/." ~/.claude/skills/technical-seo-monitor/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/technical-seo-monitor/SKILL.md, which is licensed MIT (repository). 1,808 words, 21 headings.

Technical SEO Monitor

Purpose

Diagnose and resolve technical SEO issues using Google Search Console data. This skill covers indexing status, sitemap health, crawl diagnostics, canonical issues, and mobile usability — the foundational technical elements that determine whether Google can find, crawl, and index your pages.

When to Use This Skill

Invoke when user mentions:

  • Indexing: "Why isn't my page showing up in Google?"
  • Sitemaps: "Is my sitemap working correctly?"
  • Crawl issues: "Google can't access my pages"
  • Canonical problems: "Google is indexing the wrong URL"
  • Mobile issues: "Mobile usability errors in Search Console"
  • Rich results: "My structured data isn't showing"
  • Technical audit: "Check my site's technical SEO health"
  • Deindexing: "Pages were removed from Google's index"

Required Tools

ToolPurpose
gsc_manage_url(action="inspect")Per-page indexing status and crawl diagnostics
gsc_list_sites(include_sitemaps=true)Property overview with sitemap health and status
gsc_manage_url(action="submit_sitemap")Submit new or updated sitemaps
gsc_search_analyticsIdentify pages with impressions but no clicks (indexed but poor)
gsc_search_analytics(dimensions=["page"])Page-level performance for cross-referencing

Part 1: Indexing Status Interpretation

URL Inspection Verdicts

VerdictMeaningAction
PASSURL is indexed and eligible to appear in searchNo action needed
NEUTRALURL found but not indexed (not an error)May be low value or duplicate
FAILURL has critical issues preventing indexingImmediate investigation needed
VERDICT_UNSPECIFIEDNo data availablePage may not have been crawled yet

Coverage States

StateMeaningPriority
Submitted and indexedIn sitemap and indexedOK
Indexed, not submitted in sitemapFound via crawling, indexedLow — add to sitemap
Crawled - currently not indexedCrawled but Google chose not to indexMedium — improve content quality
Discovered - currently not indexedKnown to Google but not yet crawledLow — will be crawled eventually
Excluded by 'noindex' tagIntentionally excludedOK if intentional
Blocked by robots.txtCannot be crawledHigh — fix if page should be indexed
URL is unknown to GoogleNever discoveredHigh — submit sitemap or add internal links
RedirectURL redirects elsewhereOK if intentional
Soft 404Page returns 200 but appears empty/low valueHigh — add content or return 404
Not found (404)Page doesn't existMedium — redirect or remove links
Server error (5xx)Server failed to respondCritical — fix server issues
Duplicate without user-selected canonicalDuplicate, Google chose canonicalLow — set canonical tag if preferred
Duplicate, Google chose different canonicalYour canonical differs from Google'sMedium — investigate canonical conflict

Diagnosis Decision Tree

Page not appearing in Google?
│
├─► Run gsc_manage_url(site_url, action="inspect", url=page_url)
│   │
│   ├─► Verdict: PASS → Page IS indexed
│   │   └─► Check: Is it ranking for the right queries?
│   │       Use gsc_search_analytics with page_filter
│   │
│   ├─► Verdict: FAIL
│   │   ├─► robots.txt blocking? → Fix robots.txt
│   │   ├─► noindex tag? → Remove if page should be indexed
│   │   ├─► Server error? → Fix backend issues
│   │   └─► Soft 404? → Add meaningful content
│   │
│   ├─► Verdict: NEUTRAL (crawled, not indexed)
│   │   ├─► Thin content? → Expand to 300+ words
│   │   ├─► Duplicate? → Set canonical or consolidate
│   │   ├─► Low authority? → Add internal links
│   │   └─► Recently published? → Wait 1-2 weeks
│   │
│   └─► No data → Page never discovered
│       ├─► In sitemap? → Check gsc_list_sites(include_sitemaps=true)
│       ├─► Internal links? → Add links from indexed pages
│       └─► Submit sitemap with gsc_manage_url(action="submit_sitemap")

Part 2: Sitemap Health Check

Sitemap Status Indicators

StatusMeaningAction
SuccessSitemap processed without errorsHealthy
PendingSubmitted but not yet processedWait (usually < 24h)
Has errorsSitemap has parsing or URL errorsFix errors
Warnings > 0Non-critical issues foundReview and fix
Errors > 0Critical issues foundImmediate fix needed

Sitemap Health Checklist

CheckGoodWarningCritical
Processing statusSuccessPending > 48hHas errors
URL countMatches expected pagesDiffers by > 20%0 URLs or missing
Last downloaded< 7 days ago7-30 days ago> 30 days ago
Errors01-5> 5
Warnings01-10> 10
URLs in index vs sitemap> 80% indexed50-80% indexed< 50% indexed

Common Sitemap Issues

IssueCauseFix
0 URLs discoveredXML parsing errorValidate XML, check encoding
Not downloaded recentlyrobots.txt blocks sitemapAdd Sitemap: directive to robots.txt
Many URLs not indexedLow quality or duplicate pagesClean up sitemap, only include indexable URLs
Sitemap too large> 50,000 URLs or > 50MBSplit into sitemap index with child sitemaps
Wrong URL formatHTTP vs HTTPS mismatchEnsure all URLs match property URL scheme

Part 3: Canonical URL Diagnostics

Canonical Conflicts

When gsc_manage_url(action="inspect") returns different google_canonical vs user_canonical:

ScenarioCauseFix
Google chose HTTPS, you set HTTPHTTPS migration incompleteUpdate canonicals to HTTPS
Google chose www, you set non-wwwMixed signalsStandardize + redirect
Google chose different pageContent overlap/duplicationConsolidate or differentiate content
Google ignoring your canonicalCanonical contradicts signalsCheck: hreflang, internal links, sitemap consistency
No user canonical setMissing <link rel="canonical">Add canonical tags to all pages

Canonical Best Practices

  1. Every page should have a self-referencing canonical tag
  2. Canonical URL must be accessible (not 404, not redirect, not noindex)
  3. Canonical should match the URL in sitemap
  4. All internal links should point to the canonical version
  5. Canonical must use the correct protocol (HTTPS) and domain (www vs non-www)

Part 4: Core Web Vitals & Mobile Usability

Core Web Vitals (as of 2024-2026)

Google uses Core Web Vitals as a ranking signal. The three active metrics are:

MetricWhat It MeasuresGoodNeeds ImprovementPoor
LCP (Largest Contentful Paint)Loading speed of main content< 2.5s2.5-4.0s> 4.0s
INP (Interaction to Next Paint)Responsiveness to user input< 200ms200-500ms> 500ms
CLS (Cumulative Layout Shift)Visual stability< 0.10.1-0.25> 0.25

INP replaced FID (First Input Delay) in March 2024. INP measures the full interaction latency (from input to next frame paint), not just the initial response delay. If you have old references to FID in your performance reports, those are outdated. Focus on INP.

Common INP issues:

  • Heavy JavaScript executing during user interactions
  • Long tasks blocking the main thread
  • React/Vue re-renders triggered by click handlers
  • Third-party scripts (chat widgets, analytics) delaying response

Mobile Verdicts from URL Inspection

IssueImpactFix
Text too small to readPoor mobile UXUse min 16px font, responsive typography
Clickable elements too closeAccidental tapsMin 48px touch targets, 8px spacing
Content wider than screenHorizontal scrollingSet viewport meta, use responsive CSS
Viewport not setPage not mobile-optimizedAdd <meta name="viewport" content="width=device-width, initial-scale=1">

Part 5: Output Format

================================================================================
                     TECHNICAL SEO HEALTH CHECK
                     Property: [site_url]
                     Date: [YYYY-MM-DD]
================================================================================

OVERALL HEALTH: [HEALTHY / NEEDS ATTENTION / CRITICAL]

SITEMAP STATUS
──────────────
| Sitemap | URLs | Status | Last Downloaded | Errors | Warnings |
|---------|------|--------|-----------------|--------|----------|
| /sitemap.xml | 1,240 | Success | 2 days ago | 0 | 0 |
| /blog-sitemap.xml | 380 | Has errors | 5 days ago | 3 | 2 |

INDEXING SUMMARY (sampled pages)
────────────────────────────────
| Status | Count | % | Action |
|--------|-------|---|--------|
| Indexed | [X] | [Y%] | Monitor |
| Crawled, not indexed | [X] | [Y%] | Improve content quality |
| Discovered, not indexed | [X] | [Y%] | Wait or add internal links |
| Blocked/Excluded | [X] | [Y%] | Review if intentional |
| Errors | [X] | [Y%] | Fix immediately |

CRITICAL ISSUES (Fix Now)
─────────────────────────
1. [Issue description + affected URL + fix]
2. [Issue description + affected URL + fix]

WARNINGS (Plan to Fix)
──────────────────────
1. [Warning description + affected URL + fix]

CANONICAL ISSUES
────────────────
| Page | Your Canonical | Google's Canonical | Issue |
|------|---------------|-------------------|-------|
| [url] | [url] | [different url] | Google chose different page |

RECOMMENDATIONS
───────────────
1. CRITICAL: [Most important fix]
2. HIGH: [Second priority]
3. MEDIUM: [Third priority]

Part 6: Monitoring Cadence

CheckFrequencyTool
Sitemap statusWeeklygsc_list_sites(include_sitemaps=true)
Key page indexingWeeklygsc_manage_url(action="inspect") (sample 10-20 pages)
Overall impressions trendWeeklygsc_search_analytics with dimensions=["date"]
New page indexingWithin 48h of publishgsc_manage_url(action="inspect")
After technical changesImmediatelygsc_manage_url(action="inspect") + gsc_list_sites(include_sitemaps=true)
Full technical auditMonthlyAll GSC tools combined

AI Overviews: Technical SEO Implications

Google AI Overviews (launched broadly 2024) directly affect organic performance. From a technical SEO perspective:

  • Structured data matters more: Pages with well-implemented schema (FAQ, HowTo, Article) are more likely to be cited in AI Overviews
  • E-E-A-T signals: Author markup, About pages, and expertise signals help Google trust your content for AI sourcing
  • Indexing is still required: Pages must be indexed to appear in AI Overviews
  • Monitor CTR separately: Impressions may remain stable while clicks drop — this is often AI Overviews, not an indexing problem
gsc_search_analytics(site_url="...", dimensions=["query"], days=90)

Compare CTR trends against position trends. If position is stable but CTR is declining on informational queries, AI Overviews are likely the cause — not a technical issue.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what technical-seo-monitor does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.