Google Search Console Tools
Access your Google Search Console data through AI. Get real clicks, impressions, rankings, and run analysis presets to find SEO opportunities. Requires GSC connected in your Pro dashboard.
Quick Start
All GSC tools auto-detect your site if you have one GSC-connected site. For multiple sites, pass siteUrl.
// Auto-detect (single site)
gsc_query({ type: 'pages', period: '28d', limit: 10 })
// Explicit site
gsc_query({ type: 'pages', siteUrl: 'https://mysite.com', period: '28d' })
gsc_status
Check GSC connection and sync status.
| Parameter | Type | Description |
|---|---|---|
siteUrl | string | Site URL (optional if single site) |
gsc_status()
Returns:
{
"connected": true,
"site": "https://mysite.com",
"syncStatus": "synced",
"syncProgress": { "percent": 100 },
"dateRange": {
"oldest": "2023-01-15",
"newest": "2024-01-20"
},
"lastSyncAt": 1705789200000
}
gsc_query
Unified GSC data query. Use the type parameter to select what data to retrieve.
| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | required | Query type (see below) |
siteUrl | string | - | Site URL (optional) |
period | string | 28d | 7d, 28d, 3m, 6m, 12m |
limit | number | 25 | Max results (1-100) |
sort | string | clicks | clicks, impressions, ctr, position |
sortDir | string | desc | asc, desc |
search | string | - | Filter text |
type: pages
Top pages with clicks, impressions, CTR, and position. Includes comparison to previous period.
| Extra Parameter | Type | Description |
|---|---|---|
filter | string | top-level, new, lost, improving, declining |
minClicks | number | Minimum clicks |
maxPosition | number | Maximum position |
gsc_query({ type: 'pages', period: '28d', limit: 10, filter: 'declining' })
type: keywords
Top keywords/queries with performance metrics.
| Extra Parameter | Type | Description |
|---|---|---|
filter | string | top-level, new, lost, improving, declining |
minImpressions | number | Minimum impressions |
gsc_query({ type: 'keywords', period: '28d', limit: 20, minImpressions: 100 })
type: timeseries
Daily time-series data for trend analysis.
gsc_query({ type: 'timeseries', period: '28d' })
Returns daily data points with clicks, impressions, CTR, and position.
type: countries
Traffic breakdown by country.
gsc_query({ type: 'countries', period: '28d', limit: 10 })
type: devices
Traffic breakdown by device type (desktop, mobile, tablet).
gsc_query({ type: 'devices', period: '28d' })
type: analysis
Run SEO analysis presets to find opportunities.
| Extra Parameter | Type | Description |
|---|---|---|
preset | string | required — see preset table below |
brandTerms | string | Brand terms for brand presets (comma-separated) |
Available Presets
| Preset | What It Finds |
|---|---|
striking-distance | Keywords in positions 4-20 that could reach page 1 with optimization |
opportunity | High impressions, low CTR—title/content improvements needed |
movers-rising | Keywords gaining rankings—double down on what's working |
movers-declining | Keywords losing rankings—needs attention before further drops |
decay | Pages/keywords with declining performance over time |
zero-click | Keywords with impressions but no clicks—featured snippet opportunities? |
non-brand | Non-branded traffic (requires brandTerms) |
brand-only | Branded traffic only (requires brandTerms) |
// Find quick wins
gsc_query({ type: 'analysis', preset: 'striking-distance', period: '28d', limit: 20 })
// Brand vs non-brand split
gsc_query({ type: 'analysis', preset: 'non-brand', brandTerms: 'nuxt seo, nuxtseo' })
Preset-Specific Fields
| Preset | Extra Fields |
|---|---|
striking-distance | potentialClicks, opportunityScore |
opportunity | potentialClicks, opportunityScore |
movers-* | clicksChange, posChange |
decay | decayPct, missedClicks |
brand/non-brand | summary with brand share stats |
type: page-detail
Get all keywords ranking for a specific page.
| Extra Parameter | Type | Description |
|---|---|---|
pageUrl | string | required — full URL of the page |
gsc_query({
type: 'page-detail',
pageUrl: 'https://mysite.com/docs/getting-started',
period: '28d',
limit: 20
})
Use this to see which keywords drive traffic to a specific page.
type: keyword-detail
Get all pages ranking for a specific keyword.
| Extra Parameter | Type | Description |
|---|---|---|
keyword | string | required — keyword to analyze |
gsc_query({
type: 'keyword-detail',
keyword: 'nuxt meta tags',
period: '28d'
})
Use this to detect keyword cannibalization—multiple pages competing for the same keyword.
gsc_sitemaps
Sitemap management — view status, submit, delete, or refresh sitemaps.
| Parameter | Type | Default | Description |
|---|---|---|---|
siteUrl | string | - | Site URL (optional) |
action | string | list | list, submit, delete, refresh |
sitemapUrl | string | - | Sitemap URL (required for submit/delete) |
// List sitemaps
gsc_sitemaps()
// Submit new sitemap
gsc_sitemaps({ action: 'submit', sitemapUrl: 'https://mysite.com/sitemap.xml' })
// Refresh all sitemaps
gsc_sitemaps({ action: 'refresh' })
// Delete sitemap
gsc_sitemaps({ action: 'delete', sitemapUrl: 'https://mysite.com/old-sitemap.xml' })
Data Freshness
| Tool | Cache | Notes |
|---|---|---|
gsc_status | 5 min | Real-time sync status |
gsc_query | 1 hour | All query types |
gsc_sitemaps (list) | 1 hour | Sitemap status |
gsc_sitemaps (submit/delete/refresh) | None | Immediate action |
GSC data has a 2-3 day delay from Google. The newest date in sync status shows the most recent available data.
Using with Audit Prompts
These tools power the SEO Audit prompts:
seo_audit_site- Runsgsc_querywith timeseries, analysis presets, countries, and devices for a comprehensive site auditseo_audit_page- Runsgsc_querywith page-detail and keyword-detail for deep page analysis
The prompts orchestrate these tools and generate prioritized action plans from the data.