Install
openclaw skills install google-search-console-open-cliGoogle Search Console data analysis and site management via google-search-console-cli. Use when the user wants to check search performance, analyze queries,...
openclaw skills install google-search-console-open-cliYou have access to google-search-console-cli, a CLI for the Google Search Console API. Use it to query search analytics, inspect URL indexing, and manage sites and sitemaps.
# Check if the CLI is available
google-search-console-cli --help
# List accessible sites
google-search-console-cli sites
If the CLI is not installed, install it:
npm install -g google-search-console-cli
The CLI uses a Google service account. Credentials are resolved in this order:
--credentials <path> flag (per-command)GOOGLE_APPLICATION_CREDENTIALS env var~/.config/google-search-console-cli/credentials.json (auto-detected)Before running any command, verify credentials are configured by running google-search-console-cli sites. If it fails with a credentials error, ask the user to set up authentication.
Search Console uses two property types:
https://www.example.com/ (must include trailing slash and protocol)sc-domain:example.com (covers all protocols and subdomains)Always use the exact format as registered in Search Console. The site URL is a positional argument for most commands.
All commands output pretty-printed JSON by default. Use --format compact for single-line JSON (useful for piping).
The query command is the primary tool for search performance data.
google-search-console-cli query <siteUrl> --start-date <date> --end-date <date> [options]
Required:
--start-date <date> -- Start date (YYYY-MM-DD)--end-date <date> -- End date (YYYY-MM-DD)Optional:
--dimensions <names> -- Comma-separated: date, query, page, country, device, searchAppearance, hour--type <type> -- Search type: web (default), image, video, news, discover, googleNews--dimension-filter <json> -- JSON array of dimension filter groups (see below)--aggregation-type <type> -- auto, byPage, byProperty, byNewsShowcasePanel--row-limit <n> -- Max rows, 1-25000 (default 1000)--start-row <n> -- Starting row offset (default 0)--data-state <state> -- Data freshness: all, final, hourly_all--all -- Fetch all rows with auto-pagination (mutually exclusive with --start-row)Response fields per row:
keys -- Array of dimension values (in the order specified by --dimensions)clicks -- Number of clicksimpressions -- Number of impressionsctr -- Click-through rate (0.0 to 1.0)position -- Average position in search resultsWhen --all is specified, the CLI automatically paginates through all results (using 25000 rows per page) and returns the complete dataset. This is useful for exporting all data without manual pagination.
# Get ALL queries (auto-paginates through all pages)
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--all
Note: --all and --start-row cannot be used together. When --all is used, --row-limit is ignored.
# List all sites
google-search-console-cli sites
# Get info about a specific site
google-search-console-cli site <siteUrl>
# Add a site (requires Full permission)
google-search-console-cli site-add <siteUrl>
# Remove a site (requires Full permission)
google-search-console-cli site-remove <siteUrl>
# List sitemaps for a site
google-search-console-cli sitemaps <siteUrl>
# List sitemaps under a specific sitemap index
google-search-console-cli sitemaps <siteUrl> --sitemap-index <url>
# Get info about a specific sitemap
google-search-console-cli sitemap <siteUrl> <feedpath>
# Submit a sitemap (requires Full permission)
google-search-console-cli sitemap-submit <siteUrl> <feedpath>
# Delete a sitemap (requires Full permission)
google-search-console-cli sitemap-delete <siteUrl> <feedpath>
# Inspect a single URL's index status
google-search-console-cli inspect <siteUrl> <inspectionUrl>
# With a specific language for messages
google-search-console-cli inspect <siteUrl> <inspectionUrl> --language zh-CN
The --language option controls the language of the messages in the response (default: en-US).
The response includes: index status (indexing state, crawl time, robots.txt status, canonical URL), AMP analysis (if applicable), mobile usability, and rich results detection.
Inspect multiple URLs in a single command:
# From a file (one URL per line)
google-search-console-cli inspect-batch https://www.example.com/ --file urls.txt
# From stdin
cat urls.txt | google-search-console-cli inspect-batch https://www.example.com/
# With compact format (NDJSON, streams results as they complete)
cat urls.txt | google-search-console-cli inspect-batch https://www.example.com/ --format compact
Options:
--file <path> -- File with URLs (one per line); reads stdin if omitted--language <code> -- Language code for messages (default: en-US)Progress is written to stderr: Inspecting 1/50: https://...
With --format compact, each result is streamed as NDJSON (one JSON object per line) as soon as it completes. With --format json (default), all results are collected and output as a JSON array at the end.
Per-URL errors are captured in the output (with an error field) without stopping the batch.
The --dimension-filter option takes a JSON array of filter groups. Each filter group contains:
groupType -- "and" (all filters must match)filters -- Array of filter objectsEach filter object:
dimension -- One of: query, page, country, device, searchAppearanceoperator -- One of: equals, notEquals, contains, notContains, includingRegex, excludingRegexexpression -- The value to match againstCountry codes use 3-letter ISO 3166-1 alpha-3 format (e.g., USA, GBR, DEU, JPN).
Device values: DESKTOP, MOBILE, TABLET.
Single filter:
[{"groupType":"and","filters":[{"dimension":"country","operator":"equals","expression":"USA"}]}]
Multiple filters (AND):
[{"groupType":"and","filters":[{"dimension":"country","operator":"equals","expression":"USA"},{"dimension":"device","operator":"equals","expression":"MOBILE"}]}]
Regex filter:
[{"groupType":"and","filters":[{"dimension":"query","operator":"includingRegex","expression":"buy|purchase|order"}]}]
Page filter:
[{"groupType":"and","filters":[{"dimension":"page","operator":"contains","expression":"/blog/"}]}]
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--row-limit 50
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions date
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--row-limit 50
google-search-console-cli query sc-domain:example.com \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions country
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions device
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"page","operator":"equals","expression":"https://www.example.com/product"}]}]'
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"country","operator":"equals","expression":"USA"},{"dimension":"device","operator":"equals","expression":"MOBILE"}]}]'
# Brand queries
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"query","operator":"includingRegex","expression":"example|exmpl"}]}]'
# Non-brand queries
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"query","operator":"excludingRegex","expression":"example|exmpl"}]}]'
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"page","operator":"contains","expression":"/blog/"}]}]'
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--type image \
--row-limit 50
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--dimension-filter '[{"groupType":"and","filters":[{"dimension":"query","operator":"equals","expression":"best running shoes"}]}]'
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query,page \
--row-limit 100
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions date,device
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--type googleNews
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--type discover
google-search-console-cli query https://www.example.com/ \
--start-date 2026-03-17 \
--end-date 2026-03-17 \
--dimensions hour \
--data-state hourly_all
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions page \
--aggregation-type byPage
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--all
# First 1000 rows
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--row-limit 1000
# Next 1000 rows
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions query \
--row-limit 1000 \
--start-row 1000
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 \
--end-date 2026-03-17 \
--dimensions searchAppearance
google-search-console-cli inspect https://www.example.com/ https://www.example.com/important-page
# Create a file with URLs to inspect
echo "https://www.example.com/page1
https://www.example.com/page2
https://www.example.com/page3" > urls.txt
# Batch inspect
google-search-console-cli inspect-batch https://www.example.com/ --file urls.txt
# Or pipe from another command
google-search-console-cli query https://www.example.com/ \
--start-date 2026-02-16 --end-date 2026-03-17 \
--dimensions page --format compact \
| jq -r '.rows[].keys[0]' \
| google-search-console-cli inspect-batch https://www.example.com/ --format compact
# List all sitemaps
google-search-console-cli sitemaps https://www.example.com/
# Check a specific sitemap
google-search-console-cli sitemap https://www.example.com/ https://www.example.com/sitemap.xml
google-search-console-cli sites to find accessible sitesquery with --dimensions date for the daily trendquery with --dimensions query for top queriesquery with --dimensions query and a --dimension-filter for the page URLinspect to check the page's index statusquery with --dimensions device for the overview--dimensions query,device to find queries that perform differently across devicesquery with --dimensions country for country breakdown--dimension-filter for specific countriesinspect for specific URLs, or inspect-batch for bulk checkingsitemaps and sitemap commandsquery with --all to auto-paginate through all results--format compact for NDJSON output suitable for piping to jq or other toolssites, site, query, sitemaps, sitemap, inspect, inspect-batchsite-add, site-remove, sitemap-submit, sitemap-deleteMost analysis workflows only need read-only permission.
| Reference | When to Use |
|---|---|
| google-search-console-cli documentation | Full README, setup guide, installation |
| Search Analytics API | Query method, dimensions, filters, response format |
| URL Inspection API | Inspect method, request/response fields |
| Sites API | Site management methods and permission levels |
| Sitemaps API | Sitemap management methods and resource fields |