PluginBench
Skill
Review
Audit score 70

seo-google

agricidaniel/claude-seo

Access Google's real SEO data: Search Console, PageSpeed, CrUX field metrics, Indexing API, and GA4 organic traffic.

What is seo-google?

Direct integration with Google's SEO APIs for real-time field data, indexation status, search performance, and Core Web Vitals. Use this when you need actual Chrome user metrics, Search Console analytics, URL inspection results, or organic traffic trends from GA4—not crawl-based estimates.

  • Query Search Console for clicks, impressions, CTR, and position data (28-day history)
  • Retrieve CrUX field data and 25-week Core Web Vitals trends for any URL
  • Run PageSpeed Insights with Lighthouse lab scores merged with real field data
  • Check URL indexation status, canonical tags, and crawl information via URL Inspection API
  • Submit URLs to Google's Indexing API for faster discovery and crawling
  • Analyze GA4 organic traffic and top landing pages by source

How to install seo-google

npx skills add https://github.com/agricidaniel/claude-seo --skill seo-google
Prerequisites
  • Google Cloud project with API key and/or service account credentials
  • For Search Console, URL Inspection, and Indexing APIs: OAuth token or service account JSON file
  • For GA4 reports: GA4 property ID configured in credentials
  • For Keyword Planner (Tier 3): Google Ads developer token and customer ID
  • Run `/seo google setup` for step-by-step credential configuration
Claude Code
Cursor
Windsurf
Cline

How to use seo-google

  1. 1.Run `/seo google setup` to configure your Google Cloud credentials and detect your credential tier
  2. 2.Check your available commands with `/seo google quotas` to see rate limits
  3. 3.Query Search Console with `/seo google gsc <property>` to get clicks, impressions, CTR, and position for the last 28 days
  4. 4.Inspect URL indexation status with `/seo google inspect <url>` to verify Google's crawl and index state
  5. 5.Retrieve CrUX field data with `/seo google crux <url>` or `/seo google crux-history <url>` for Core Web Vitals trends
  6. 6.Run `/seo google pagespeed <url>` to combine Lighthouse lab scores with real field data from Chrome users
  7. 7.Submit URLs to Google with `/seo google index <url>` or batch-submit with `/seo google index-batch <file>`
  8. 8.Analyze organic traffic with `/seo google ga4 [property-id]` and `/seo google ga4-pages [property-id]`

Use cases

Good for
  • Monitor search performance drops or gains by querying Search Console for query-level CTR and position trends
  • Identify quick-win optimization opportunities: queries ranking 4–10 with high impressions
  • Track Core Web Vitals improvements over 25 weeks to validate performance fixes
  • Verify URL indexation status before and after submitting to the Indexing API
  • Analyze organic traffic attribution in GA4 to correlate SEO changes with revenue impact
Who it's for
  • SEO professionals and content strategists
  • Web performance engineers and site reliability teams
  • Product managers tracking organic search ROI
  • Marketing analysts measuring search visibility and traffic trends

seo-google FAQ

What credentials do I need to get started?

At minimum, a Google API key (Tier 0) for PageSpeed, CrUX, and NLP. For Search Console, URL Inspection, and Indexing APIs, you need OAuth or a service account (Tier 1). For GA4 reports, add your GA4 property ID (Tier 2). Run `/seo google setup` for guided configuration.

What is the difference between CrUX and PageSpeed Insights?

PageSpeed Insights combines Lighthouse lab data (point-in-time performance) with CrUX field data (28-day Chrome user metrics). CrUX alone shows only field data. Use PageSpeed for a complete picture; use CrUX for faster field-data-only checks.

How far back does Search Console data go?

Search Console reports the last 28 days by default. CrUX History provides 25-week trends. Search Console data may be unreliable for impressions and position between 2025-05-13 and 2026-04-27 due to a logging error (clicks unaffected).

Can I batch-submit URLs to Google's Indexing API?

Yes. Use `/seo google index-batch <file>` to submit up to 200 URLs at once. Provide a newline-delimited file of URLs.

What does 'credential tier' mean?

Tier 0 (API key) unlocks PageSpeed and CrUX. Tier 1 (OAuth/service account) adds Search Console and URL Inspection. Tier 2 (GA4 property ID) adds organic traffic reports. Tier 3 (Ads credentials) adds Keyword Planner. The skill detects your tier automatically and shows available commands.

Full instructions (SKILL.md)

Source of truth, from agricidaniel/claude-seo.


