---
name: seo-serp-analysis
description: |
  SERP analysis for Google and Naver search results.
  Triggers: SERP analysis, search results, featured snippet, SERP features, Naver SERP, 검색결과 분석, SERP 분석.
---

# SEO SERP Analysis

## Purpose

Analyze search engine result page composition for Google and Naver. Detect SERP features (featured snippets, PAA, knowledge panels, local pack, video, ads), map competitor positions, score SERP feature opportunities, and analyze Naver section distribution.

## Core Capabilities

1. **Google SERP Feature Detection** - Identify featured snippets, PAA, knowledge panels, local pack, video carousel, ads, image pack, site links, shopping
2. **Competitor Position Mapping** - Extract domains, positions, content types for top organic results
3. **Opportunity Scoring** - Score SERP opportunity (0-100) based on feature landscape and competition
4. **Search Intent Validation** - Infer intent (informational, navigational, commercial, transactional, local) from SERP composition
5. **Naver SERP Composition** - Detect sections (blog, cafe, knowledge iN, Smart Store, brand zone, books, shortform, influencer), map section priority, analyze brand zone presence

## Data Source Selection

This skill can pull SERP data from multiple backends. **Pick one per task** — don't fan out by default (cost + rate limits).

| Backend | Best for | Notes |
|---|---|---|
| **Semrush MCP** (`mcp__semrush__*`) | Default Google SERP overview, organic competitor positions, SERP-feature presence | `overview_research` / `organic_research` → `get_report_schema` → `execute_report`. `database="us"` default; `"kr"` for Korean. |
| **Ahrefs MCP** (`mcp__ahrefs__*`) | When user wants Ahrefs SERP overview or already has an Ahrefs project | `serp-overview` exposes top organic, SERP features, paid layout per keyword. |
| **OurSEO MCP** (`mcp__ourseo__check_serp`) | Live position spot-check for a single keyword/domain pair | Cheap; good for rank-only confirmations without full SERP pull. |
| **OurSEO CLI** (`our serp *`) | DataForSEO under the hood — full SERP JSON with all features, Korean-aware via `--location 2410` | Claude Code only (Bash). Commands: `our serp live`, `our serp competitors`, `our serp ranked-keywords`, `our serp domain-overview`. |
| **OurSEO CLI — Naver** (`our research naver serp`) | Naver SERP composition (blog, cafe, knowledge iN, Smart Store, brand zone, shortform, influencer) | Naver-only; required for Korean-market analysis since Semrush/Ahrefs don't cover Naver SERP. |
| **DataForSEO MCP** (`mcp__dfs-mcp__*`) | Fallback when `our` CLI isn't running | `serp_organic_live_advanced`, `dataforseo_labs_google_serp_competitors`. |

### How to pick

1. **User named a backend explicitly** → use it.
2. **User preference memory** — read `feedback_seo_tool_preferences.md`; honor the task-type default.
3. **Task needs a capability only one backend has** (Naver SERP → `our research naver serp`; full SERP JSON → DataForSEO / OurSEO CLI) → use that backend.
4. **Default**: Semrush MCP for Google SERP overview; **`our research naver serp`** for Naver.
5. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.

### Backend call patterns

**Semrush MCP (default Google):**
```
mcp__semrush__overview_research(query="<keyword>", database="us")
mcp__semrush__get_report_schema(report_id="...")
mcp__semrush__execute_report(report_id="...", params={...})
```

**OurSEO CLI — DataForSEO (full Google SERP JSON):**
```bash
our serp live "<keyword>" --location 2410 --language ko
our serp competitors <domain> --location 2410
our serp ranked-keywords <domain> --location 2410 --limit 50
our serp domain-overview <domain> --location 2410
```

**OurSEO CLI — Naver SERP (Korean market):**
```bash
our research naver serp "<keyword>"
our research naver serp "<keyword>" --domain <target.com>
```

**OurSEO MCP (single-keyword spot-check):**
```
mcp__ourseo__check_serp(keyword="<keyword>", domain="<target.com>", country="kr")
```

**Ahrefs MCP:**
```
mcp__ahrefs__serp-overview(keyword="<keyword>", country="us")
```

### Common parameters

| Concept | Semrush | Ahrefs | DataForSEO / `our` CLI |
|---|---|---|---|
| Korean market | `database="kr"` | `country="kr"` | `--location 2410` |
| US market | `database="us"` | `country="us"` | `--location 2840` |
| Japan | `database="jp"` | `country="jp"` | `--location 2392` |
| Language | (database-bound) | (country-bound) | `--language ko`/`en`/`ja` |

Always record the chosen data source in the report **Overview** so future analyses can compare like-for-like.

## Workflow

### 1. Google SERP Analysis
1. Fetch SERP via `our serp live "<keyword>" --location 2410 --language ko --format json`
2. Parse SERP features from response (featured_snippet, people_also_ask, local_pack, etc.)
3. Map competitor positions from organic_results (domain, URL, title, position)
4. Classify content type for each result (blog, product, service, news, video)
5. Calculate opportunity score (0-100) based on feature landscape
6. Validate search intent from SERP composition
7. Get competitor domain overview via `our serp domain-overview <competitor> --location 2410`

### 2. Naver SERP Analysis
1. Fetch Naver search page for the target keyword
2. Detect SERP sections (blog, cafe, knowledge iN, Smart Store, brand zone, news, encyclopedia, books, shortform, influencer)
3. Map section priority (above-fold order)
4. Check brand zone presence and extract brand name
5. Count items per section
6. Identify dominant content section

### 3. Report Generation
1. Compile results into structured JSON
2. Generate Korean-language report
3. Save to Notion SEO Audit Log database

## Output Format

```json
{
  "keyword": "치과 임플란트",
  "country": "kr",
  "serp_features": {
    "featured_snippet": true,
    "people_also_ask": true,
    "local_pack": true,
    "knowledge_panel": false,
    "video_carousel": false,
    "ads_top": 3,
    "ads_bottom": 2
  },
  "competitors": [
    {
      "position": 1,
      "url": "https://example.com/page",
      "domain": "example.com",
      "title": "...",
      "content_type": "service_page"
    }
  ],
  "opportunity_score": 72,
  "intent_signals": "commercial",
  "timestamp": "2025-01-01T00:00:00"
}
```

## Common SERP Features

| Feature | Impact | Opportunity |
|---------|--------|-------------|
| Featured Snippet | High visibility above organic | Optimize content format for snippet capture |
| People Also Ask | Related question visibility | Create FAQ content targeting PAA |
| Local Pack | Dominates local intent SERPs | Optimize Google Business Profile |
| Knowledge Panel | Reduces organic CTR | Focus on brand queries and schema |
| Video Carousel | Visual SERP real estate | Create video content for keyword |
| Shopping | Transactional intent signal | Product feed optimization |

## Limitations

- SERP data may have a delay depending on data source (not real-time)
- Naver SERP HTML structure changes periodically
- Brand zone detection depends on HTML class patterns
- Cannot detect personalized SERP results

## Notion Output (Required)

All audit reports MUST be saved to OurDigital SEO Audit Log:
- **Database ID**: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
- **Properties**: Issue (title), Site (url), Category, Priority, Found Date, Audit ID
- **Language**: Korean with English technical terms
- **Audit ID Format**: SERP-YYYYMMDD-NNN
