검색과 AI 답변 기준의 사이트 점검, 어느 점수가 실제인지까지 구분합니다
Claude Code 스킬 4개가 사이트 측정, 소스 수정, 다른 곳이 바뀌지 않았다는 확인을 차례로 맡습니다. 모든 항목에 증거 등급을 붙이고, 점수는 어느 엔진도 쓴다고 확인되지 않은 항목을 포함한 값과 뺀 값으로 함께 보고합니다.
$ bash audit.sh https://one-scroll-bible.com/
== https://one-scroll-bible.com/ (geo-optimizer-skill 4.18.3)
score 90/100 (excellent) excluding Tier C: 68/76 = 89%
robots=18/18, llms=16/18, schema=16/16, meta=14/14, content=12/12,
signals=3/6, ai_discovery=6/6, brand_entity=5/10, penalty=0
[B] Add sameAs links in Organization schema to Wikipedia, Wikidata, ...
[C] Add RSS/Atom feed and link it in <head> ...
[C] Add potentialAction (SearchAction) to WebSite schema ...
[SEC] This page exposes user-generated content ('respond' region) ...증거 등급
AI 검색 점검 도구는 세 종류의 권고를 한 목록에 섞습니다. 문서로 확인되는 크롤러 동작, 그럴듯한 관행, 주요 엔진이 읽는다는 근거가 없는 llms.txt 같은 관례입니다. Google의 AI 최적화 안내(2026-07-10 갱신)는 Google 검색이 AI용 텍스트 파일과 특수 마크업을 무시한다고 밝힙니다.
x-eo는 모든 항목에 등급을 붙입니다. Tier C 항목만으로 오른 점수는 그렇게 표시해 보고합니다.
| 등급 | 뜻 | 예 | 처리 |
|---|---|---|---|
| A | 검색엔진 문서로 확인되거나 직접 관찰 가능 | HTTP 200, 원본 HTML의 본문, canonical, hreflang, 사이트맵, 파싱되고 화면과 일치하는 JSON-LD | 먼저 수정 |
| B | 제3자 연구나 상관관계로만 뒷받침 | 답변형 문단, 최신성, 일관된 개체 이름과 sameAs | 독자에게도 도움이 될 때 적용 |
| C | 사용 근거가 없는 관례 | llms.txt, ai.txt, /ai/*.json, WebMCP | 비용이 없을 때만 적용, 성과로 계산하지 않음 |
| SEC | 보안 항목 | 프롬프트 주입 경로, 노출된 비밀값 | 실제 쓰기 경로를 확인한 뒤 보고 |
스킬 4개와 작업 순서
x-eo-audit실제 사이트 측정x-eo-fix결과물이 아닌 소스 수정x-eo-verify빌드 비교, JSON-LD, JavaScript 켬·끔 비교배포배포 후 실제 URL 재측정
배포 후에는 같은 도구와 버전으로 x-eo-audit부터 다시 실행합니다.
| 스킬 | 스크립트 |
|---|---|
x-eo-audit | audit.sh(Tier C 포함·제외 점수, CI용 --threshold), host-root-check.sh, site-sample.py, ai-recall.mjs(검색이 연결된 AI API의 내 URL 인용 집계) |
x-eo-fix | gen-robots.py, JSON-LD 템플릿, 하위 경로 사이트용 루트 파일, html-to-llms-full.mjs, gen-ai-files.mjs, indexnow.mjs |
x-eo-verify | diff-builds.sh, jsonld-lint.py, render-diff.mjs(Playwright), local-audit.py |
설치
네 스킬은 서로 참조하므로 모두 복사합니다. 설치 스크립트, 훅, 백그라운드 에이전트는 없습니다.
레포를 받고 스킬 복사
git clone --depth 1 https://github.com/jungrok5/x-eo.git mkdir -p ~/.claude/skills && cp -r x-eo/skills/* ~/.claude/skills/Claude Code에 요청
x-eo로 https://example.com 을 점검하고 Tier A 항목을 고친 뒤 검증해 줘
bash, git, python3 3.10 이상이 필요합니다. render-diff.mjs는 playwright-core와 PLAYWRIGHT_CHROMIUM에 지정한 Chromium 경로가 추가로 필요합니다. ai-recall.mjs는 Anthropic 또는 OpenAI API 키가 필요하며 질문과 엔진마다 검색 요청 1회 비용이 발생합니다.
에이전트 없이 스크립트 실행
S=x-eo/skills
bash $S/x-eo-audit/scripts/audit.sh --threshold 80 https://example.com/
bash $S/x-eo-audit/scripts/host-root-check.sh https://example.com/blog/
python3 $S/x-eo-audit/scripts/site-sample.py https://example.com/ --max 8
node $S/x-eo-verify/scripts/render-diff.mjs https://example.com/
python3 $S/x-eo-verify/scripts/jsonld-lint.py ./dist --require WebSite --strict
python3 $S/x-eo-fix/scripts/gen-robots.py --sitemap https://example.com/sitemap.xml --out robots.txt사례: 214개 언어 정적 사이트, 62점에서 90점
오른 28점 중 12점은 Tier C입니다. Tier C를 빼면 52/76에서 68/76으로 올랐습니다.
효과를 측정할 수 있었던 변경은 한국어 루트 페이지의 사전 렌더링입니다. JavaScript 없이 보이는 본문이 렌더링된 화면의 11%에서 53%로 늘었고, JavaScript를 켠 화면의 DOM은 바이트 단위로 같았습니다.
| 항목 | 전 | 후 | 등급 |
|---|---|---|---|
robots | 15 | 18 | A |
llms | 10 | 16 | C |
ai_discovery | 0 | 6 | C |
schema | 7 | 16 | B |
content | 11 | 12 | A |
penalty | -3 | 0 | A/B |
| 합계 | 62 | 90 |
한계
audit.sh는 키워드 규칙으로 등급을 매깁니다. 등급이 틀릴 수 있으므로 항목 내용을 직접 확인합니다.- 점수는 한 도구의 분류와 가중치를 따릅니다. 서로 다른 도구가 아니라 같은 도구, 같은 버전의 변경 전후를 비교합니다.
ai-recall.mjs의 결과는 표본이며 비율이 아닙니다. 실행할 때마다 답이 달라지고 Perplexity는 지원하지 않습니다.local-audit.py는 geo-optimizer 내부를 수정하므로 업그레이드하면 동작하지 않을 수 있습니다. 그래서 버전을 고정합니다.- 리눅스에서만 시험했습니다. 증거 기록과 한국 가이드에는 작성 날짜가 있으므로 사용 전에 다시 확인합니다.