name: seo-google description: > Google SEO APIs: Search Console (Search Analytics, URL Inspection, Sitemaps), PageSpeed Insights v5, CrUX field data with 25-week history, Indexing API v3, and GA4 organic traffic. Provides real Google field data for Core Web Vitals, indexation status, search performance, and organic traffic trends. Use when user says "search console", "GSC", "PageSpeed", "CrUX", "field data", "indexing API", "GA4 organic", "URL inspection", or "real CWV data". user-invocable: true argument-hint: "[command] [url|property]" license: MIT metadata: author: AgriciDaniel version: "2.4.1" category: seo

Google SEO APIs

Direct access to Google's own SEO data. Bridges the gap between crawl-based analysis (existing claude-seo skills) and Google's real-time field data: actual Chrome user metrics, real indexation status, search performance, and organic traffic.

All APIs are free. Setup requires a Google Cloud project with API key and/or service account -- run /seo google setup for step-by-step instructions.

Prerequisites

Before executing any command, check credentials:

"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_auth.py --check --json

Config file: ~/.config/claude-seo/google-api.json

{
  "service_account_path": "/path/to/service_account.json",
  "api_key": "<GOOGLE_API_KEY>",
  "default_property": "sc-domain:example.com",
  "ga4_property_id": "properties/123456789"
}

If missing, read references/auth-setup.md and walk the user through setup.

Credential Tiers

TierDetectionAvailable Commands
0 (API Key)api_key presentpagespeed, crux, crux-history, youtube, nlp
1 (OAuth/SA)+ OAuth token or service accountTier 0 + gsc, inspect, sitemaps, index
2 (Full)+ ga4_property_id configuredTier 1 + ga4, ga4-pages
3 (Ads)+ ads_developer_token + ads_customer_idTier 2 + keywords, volume

Always communicate the detected tier before running commands.

Quick Reference

CommandWhat it doesTier
/seo google setupCheck/configure API credentials--
/seo google pagespeed <url>PSI Lighthouse + CrUX field data0
/seo google crux <url>CrUX field data only (p75 metrics)0
/seo google crux-history <url>25-week CWV trend analysis0
/seo google gsc <property>Search Console: clicks, impressions, CTR, position1
/seo google inspect <url>URL Inspection: index status, canonical, crawl info1
/seo google inspect-batch <file>Batch URL Inspection from file1
/seo google sitemaps <property>GSC sitemap status1
/seo google index <url>Submit URL to Indexing API1
/seo google index-batch <file>Batch submit up to 200 URLs1
/seo google ga4 [property-id]GA4 organic traffic report2
/seo google ga4-pages [property-id]Top organic landing pages2
/seo google youtube <query>YouTube video search (views, likes, duration)0
/seo google youtube-video <id>YouTube video details + top comments0
/seo google nlp <url-or-text>NLP entity extraction + sentiment + classification0
/seo google entities <url-or-text>Entity analysis only (for E-E-A-T)0
/seo google keywords <seed>Keyword ideas from Google Ads Keyword Planner3
/seo google volume <keywords>Search volume lookup from Keyword Planner3
/seo google entity <query>Knowledge Graph entity check0
/seo google safety <url>Web Risk URL safety check0
/seo google quotasShow rate limits for all APIs--

PageSpeed + CrUX

/seo google pagespeed <url>

Combined Lighthouse lab data + CrUX field data.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run pagespeed_check.py <url> --json Reference: references/pagespeed-crux-api.md (Core Web Vitals thresholds: references/crux-history-api.md) Report the Lighthouse build from the output's lighthouse_version field instead of assuming the latest release. Default: Both mobile + desktop strategies, all Lighthouse categories.

Output merges lab scores (point-in-time Lighthouse) with field data (28-day Chrome user metrics). CrUX tries URL-level first, falls back to origin-level.

/seo google crux <url>

CrUX field data only (no Lighthouse run). Faster.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run pagespeed_check.py <url> --crux-only --json

/seo google crux-history <url>

25-week CrUX History trends. Shows whether CWV metrics are improving, stable, or degrading.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run crux_history.py <url> --json Reference: references/crux-history-api.md

Output includes per-metric trend direction, percentage change, and weekly p75 values.


Search Console

/seo google gsc <property>

Search Analytics: clicks, impressions, CTR, position for last 28 days.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run gsc_query.py --property <property> --json Reference: references/search-console-api.md Default: 28 days, dimensions=query,page, type=web, limit=1000.

For EU sites, read references/dma-consent-mode-v2.md before interpreting CTR or GA4 drops: DMA and Consent Mode v2 change what Search Console and GA4 record.

