Claude-seo-skills seo-gsc-opportunities
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-opportunities" ~/.claude/skills/lionkiii-claude-seo-skills-seo-gsc-opportunities && rm -rf "$T"
skills/seo-gsc-opportunities/SKILL.mdGSC Opportunities — High-Impression Low-CTR Finder
@skills/seo/references/mcp-degradation.md @skills/seo/references/gsc-api-reference.md
Finds keywords with significant impressions but low click-through rates — indicating ranking positions where optimization can quickly increase organic traffic without new content creation.
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 opportunities` 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), call
to identify the correct property format registered in GSC.list_sites
- Domain property:
Date Calculation
Use Bash to calculate dates (GSC has ~3 day delay):
endDate=$(date -v-3d +%Y-%m-%d) startDate=$(date -v-31d +%Y-%m-%d) echo "endDate: $endDate | startDate: $startDate"
Execution
Step 1 — Find keyword opportunities: Call
find_keyword_opportunities with:
: the site propertysiteUrl
: calculated startDatestartDate
: calculated endDateendDate
: 100 (keywords need at least 100 impressions to matter)minImpressions
: 0.05 (5% CTR threshold — keywords below this are underperforming)maxCtr
: 20 (only keywords ranking in top 20 positions)maxPosition
Post-processing: Sort results by impressions descending (highest opportunity volume first).
For each keyword, add a "Potential" action recommendation:
- Position 1-3 and CTR < 3%: "Review snippet — may have featured snippet competing"
- Position 4-10 and CTR < 3%: "Optimize title tag and meta description"
- Position 4-10 and CTR 3-5%: "A/B test title variations"
- Position 11-20: "Content expansion to move into top 10"
CTR display rule: API returns CTR as decimal (0.0523) — multiply by 100 for display (show 5.23%).
Output Format
## GSC Opportunities: [site property] **Period:** [startDate] to [endDate] (28 days) **Filters:** Impressions >= 100, CTR < 5%, Position <= 20 ### Keyword Opportunities | Keyword | Impressions | Clicks | CTR | Position | Recommended Action | |---------|------------|--------|-----|----------|--------------------| | [keyword] | [n] | [n] | [X.XX%] | [X.X] | [action] | ... **Total opportunities found:** [count] ### Quick Wins Summary - **Title/meta optimization candidates:** [count] keywords in positions 4-10 - **Content expansion candidates:** [count] keywords in positions 11-20
If no opportunities found with default thresholds, note: "No keywords found with
=100 impressions and <5% CTR in top 20 positions for this period."