Skip to content
Marketing
Skill

/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

From plugin
openclaudia-skills
73678 skills

Claude Code

$ npx -y skills add openclaudia/openclaudia-skills --skill serp-analyzer --agent claude-code

SKILL.md

serp-analyzer.SKILL.md
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
  • `SERPINGAPI_API_KEY` - for real-time Google SERP data (free tier available)

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=20

Columns: 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.

**Method F: Serping API (if SERPINGAPI_API_KEY available)**

Real-time Google SERP data as Serper-style JSON from a single endpoint. Get a key at https://serpingapi.com (free tier available) and set `SERPINGAPI_API_KEY`.

# Real-time Google SERP data via Serping API (POST, JSON body)
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}'

The JSON response includes (sections appear only when Google returns them):

  • `organic` - Array of organic listings with `position`, `title`, `link`, `snippet` (sometimes `sitelinks`, `date`, `rating`)
  • `peopleAlsoAsk` - People Also Ask questions with `question`, `snippet`, `title`, `link`
  • `answerBox` - Featured snippet / direct answer
  • `knowledgeGraph` - Knowledge panel data with `title`, `type`, `description`, `attributes`
  • `relatedSearches` - Related search queries as `{ "query": ... }`
  • `searchParameters` - Echo of the parameters the search ran with

Parse example:

# Extract organic results
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}' | \
  jq '.orga
Read more
@openclaudia
Ships withopenclaudia-skills

77 open-source marketing skills for Claude Code, Codex, and other AI coding agents. SEO, content, email, ads, analytics, and growth.

Stars on GitHub

Momentum

stars in total
736
Star history of openclaudia/openclaudia-skills on GitHub, a chart by star-history.com

Other skills on openclaudia-skills.

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about serp-analyzer.

Which coding agents can use serp-analyzer?
serp-analyzer installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.