Includes quick-win detection: queries at position 4-10 with high impressions. The totals block comes from a separate dimensionless aggregate query because query-level rows can omit anonymized low-volume traffic. Treat totals as site-wide only when totals_complete is true. --limit caps total returned dimension rows, not the size of every pagination request.

AI surfaces in GSC (2026):

  • Generative AI performance report (launched 2026-06-03), a dedicated view of AI Overviews + AI Mode visibility. Impressions only (no clicks/CTR/position/query); dimensions Pages/Countries/Devices/Dates (Pacific Time); 1,000-row limit; newest data preliminary; a separate Discover gen-AI report also exists. Available to all websites worldwide since 2026-08-31 (launched to a subset 2026-06-03); dates support hourly, daily, weekly and monthly granularity.
  • Multimodal search type (rolling out globally since 2026-09-24): a filter in the Search results and Generative AI performance reports for visits from Lens, Circle to Search, image uploads and Chrome "Search this image", exportable from the UI. No Search Analytics API type value has been verified for it, so do not invent one.
  • AI Mode already rolls into standard Performance totals (Web search type), clicks (external-link clicks in AI Mode) and impressions are counted in the normal report, so you cannot cleanly split "classic" vs "AI" traffic from totals. Use the Generative AI report for impressions-only AI visibility.
  • Data-reliability caveat: a GSC logging error made impressions, CTR, and average position unreliable from 2025-05-13 to 2026-04-27 (clicks unaffected; fixed forward-only, no backfill). Treat impression/CTR/position trends spanning that window with caution; expect an apparent impressions drop after the fix.

Platform properties (2026): Search Console can expose verified TikTok, Instagram, X, and YouTube accounts as individual properties. Verify each account separately, unless it was already added through a claimed Search profile. Use these properties for Google Search performance only, not as a substitute for the platform's own analytics. Source: developers.google.com/search/docs/monitor-debug/analyze-social-video-content

/seo google inspect <url>

URL Inspection: real indexation status from Google.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run gsc_inspect.py <url> --json

Returns: verdict (PASS/FAIL), coverage state, robots.txt status, indexing state, page fetch state, canonical selection, rich results. (mobileUsabilityResult is deprecated in the API; do not report it as a mobile-usability check.)

/seo google inspect-batch <file>

Batch inspection from a file (one URL per line). Rate limited to 2,000/day per site.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run gsc_inspect.py --batch <file> --json

/seo google sitemaps <property>

List submitted sitemaps with status, errors, warnings. Sitemap contents report submitted counts only; URL Inspection API is the indexation truth for whether specific URLs are indexed.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run gsc_query.py sitemaps --property <property> --json


Indexing API

/seo google index <url>

Notify Google of a URL update.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run indexing_notify.py <url> --json Reference: references/indexing-api.md

The Indexing API is officially for JobPosting and BroadcastEvent/VideoObject pages. Always inform the user of this restriction. Daily quota: 200 publish requests.

/seo google index-batch <file>

Batch submit URLs from a file. Tracks quota usage.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run indexing_notify.py --batch <file> --json


GA4 Traffic

/seo google ga4 [property-id]

Organic traffic report: daily sessions, users, pageviews, bounce rate, engagement.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ga4_report.py --property <id> --json Reference: references/ga4-data-api.md Default: 28 days, filtered to Organic Search channel group.

GA4 "AI Assistants" channel (live ~2026-05-13): GA4 added a native AI Assistants Default Channel Group. Sessions referred by a recognized AI assistant get medium=ai-assistant. Google's recognized sources are ChatGPT, Gemini, Claude, Deepseek, Copilot, Grok and the channel excludes Google AI Overviews / AI Mode. Verify Perplexity separately if needed; unsupported sources may stay in Referral, and most AI sessions arrive referrer-less and fall into Direct, so this channel undercounts AI traffic. Forward-only, no backfill.

/seo google ga4-pages [property-id]

Top organic landing pages ranked by sessions.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ga4_report.py --property <id> --report top-pages --json


YouTube (Video SEO)

Some third-party studies report a 0.737 correlation between YouTube mentions and AI visibility. Treat it as a methodology-dependent signal. Free, API key only.

/seo google youtube <query>

Search YouTube for videos. Returns title, channel, views, likes, duration.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run youtube_search.py search "<query>" --json Reference: references/youtube-api.md Quota: 100 units per search (10,000 units/day free).

/seo google youtube-video <video_id>

Detailed video info + tags + top 10 comments.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run youtube_search.py video <video_id> --json Quota: 2 units (video details + comments).


NLP Content Analysis

Google NLP entity/sentiment output for internal content-quality checks. Do not treat it as Google E-E-A-T scoring.

/seo google nlp <url-or-text>

