--- 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="", database="us") mcp__semrush__keyword_research(query="", 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="", country="us", limit=100) mcp__ahrefs__site-explorer-pages-history(target="", history="monthly") mcp__ahrefs__keywords-explorer-overview(keyword="", country="us") ``` **OurSEO MCP (on-page content inventory):** ``` mcp__ourseo__crawl_website(url="", max_pages=200) mcp__ourseo__find_similar_pages(crawl_path="", query="") ``` **OurSEO CLI (Korean batch):** ```bash our keywords ideas "" --location 2410 --limit 50 our keywords for-site --location 2410 --limit 100 our serp ranked-keywords --location 2410 --limit 100 ``` **GSC (cannibalization + decay):** ```bash our research search-console combined --site sc-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