/serp-analyzer
Analyze Google search results (SERP) for any keyword. Use when the user says "analyze the SERP", "what ranks for", "SERP analysis", "competitive analysis for keyword", "content brief", "what's ranking", "search results for", "who ranks for", or asks about ranking content
$ npx -y skills add openclaudia/openclaudia-skills --skill serp-analyzer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/serp-analyzer
Context preview
The summary Claude sees to decide when to auto-load this skill.
Analyze Google search results (SERP) for any keyword. Use when the user says "analyze the SERP", "what ranks for", "SERP analysis", "competitive analysis for keyword", "content brief", "what's ranking", "search results for", "who ranks for", or asks about ranking content
SKILL.md
serp-analyzer.SKILL.mdname: serp-analyzer
description: Analyze Google search results (SERP) for any keyword. Use when the user says "analyze the SERP", "what ranks for", "SERP analysis", "competitive analysis for keyword", "content brief", "what's ranking", "search results for", "who ranks for", or asks about ranking content patterns for a keyword.
SERP Analyzer Skill
You are an expert SERP analyst. Given a target keyword, analyze what currently ranks in Google, identify content patterns, and produce an actionable content brief for outranking the competition.
Prerequisites
Optional API keys for enriched data (the skill can work without any of them using web search):
- `SEMRUSH_API_KEY` - for keyword and organic results data
- `SERPAPI_API_KEY` - for real-time Google SERP data including SERP features
- `DATAFORSEO_LOGIN` and `DATAFORSEO_PASSWORD` - for advanced SERP data
Analysis Process
Step 1: Collect SERP Data
Use multiple data sources to build a complete SERP picture:
**Method A: SemRush API (if available)**
# Get organic results for keyword
https://api.semrush.com/?type=phrase_organic&key={KEY}&phrase={keyword}&database=us&export_columns=Dn,Ur,Fk,Fp&display_limit=20Columns: Dn=Domain, Ur=URL, Fk=SERP Features, Fp=Position
**Method B: Web Search (always do this)** Use the WebSearch tool to search for the exact keyword. This gives you real-time SERP data.
**Method C: Fetch top results** Use WebFetch on the top 5-10 ranking URLs to analyze actual content.
**Method D: SerpAPI (if SERPAPI_API_KEY available)**
Real-time Google SERP data with structured SERP features:
# Real-time Google SERP data via SerpAPI
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en"The JSON response includes:
- `organic_results` - Array of organic listings with `position`, `title`, `link`, `snippet`, `displayed_link`
- `related_questions` - People Also Ask questions with `question`, `snippet`, `title`, `link`
- `knowledge_graph` - Knowledge panel data with `title`, `description`, `entity_type`, and attributes
- `shopping_results` - Product listings (if present) with `title`, `price`, `link`, `source`
- `local_results` - Local Pack listings (if present) with `title`, `address`, `rating`, `reviews`
- `inline_images` - Image pack results
- `answer_box` - Featured snippet content with `type` (paragraph, list, table), `snippet`, `title`
- `related_searches` - Related search queries
Parse example:
# Extract organic results
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.organic_results[] | {position, title, link, snippet}'
# Extract People Also Ask questions
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.related_questions[] | {question, snippet}'
# Check for knowledge graph
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.knowledge_graph | {title, description, entity_type}'SerpAPI is especially useful for mapping SERP features in Step 2, as it returns structured data for every feature type.
**Method E: DataForSEO (if DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD available)**
Advanced SERP data with detailed item types and ranking metrics:
# DataForSEO SERP API
curl -s -X POST "https://api.dataforseo.com/v3/serp/google/organic/live/advanced" \
-H "Authorization: Basic $(echo -n '${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}' | base64)" \
-H "Content-Type: application/json" \
-d '[{"keyword": "{keyword}", "location_code": 2840, "language_code": "en"}]'The response provides:
- `result[0].items` - Array of all SERP items, each with a `type` field:
- `"organic"` - Standard organic results with `url`, `title`, `description`, `rank_group`, `rank_absolute`
- `"featured_snippet"` - Featured snippet with `description`, `url`, `type` (paragraph/list/table)
- `"people_also_ask"` - PAA questions with `items[].title` (the questions)
- `"knowledge_graph"` - Knowledge panel data
- `"local_pack"` - Local results
- `"shopping"` - Shopping results
- `"video"` - Video carousel items
- `"images"` - Image pack
- `"related_searches"` - Related search suggestions
- `result[0].item_types` - Array listing which SERP feature types are present (useful for Step 2 feature mapping)
- `result[0].se_results_count` - Total search results count
Location codes: 2840 = US, 2826 = UK, 2124 = Canada, 2036 = Australia. Change `location_code` for geo-targeted analysis.
Step 2: Map SERP Features
Document every SERP feature present for this keyword:
| Feature | Present? | Who owns it? | Can you win it? | |---------|----------|-------------|-----------------| | Featured Snippet | Yes/No | {domain} | {assessment} | | People Also Ask | Yes/No | {list questions} | - | | Knowledge Panel | Yes/No | {entity} | - | | Image Pack | Yes/No | {position in SERP} | {assessment} | | Video Carousel | Yes/No | {platforms} | {assessment} | | Local Pack | Yes/No | - | {assessment} | | Shopping Results | Yes/No | - | {assessment} | | News Results | Yes/No | {sources} | {assessment} | | Sitelinks | Yes/No | {domain} | - | | Reviews/Stars | Yes/No | {domains} | {assessment} | | FAQ Rich Results | Yes/No | {domains} | {assessment} | | Breadcrumbs | Yes/No | {domains} | - |
**SERP Intent Signal Analysis:**
- Mostly blog posts/guides = Informational intent
- Mostly product/service pages = Transactional intent
- Mix of reviews + product pages = Commercial investigation
- Brand homepage + login pages = Navigational intent
- Featured snippet present = Strong informational component
Step 3: Analyze Top 10 Results
For each of the top 10 organic results, fetch and analyze:
| Factor | What to measure | |--------|----------------| | **URL** | Full URL | | **Domain** | Domain authority/reputation | | **Title tag** | Exact title, length, keyword placement | | **Meta d
Read more
name: serp-analyzer description: Analyze Google search results (SERP) for any keyword. Use when the user says "analyze the SERP", "what ranks for", "SERP analysis", "competitive analysis for keyword", "content brief", "what's ranking", "search results for", "who ranks for", or asks about ranking content patterns for a keyword.
SERP Analyzer Skill
You are an expert SERP analyst. Given a target keyword, analyze what currently ranks in Google, identify content patterns, and produce an actionable content brief for outranking the competition.
Prerequisites
Optional API keys for enriched data (the skill can work without any of them using web search):
- `SEMRUSH_API_KEY` - for keyword and organic results data
- `SERPAPI_API_KEY` - for real-time Google SERP data including SERP features
- `DATAFORSEO_LOGIN` and `DATAFORSEO_PASSWORD` - for advanced SERP data
Analysis Process
Step 1: Collect SERP Data
Use multiple data sources to build a complete SERP picture:
**Method A: SemRush API (if available)**
# Get organic results for keyword
https://api.semrush.com/?type=phrase_organic&key={KEY}&phrase={keyword}&database=us&export_columns=Dn,Ur,Fk,Fp&display_limit=20Columns: Dn=Domain, Ur=URL, Fk=SERP Features, Fp=Position
**Method B: Web Search (always do this)** Use the WebSearch tool to search for the exact keyword. This gives you real-time SERP data.
**Method C: Fetch top results** Use WebFetch on the top 5-10 ranking URLs to analyze actual content.
**Method D: SerpAPI (if SERPAPI_API_KEY available)**
Real-time Google SERP data with structured SERP features:
# Real-time Google SERP data via SerpAPI
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en"The JSON response includes:
- `organic_results` - Array of organic listings with `position`, `title`, `link`, `snippet`, `displayed_link`
- `related_questions` - People Also Ask questions with `question`, `snippet`, `title`, `link`
- `knowledge_graph` - Knowledge panel data with `title`, `description`, `entity_type`, and attributes
- `shopping_results` - Product listings (if present) with `title`, `price`, `link`, `source`
- `local_results` - Local Pack listings (if present) with `title`, `address`, `rating`, `reviews`
- `inline_images` - Image pack results
- `answer_box` - Featured snippet content with `type` (paragraph, list, table), `snippet`, `title`
- `related_searches` - Related search queries
Parse example:
# Extract organic results
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.organic_results[] | {position, title, link, snippet}'
# Extract People Also Ask questions
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.related_questions[] | {question, snippet}'
# Check for knowledge graph
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
jq '.knowledge_graph | {title, description, entity_type}'SerpAPI is especially useful for mapping SERP features in Step 2, as it returns structured data for every feature type.
**Method E: DataForSEO (if DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD available)**
Advanced SERP data with detailed item types and ranking metrics:
# DataForSEO SERP API
curl -s -X POST "https://api.dataforseo.com/v3/serp/google/organic/live/advanced" \
-H "Authorization: Basic $(echo -n '${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}' | base64)" \
-H "Content-Type: application/json" \
-d '[{"keyword": "{keyword}", "location_code": 2840, "language_code": "en"}]'The response provides:
- `result[0].items` - Array of all SERP items, each with a `type` field:
- `"organic"` - Standard organic results with `url`, `title`, `description`, `rank_group`, `rank_absolute`
- `"featured_snippet"` - Featured snippet with `description`, `url`, `type` (paragraph/list/table)
- `"people_also_ask"` - PAA questions with `items[].title` (the questions)
- `"knowledge_graph"` - Knowledge panel data
- `"local_pack"` - Local results
- `"shopping"` - Shopping results
- `"video"` - Video carousel items
- `"images"` - Image pack
- `"related_searches"` - Related search suggestions
- `result[0].item_types` - Array listing which SERP feature types are present (useful for Step 2 feature mapping)
- `result[0].se_results_count` - Total search results count
Location codes: 2840 = US, 2826 = UK, 2124 = Canada, 2036 = Australia. Change `location_code` for geo-targeted analysis.
Step 2: Map SERP Features
Document every SERP feature present for this keyword:
| Feature | Present? | Who owns it? | Can you win it? | |---------|----------|-------------|-----------------| | Featured Snippet | Yes/No | {domain} | {assessment} | | People Also Ask | Yes/No | {list questions} | - | | Knowledge Panel | Yes/No | {entity} | - | | Image Pack | Yes/No | {position in SERP} | {assessment} | | Video Carousel | Yes/No | {platforms} | {assessment} | | Local Pack | Yes/No | - | {assessment} | | Shopping Results | Yes/No | - | {assessment} | | News Results | Yes/No | {sources} | {assessment} | | Sitelinks | Yes/No | {domain} | - | | Reviews/Stars | Yes/No | {domains} | {assessment} | | FAQ Rich Results | Yes/No | {domains} | {assessment} | | Breadcrumbs | Yes/No | {domains} | - |
**SERP Intent Signal Analysis:**
- Mostly blog posts/guides = Informational intent
- Mostly product/service pages = Transactional intent
- Mix of reviews + product pages = Commercial investigation
- Brand homepage + login pages = Navigational intent
- Featured snippet present = Strong informational component
Step 3: Analyze Top 10 Results
For each of the top 10 organic results, fetch and analyze:
| Factor | What to measure | |--------|----------------| | **URL** | Full URL | | **Domain** | Domain authority/reputation | | **Title tag** | Exact title, length, keyword placement | | **Meta d
34 open-source marketing skills for Claude Code. SEO, content, email, ads, analytics, and growth.
Repo: openclaudia/openclaudia-skills
Other skills on openclaudia-skills.
- /ab-test-setup
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment design, statistical significance, sample size calculation, test duration, multivariate testing, or conversion experiments. Trigger phrases include "A/B
Open skill - /affiliate-marketing
Build and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate partners", "referral commissions", "affiliate network", "partner program", "affiliate tracking", or asks about creating, managing, or growing an
Open skill - /ahrefs-research
Manages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage
Open skill - /ai-citations-report
Generate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT, plus organic-traffic context and per-article citation coverage. Use when the user asks for an 'AI citations report', 'GEO citations report', or
Open skill - /ai-image-gen
Generate images using AI (OpenAI GPT Image or Stability AI). Use when the user asks to generate an image, create an AI image, make an illustration, or produce artwork from a text prompt.
Open skill - /apollo-outreach
Research and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company enrichment", "find decision makers", "B2B leads", "lead research", "enrich contacts", "find VP of marketing at", or asks about finding people at specific
Open skill

