---
name: seo-position-tracking
description: |
  Keyword position tracking for keyword ranking monitoring.
  Triggers: rank tracking, position monitoring, keyword rankings, visibility score, ranking report, 키워드 순위, 순위 추적.
---

# SEO Position Tracking

## Purpose

Monitor keyword ranking positions, detect significant changes, calculate visibility scores, and compare against competitors using our-seo-agent CLI or pre-fetched ranking data. Provides actionable alerts for ranking drops and segment-level performance breakdown.

## Core Capabilities

1. **Position Monitoring** - Retrieve current keyword ranking positions from our-seo-agent CLI or pre-fetched data
2. **Change Detection** - Detect significant position changes with configurable threshold alerts (severity: critical/high/medium/low)
3. **Visibility Scoring** - Calculate weighted visibility scores using CTR-curve model (position 1 = 30%, position 2 = 15%, etc.)
4. **Brand/Non-brand Segmentation** - Automatically classify keywords by brand relevance and search intent type
5. **Competitor Comparison** - Compare keyword overlap, position gaps, and visibility scores against competitors

## MCP Tool Usage

### SEO Data (DataForSEO)

**Primary — our-seo-agent CLI:**
```bash
our serp ranked-keywords <domain> --location 2410 --limit 100
our keywords volume "<kw1>" "<kw2>" --location 2410 --language ko
our serp domain-overview <domain> --location 2410
our serp competitors <domain> --location 2410
```

**Interactive fallback — DataForSEO MCP:**
```
mcp__dfs-mcp__dataforseo_labs_google_ranked_keywords
mcp__dfs-mcp__dataforseo_labs_google_domain_rank_overview
mcp__dfs-mcp__dataforseo_labs_google_historical_rank_overview
mcp__dfs-mcp__dataforseo_labs_google_keyword_overview
```

### Common Parameters
- **location_code**: 2410 (Korea), 2840 (US), 2392 (Japan)
- **language_code**: ko, en, ja

### Notion for Report Storage
```
mcp__notion__notion-create-pages: Save tracking reports to SEO Audit Log
mcp__notion__notion-update-page: Update existing tracking entries
```

## Workflow

### Phase 1: Data Collection
1. Fetch current ranked keywords: `our serp ranked-keywords <domain> --location 2410 --limit 100 --format json`
2. Get domain overview: `our serp domain-overview <domain> --location 2410 --format json`
3. Get search volumes for tracked keywords: `our keywords volume "<kw1>" "<kw2>" --location 2410`
4. Fetch competitor positions: `our serp ranked-keywords <competitor> --location 2410 --limit 100`
5. For historical comparison, use MCP: `mcp__dfs-mcp__dataforseo_labs_google_historical_rank_overview`

### Phase 2: Analysis
1. Detect position changes against previous period
2. Generate alerts for changes exceeding threshold
3. Calculate visibility score weighted by search volume and CTR curve
4. Segment keywords into brand/non-brand and by intent type
5. Compare positions against each competitor

### Phase 3: Reporting
1. Compile position distribution (top3/top10/top20/top50/top100)
2. Summarize changes (improved/declined/stable/new/lost)
3. List alerts sorted by severity and search volume
4. Generate segment-level breakdown
5. Save report to Notion SEO Audit Log database

## Output Format

```json
{
  "target": "https://example.com",
  "total_keywords": 250,
  "visibility_score": 68.5,
  "positions": {
    "top3": 15,
    "top10": 48,
    "top20": 92,
    "top50": 180,
    "top100": 230
  },
  "changes": {
    "improved": 45,
    "declined": 30,
    "stable": 155,
    "new": 12,
    "lost": 8
  },
  "alerts": [
    {
      "keyword": "example keyword",
      "old_position": 5,
      "new_position": 15,
      "change": -10,
      "volume": 5400,
      "severity": "high"
    }
  ],
  "segments": {
    "brand": {"keywords": 30, "avg_position": 2.1},
    "non_brand": {"keywords": 220, "avg_position": 24.5}
  }
}
```

## Notion Output (Required)

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