Files
our-claude-skills/custom-skills/23-seo-content-strategy/desktop/SKILL.md
Andrew Yim e527fb4b0f feat(seo-skills): multi-backend Data Source Selection (#7)
Replaces single-vendor (Ahrefs-only) tool defaults with a per-task
backend menu across all 14 SEO skills. Each skill now lists every
capable MCP in allowed-tools and documents how to pick between
Semrush, Ahrefs, OurSEO Agent (CLI + MCP), DataForSEO, and GSC
in its SKILL.md Data Source Selection section.

Tool stubs (~40 new files) populated per skill with capability
deltas, call patterns, and explicit "not for this skill when"
callouts so the menu is self-correcting.

Skills affected: 19-keyword-strategy, 20-serp-analysis,
21-position-tracking, 22-link-building, 23-content-strategy,
24-ecommerce, 25-kpi-framework, 26-international, 27-ai-visibility,
28-knowledge-graph, 31-competitor-intel, 32-crawl-budget,
33-migration-planner, 34-reporting-dashboard.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 03:15:32 +09:00

182 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: seo-content-strategy
description: |
Content strategy and planning for SEO. Triggers: content audit, content strategy, content gap, topic clusters, content brief, editorial calendar, content decay, 콘텐츠 전략, 콘텐츠 감사.
---
# SEO Content Strategy
## Purpose
Audit existing content performance, identify topic gaps vs competitors, map topic clusters, detect content decay, and generate SEO content briefs. Supports Korean content patterns (Naver Blog format, 후기/review content, 추천 listicles).
## Core Capabilities
1. **Content Audit** - Inventory, performance scoring, decay detection
2. **Content Gap Analysis** - Topic gaps vs competitors, cluster mapping
3. **Content Brief Generation** - Outlines, keywords, word count targets
4. **Editorial Calendar** - Prioritized content creation schedule
5. **Korean Content Patterns** - Naver Blog style, 후기, 추천 format analysis
## Data Source Selection
This skill can pull content + keyword + traffic data from multiple backends. **Pick one backend per data type per task** — content strategy spans multiple data classes, so you'll often combine 2 backends (e.g., one for keyword discovery + one for on-page inventory).
| Backend | Best for | Notes |
|---|---|---|
| **Semrush MCP** (`mcp__semrush__*`) | **Default** for organic content discovery, keyword expansion, top pages by traffic | `organic_research`, `keyword_research`, `overview_research``get_report_schema``execute_report`. |
| **Ahrefs MCP** (`mcp__ahrefs__*`) | Top-pages-by-traffic for competitor sites, content-decay candidates, Korean platform refdomains | `site-explorer-top-pages`, `site-explorer-pages-history`, `keywords-explorer-*`, `gsc-pages` (first-party). |
| **OurSEO MCP** (`mcp__ourseo__*`) | **On-page content inventory** — what the target site itself publishes | `crawl_website` for content URLs + titles + H1s; `find_similar_pages` for topic clustering. Pair with a keyword backend for performance data. |
| **OurSEO CLI** (`our keywords *`, `our serp *`) | DataForSEO under the hood for Korean batch keyword + competitor pulls | Claude Code only (Bash). Best for `--location 2410` Korean content gap work. |
| **GSC** (via `our research search-console` or Ahrefs `gsc-*`) | **Cannibalization detection** — query × page where multiple URLs split impressions; first-party content performance | Only first-party source — required for accurate decay detection on the target site. |
| **DataForSEO MCP** (`mcp__dfs-mcp__*`) | Fallback when `our` CLI isn't running | Same data as `our keywords *` / `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 content decay / cannibalization on the target site** → use **GSC** (first-party impression data is required).
4. **Task is on-page content inventory** → use **OurSEO crawl_website**.
5. **Default for keyword + competitor pulls**: Semrush MCP (English markets); OurSEO CLI (`--location 2410`) for Korean markets.
6. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
### Backend call patterns
**Semrush MCP (default keyword/content discovery):**
```
mcp__semrush__organic_research(query="<domain>", database="us")
mcp__semrush__keyword_research(query="<seed>", database="us")
mcp__semrush__get_report_schema(report_id="...")
mcp__semrush__execute_report(report_id="...", params={...})
```
**Ahrefs MCP (top pages by traffic, decay candidates):**
```
mcp__ahrefs__site-explorer-top-pages(target="<domain>", country="us", limit=100)
mcp__ahrefs__site-explorer-pages-history(target="<domain>", history="monthly")
mcp__ahrefs__keywords-explorer-overview(keyword="<seed>", country="us")
```
**OurSEO MCP (on-page content inventory):**
```
mcp__ourseo__crawl_website(url="<target>", max_pages=200)
mcp__ourseo__find_similar_pages(crawl_path="<path/to/crawl.json>", query="<topic>")
```
**OurSEO CLI (Korean batch):**
```bash
our keywords ideas "<seed>" --location 2410 --limit 50
our keywords for-site <competitor.com> --location 2410 --limit 100
our serp ranked-keywords <domain> --location 2410 --limit 100
```
**GSC (cannibalization + decay):**
```bash
our research search-console combined --site sc-domain:<domain> --days 90
# Group by query; flag queries where multiple pages share impressions.
```
### 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` |
Always record the chosen data source(s) in the report **Overview** so future audits can compare like-for-like.
## Workflow
### 1. Content Audit
1. Crawl sitemap to discover all content URLs
2. Fetch top pages data via our-seo-agent CLI, pre-fetched JSON, or WebSearch
3. Classify content types (blog, product, service, landing, resource)
4. Score each page performance (0-100 composite)
5. Detect decaying content (traffic decline patterns)
6. Analyze freshness distribution (fresh/aging/stale)
7. Identify Korean content patterns (후기, 추천, 방법 formats)
8. Generate recommendations
### 2. Content Gap Analysis
1. Gather target site keywords via our-seo-agent CLI or pre-fetched data
2. Gather competitor top pages and keywords
3. Identify topics present in competitors but missing from target
4. Score gaps by priority (traffic potential + competition coverage)
5. Build topic clusters using TF-IDF + hierarchical clustering
6. Generate editorial calendar with priority and dates
7. Detect Korean market content opportunities
### 3. Content Brief Generation
1. Analyze top 5-10 ranking pages for target keyword
2. Extract headings, word counts, content features (FAQ, images, video)
3. Build recommended H2/H3 outline from competitor patterns
4. Suggest primary, secondary, and LSI keywords
5. Calculate target word count (avg of top 5 +/- 20%)
6. Find internal linking opportunities on the target site
7. Detect search intent (informational, commercial, transactional, navigational)
8. Add Korean format recommendations based on intent
## Output Format
```markdown
## Content Audit: [domain]
### Content Inventory
- Total pages: [count]
- By type: blog [n], product [n], service [n], other [n]
- Average performance score: [score]/100
### Top Performers
1. [score] [url] (traffic: [n])
...
### Decaying Content
1. [decay rate] [url] (traffic: [n])
...
### Content Gaps vs Competitors
1. [priority] [topic] (est. traffic: [n], difficulty: [level])
...
### Topic Clusters
1. **[Pillar Topic]** ([n] subtopics)
- [subtopic 1]
- [subtopic 2]
### Editorial Calendar
- [date] [topic] ([type], [word count], priority: [level])
...
### Recommendations
1. [Priority actions]
```
## Common Issues
| Issue | Impact | Fix |
|-------|--------|-----|
| No blog content | High | Build blog content strategy with topic clusters |
| Content decay (traffic loss) | High | Refresh and update declining pages |
| Missing competitor topics | Medium | Create content for high-priority gaps |
| No 후기/review content | Medium | Add Korean review-style content for conversions |
| Stale content (>12 months) | Medium | Update or consolidate outdated pages |
| No topic clusters | Medium | Organize content into pillar/cluster structure |
| Missing FAQ sections | Low | Add FAQ schema for featured snippet opportunities |
## Limitations
- our-seo-agent CLI or pre-fetched JSON required for traffic and keyword data
- Competitor analysis limited to publicly available content
- Content decay detection uses heuristic without historical data in standalone mode
- Topic clustering requires minimum 3 topics per cluster
- Word count analysis requires accessible competitor pages (no JS rendering)
## 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**: CONTENT-YYYYMMDD-NNN