Seo audit
SEO+GEO 점검 → 수정 선택 → 구현. 25개 항목 자동 점검 후 코드 수정 가능 항목을 골라 바로 구현.From its SKILL.md
npx -y skills add october-academy/agnt --skill seo-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
15.1 KB, as published. Nobody here has run it
SEO + GEO 점검 + 자동 수정. 사이트 URL을 25개 항목(P0/P1/P2)으로 자동 점검한 뒤, 미비 항목을 선택하여 바로 구현까지 진행합니다.
데이터 경로 결정
AGNT_DIR (선택적)
.claude/agnt/state.jsonRead → 성공 시 AGNT_DIR =.claude/agnt~/.claude/agnt/state.json→~/.claude/agnt.codex/agnt/state.json→.codex/agnt~/.codex/agnt/state.json→~/.codex/agnt- 모두 없으면 → AGNT_DIR = null (state 없이 진행)
REFS_DIR
AGNT_DIR이 있으면 {AGNT_DIR}/references/ 탐색. null이면:
~/.claude/plugins/marketplaces/agentic30/references/- 없으면 → 내장 지식으로 진행
출력 규칙
내부 로직(경로 탐색, state 파싱, MCP 검색)은 무음 처리.
점검 항목 (25개)
P0 — Critical (11개, 각 8점)
| # | 항목 | 확인 방법 |
|---|---|---|
| 1 | HTTPS | URL https:// 확인 |
| 2 | robots.txt | 주요 경로 Disallow 없음 |
| 3 | sitemap.xml | 접근 가능 + 유효 XML |
| 4 | TTFB | < 1초 |
| 5 | 모바일 반응형 | viewport 메타 존재 |
| 6 | noindex 오용 | 주요 페이지에 noindex 없음 |
| 7 | title | 존재, 60자 이내 |
| 8 | h1 | 1개 존재 |
| 9 | meta description | 존재, 155자 이내 |
| 10 | OG 태그 | og:title + og:description + og:image (이미지 1200x630 권장) |
| 11 | canonical | rel="canonical" 설정 |
P1 — Important (10개, 각 5점)
| # | 항목 | 확인 방법 |
|---|---|---|
| 12 | LCP | < 2.5s (Chrome DevTools 또는 Lighthouse) |
| 13 | CLS | < 0.1 |
| 14 | 이미지 최적화 | 포맷(WebP/AVIF) + lazy loading + alt 텍스트 |
| 15 | Schema (JSON-LD) | 1개 이상 존재 |
| 16 | AI 봇 접근 | robots.txt에서 AI 봇 미차단 (RFC 9309 기준) |
| 17 | FAQPage Schema | FAQPage JSON-LD 존재 |
| 18 | Content-Answer Fit | 정의/단계/비교 블록 중 1개 이상 |
| 19 | E-E-A-T 시그널 | 후기 섹션, 제작자 프로필, 외부 인용 중 1개 이상 |
| 20 | Trustworthiness | HTTPS + 개인정보정책 링크 + 연락처/회사 정보 |
| 21 | SSR/SSG | 서버사이드 렌더링 확인 (AI 크롤러가 JS 미실행) |
P2 — Recommended (4개, 각 2점)
| # | 항목 | 확인 방법 |
|---|---|---|
| 22 | 내부 링크 | 3개 이상 |
| 23 | 외부 링크 | 1개 이상 |
| 24 | URL 구조 | 짧고 깔끔, 불필요한 파라미터 없음 |
| 25 | Custom 404 | 유용한 404 페이지 존재 |
AI 봇 접근 (#16) 판정 로직
User-agent: *+Allow: /→ ✅ (전체 허용, 명시 규칙 불필요)User-agent: *에 Disallow만 있고 AI 봇 명시 규칙 없음 → ✅ (나머지 경로 허용)- AI 봇 명시 Disallow → ❌ + 차단 봇 목록 (GPTBot, ClaudeBot, PerplexityBot 등)
- robots.txt 없음 → ✅
실행 절차
1. 사전 조건 (Graceful)
AGNT_DIR ≠ null이면 {AGNT_DIR}/state.json Read.
- state 없거나 파싱 실패 → 경고 없이 진행
2. URL + 사이트 유형
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SEO + GEO 점검
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
전통 SEO + AI 검색엔진 최적화를 같이 점검해줄게.
AskUserQuestion: "점검할 URL은?" — 자유 입력
AskUserQuestion: "사이트 유형은?"
- A) 랜딩페이지 (1인 개발자 제품)
- B) SaaS / 웹앱
- C) 블로그 / 콘텐츠
- D) 기타
3. 데이터 수집 (2-tier)
{REFS_DIR}/seo/seo-checklist.md, geo-optimization.md, ai-platform-factors.md Read (있으면).
Tier 1 — Chrome DevTools MCP (권장):
ToolSearch로 +chrome-devtools 검색. 도구 발견 시:
navigate_page로 URL 접속evaluate_script로 메타데이터 일괄 추출 (title, meta desc, OG, canonical, h1, JSON-LD, img alt, lang, viewport, noindex)performance_start_trace(reload: true,autoStop: true) → CWV 측정lighthouse_audit→ Performance/SEO/Accessibility 점수- robots.txt, sitemap.xml은 WebFetch로 별도 확인
Tier 2 — WebFetch 폴백: Chrome DevTools 없으면 WebFetch로 HTML + robots.txt + sitemap.xml 수집. CWV(#12, #13)는 "측정 불가" 처리 + PageSpeed URL 안내. 한계 경고: JS 주입 JSON-LD 감지 불가 → Google Rich Results Test 안내.
Chrome DevTools 미설치 시: "CWV 자동 측정을 위해 claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest 설치 권장" 안내.
4. P0 점검
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
P0 — Critical
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Technical]
#1 HTTPS: {✅/❌}
#2 robots.txt: {✅/❌ + 차단 경로}
#3 sitemap.xml: {✅/❌ + URL 수}
#4 TTFB: {✅/❌ + 측정값}
#5 모바일 반응형: {✅/❌}
#6 noindex 오용: {✅/❌}
[On-Page]
#7 title: {✅/❌ + 현재값, 길이}
#8 h1: {✅/❌ + 현재값, 개수}
#9 meta description: {✅/❌ + 현재값, 길이}
#10 OG 태그: {✅/❌ + 누락 항목, og:image 사이즈 1200x630 확인}
#11 canonical: {✅/❌}
5. P1 점검
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
P1 — Important
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Core Web Vitals]
#12 LCP: {측정값 또는 "측정 불가"} (기준: < 2.5s)
#13 CLS: {측정값 또는 "측정 불가"} (기준: < 0.1)
{Lighthouse 점수 표시. 미측정 시 PageSpeed URL 안내}
[Technical]
#14 이미지 최적화: {포맷, lazy loading, alt 누락 개수}
#15 Schema (JSON-LD): {✅/❌ + 감지된 @type}
[GEO]
#16 AI 봇 접근: {✅/❌ + 판정 근거}
#17 FAQPage Schema: {✅/❌}
#18 Content-Answer Fit: {✅/❌ + 블록 유형}
[E-E-A-T]
#19 E-E-A-T 시그널: {✅/❌ + 감지된 요소}
#20 Trustworthiness: {✅/❌ + 근거}
#21 SSR/SSG: {✅/❌ + 렌더링 방식, CDN}
6. P2 점검
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
P2 — Recommended
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#22 내부 링크: {개수}
#23 외부 링크: {개수}
#24 URL 구조: {✅/❌}
#25 Custom 404: {✅/❌/"확인 불가"}
[{site_type}별 참고] (점수 미포함)
사이트 유형별 참고:
- 랜딩페이지: OG 이미지 1200x630, 모바일 CTA 터치(44x44px), 로딩 3초 이내
- SaaS: 가격 페이지 Offer Schema, 기능별 랜딩, 비교 페이지
- 블로그: Article Schema, 저자 프로필, 목차 Jump Link
7. 점수 + 결과
점수: P0 8점, P1 5점, P2 2점. 만점 대비 비율. "해당 없음" 항목은 만점에서 제외. CWV 미측정 시 해당 항목 배점 제외.
══════════════════════════════════════════
SEO + GEO 점검 결과
══════════════════════════════════════════
URL: {URL} | 유형: {site_type}
──────────────────────────────────────────
점수: {점수}% ({등급})
──────────────────────────────────────────
전통 SEO: {trad}% [{bar}]
GEO (AI): {geo}% [{bar}]
E-E-A-T: {eeat}% [{bar}]
A (90%+) | B (75-89%) | C (60-74%) | D (<60%)
✅ 통과: {개수}/{전체}
❌ 미비 (우선순위순):
{[Px] 항목명 — 1줄 수정 방법}
══════════════════════════════════════════
8. 수정 항목 선택
미비 0개 → Step 11로.
미비 항목을 카테고리별로 분류하여 AskUserQuestion (Multi-Select):
🔧 AUTO — 코드로 바로 수정 가능:
| 대상 항목 | 수정 방법 |
|---|---|
| #7-11 메타데이터 | layout/metadata 파일 수정 (OG 이미지 1200x630 포함) |
| #14 이미지 alt | img 태그에 alt 추가 |
| #15 Schema JSON-LD | head에 JSON-LD 추가/수정 |
| #16 AI 봇 접근 | robots.txt Disallow 제거 (명시 차단 시에만) |
| #25 Custom 404 | 404 페이지 생성 |
✏️ SEMI — 콘텐츠 확인 후 구현 (카피/구조 변경이라 유저 승인 필요):
| 대상 항목 | 필요 입력 |
|---|---|
| #17 FAQPage | FAQ 초안 3-5개 생성 → 유저 확인 → JSON-LD + visible 섹션 적용 |
| #18 Content-Answer Fit | 정의/단계/비교 블록 초안 → 유저 확인 후 적용 (전환 카피 보호) |
| #19 E-E-A-T 시그널 | 후기, 제작자 정보, 또는 외부 인용 중 택 |
어떤 항목을 지금 수정할까? (복수 선택 가능)
🔧 코드 수정:
□ A) #{n} {항목명} — {1줄 설명} [P{x}]
...
✏️ 콘텐츠 + 코드:
□ X) #19 E-E-A-T — 후기/프로필/인용 섹션 추가 [P1]
──────────────────
□ ALL) 🔧 전체 자동 수정
□ SKIP) 수정 없이 종료
SKIP → Step 11로. ALL → AUTO 항목 전체 선택.
9. 콘텐츠 수집
SEMI 항목이 선택된 경우에만 실행.
#17 FAQPage 선택 시: 페이지 콘텐츠를 분석하여 FAQ 3-5개 초안 생성 → AskUserQuestion으로 유저 확인: "이 FAQ로 진행할까? 수정/삭제/추가해줘." 확인 후 visible FAQ 섹션 + FAQPage JSON-LD 동시 적용.
#18 Content-Answer Fit 선택 시: 페이지에 맞는 블록(정의/단계/비교) 초안 생성 → AskUserQuestion으로 유저 확인: "이 블록을 페이지에 추가할까? 기존 전환 카피와 충돌하지 않는지 확인해줘."
#19 E-E-A-T 선택 시: AskUserQuestion: "어떤 E-E-A-T 시그널을 추가할까?"
- A) 후기/사례 — "이름, 한 줄 후기, 결과를 알려줘"
- B) 제작자 프로필 — "이름, 소개, 경력/자격을 알려줘"
- C) 둘 다
입력/확인받은 콘텐츠를 구현에 사용.
10. 구현
프로젝트 판별: 점검 URL이 현재 작업 디렉토리 프로젝트인지 확인.
- 프로젝트 외부 → 수정 코드 스니펫만 제공하고 Step 11로.
- 프로젝트 내부 → 대상 파일 탐색 후 직접 수정.
파일 탐색:
- 메타데이터: layout 파일 (Next.js
metadataexport, Astro frontmatter 등) - robots.txt:
public/robots.txt또는app/robots.ts - JSON-LD: 기존
script[type="application/ld+json"]위치 - 페이지 콘텐츠: 해당 페이지 컴포넌트
- 이미지:
<img>태그가 있는 컴포넌트
수정 원칙:
- 프로젝트 기존 코드 스타일/패턴 준수
- SEO 관련 변경만 — 구조적 리팩토링 금지
- FAQPage/Content-Answer Fit: SEMI 항목 — Step 9에서 유저 승인받은 초안만 적용
- AI 봇 접근:
User-agent: *+Allow: /이면 수정 불필요. 명시 Disallow만 제거.
각 항목 완료 시:
✅ #{n} {항목명} — {변경 파일}
전체 완료 후 TypeScript 프로젝트면 typecheck 실행. 에러 시 즉시 수정.
11. 완료
외부 작업 가이드 (코드로 해결 불가한 최적화 안내):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
외부 작업 가이드
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ Google Search Console — search.google.com/search-console
□ NAVER Search Advisor — searchadvisor.naver.com
□ Bing Webmaster Tools — bing.com/webmasters (Copilot 가시성)
□ Brave Search 등록 — brave.com/search/submit (Claude 검색 소스)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GEO 팁 (geo_score < 50%이고 미수정 GEO 항목이 남아있으면):
AI 검색에서 인용되려면:
1. FAQPage Schema (+Perplexity, AI Overview)
2. Content-Answer Fit (+55% ChatGPT 인용)
3. 구체적 숫자/통계 (+37% 가시성)
journey-brief.md + state (AGNT_DIR ≠ null):
{AGNT_DIR}/journey-brief.md## Market > ### SEO추가/갱신- state.json:
artifacts.seo_audited = true,meta.last_action = "seo-audit",meta.total_actions++ - MCP
submit_practice(wf-seo-audit) 또는sync.pending_events큐잉
완료 출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SEO + GEO 점검 {수정 시: "+ 수정"} 완료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{수정 시: ✅ N개 수정, 📊 이전%→예상% (등급→등급)}
{미비 남아있으면: → 남은 N개는 배포 후 /seo-audit 재실행}
{등급별 다음 행동:
A: SEO+GEO 완비. → /agnt:channel로 첫 트래픽을 보내봐.
B: 양호. → /agnt:channel로 커뮤니티 유입 시작하면서 남은 P1 보완.
C: P0부터 수정 후 재실행. 수정 완료되면 /agnt:channel로 유입 시작.
D: 색인 문제. P0 즉시 수정 필수. 수정 후 재점검.}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
규칙
- 점수를 부풀리지 않는다 — 미비는 미비로
- 애매하면 보수적 판정 (미비로)
- AI 봇: RFC 9309 —
User-agent: *+Allow: /이면 전체 허용, 명시 규칙 불필요 - Schema 검증 한계 명시 (JS 주입 감지 불가)
- 구현 시 기존 코드 스타일 준수, SEO 변경만
- 기존 기능 깨뜨리지 않음 — 수정 후 typecheck 필수
- AGNT_DIR null이면 state/journey-brief skip
- 한국어, 반말 톤