Full NLP analysis: entities, sentiment, content classification.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run nlp_analyze.py --url <url> --json or --text "..." Reference: references/nlp-api.md Free tier: 5,000 units/month. Requires billing enabled on GCP project.

/seo google entities <url-or-text>

Entity extraction only (faster, less quota).

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run nlp_analyze.py --url <url> --features entities --json


Keyword Research (Google Ads)

Gold-standard keyword volume data. Requires Google Ads account.

/seo google keywords <seed>

Generate keyword ideas from seed terms.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run keyword_planner.py ideas "<seed>" --json Reference: references/keyword-planner-api.md Requires: Ads developer token + customer ID in config (Tier 3).

/seo google volume <keywords>

Search volume for specific keywords (comma-separated).

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run keyword_planner.py volume "<kw1>,<kw2>" --json


Supplementary

/seo google entity <query>

Knowledge Graph entity check. Verifies brand presence.

Reference: references/supplementary-apis.md Uses Knowledge Graph Search API with API key.

/seo google safety <url>

Web Risk API check for malware/social engineering flags.

Reference: references/supplementary-apis.md

/seo google quotas

Display rate limits table. Read references/rate-limits-quotas.md.


Reports

After any analysis command, offer to generate a PDF/HTML report.

/seo google report <type>

Generate a professional PDF report with charts and analytics.

Script: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type <type> --data <json> --domain <domain> --format pdf

TypeInputOutput
cwv-auditPSI + CrUX + CrUX History dataCore Web Vitals audit with gauges, timelines, distributions
gsc-performanceGSC query dataSearch Console report with query tables, quick wins
indexationBatch inspection dataIndexation status with coverage donut chart
fullAll data combinedComprehensive Google SEO report (all sections)

Workflow:

  1. Run data collection commands (pagespeed, gsc, inspect-batch, etc.)
  2. Save JSON output to file: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run pagespeed_check.py <url> --json > data.json
  3. Generate report: "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run google_report.py --type cwv-audit --data data.json --domain <domain>

Convention: After completing analysis, suggest: "Generate a report? Use /seo google report <type>"


Rate Limits

APIPer-MinutePer-DayAuth
PSI v5240 QPM25,000 QPDAPI Key
CrUX + History150 QPM (shared)UnlimitedAPI Key
GSC Search Analytics1,200 QPM/site30M QPDService Account
GSC URL Inspection600 QPM2,000 QPD/siteService Account
Indexing API380 RPM200 publish/dayService Account
GA4 Data API10 concurrent~25K tokens/dayService Account

Cross-Skill Integration

  • seo-audit: Spawns seo-google agent for live CWV + indexation data (conditional)
  • seo-technical: Uses pagespeed_check.py for real CWV field data
  • seo-performance: CrUX field data supplements Lighthouse lab data
  • seo-sitemap: GSC sitemap status shows submitted counts, errors, and warnings; use URL Inspection for indexation truth
  • seo-content: GSC query data informs keyword targeting
  • seo-geo: Use GSC Generative AI performance reports and AI Overviews/AI Mode/Discover gen-AI include/exclude controls (the Search generative AI property setting, available to all sites since 2026-08-31)

Output Format

  • CWV metrics: traffic-light rating (Good / Needs Improvement / Poor)
  • Performance reports: tables with sortable columns
  • Always include data freshness note
  • Save reports as GOOGLE-API-REPORT-{domain}.md
  • Markdown/LLM templates in assets/templates/: cwv-audit-report.md, gsc-performance-report.md, indexation-status-report.md; distinct from google_report.py's PDF pipeline

Technical Notes

  • INP replaced FID on March 12, 2024. Never reference FID.
  • CLS values from CrUX are string-encoded (e.g., "0.05"). Scripts handle parsing.
  • CrUX 404 = insufficient traffic, not an auth error.
  • Search Analytics data has 2-3 day lag.
  • round_trip_time replaced effectiveConnectionType in CrUX (Feb 2025).
  • Custom Search JSON API is closed to new customers (2025).

Error Handling

ScenarioAction
No credentials configuredRun /seo google setup. List Tier 0 commands that work with just an API key.
Service account lacks GSC accessReport error. Instruct: add client_email to GSC > Settings > Users > Add.
CrUX data unavailable (404)Report insufficient Chrome traffic. Suggest PSI lab data as fallback.
GA4 property not foundReport error. Show how to find property ID in GA4 Admin > Property Details.
Indexing API quota exceededReport 200/day limit. Suggest prioritizing most important URLs.
Rate limit (429)Wait and retry with exponential backoff. Report which API hit the limit.