Claude-seo-skills seo-gsc-brand-vs-nonbrand
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-brand-vs-nonbrand" ~/.claude/skills/lionkiii-claude-seo-skills-seo-gsc-brand-vs-nonbrand && rm -rf "$T"
skills/seo-gsc-brand-vs-nonbrand/SKILL.mdGSC Brand vs Non-Brand — Brand Traffic Split Analysis
@skills/seo/references/mcp-degradation.md @skills/seo/references/gsc-api-reference.md
Analyzes what share of organic traffic comes from branded queries vs generic queries. IMPORTANT: This command REQUIRES user-provided brand terms before making any API call. The
analyze_brand_queries tool needs a brandTerms array — never guess brand terms.
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 brand-vs-nonbrand` 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:
Brand Terms Confirmation (REQUIRED — do before any API call)
Before calling
analyze_brand_queries, the user MUST confirm their brand terms.
-
Extract a suggested brand term from the site URL:
- From
→ suggestsc-domain:example.com["example"] - From
→ suggesthttps://www.mybrand.co.uk["mybrand"] - Remove TLD, www, subdomains, and hyphens for the suggestion
- From
-
Present the confirmation prompt to the user:
I'll analyze brand vs non-brand traffic for [site]. **Please confirm your brand terms:** `["[suggested-term]"]` You can: - Confirm these terms as-is - Add additional terms (e.g. product names, common misspellings): `["brand", "brand product", "brandname"]` - Remove terms that aren't actually branded Brand terms are used to separate branded queries (e.g. "acme widgets") from non-brand queries (e.g. "best widgets for home"). Include all variations users search for your brand.
- Wait for the user to confirm or modify the brand terms.
- Only proceed to the API call after receiving explicit confirmation.
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
After brand terms are confirmed:
Call
with:analyze_brand_queries
: the site propertysiteUrl
: calculated startDatestartDate
: calculated endDateendDate
: the confirmed array of brand termsbrandTerms
Post-processing:
- Calculate brand percentage of total clicks:
(brandClicks / totalClicks) * 100 - Calculate non-brand percentage:
(nonBrandClicks / totalClicks) * 100 - Add strategic insight based on brand percentage:
-
70% branded: Note dependency risk — organic visibility heavily reliant on brand
- 40-70% branded: Balanced mix — healthy brand recognition with non-brand growth
- 10-40% branded: Non-brand dominant — good organic reach beyond brand searches
- <10% branded: Note brand awareness opportunity — consider brand-building content
-
CTR display rule: API returns CTR as decimal — multiply by 100 for display.
Output Format
## GSC Brand vs Non-Brand: [site property] **Period:** [startDate] to [endDate] (28 days) **Brand terms analyzed:** [list of confirmed brand terms] ### Brand Traffic Split | Category | Clicks | Impressions | CTR | Avg Position | % of Total Clicks | |----------|--------|-------------|-----|--------------|-------------------| | Branded | [n] | [n] | [X.XX%] | [X.X] | [X.X%] | | Non-Brand | [n] | [n] | [X.XX%] | [X.X] | [X.X%] | | **Total** | **[n]** | **[n]** | **[X.XX%]** | **[X.X]** | **100%** | ### Top Branded Queries | Query | Clicks | Impressions | CTR | Position | |-------|--------|-------------|-----|----------| | [query] | [n] | [n] | [X.XX%] | [X.X] | ... ### Top Non-Brand Queries | Query | Clicks | Impressions | CTR | Position | |-------|--------|-------------|-----|----------| | [query] | [n] | [n] | [X.XX%] | [X.X] | ... ### Strategic Insight [Insight based on brand percentage thresholds above]
Show top 10 branded queries and top 10 non-brand queries, sorted by clicks descending.