К основному содержанию
скилл CX Codex

serp-analyzer — скилл для Claude Code: разбор выдачи Google

Скилл собирает данные по ключевому слову из Google, находит закономерности в контенте конкурентов и выдаёт готовый контент-бриф.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add OpenClaudia/openclaudia-skills --skill serp-analyzer -a claude-code
Открыть на GitHub

Что делает serp-analyzer

Скилл берёт ключевое слово и смотрит, что сейчас в топе Google. Он собирает органические результаты, блок People Also Ask, featured snippet, knowledge graph, shopping и локальную выдачу, а потом ищет общие паттерны у страниц-лидеров. На выходе — контент-бриф: что писать, чтобы обойти конкурентов.

Работает без ключей API через веб-поиск, но обогащённые данные дают SEMRUSH_API_KEY, SERPAPI_API_KEY, DATAFORSEO_LOGIN с DATAFORSEO_PASSWORD и SERPINGAPI_API_KEY. Для SerpAPI и Serping запросы идут через curl с jq, для DataForSEO — POST с Basic-авторизацией. Гео задаётся кодами вроде 2840 для США.

Если ключей нет, скилл всё равно запустится, но без структурированных SERP-фич — картина будет беднее. Для анализа контента он дополнительно вытягивает топ-5–10 URL через WebFetch.

Какие задачи решает

  • собрать данные по ключевому слову из выдачи Google
  • найти общие паттерны у страниц из топа
  • составить контент-бриф для обгона конкурентов
  • вытащить вопросы из блока People Also Ask
  • проверить, какие SERP-фичи занимает конкурент

Примеры запросов агенту

  • проанализируй SERP по ключу «купить кофемашину»
  • что ранжируется по запросу «best crm for small business»
  • сделай контент-бриф по ключевому слову «seo audit»

Как установить serp-analyzer

1Через Skills CLI (Vercel)

npx skills add OpenClaudia/openclaudia-skills --skill serp-analyzer -a claude-code

2Вручную: положить файлы

~/.claude/skills/serp-analyzer/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/serp-analyzer/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о serp-analyzer

Как установить serp-analyzer в Claude?

Выполните npx skills add OpenClaudia/openclaudia-skills --skill serp-analyzer -a claude-code. Скилл появится в ~/.claude/skills/serp-analyzer/SKILL.md.

Что делает serp-analyzer?

Анализирует выдачу Google по ключевому слову: органические результаты, People Also Ask, featured snippet, knowledge graph. На основе паттернов топа составляет контент-бриф.

Нужны ли API-ключи для работы?

Нет, скилл работает через веб-поиск без ключей. Ключи SEMRUSH_API_KEY, SERPAPI_API_KEY, DATAFORSEO_LOGIN и DATAFORSEO_PASSWORD, SERPINGAPI_API_KEY дают более полные структурированные данные.

Исходный текст

SKILL.md · MIT
---
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:
```bash
# 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:
```bash
# 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:
```bash
# 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`.

```bash
# 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:
```bash
# 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:

| 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 description** | Exact description, length, call-to-action |
| **Content type** | Blog post, landing page, tool, directory, video, etc. |
| **Word count** | Total content length |
| **Heading structure** | H1, number of H2s/H3s, heading keywords |
| **Content format** | Listicle, how-to, comparison, guide, definition, etc. |
| **Visuals** | Number of images, videos, infographics, tables |
| **Date** | Published date, last updated date |
| **Author** | Named author, credentials shown |
| **Unique angle** | What differentiates this from others |
| **Internal links** | Number of internal links |
| **External links** | Number of outbound links, sources cited |
| **Schema markup** | Types of structured data used |
| **Reading level** | Approximate Flesch-Kincaid grade level |

### Step 4: Identify Patterns

After analyzing all top 10 results, find commonalities:

**Content Pattern Analysis:**

