feat(skills): bulk-add root SKILL.md to 61 skills (native Agent Skills loadability)
Run the additive migration pass from SKILL-MIGRATION-GUIDE: generate a root SKILL.md for every skill that lacked one, copied from its desktop/SKILL.md (or code/SKILL.md), with name set to the directory name and description + body preserved verbatim. - scripts/migrate_skill_root.py: the reusable, non-destructive migrator (dry-run default). - 61 new root SKILL.md (desktop source for most; code/SKILL.md for 61/62/92). - Untouched: 16/17/95 (already had root); desktop/ and code/ packaging left intact. - All 64 root SKILL.md validate: frontmatter <=1024, kebab name, description present. Still MANUAL (no SKILL.md source — commands/README only), need hand-authored root SKILL.md: 81-mac-optimizer, 90-reference-curator, 91-multi-agent-guide, 94-dintel-bootstrap. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
189
custom-skills/31-seo-competitor-intel/SKILL.md
Normal file
189
custom-skills/31-seo-competitor-intel/SKILL.md
Normal file
@@ -0,0 +1,189 @@
|
||||
---
|
||||
name: 31-seo-competitor-intel
|
||||
description: |
|
||||
Competitor intelligence and SEO benchmarking.
|
||||
Triggers: competitor analysis, competitive intelligence, competitor comparison,
|
||||
threat assessment, market position, benchmarking, 경쟁사 분석,
|
||||
경쟁 인텔리전스, 벤치마킹, 경쟁사 비교.
|
||||
---
|
||||
|
||||
# SEO Competitor Intelligence & Benchmarking
|
||||
|
||||
## Purpose
|
||||
|
||||
Comprehensive competitor intelligence for SEO: auto-discover competitors, build profile cards, create head-to-head comparison matrices, analyze keyword overlap, track traffic trends, and score competitive threats. Supports Korean market analysis including Naver Blog/Cafe presence.
|
||||
|
||||
## Core Capabilities
|
||||
|
||||
1. **Competitor Discovery** - Auto-discover organic competitors via our-seo-agent CLI
|
||||
2. **Profile Cards** - DR, traffic, keywords, referring domains, top pages, content volume
|
||||
3. **Comparison Matrix** - Multi-dimensional head-to-head comparison
|
||||
4. **Keyword Overlap** - Shared, unique, and gap keyword analysis
|
||||
5. **Threat Scoring** - 0-100 score based on DR gap, traffic ratio, keyword overlap, growth
|
||||
6. **Competitive Monitoring** - Traffic trends, DR changes, keyword movement, content velocity
|
||||
7. **Alert Generation** - Flag significant competitive movements
|
||||
8. **Market Share Estimation** - Organic traffic share within competitive set
|
||||
|
||||
## Data Source Selection
|
||||
|
||||
Competitor intelligence spans **organic profile** (traffic, keywords), **backlink profile** (DR, refdomains), **content velocity** (top pages, new content), and **Korean platform presence**. Different backends own different slices.
|
||||
|
||||
| Backend | Best for | Notes |
|
||||
|---|---|---|
|
||||
| **Semrush MCP** (`mcp__semrush__*`) | **Default** for organic competitor profile, keyword overlap, traffic trends | `organic_research`, `trends_research`, `overview_research` → `get_report_schema` → `execute_report`. Auto-discovery of competitors. |
|
||||
| **Ahrefs MCP** (`mcp__ahrefs__*`) | Backlink profile, organic competitor discovery, top-pages-by-traffic, historical DR | `site-explorer-organic-competitors`, `site-explorer-organic-keywords`, `site-explorer-top-pages`, `site-explorer-domain-rating-history`, `site-explorer-backlinks-stats`. Pair with Semrush for cross-check. |
|
||||
| **OurSEO** (CLI + MCP) | SERP overlap spot-checks, content similarity, crawl-derived content velocity | `mcp__ourseo__check_serp`, `mcp__ourseo__find_similar_pages`, `mcp__ourseo__crawl_website`. CLI: `our serp competitors`, `our serp ranked-keywords`. |
|
||||
| **OurSEO CLI — Korean** (`our research naver *`) | Naver-engine competitor analysis (Blog/Cafe/Smart Store presence, Naver SERP) | Naver-only; required for Korean market since Semrush/Ahrefs don't cover Naver. |
|
||||
| **WebSearch** | Korean Blog/Cafe/Tistory/Brunch presence checks | Supplement Korean platform mapping when Semrush/Ahrefs underrepresent these. |
|
||||
| **DataForSEO MCP** (`mcp__dfs-mcp__*`) | Fallback for ranked-keywords / SERP competitors when `our` CLI isn't running | Same data as `our serp *`. |
|
||||
|
||||
### 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 is backlink-focused** (DR comparison, link gap) → Ahrefs (backlink-graph moat).
|
||||
4. **Task is keyword/traffic-focused** → Semrush (organic competitor view is strongest).
|
||||
5. **Task is Korean-market competitor analysis** → **OurSEO CLI** (`our research naver *` + `our serp * --location 2410`). Korean platforms aren't covered by Semrush/Ahrefs.
|
||||
6. **Default**: Semrush MCP for organic + Ahrefs for backlinks (paired). Korean override: OurSEO CLI.
|
||||
7. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
||||
|
||||
### Backend call patterns
|
||||
|
||||
**Semrush MCP (default organic):**
|
||||
```
|
||||
mcp__semrush__organic_research(query="<target>", database="us")
|
||||
mcp__semrush__organic_research(query="<competitor>", database="us")
|
||||
mcp__semrush__trends_research(query="<target>", database="us")
|
||||
mcp__semrush__overview_research(query="<target>", database="us")
|
||||
```
|
||||
|
||||
**Ahrefs MCP (backlink + top pages):**
|
||||
```
|
||||
mcp__ahrefs__site-explorer-organic-competitors(target="<target>")
|
||||
mcp__ahrefs__site-explorer-organic-keywords(target="<target>", country="us", limit=500)
|
||||
mcp__ahrefs__site-explorer-top-pages(target="<competitor>", country="us")
|
||||
mcp__ahrefs__site-explorer-domain-rating-history(target="<target>", history="weekly")
|
||||
mcp__ahrefs__site-explorer-backlinks-stats(target="<target>")
|
||||
```
|
||||
|
||||
**OurSEO (SERP overlap + content similarity):**
|
||||
```
|
||||
mcp__ourseo__check_serp(keyword="<keyword>", domain="<target>", country="kr")
|
||||
mcp__ourseo__find_similar_pages(crawl_path="<path>", query="<topic>")
|
||||
mcp__ourseo__crawl_website(url="<competitor>", max_pages=50)
|
||||
```
|
||||
|
||||
**OurSEO CLI (Korean batch):**
|
||||
```bash
|
||||
our serp ranked-keywords <competitor.com> --location 2410 --limit 100
|
||||
our serp competitors <target.com> --location 2410
|
||||
our research naver serp "<keyword>"
|
||||
our research naver keywords ideas "<keyword>"
|
||||
```
|
||||
|
||||
**Korean platform presence (WebSearch):**
|
||||
```
|
||||
WebSearch: blog.naver.com "<competitor brand>"
|
||||
WebSearch: cafe.naver.com "<competitor brand>"
|
||||
WebSearch: tistory.com "<competitor brand>"
|
||||
```
|
||||
|
||||
Always record the chosen data source(s) in the report **Overview** so future runs can compare like-for-like.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Competitor Profiling
|
||||
1. Accept target URL/domain
|
||||
2. Auto-discover competitors via our-seo-agent CLI or use provided list
|
||||
3. Build profile card for target and each competitor (DR, traffic, keywords, backlinks, content)
|
||||
4. Analyze keyword overlap between target and each competitor
|
||||
5. Build multi-dimensional comparison matrix
|
||||
6. Score competitive threats (0-100)
|
||||
7. Determine market position (leader/challenger/follower/niche)
|
||||
8. If Korean market: check Naver Blog/Cafe presence
|
||||
|
||||
### Competitive Monitoring
|
||||
1. Accept target, competitors, and monitoring period
|
||||
2. Fetch traffic trend history for all domains
|
||||
3. Fetch DR trend history for all domains
|
||||
4. Track keyword movement (new/lost keywords)
|
||||
5. Compare content publication velocity
|
||||
6. Generate alerts for significant changes (>20% traffic, DR jump, keyword surge)
|
||||
7. Estimate market share within competitive set
|
||||
|
||||
## Output Format
|
||||
|
||||
### Profiling Report
|
||||
```markdown
|
||||
## Competitor Intelligence Report: [domain]
|
||||
|
||||
### Target Profile
|
||||
- Domain Rating: [DR]
|
||||
- Organic Traffic: [traffic]
|
||||
- Keywords: [count]
|
||||
- Referring Domains: [count]
|
||||
|
||||
### Competitors (by threat score)
|
||||
1. **[competitor.com]** - Threat: [score]/100
|
||||
- DR: [value] | Traffic: [value] | Keywords: [value]
|
||||
- Keyword Overlap: [shared] shared, [gap] gap
|
||||
- Strengths: [list]
|
||||
- Weaknesses: [list]
|
||||
|
||||
### Comparison Matrix
|
||||
| Dimension | Target | Comp1 | Comp2 |
|
||||
|-----------|--------|-------|-------|
|
||||
|
||||
### Market Position: [leader/challenger/follower/niche]
|
||||
```
|
||||
|
||||
### Monitoring Report
|
||||
```markdown
|
||||
## Competitive Monitoring Report: [domain]
|
||||
### Period: [N] days
|
||||
|
||||
### Alerts
|
||||
- [severity] [message]
|
||||
|
||||
### Traffic Trends
|
||||
| Domain | Direction | Growth | Current |
|
||||
|
||||
### Keyword Movements
|
||||
| Domain | New | Lost | Net |
|
||||
|
||||
### Market Share
|
||||
| Domain | Traffic% | Overall% |
|
||||
```
|
||||
|
||||
## Threat Scoring Methodology
|
||||
|
||||
| Factor | Weight | Scale |
|
||||
|--------|--------|-------|
|
||||
| DR Gap | 20% | -30 to +30 mapped to 0-100 |
|
||||
| Traffic Ratio | 30% | 0x to 2x+ mapped to 0-100 |
|
||||
| Keyword Overlap | 25% | 0-50%+ mapped to 0-100 |
|
||||
| Gap Keywords | 25% | Ratio to target keywords |
|
||||
|
||||
## Alert Thresholds
|
||||
|
||||
| Alert Type | Threshold | Severity |
|
||||
|------------|-----------|----------|
|
||||
| Traffic change | >20% | warning; >50% critical |
|
||||
| DR change | >3 points | warning; >5 critical |
|
||||
| Keyword surge | >15% growth | warning |
|
||||
| Content burst | >2x avg velocity | info |
|
||||
|
||||
## Limitations
|
||||
|
||||
- Data freshness depends on source and collection method
|
||||
- Keyword overlap limited to top 1,000 keywords per domain
|
||||
- Content velocity based on page index data (not real-time crawl)
|
||||
- Naver presence detection is heuristic-based
|
||||
|
||||
## Notion Output (Required)
|
||||
|
||||
All reports MUST be saved to OurDigital SEO Audit Log:
|
||||
- **Database ID**: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||
- **Properties**: Issue (title), Site (url), Category ("Competitor Intelligence"), Priority, Found Date, Audit ID
|
||||
- **Language**: Korean with English technical terms
|
||||
- **Audit ID Format**: COMP-YYYYMMDD-NNN
|
||||
Reference in New Issue
Block a user