Add 11-seo-comprehensive-audit orchestrator skill
New skill that runs a 6-stage SEO audit pipeline (Technical, On-Page, Core Web Vitals, Schema, Local SEO, Search Console) and produces a unified health score (0-100) with weighted categories. Includes Python orchestrator script, slash command, and Notion integration for Korean audit reports. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
---
|
||||
description: "Comprehensive SEO audit: technical, on-page, schema, CWV, local, and GSC in one unified report"
|
||||
argument-hint: <url> [--skip-local] [--skip-gsc] [--skip-notion] [--json]
|
||||
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task
|
||||
---
|
||||
|
||||
# Comprehensive SEO Audit
|
||||
|
||||
## Overview
|
||||
|
||||
Orchestrates a unified 6-stage SEO audit by calling sub-skill scripts sequentially, merging results, computing a weighted health score (0-100), and optionally pushing a summary to Notion.
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
/seo-comprehensive-audit https://example.com
|
||||
/seo-comprehensive-audit https://example.com --skip-local --skip-gsc
|
||||
/seo-comprehensive-audit https://example.com --json
|
||||
/seo-comprehensive-audit https://example.com --skip-notion
|
||||
```
|
||||
|
||||
## Pipeline Stages
|
||||
|
||||
| # | Stage | Sub-Skill | Skip Flag |
|
||||
|---|-------|-----------|-----------|
|
||||
| 1 | Technical SEO | `12-seo-technical-audit` | — |
|
||||
| 2 | On-Page SEO | `13-seo-on-page-audit` | — |
|
||||
| 3 | Core Web Vitals | `14-seo-core-web-vitals` | — |
|
||||
| 4 | Schema Validation | `16-seo-schema-validator` | — |
|
||||
| 5 | Local SEO | `18-seo-local-audit` | `--skip-local` |
|
||||
| 6 | Search Console | `15-seo-search-console` | `--skip-gsc` |
|
||||
|
||||
## Execution
|
||||
|
||||
### Option A: Python Orchestrator (Recommended)
|
||||
|
||||
```bash
|
||||
# Find repo root
|
||||
REPO_ROOT=$(git -C /path/to/our-claude-skills rev-parse --show-toplevel)
|
||||
SKILLS="$REPO_ROOT/custom-skills"
|
||||
|
||||
# Run orchestrator
|
||||
python "$SKILLS/11-seo-comprehensive-audit/code/scripts/seo_audit_orchestrator.py" \
|
||||
--url https://example.com \
|
||||
--skills-dir "$SKILLS"
|
||||
```
|
||||
|
||||
### Option B: Manual Stage-by-Stage
|
||||
|
||||
Run each sub-skill script with `--json` flag, then synthesize:
|
||||
|
||||
```bash
|
||||
# Stage 1: Technical SEO
|
||||
python "$SKILLS/12-seo-technical-audit/code/scripts/robots_checker.py" --url $URL --json
|
||||
python "$SKILLS/12-seo-technical-audit/code/scripts/sitemap_validator.py" --url "$URL/sitemap.xml" --json
|
||||
|
||||
# Stage 2: On-Page SEO
|
||||
python "$SKILLS/13-seo-on-page-audit/code/scripts/page_analyzer.py" --url $URL --json
|
||||
|
||||
# Stage 3: Core Web Vitals
|
||||
python "$SKILLS/14-seo-core-web-vitals/code/scripts/pagespeed_client.py" --url $URL --json
|
||||
|
||||
# Stage 4: Schema Validation
|
||||
python "$SKILLS/16-seo-schema-validator/code/scripts/schema_validator.py" --url $URL --json
|
||||
|
||||
# Stage 5: Local SEO (prompt-driven, use WebFetch + WebSearch)
|
||||
# Stage 6: Search Console (requires GSC API credentials)
|
||||
```
|
||||
|
||||
## Health Score (Weighted 0-100)
|
||||
|
||||
| Category | Weight |
|
||||
|----------|--------|
|
||||
| Technical SEO | 20% |
|
||||
| On-Page SEO | 20% |
|
||||
| Core Web Vitals | 25% |
|
||||
| Schema | 15% |
|
||||
| Local SEO | 10% |
|
||||
| Search Console | 10% |
|
||||
|
||||
Scores per category are normalized to 0-100. Skipped stages redistribute their weight proportionally.
|
||||
|
||||
## Output Format
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "https://example.com",
|
||||
"audit_date": "2025-01-15",
|
||||
"health_score": 72,
|
||||
"grade": "B",
|
||||
"stages": {
|
||||
"technical": {"score": 85, "issues": [], "weight": 0.20},
|
||||
"on_page": {"score": 70, "issues": [], "weight": 0.20},
|
||||
"core_web_vitals": {"score": 60, "issues": [], "weight": 0.25},
|
||||
"schema": {"score": 80, "issues": [], "weight": 0.15},
|
||||
"local_seo": {"score": 65, "issues": [], "weight": 0.10},
|
||||
"search_console": {"score": 75, "issues": [], "weight": 0.10}
|
||||
},
|
||||
"critical_issues": [],
|
||||
"recommendations": []
|
||||
}
|
||||
```
|
||||
|
||||
## Grading Scale
|
||||
|
||||
| Score | Grade | Status |
|
||||
|-------|-------|--------|
|
||||
| 90-100 | A | Excellent |
|
||||
| 80-89 | B+ | Good |
|
||||
| 70-79 | B | Above Average |
|
||||
| 60-69 | C | Needs Improvement |
|
||||
| 40-59 | D | Poor |
|
||||
| 0-39 | F | Critical |
|
||||
|
||||
## Notion Output (Required)
|
||||
|
||||
**IMPORTANT**: Summary report MUST be saved to the OurDigital SEO Audit Log database.
|
||||
|
||||
### Database Configuration
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Database ID | `2c8581e5-8a1e-8035-880b-e38cefc2f3ef` |
|
||||
|
||||
### Summary Page Title
|
||||
|
||||
`종합 SEO 감사 보고서 - [domain] - YYYY-MM-DD`
|
||||
|
||||
### Required Properties
|
||||
|
||||
| Property | Type | Value |
|
||||
|----------|------|-------|
|
||||
| Issue | Title | `종합 SEO 감사 보고서 - [domain] - YYYY-MM-DD` |
|
||||
| Site | URL | Audited website URL |
|
||||
| Category | Select | `Comprehensive Audit` |
|
||||
| Priority | Select | Based on health score (Critical if <40, High if <60, Medium if <80, Low if ≥80) |
|
||||
| Found Date | Date | Audit date (YYYY-MM-DD) |
|
||||
| Audit ID | Rich Text | `COMP-YYYYMMDD-001` |
|
||||
|
||||
### Individual Issues
|
||||
|
||||
Create one Notion page per Critical/High finding with:
|
||||
- Appropriate Category (Technical SEO, On-page SEO, Performance, Schema/Structured Data, Local SEO)
|
||||
- Priority matching the finding severity
|
||||
- Audit ID linking back to the comprehensive audit
|
||||
|
||||
### Language Guidelines
|
||||
|
||||
- Report content in Korean (한국어)
|
||||
- Keep technical English terms as-is (e.g., SEO Audit, Core Web Vitals, Schema Markup)
|
||||
- URLs and code remain unchanged
|
||||
Reference in New Issue
Block a user