```markdown
## Content Patterns for "{keyword}"

### Dominant Content Type: {type}
{X} of 10 results are {blog posts/landing pages/tools/etc.}

### Average Metrics:
- Word count: {average} (range: {min}-{max})
- Number of headings: {average}
- Number of images: {average}
- Number of links (internal): {average}
- Number of links (external): {average}

### Common Topics Covered:
1. {topic} - covered by {X}/10 results
2. {topic} - covered by {X}/10 results
3. {topic} - covered by {X}/10 results
...

### Common H2 Headings:
1. "{heading}" or similar - used by {X}/10
2. "{heading}" or similar - used by {X}/10
...

### Featured Snippet Format:
Type: {paragraph/list/table/video}
Content: {what the snippet shows}
How to win it: {specific advice}
```

### Step 5: Find Content Gaps

Identify what the top results are MISSING:

- Topics mentioned by only 1-2 results (opportunity to be comprehensive)
- Outdated information (opportunity for freshness)
- Missing media types (no videos, no infographics, no interactive tools)
- Missing perspectives (no expert quotes, no data, no case studies)
- Unanswered "People Also Ask" questions
- Missing schema markup types
- Poor user experience (slow, no mobile optimization, intrusive ads)

### Step 6: Analyze Competitive Positioning

For each top 5 competitor, create a positioning map:

```
Competitor 1 ({domain}): {Positioning summary - e.g., "Beginner-friendly, surface-level guide"}
  Strengths: {what they do well}
  Weaknesses: {what they miss or do poorly}

Competitor 2 ({domain}): {Positioning summary}
  Strengths: ...
  Weaknesses: ...
```

**Find your differentiation angle:**
- Can you be more comprehensive? (10x content)
- Can you be more actionable? (templates, tools, checklists)
- Can you be more current? (latest data, 2025 updates)
- Can you be more authoritative? (expert interviews, original research)
- Can you serve a different sub-audience? (beginners vs. advanced)
- Can you provide a unique format? (interactive tool vs. blog post)

### Step 7: Generate Content Brief

Produce a complete content brief based on the analysis:

```markdown
# Content Brief: {Target Keyword}

## Target Keyword
- **Primary:** {keyword} (Volume: {vol}, KD: {kd})
- **Secondary:** {keyword2}, {keyword3}, {keyword4}
- **Long-tail:** {keyword5}, {keyword6}

## Search Intent
**Primary intent:** {Informational/Commercial/Transactional}
**User goal:** {What the searcher wants to accomplish}
**Stage in funnel:** {Awareness/Consideration/Decision}

## Content Specifications

| Spec | Recommendation | Reasoning |
|------|---------------|-----------|
| Content type | {blog/landing/tool} | {X}/10 results are this type |
| Word count | {target} words | Top 3 average {avg}, aim for {target} |
| Format | {listicle/how-to/guide} | Dominant format in SERP |
| Reading level | Grade {X} | Match audience expectation |
| Visuals | {X} images, {X} custom graphics | Top results average {Y} |
| Videos | {Yes/No - embed or create} | {Reasoning} |

## Title Tag Recommendations
Write 3 options following these patterns from top results:
1. "{Title option 1}" ({length} chars)
2. "{Title option 2}" ({length} chars)
3. "{Title option 3}" ({length} chars)

## Meta Description Recommendations
1. "{Meta option 1}" ({length} chars)
2. "{Meta option 2}" ({length} chars)

## Recommended Outline

### H1: {Heading}

### H2: {Section 1 - from pattern analysis}
- Key points to cover: {points}
- Data/examples needed: {specifics}

### H2: {Section 2}
- Key points: ...

### H2: {Section 3}
...

### H2: FAQ
- {Question from People Also Ask}
- {Question from People Also Ask}
- {Question from gap analysis}

## Content Gaps to Exploit
1. **{Gap}** - Only {X}/10 competitors cover this. Include {specific content}.
2. **{Gap}** - No competitors have {data/tool/visual}. Create {specific asset}.
3. **{Gap}** - Top results are outdated on {topic}. Include {current data}.

## Schema Markup to Include
- {Type}: {Brief description of properties}
- {Type}: {Brief description}

## Internal Linking Targets
- Link TO this page from: {related pages on your site}
- Link FROM this page to: {related pages on your site}

## Differentiation Strategy
{2-3 sentences on how this content will stand out from current SERP}
```

