Claude-seo-skills seo-gsc-overview
git clone https://github.com/lionkiii/claude-seo-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/lionkiii/claude-seo-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/seo-gsc-overview" ~/.claude/skills/lionkiii-claude-seo-skills-seo-gsc-overview && rm -rf "$T"
skills/seo-gsc-overview/SKILL.mdGSC Overview — Performance Dashboard
@skills/seo/references/mcp-degradation.md @skills/seo/references/gsc-api-reference.md
Shows actual GSC performance data for the last 28 days: total clicks, impressions, CTR, average position, top 25 queries, and top 25 pages.
MCP Check
Before calling any GSC tool, verify the MCP is connected:
- Use ToolSearch with query
+google-search-console - If tools returned — note the actual tool name prefix, proceed to Inputs
- If no tools returned — display the GSC MCP error template from
and stop:references/mcp-degradation.md
## Google Search Console MCP Not Available The `/seo gsc overview` command requires the GSC MCP, which is not currently connected. **What you can do:** - Use `/seo technical <url>` for crawlability and indexability analysis (no live data) - Use `/seo audit <url>` for a full static SEO audit **To connect GSC MCP:** - Install and configure a Google Search Console MCP server (see README for setup) - Add it to ~/.claude/mcp.json at user scope (NOT project scope) - Verify GSC property access before running commands (domain vs URL prefix format) - See references/gsc-api-reference.md for property format details
Inputs
: The GSC property URL. Accept both formats:site- Domain property:
sc-domain:example.com - URL prefix:
orhttps://example.comhttps://www.example.com - If user provides a bare domain (no prefix, e.g.
), callexample.com
to help identify the correct property format registered in GSC.list_sites
- Domain property:
Date Calculation
Use Bash to calculate dates (GSC data has ~3 day delay):
endDate=$(date -v-3d +%Y-%m-%d) startDate=$(date -v-31d +%Y-%m-%d) echo "endDate: $endDate | startDate: $startDate"
This gives a 28-day window ending 3 days ago.
Execution
Step 1 — Top Queries (28 days): Call
query_search_analytics with:
: the site propertysiteUrl
: calculated startDatestartDate
: calculated endDateendDate
:dimensions["query"]
: 25rowLimit
Step 2 — Top Pages (28 days): Call
query_search_analytics with:
: the site propertysiteUrl
: calculated startDatestartDate
: calculated endDateendDate
:dimensions["page"]
: 25rowLimit
Step 3 — Top Pages by Clicks: Call
get_top_pages with:
: the site propertysiteUrl
: calculated startDatestartDate
: calculated endDateendDate
:sortBy"clicks"
: 25limit
Aggregation: From Step 1 results, compute totals by summing across all returned rows:
- Total Clicks = sum of all
clicks - Total Impressions = sum of all
impressions - Avg CTR = (sum of clicks / sum of impressions) * 100 — format as X.XX%
- Avg Position = weighted average of
by impressionsposition
CTR display rule: API returns CTR as decimal (0.0523) — always multiply by 100 for display (show 5.23%).
Output Format
## GSC Overview: [site property] **Period:** [startDate] to [endDate] (28 days) ### Summary | Metric | Value | |--------|-------| | Total Clicks | [number] | | Total Impressions | [number] | | Average CTR | [X.XX%] | | Average Position | [X.X] | ### Top 25 Queries | Query | Clicks | Impressions | CTR | Position | |-------|--------|-------------|-----|----------| | [query] | [clicks] | [impressions] | [X.XX%] | [X.X] | ... ### Top 25 Pages | Page URL | Clicks | Impressions | CTR | Position | |----------|--------|-------------|-----|----------| | [url] | [clicks] | [impressions] | [X.XX%] | [X.X] | ...
Sort queries by clicks descending. Sort pages by clicks descending. Truncate long URLs to 60 characters with
... for readability.