mcpField
G
google-search-console

google-search-console

github.com/acedatacloudMarketing & growth17178 installsUpdated today
Repository

About google-search-console

A command-line skill for querying Google Search Console through its API with curl and jq. It helps site owners inspect search performance, submitted sitemaps, and URL indexing status.

Key features

  1. 01List verified site properties
  2. 02Query search analytics dimensions
  3. 03Filter analytics results
  4. 04Inspect sitemap status
  5. 05Check URL indexing

Use cases

  1. 01Review clicks and impressions by query
  2. 02Compare performance by page or country
  3. 03Check sitemap errors and warnings
  4. 04Inspect whether a URL is indexed

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/acedatacloud/skills --skill google-search-console

After installing, type/google-search-consolein Claude Code to confirm it loaded.

Details

From the project README

Query Google Search Console via curl + jq. The user's OAuth bearer token is in $GOOGLE_SEARCH_CONSOLE_TOKEN (scope webmasters.readonly); every call needs Authorization: Bearer $GOOGLE_SEARCH_CONSOLE_TOKEN. Base: https://searchconsole.googleapis.com.

Failures are {"error":{"code","message","status"}} — show verbatim. 401 = re-install. 403 = the token's account doesn't own/verify that site.

AUTH="Authorization: Bearer $GOOGLE_SEARCH_CONSOLE_TOKEN"
# Verified sites (siteUrl is the property — URL-encode it in later calls)
curl -sS -H "$AUTH" "https://searchconsole.googleapis.com/webmasters/v3/sites" \
  | jq '.siteEntry[] | {siteUrl, permissionLevel}'

Search analytics

# Top queries by clicks for the last 28 days. siteUrl must be URL-encoded
# (https%3A%2F%2Fexample.com%2F  or  sc-domain%3Aexample.com).
SITE="https%3A%2F%2Fexample.com%2F"
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" -d '{
  "startDate":"2026-05-24","endDate":"2026-06-21",
  "dimensions":["query"],"rowLimit":10
}' "https://searchconsole.googleapis.com/webmasters/v3/sites/$SITE/searchAnalytics/query" \
  | jq '.rows[] | {query: .keys[0], clicks, impressions, ctr, position}'

Swap dimensions for ["page"], ["country"], ["date"], or combine ["query","page"]. Add "dimensionFilterGroups" to filter by page/country.

Sitemaps & URL inspection

# Submitted sitemaps
curl -sS -H "$AUTH" "https://searchconsole.googleapis.com/webmasters/v3/sites/$SITE/sitemaps" \
  | jq '.sitemap[] | {path, lastDownloaded, errors, warnings}'

# Is a URL indexed?
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"inspectionUrl":"https://example.com/page","siteUrl":"https://example.com/"}' \
  "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
  | jq '.inspectionResult.indexStatusResult | {verdict, coverageState, lastCrawlTime}'

Gotchas

  • Two property shapes: URL-prefix (https://example.com/) vs Domain (sc-domain:example.com). Use exactly the siteUrl from the sites list, URL-encoded.
  • Data lags ~2–3 days; the most recent dates may be partial/empty — set endDate a couple days back for stable numbers.
  • ctr is 0–1, position is average rank (lower = better).

Comments

Markdown supported