## Output Format

Always present:
1. **SERP Overview** - Feature map and intent analysis
2. **Top 10 Analysis Table** - Key metrics for each result
3. **Pattern Summary** - What the SERP rewards
4. **Content Gaps** - Opportunities to differentiate
5. **Content Brief** - Complete brief ready for a writer

## Notes

- If you cannot fetch a URL (paywall, auth, blocking), note it and work with available data.
- Always note the date of analysis. SERPs change; this is a snapshot.
- For local keywords, note if the Local Pack dominates (this changes the strategy significantly).
- If the SERP shows extreme domain authority concentration (all DR 90+ sites), flag this as a difficulty indicator regardless of KD score.
- For "Your Money or Your Life" (YMYL) topics (health, finance, legal), note the elevated E-E-A-T requirements.

© OpenClaudia · MIT · OpenClaudia/openclaudia-skills

Похожие скиллы

Всё по теме «SEO и GEO» →
tracking-google-serp-rankings apidojo Скилл собирает выдачу Google по списку ключевых слов: позиции, URL, заголовки, сниппеты и SERP-фичи. Пригодится для SEO-аудита и разбора конкурентов. CX Codex +1 763установок brief calm-north Скилл готовит подробные ТЗ для авторов и SEO-копирайтеров с анализом выдачи, структурой заголовков и требованиями E-E-A-T. CX Codex +1 6 400установок blog-brief AgriciDaniel Создаёт детальный бриф для одной публикации в блоге под поисковую выдачу и ИИ-цитаты. Пригодится при планировании статьи, подборе ключевых слов и анализе конкурентов. CX Codex +1 2 600установок serp-analysis aaron-he-zhu Скилл для анализа выдачи поисковых систем (SERP) и SEO-исследований. Помогает разбирать результаты поиска прямо через команды ассистента. CX Codex +1 4 900установок serp-features kostja94 Скилл объясняет, какие блоки бывают в поисковой выдаче, какие из них реально получить и как под них настроить контент и разметку. CX Codex +1 1 100установок find-keywords calm-north Составляет приоритетный список поисковых запросов для сайта или темы. Помогает оценить сложность фраз, отсеять каннибализацию и распределить интенты. CX Codex +1 7 000установок

Из того же набора49

schema-markup Скилл генерирует JSON-LD по Schema.org под нужный тип страницы: статья, товар, FAQ, инструкция. Пригодится, когда нужны rich results в выдаче. CX Codex +1 443установок copy-editing Построчно вычитывает маркетинговые тексты, убирает словесный мусор и переписывает слабые фразы в активном залоге. Пригодится при подготовке лендингов, рассылок и торговых предложений. CX Codex +1 442установок pricing-strategy Скилл ведёт агента по шагам: собрать контекст, выбрать модель монетизации, спроектировать тарифы и страницу цен. CX Codex +1 443установок demand-gen Скилл превращает Claude в стратега по B2B-маркетингу: строит многоканальные кампании, скоринг лидов и модели атрибуции. CX Codex +1 441установок backlink-audit Разбирает ссылочный профиль домена через SemRush или Ahrefs API: находит токсичные ссылки и площадки для линкбилдинга. Пригодится, когда нужно оценить, откуда идут ссылки на сайт. CX Codex +1 434установок podcast-marketing Скилл ведёт подкаст от концепции до монетизации: структура выпусков, шоу-ноты с SEO, работа с гостями и план роста. CX Codex +1 429установок marketing-ideas Скилл с подборкой из 139 маркетинговых приёмов по категориям и подсказками по внедрению. Пригодится, когда нужен мозговой штурм по росту продукта. CX Codex +1 428установок slack-bot Отправляет уведомления и форматированные отчёты в каналы Slack через Webhooks или Bot API. CX Codex +1 424установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой