agentsclimarketplace

Google search console

Skill usetemi/skills/skills/google-search-console

Query Google Search Console analytics, inspect URL indexing status, manage sitemaps, and run PageSpeed Insights audits. Use when the user needs SEO data, search performance reports, indexing diagnostics, or Core Web Vitals analysis.From its SKILL.md

Install
npx -y skills add usetemi/skills --skill google-search-console

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 2 credential sources: `/path/to/client_secret.json` and 1 more.
  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 6 commands, including `which uv` and 5 more.

SKILL.md

7.9 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

Google Search Console

Architecture

gsc is a Python CLI wrapping two Google APIs:

  • Search Console API (webmasters v3 + searchconsole v1) -- search analytics, site management, sitemaps, URL inspection
  • PageSpeed Insights API (v5) -- Lighthouse lab tests for performance, accessibility, SEO, best practices

All commands output JSON to stdout. Errors go to stderr. Designed for Claude to invoke and parse programmatically.

Before First Use

  1. uv: Run which uv. If missing, ask the user how they want to install it (brew install uv or follow https://docs.astral.sh/uv/getting-started/installation/).
  2. Project sync: uv sync --project <skill-dir>
  3. Auth: See below.
  4. PageSpeed API key: See below.

Search Console Auth (OAuth)

Save your OAuth client_secret.json (downloaded from GCP) to a known path, then authenticate:

gsc auth login --client-secret /path/to/client_secret.json

A browser opens for OAuth consent. On a headless machine, open an SSH tunnel first: ssh -L 8085:localhost:8085 <this-host>, then open the printed URL on a machine with a browser. Credentials are stored at ~/.config/skills/gsc/credentials.json and auto-refresh.

If you need to create a new OAuth client, see references/setup.md for the full GCP click-path.

PageSpeed Insights API Key

Set the key once and gsc remembers it:

gsc config set pagespeed-api-key <your-key>

If you don't have a key, create one in your GCP project's Credentials page, restrict it to the "PageSpeed Insights API", and pass it to gsc config set above.

Invocation

uv run --project /path/to/skills/google-search-console gsc <command> [args]

For brevity, examples below use gsc directly.

Commands

auth -- Manage authentication

# Authenticate with OAuth
gsc auth login --client-secret ./client_secret.json --port 8085

# Check auth status
gsc auth status

# Remove stored credentials
gsc auth logout

config -- Manage settings

# Set PageSpeed API key
gsc config set pagespeed-api-key AIza...

# Get a config value
gsc config get pagespeed-api-key

# Show all config (secrets masked)
gsc config show

query -- Search Analytics

# Basic query: clicks, impressions, CTR, position for last 7 days
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07

# Group by query keyword
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 -d query

# Group by page and query
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 -d page -d query

# Daily breakdown
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 -d date

# Filter by query containing "pricing"
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 -d query --query-filter pricing

# Exact match filter
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 --query-filter "=best coffee shop"

# Mobile only
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 --device-filter "=MOBILE"

# Image search
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 --search-type image

# Paginate results
gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 --row-limit 5000 --start-row 0

Filter prefix operators: = exact match, ! not-contains, no prefix or ~ for contains.

inspect -- URL Inspection

gsc inspect sc-domain:example.com https://example.com/page
gsc inspect https://example.com/ https://example.com/page --language en-US

Returns: indexing verdict, crawl info, canonical URL, mobile usability, rich results status.

sites -- Manage properties

gsc sites list
gsc sites get sc-domain:example.com
gsc sites add https://example.com/

sitemaps -- Manage sitemaps

gsc sitemaps list sc-domain:example.com
gsc sitemaps get sc-domain:example.com https://example.com/sitemap.xml
gsc sitemaps submit sc-domain:example.com https://example.com/sitemap.xml
gsc sitemaps delete sc-domain:example.com https://example.com/sitemap.xml

pagespeed -- PageSpeed Insights

# Mobile performance (default)
gsc pagespeed https://example.com

# Desktop, all categories
gsc pagespeed https://example.com --strategy desktop \
  --category performance --category accessibility --category seo --category best-practices

# Specific locale
gsc pagespeed https://example.com --locale fr

Requires API key: gsc config set pagespeed-api-key <key>. Lab tests take 30-60s.

Site URL Formats

Google Search Console supports two property types:

TypeFormatExampleScope
Domain propertysc-domain:example.comsc-domain:example.comAll subdomains, protocols, paths
URL-prefix propertyhttps://example.com/https://example.com/Exact prefix match only

Use domain properties when possible -- they cover all variations.

Common Workflows

Weekly Performance Check

# This week vs last week, grouped by date
gsc query sc-domain:example.com -s 2026-03-05 -e 2026-03-11 -d date
gsc query sc-domain:example.com -s 2026-02-26 -e 2026-03-04 -d date

# Top queries by clicks
gsc query sc-domain:example.com -s 2026-03-05 -e 2026-03-11 -d query --row-limit 25

Indexing Health Check

# Check if key pages are indexed
gsc inspect sc-domain:example.com https://example.com/important-page
gsc inspect sc-domain:example.com https://example.com/new-blog-post

# Verify sitemap coverage
gsc sitemaps list sc-domain:example.com
gsc sitemaps get sc-domain:example.com https://example.com/sitemap.xml

CTR Optimization

# Find high-impression, low-CTR queries (position 3-10)
gsc query sc-domain:example.com -s 2026-02-10 -e 2026-03-11 -d query -d page --row-limit 5000

# Filter results to find optimization opportunities:
# Look for rows where impressions > 100 and position between 3-10 but CTR < 3%

Device Comparison

gsc query sc-domain:example.com -s 2026-03-01 -e 2026-03-07 -d device

Core Web Vitals Check

gsc pagespeed https://example.com --strategy mobile
gsc pagespeed https://example.com --strategy desktop

Interpreting Output

See references/seo-playbook.md for detailed interpretation guides including:

  • CTR benchmarks by SERP position
  • Core Web Vitals thresholds
  • URL inspection verdicts
  • Title/description optimization
  • Monthly monitoring methodology

Configuration Files

  • OAuth credentials: ~/.config/skills/gsc/credentials.json
  • Config (API keys): ~/.config/skills/gsc/config.json
  • Override the config dir with GSC_CONFIG_DIR=/path/to/dir

Migrating from earlier versions

If upgrading from a build that stored config at ~/.config/gsc/, run gsc config migrate --apply to move the credentials and config to the new location. gsc auth status emits a deprecation_warning until the migration runs.

Troubleshooting

"Not authenticated" -- Run gsc auth login --client-secret /path/to/client_secret.json. Credentials may have expired or be missing on a new machine.

"Permission denied" -- The authenticated account must be a verified owner or user of the Search Console property. Check property access at https://search.google.com/search-console.

"Rate limit exceeded" -- Search Console API has per-minute and per-day quotas. Wait 60 seconds and retry. See references/setup.md for quota details.

URL Inspection returns no data -- The URL may not be in Google's index. Check the verdict field. Only URLs within verified properties can be inspected.

PageSpeed timeout -- Lighthouse lab tests can take 30-60 seconds. The command uses a 120-second timeout. Retry if it fails.

"Unknown key" on config set -- Only pagespeed-api-key is a valid config key.

What ships with it: 17 files

42.2 KB alongside SKILL.md, 12 of them executable

references/

src/

Gives 0 of the 12 instructions most seo skills give in ~2.1k tokens

Counted across 342 of the 364 authors here whose files we hold, read 2026-09-06

  • Read product marketing context before asking questionsin 38 of 342, across 16 files
  • Use one clear H1 per pagein 25 of 342, across 13 files
  • Measure Core Web Vitals against stated thresholdsin 23 of 342, across 16 files
  • Verify robots.txt allows AI crawlersin 22 of 342, across 16 files
  • Use descriptive anchor text for internal linksin 22 of 342, across 16 files
  • Keep title tags around 50-60 charactersin 19 of 342, across 16 files
  • Add a self-referencing canonical URL to every pagein 16 of 342, across 14 files
  • Lead every section with a direct answerin 15 of 342, across 9 files
  • Submit the sitemap to Google Search Consolein 15 of 342, across 12 files
  • Keep key answer passages to 40-60 wordsin 14 of 342, across 8 files
  • Add statistics with cited sourcesin 14 of 342, across 8 files
  • Give each page one primary search intentin 13 of 342, across 7 files

Said here and by no other author read

  • verify uv is installed before first use
  • sync the skill project with uv before use
  • authenticate with OAuth before first use
  • set the pagespeed-api-key before running audits
  • prefer domain properties over URL-prefix properties
  • open an SSH tunnel before OAuth on headless machines

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.