분석: 측정, 진단, 보고
퍼스트파티 데이터(Search Console, Bing Webmaster, GA4, 서버 로그)를 의사 결정으로 전환합니다. 추측 대신 고정된 의사 결정 트리로 하락을 진단하고, 변경 사항을 정직하게 측정합니다.
사용 시기 / 사용하지 말아야 할 때
다음에 사용합니다:
- Search Console, Bing Webmaster, GA4 내보내기
- 트래픽 하락 및 알고리즘 업데이트 관련 질문
- CTR 최적화 대상
- 키워드 잠식
- 크롤 로그 분석
- KPI 대시보드
- 전후 테스트
다음에는 사용하지 않습니다:
- 사이트 내 결함 찾기 → seo-technical, seo-audit. 이 스킬은 하락 트리가 해당 영역을 가리킬 때 호출합니다.
- 새 페이지를 위한 키워드 아이디어 → seo-keywords
- 경쟁사 가시성 → seo-competitors
수집할 입력 데이터
- Search Console 성과 내보내기
- UI 내보내기:
Queries.csv/Pages.csv(최대 1,000행만). - API 또는 Looker Studio 내보내기(쿼리+페이지 행 포함): 키워드 잠식 분석에 필요. API 제한: 요청당 25,000행, 유형당 하루 약 50,000행(google-rules §11).
- 비교용: 동일 길이, 주중 기준 정렬된 두 기간을 사용하며 마지막 2~3일은 제외합니다(GSC 데이터 지연).
- UI 내보내기:
- 브랜드 정규식. 브랜드 이름과 오타 포함(예:
acme|acme ?corp|아크메). - 선택 사항:
- Bing Webmaster 내보내기(동일 형식, gsc_analyze와 호환).
- GA4 유기적 랜딩 페이지 보고서.
- 서버 액세스 로그(
.log/.gz). - 사이트 변경, 배포, 마이그레이션 날짜.
- 하락 분석용: 시작 시점, 영향받은 섹션/국가/기기, 전환 하락 동반 여부.
워크플로우
A. 기회 분석 (GSC/Bing 내보내기)
-
분석 실행:
mkdir -p seo-work python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" Queries.csv --brand "brand|brnd" --min-impressions 50 > seo-work/gsc.json python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" query_page.csv --brand "brand" > seo-work/gsc-qp.json # 키워드 잠식플래그:
--striking-from 4 --striking-to 20(기본값). 대규모 사이트에서는--min-impressions값을 높입니다. -
striking_distance(4~20위,est_extra_clicks_at_pos3[추정치]기준 정렬)를 읽습니다. 이 페이지들이 우선 개선 대상입니다. 각각을 쿼리와 함께 seo-onpage / seo-content에 전달합니다. -
ctr_underperformers를 읽습니다. CTR이 해당 사이트 자체 해당 위치별 중간 CTR(ctr_curve_used; 데이터가 부족하면 기본값으로 대체)의 절반 미만인 상위 10개 쿼리.- 원인: 약한 제목/스니펫, 결과 위의 SERP 기능 또는 AI 개요, 의도 불일치.
- 재작성 전에 WebSearch로 실시간 SERP를 검사하세요.
-
question_queries: FAQ 섹션 및 답변 우선 구절을 위한 자료(seo-content, seo-ai-search). -
brand_split: 비브랜드 클릭을 별도로 보고합니다. 브랜드 수요는 SEO 성과가 아닙니다. -
cannibalization: 2개 이상의 페이지가 각각 노출수의 10% 이상을 차지하는 쿼리입니다. 사례별로 결정합니다: 병합 + 301, 의도 차별화, 또는 내부 링크를 기본 페이지로 지정. 모든 분할이 문제는 아닙니다. 두 페이지 모두 순위가 좋다면 그대로 둡니다.
B. 기간 비교 및 트래픽 하락 진단
-
비교 실행:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" last_28d.csv --compare prev_28d.csv > seo-work/gsc-compare.json각 손실 항목에 대해
likely_cause가 제공됩니다:- "rankings dropped" (순위 하락)
- "fewer impressions at similar rank" (수요 또는 SERP 기능으로 인한 노출수 감소)
- "CTR fell at similar rank" (CTR 하락)
이는 휴리스틱입니다. "consistent with"(~와 일치) 표현을 사용하세요.
-
하락 트리를 순서대로 따라가며 증거가 뒷받침하는 첫 번째 분기에서 멈춥니다. 각 분기에 대한 증거를 기록합니다:
-
하락이 실제인가요?
- GSC 클릭 vs GA4 유기적 세션, 추세 방향 비교(10~20% 수준 차이 예상).
- GA4에서만 하락 → 추적/동의/태그 문제, SEO 아님.
- 전년 대비 확인으로 계절성 배제.
-
기술적 문제. 병렬 실행:
robots_check.pysitemap_check.pypage_audit.py(상위 손실 URL 대상)crawl.py(영향받은 섹션 대상)
확인할 사항:
- noindex, 정규화 변경, 5xx/429, robots 차단, 리디렉션 변경, 봇 챌린지(
bot-challenge). - 하락 날짜의 배포.
- Search Console 페이지 색인 보고서에서 "제외됨" 급증 확인(seo-technical).
-
알고리즘 업데이트. 하락 날짜를 Google Search Status Dashboard(
https://status.search.google.com/→ 순위 인시던트, 가져오기)와 비교합니다. 패턴 중요:- 업데이트 날짜의 사이트 전체 계단식 변화는 시스템 재평가(도움되는 콘텐츠 / 핵심 / 스팸)와 일치합니다. google-rules §4 참조.
- 섹션별 변화는 페이지 수준 문제를 가리킵니다.
- Search Console에 수동 조치가 표시되지 않으면 "페널티"라고 말하지 마세요.
-
계절성 / 수요. GSC 전년 대비(16개월 데이터, google-rules §11) 및 주요 용어에 대한 Google Trends를 확인합니다. 안정적인 위치에서 노출수 감소 = 수요 감소.
-
SERP 대체. 위치는 안정적이나 CTR이 감소한 경우. WebSearch로 쿼리 확인:
- AI 개요 존재? 새로운 기능(동영상, PAA, 쇼핑, 포럼)? 광고?
- Search Console "Search generative AI performance" 보고서 사용 가능? (google-rules §10)
-
경쟁사. 특정 URL에 순위를 빼앗긴 경우 → seo-competitors (승자 URL에 대해 compare_pages 실행). Wayback CDX에서 해당 페이지 변경 시점 확인.
-
-
로그 데이터 사용 가능 시:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/log_analyze.py" access.log access.log.1.gz --verify-dns --sitemap-urls seo-work/urls.txt > seo-work/logs.json확인할 사항:
- Googlebot 일별 히트 수 감소(크롤 용량 문제: 5xx/429 또는 느린 서버, google-rules §1).
- 봇에 제공된 오류.
- 파라미터 URL 비중(크롤 낭비).
- 사이트맵 경로 중 크롤되지 않은 항목.
- 가짜 "Googlebot" IP(
unverified_ips). - AI 봇(OAI-SearchBot, Claude-SearchBot, PerplexityBot)이 사이트에 도달하는지 여부.
C. 보고 및 대시보드
- KPI. 선행 지표와 후행 지표 구분:
- 선행: 색인된 페이지(GSC), 노출수, 대상 클러스터 평균 순위, CWV 통과율, 크롤 오류.
- 후행: 비브랜드 클릭, 유기적 전환/수익(GA4), AI 인용률(seo-ai-search).
- 무료 대시보드: 기본 Search Console 커넥터(사이트 + URL 노출 테이블) 및 GA4 커넥터와 함께 Looker Studio 사용. 페이지:
- 개요.
- 비브랜드 추세(정규식 필터).
- 클러스터(URL 경로 그룹화).
- 기회(4~20위).
- CWV(CrUX 커넥터 또는 psi.py 스냅샷).
- 월간 보고서: 변경 사항, 이유(증거 태그 포함), 수행한 작업(SEO-WORKLOG.md에서), 다음 단계.
D. SEO 변경 효과 측정
- 사전 등록. 변경 전, 작업 로그에 다음을 기록:
- 변경된 URL.
- 대조 URL (유사, 변경되지 않음).
- 메트릭(대상 쿼리의 클릭/노출/CTR/위치).
- 예상 방향.
- 기간: 색인 후 ≥4주. URL 검사에서 재크롤 날짜 확인.
- 두 그룹에 대해 동일한 길이의 전후 기간을 내보내고, 각 그룹에 대해
gsc_analyze.py after.csv --compare before.csv실행. - 처리 그룹의 변화 에서 대조 그룹의 변화를 뺀 값을 보고합니다. 페이지 수가 적거나 클릭이 적으면 "inconclusive"(결론 불가)라고 표시합니다. 단일 전후 비교에서 인과관계를 주장하지 마세요.
순위 추적
-
무료: 쿼리당 Search Console 평균 위치(노출 가중치, 모든 지역). 추세 파악에는 적합하지만 "현재 내 위치가 어디인가"를 보는 용도는 아닙니다.
-
유료: 고정 키워드 목록의 일일 위치, 위치/기기별, SERP 기능 포함. 다음 경우에 정당화:
- 지역 또는 다중 도시 순위가 중요한 경우,
- 고객 계약에 순위 보고서가 필요한 경우,
- 아직 노출이 없는 키워드를 추적해야 하는 경우.
옵션: Semrush Position Tracking, Ahrefs Rank Tracker, SE Ranking 또는 스크립트형 확인용 DataForSEO SERP API(tools.md 참조).
체크리스트
| 확인 항목 | 규칙 | 출처 |
|---|---|---|
| 비교 기간 동일 길이, 주중 정렬, 마지막 2~3일 제외 | GSC 데이터 2~3일 지연 | google-rules §11 [Google 문서] |
| GSC 보존 기간 | 16개월 | google-rules §11 [Google 문서] |
| "페널티" 주장 | 수동 조치 보고서 항목이 있는 경우에만 | google-rules §4 [Google 문서] |
| AI 개요/AI 모드 트래픽 | Performance → Web 내에 포함, 별도 클릭 없음 | google-rules §10 [Google 문서] |
| Googlebot 크롤 속도 감소 | 5xx/429/느린 응답과 일치 | google-rules §1 [Google 문서] |
| CTR 기대치 | 먼저 사이트 자체 곡선 사용. 기본값은 휴리스틱 | heuristic |
| 키워드 잠식 임계값 | ≥2개 페이지 ≥10% 노출, ≥100 노출 | heuristic |
데이터: 무료 vs 유료
무료로 여기 있는 거의 모든 것을 처리합니다. Search Console (+API), Bing Webmaster (+AI Performance 보고서(가능한 경우, google-rules §10)), GA4, Looker Studio, 서버 로그, Google Search Status Dashboard, Google Trends.
유료 추가 (${CLAUDE_PLUGIN_ROOT}/references/tools.md 참조):
- Semrush / Ahrefs.
- 경쟁사 가시성 기록 및 키워드 변동(자체 데이터는 GSC에서 더 좋음).
- 알고리즘 변동성 센서(Semrush Sensor)를 통해 하락이 업계 전반인지 확인.
- "우리만 그런가요?" 질문에 답할 때 정당화.
- 비용 절감 전략: 전체 프로젝트 대신 무료 Sensor 페이지와 단일 경쟁사의 Organic Research 기록 확인.
- 순위 추적기: 위 참조. 핵심 키워드만 추적하고, 중요한 위치/기기만 제한하세요. 대부분의 도구는 키워드 × 위치 × 기기 × 빈도로 청구하므로, 변동성이 낮은 세트는 일일보다 주간 선호.
- Screaming Frog 로그 파일 분석기 (
## Screaming Frog). 로그가 매우 크고 사용자가 GUI를 선호하는 경우 유용.log_analyze.py로 핵심 질문을 무료로 처리 가능.
서드파티 트래픽 수치에는 [벤더 데이터] / [추정치] 라벨을 붙이세요. 모델링된 값이며 측정값이 아닙니다.
출력
seo-work/gsc.json및 관련 파일, 간단한 결과 요약:- 상위 10개 근접 거리 기회: 쿼리, 페이지, 예상 추가 클릭
[추정치]. - 상위 CTR 수정 대상.
- 키워드 잠식 결정.
- 상위 10개 근접 거리 기회: 쿼리, 페이지, 예상 추가 클릭
- 하락 진단: 각 분기별 ✅/❌ 및 증거, "consistent with"(일치) 표현의 가장 가능성 높은 설명, 적절한 스킬로 라우팅되는 다음 조치.
- KPI/대시보드 명세(Looker Studio 데이터 소스, 필드, 필터) 또는 월간 보고서 초안.
- 실험 기록(사전 등록 + 결과).
함정 및 오해
- 평균 위치는 모든 쿼리/위치에 걸쳐 노출 가중치가 적용됩니다. 새 2페이지 순위가 트래픽 증가와 함께 평균을 낮출 수 있습니다.
- UI 내보내기는 1,000행으로 제한되고 익명화된 쿼리를 숨기므로 총계가 차트와 일치하지 않습니다.
- 업데이트 날짜의 하락이 업데이트로 인한 것임을 증명하지는 않습니다. 기술적 원인과 추적 원인을 먼저 배제하세요.
- 계절성 비즈니스의 경우 전년 대비가 전월 대비보다 낫습니다.
- 노출은 유지되면서 클릭이 감소하는 경우는 종종 AI 개요 또는 다른 SERP 기능 때문이지 순위 손실 때문이 아닙니다.
- **GA4 "organic"**은 동의 모드와 채널 그룹화에 따라 달라지므로 하락 날짜의 설정 변경을 확인하세요.
- 클릭베이트 제목으로 CTR을 최적화하지 마세요. Google이 이를 다시 작성할 수 있습니다(google-rules §3).
작업 기록
SEO-WORKLOG.md (${CLAUDE_PLUGIN_ROOT}/references/worklog.md)에 추가:
- 사용된 내보내기(날짜 범위).
- 실행된 스크립트.
- 증거 태그가 포함된 결과.
- 진단 결론.
- 사전 등록된 실험.
- 유료 도구 사용.
- 재확인 날짜(예: "제목 테스트를 위해 2026-11-21에 GSC 재추출").