openclaudia/openclaudia-skills1 file

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 patterns for a keyword.

Specification
Skill ID
openclaudia/openclaudia-skills/serp-analyzer
Publisher
openclaudia
Repository
openclaudia-skills
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

openclaudia/openclaudia-skills/serp-analyzerInstalls these files
  • SKILL.md

What this skill tells the agent

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 '.organic[] | {position, title, link, snippet}'

# Extract People Also Ask questions
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 '.peopleAlsoAsk[] | {question, snippet}'

# Check for featured snippet / knowledge graph
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 '{answerBox, knowledgeGraph: (.knowledgeGraph | {title, type, description})}'

Optional parameters: location (e.g. "Seattle, Washington, United States"), page (starting at 1), tbs for a time filter (qdr:d day, qdr:w week, qdr:m month, qdr:y year). Web search only — no ads, shopping, or local pack sections.

Errors come back as {"error": {"code": "...", "message": "..."}}: 401 invalid_api_key means the key is wrong or revoked; 429 quota_exceeded means the monthly quota is used up (resets on the 1st, UTC). In either case tell the user the specific error and fall back to Method B.

Step 2: Map SERP Features

Document every SERP feature present for this keyword:

FeaturePresent?Who owns it?Can you win it?
Featured SnippetYes/No{domain}{assessment}
People Also AskYes/No{list questions}-
Knowledge PanelYes/No{entity}-
Image PackYes/No{position in SERP}{assessment}
Video CarouselYes/No{platforms}{assessment}
Local PackYes/No-{assessment}
Shopping ResultsYes/No-{assessment}
News ResultsYes/No{sources}{assessment}
SitelinksYes/No{domain}-
Reviews/StarsYes/No{domains}{assessment}
FAQ Rich ResultsYes/No{domains}{assessment}
BreadcrumbsYes/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

Use this skill in a project

Open any RiverX project, search the Skills panel for openclaudia/openclaudia-skills/serp-analyzer, and install it in one click.

Use this skill