Adopt: directory keeps its NN- ordering prefix; skill `name:` is the clean form without it (dir 16-seo-schema-validator → name: seo-schema-validator). Nicer to invoke, matches the original desktop/SKILL.md names, still globally unique. - 71 root SKILL.md: name: NN-foo → name: foo (flat skills + reference-curator suite). Plugins (mac-optimizer/multi-agent-guide/dintel-bootstrap) already clean; 95 already clean. - scripts/migrate_skill_root.py: derive name = dirname minus NN- prefix (skill_name()). - CLAUDE.md + SKILL-MIGRATION-GUIDE.md: document the dir-prefix / clean-name convention. verify_skills.py: 0 name collisions across all renamed skills. (The ~/.claude/skills symlinks were re-pointed to the clean names separately — filesystem only.) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.1 KiB
name, description
| name | description |
|---|---|
| seo-content-strategy | 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
- Content Audit - Inventory, performance scoring, decay detection
- Content Gap Analysis - Topic gaps vs competitors, cluster mapping
- Content Brief Generation - Outlines, keywords, word count targets
- Editorial Calendar - Prioritized content creation schedule
- 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
- User named a backend explicitly → use it.
- User preference memory — read
feedback_seo_tool_preferences.md; honor the task-type default. - Task is content decay / cannibalization on the target site → use GSC (first-party impression data is required).
- Task is on-page content inventory → use OurSEO crawl_website.
- Default for keyword + competitor pulls: Semrush MCP (English markets); OurSEO CLI (
--location 2410) for Korean markets. - 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):
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):
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
- Crawl sitemap to discover all content URLs
- Fetch top pages data via our-seo-agent CLI, pre-fetched JSON, or WebSearch
- Classify content types (blog, product, service, landing, resource)
- Score each page performance (0-100 composite)
- Detect decaying content (traffic decline patterns)
- Analyze freshness distribution (fresh/aging/stale)
- Identify Korean content patterns (후기, 추천, 방법 formats)
- Generate recommendations
2. Content Gap Analysis
- Gather target site keywords via our-seo-agent CLI or pre-fetched data
- Gather competitor top pages and keywords
- Identify topics present in competitors but missing from target
- Score gaps by priority (traffic potential + competition coverage)
- Build topic clusters using TF-IDF + hierarchical clustering
- Generate editorial calendar with priority and dates
- Detect Korean market content opportunities
3. Content Brief Generation
- Analyze top 5-10 ranking pages for target keyword
- Extract headings, word counts, content features (FAQ, images, video)
- Build recommended H2/H3 outline from competitor patterns
- Suggest primary, secondary, and LSI keywords
- Calculate target word count (avg of top 5 +/- 20%)
- Find internal linking opportunities on the target site
- Detect search intent (informational, commercial, transactional, navigational)
- Add Korean format recommendations based on intent
Output Format
## 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