skills/scraperapi-seo-audit/SKILL.md
Run a comprehensive SEO audit using ScraperAPI's live SERP and scraping tools — no setup required. Use this skill whenever the user wants to: audit SEO for a website, understand why a page isn't ranking, check SEO health, analyze keyword rankings, compare against competitors in search results, find content gaps, review on-page signals (titles, meta, headings, schema), diagnose a traffic drop, check indexation, or get prioritized SEO recommendations. Also trigger when the user says things like "why am I not showing up on Google," "my traffic dropped," "how do I rank for X," "what's wrong with my SEO," "SEO check," or "SEO review." This skill works out of the box — it uses the ScraperAPI MCP tools already connected to this session, with no CLI or API key setup needed.
npx skillsauth add scraperapi/scraperapi-skills scraperapi-seo-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Live SEO analysis powered by ScraperAPI's real-time SERP and scraping tools. No CLI installation or API key setup required — the tools are already connected. The approach is outside-in: start with what Google is actually showing, then scrape pages to explain why.
You — Claude — execute the tool calls directly. Do not generate code for the user or explain how they could run these calls themselves. Call the MCP tools, read the results, and report findings. The user wants an SEO audit, not instructions.
Never fabricate findings. Every finding must cite the exact tool call and output that supports it. If something can't be measured with these tools, say so and note the right external tool.
| Tool | What it returns |
|------|----------------|
| mcp__ScraperAPIRemote__google_search | Live structured SERP — organic rankings, featured snippets, People Also Ask, AI Overview presence, knowledge panels, sitelinks. Returns parsed JSON, not raw HTML. Supports geo-targeting via countryCode and gl parameters. |
| mcp__ScraperAPIRemote__scrape | Full page content with JS rendering — use outputFormat: "markdown" for content extraction and word count, outputFormat: "html" for schema markup, meta tags, and canonical inspection |
| mcp__ScraperAPIRemote__google_news | Brand and topic mention recency — useful for E-E-A-T and freshness signals |
scrapeWhen calling mcp__ScraperAPIRemote__scrape, set render=true and premium=true for any page that requires JavaScript to display content — React/Next.js apps, SPAs, Webflow sites with client-side rendering. Use standard (no render flags) for static HTML: WordPress sites, GitHub, news articles. If the returned HTML has an empty <head> or missing body content, escalate to render=true, premium=true and retry.
For every SEO audit request:
references/report-template.md.countryCode and gl to every google_search call for the user's target market. US is the default; always confirm geography before starting.render=true, premium=true. Note the escalation in the report.Check the user's request for these four parameters. Ask all unclear parameters in one message — never one at a time. Infer what you can from context before asking.
| Parameter | Default if not specified | When to ask | |-----------|--------------------------|-------------| | Site URL | — | Always ask if not provided | | Target keywords | Infer from homepage content after scraping | Confirm inferred keywords before proceeding | | Target market / geography | United States | Always ask — a UK site's rankings on google.com tells you nothing useful | | Audit scope | Mode B (site-wide) for bare domains; Mode A (single-page) for full URL paths | Ask only if genuinely ambiguous |
When to use: User gave a specific URL, asked why a particular page isn't ranking, or has a narrow question about one page's SEO performance. ~8–12 tool calls.
Data gathering:
# Stage 1: Indexation check (run in parallel)
mcp__ScraperAPIRemote__google_search query="site:[domain]" countryCode="[cc]" gl="[cc]"
mcp__ScraperAPIRemote__google_search query='"[Brand Name]"'
# Stage 2: Keyword visibility — one per target keyword (run in parallel)
mcp__ScraperAPIRemote__google_search query="[target keyword 1]" countryCode="[cc]" gl="[cc]"
mcp__ScraperAPIRemote__google_search query="[target keyword 2]" countryCode="[cc]" gl="[cc]"
# Stage 3: On-page analysis — target page + homepage (run in parallel)
mcp__ScraperAPIRemote__scrape url="[target-page-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[target-page-url]" outputFormat="markdown"
mcp__ScraperAPIRemote__scrape url="[homepage-url]" outputFormat="html"
# Stage 4: Top 2 competitors surfaced in Stage 2 (run in parallel)
mcp__ScraperAPIRemote__scrape url="[competitor-1-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[competitor-2-url]" outputFormat="html"
# Stage 5: Brand freshness signals
mcp__ScraperAPIRemote__google_news query='"[Brand Name]"'
Analysis: Run all five Audit Stages below. Focus depth on the target page and its direct competitors.
Output format: Use references/report-template.md. Adapt section depth to single-page scope. Include health grade.
When to use: User gave a bare domain or said "audit my site." Samples homepage plus up to 7 key pages inferred from homepage navigation. ~20–30 tool calls.
Data gathering:
# Stage 1: Indexation check (run in parallel)
mcp__ScraperAPIRemote__google_search query="site:[domain]" countryCode="[cc]" gl="[cc]"
mcp__ScraperAPIRemote__google_search query='"[Brand Name]"'
mcp__ScraperAPIRemote__google_search query="[Brand Name]"
# Stage 2: Keyword visibility (run in parallel, one per keyword)
mcp__ScraperAPIRemote__google_search query="[target keyword 1]" countryCode="[cc]" gl="[cc]"
mcp__ScraperAPIRemote__google_search query="[target keyword 2]" countryCode="[cc]" gl="[cc]"
mcp__ScraperAPIRemote__google_search query="[target keyword 3]" countryCode="[cc]" gl="[cc]"
# Stage 3: On-page analysis — homepage + up to 7 key pages (run in parallel)
# Infer key pages from homepage navigation links
mcp__ScraperAPIRemote__scrape url="[homepage-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[page-2-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[page-3-url]" outputFormat="html"
# ... (up to 8 pages total)
# Follow with markdown for content depth assessment on highest-priority pages:
mcp__ScraperAPIRemote__scrape url="[priority-page-url]" outputFormat="markdown"
# Stage 4: Top 2–3 competitors per keyword (run in parallel)
mcp__ScraperAPIRemote__scrape url="[competitor-1-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[competitor-2-url]" outputFormat="html"
mcp__ScraperAPIRemote__scrape url="[competitor-3-url]" outputFormat="html"
# Stage 5: Brand freshness signals
mcp__ScraperAPIRemote__google_news query='"[Brand Name]"'
Analysis: Run all five Audit Stages below at full depth across all sampled pages.
Output format: Use references/report-template.md. Full section depth for all five stages. Include health grade.
These five stages apply to both modes. Run them in order; parallelize all calls within each stage.
What it answers: "Does Google know this site exists, and what does it see?"
Extract from site: results: approximate indexed page count, sitelinks presence, any unexpected URLs in the index (staging domains, UTM-parameterised URLs, duplicate content signals). From brand search: Knowledge Panel presence, branded SERP features.
Note: site: counts are Google's displayed estimate — approximate only. Precise coverage data requires Google Search Console. Always caveat this in findings.
Read references/serp-playbook.md for exact query patterns and extraction fields.
What it answers: "Where does the site actually appear, and what is Google showing above it?"
For each target keyword, extract: organic position and ranking URL, title tag as shown in SERP, featured snippet (domain and format), People Also Ask questions (top 3–4), and AI Overview presence (Y/N — if Y, note which domains are cited as sources).
AI Overview is the first finding to report per keyword. A site ranking #1 below a full-viewport AI Overview is in a fundamentally different position than one ranking #1 on a clean SERP. Never report a ranking position without its AI Overview context.
If the site ranks outside position 10, search pages 2–3 (start: 10, start: 20) before classifying as "not ranking." Extract the top 3 organic competitors per keyword (excluding Wikipedia/Reddit unless they consistently outrank the target) — these feed Stage 4.
Read references/serp-playbook.md for extraction fields and geo-targeting parameters.
What it answers: "What signals is Google reading from these pages?"
Scrape each target page with outputFormat: "html" for precise signal extraction, then outputFormat: "markdown" for content depth. For each page extract and evaluate: title tag (present, keyword-included, 50–60 chars, unique across site), meta description (present, compelling, 150–160 chars), H1 (exactly one, includes keyword, matches intent), H2/H3 hierarchy (logical, covers subtopics competitors rank for), schema markup types (<script type="application/ld+json">), internal links, image alt text, approximate word count.
Read references/page-analysis.md for the full extraction checklist.
What it answers: "What are the top-ranking pages doing that this site isn't?"
Take the top 2–3 competitors from Stage 2 per keyword. Scrape them with the same checklist from Stage 3. Compare: schema types in use, H2 topic coverage, content depth (word count), SERP features owned (featured snippet, PAA). Flag patterns appearing across all top-ranking pages — these are the highest-signal gaps, because they reflect what Google has repeatedly rewarded for this intent.
What it answers: "Does Google have reason to trust this site?"
Run google_news for the brand name (last 3 months). Note mention count and source quality. Check homepage for author bios, about page, expertise signals, and last-modified dates visible in page content.
Note: backlink authority cannot be measured with these tools. If the audit finds strong on-page SEO with poor rankings, flag backlinks as a likely limiting factor with Ahrefs/Semrush as the recommended tool.
Calculate after completing all five stages. Grade is based on finding severity across Stages 1–4.
| Grade | Criteria | |-------|----------| | A | 0 critical findings, ≤ 2 high-priority issues | | B | 0 critical, 3–5 high-priority issues | | C | 1–2 critical findings, or 6–10 high-priority | | D | 3–5 critical findings, or > 10 high-priority | | F | > 5 critical findings, or indexation blocked |
Critical findings (each counts toward grade): noindex on a key page, title tags missing across the site, no schema on content pages, blocked by robots.txt.
High-priority findings (each counts toward grade): title length violations, duplicate titles, missing meta descriptions, no H1, zero internal linking, image alt text missing at scale.
Include the grade prominently in the executive summary.
| User says... | Mode | |---|---| | "Audit my site" / "Check my SEO" / bare domain provided | Site-Wide (Mode B) | | "Why isn't [specific page] ranking" / full URL path provided | Single-Page (Mode A) | | "My traffic dropped" / "What's wrong with my SEO" | Site-Wide (Mode B) | | "How do I rank for [keyword]" | Single-Page (Mode A) — target the most relevant page | | "Why am I not showing up on Google" | Site-Wide (Mode B) | | "SEO check on my homepage" / "review my /pricing page" | Single-Page (Mode A) |
development
SERP landscape analysis for SEO strategy decisions. Use this skill when the user wants to understand what a search results page actually looks like for their target keywords — including AI Overview presence and attribution, SERP feature composition, how Google is interpreting query intent, which competitors dominate specific keyword sets, and where organic rankings actually translate to visible traffic. Trigger on requests like "analyze the SERP for [keyword]," "why isn't my content getting traffic even though it ranks," "what does Google show for [keyword]," "which keywords are worth targeting," "is [keyword] dominated by AI Overviews," "who owns the SERP for [topic]," "SERP analysis," "keyword landscape," or any request to understand what's happening on a search results page before making a content or SEO strategy decision.
development
Build and implement web scrapers using ScraperAPI. Use this skill whenever the user asks to build, write, create, or implement a scraper, or wants runnable code that extracts data from a website. Trigger on: "build me a scraper for [website]", "write a scraper that fetches product pages from [ecommerce site]", "I need to scrape [data] from [website]", "create a script that extracts [fields] from [URL]", "help me scrape [website] — I need [fields]", "write code to scrape [website]", "make a script that scrapes [website]", "implement a scraper for [URL]". Guides architectural decisions (structured endpoint vs. raw HTML, JS rendering, proxy tier, sync vs. async batch), then generates a complete runnable Python or Node.js script with retry logic, error handling, pagination, and credit estimation.
development
Use this skill whenever the user wants to check, track, or be alerted about product prices on Amazon, Walmart, or via Google Shopping. Trigger on: "monitor the price of this Amazon product", "did the price drop on [Walmart URL]?", "track these ASINs", "compare today's prices to last week", "alert me if [product] goes below $X", "what's the current price of [product]?", "check my price watchlist", "scrape the price of [URL]", "is [product] cheaper anywhere else?". Accepts ASINs, Amazon/Walmart product URLs, or free-text product queries for Google Shopping. Reads an optional baseline JSON file to detect changes, fetches live prices via ScraperAPI's structured endpoints, and reports increases, decreases, restocks, and out-of-stock transitions in a structured change report. Use this skill even when the user does not say the word "monitor" — any one-shot or recurring price-check request belongs here.
development
Market research powered by live web data. Use this skill when the user wants to understand a market, category, or customer segment — including consumer sentiment, demand and trend signals, price and category structure, or the competitive landscape. Trigger on requests like "research the [X] market," "what do customers think about [category]," "how is [category] priced," "what trends are shaping [industry]," "who are the players in [space]," or any request to understand a market before making a product, pricing, positioning, or investment decision.