오가닉 성장
PLAYBOOK.md에 정의된 시스템을 현재 프로젝트에서 실행합니다. 처음에 한 번 읽고, 해당 단계에 도달했을 때만 필요한 모듈을 읽으세요. 모든 발견 사항은 프로젝트의 docs/seo/에 기록하고(templates/에서 템플릿 복사), 각 단계 후 커밋하세요.
맵
| # | 단계 | 읽을 문서 | 프로젝트 출력물 |
|---|---|---|---|
| 0 | 정찰 + 기준선 | PLAYBOOK.md §0 | docs/seo/00-baseline.md |
| 1 | 기술 SEO | checklists/technical-seo.md | 코드 + seo.config.mjs |
| 2 | Search Console + Bing | checklists/search-console.md | 기준선 수치 |
| 3 | 조사: 트렌드, 지불 의향, 자동 완성, Ahrefs/Semrush, Search Console, 출처 | modules/research.md | docs/seo/research/*.md, 09-sources-log.md |
| 4 | 성장 계획 | modules/pseo-2.md, modules/tool-led-seo.md, modules/money-pages.md, modules/linkable-assets.md | docs/seo/03-seo-plan.md |
| 5 | 정리 + 구축 | PLAYBOOK.md §5, 브리프 04/07/08 | 페이지, 리디렉션, 05-consolidation-map.md |
| 6 | GEO + 전환 | modules/geo-ai-search.md, modules/seo-to-revenue.md | robots, 페이지 형태, CTA, 이벤트 |
| 7 | 출시 + 측정 | PLAYBOOK.md §7 | docs/seo/06-launch-log.md |
사용자가 한 부분만 요청할 수도 있습니다("툴 SEO만", "내 사이트 감사", "pSEO 계획"). 그렇다면 해당 단계만 수행하되, 먼저 0단계를 빠르게 실행하세요.
먼저 물어볼 것 (코드가 알 수 없는 것만)
- 프로덕션 도메인 및 선호 호스트(apex 또는 www).
- 대상 국가 및 언어. 창립자의 위치로 추정하지 마세요.
- Search Console / 분석 도구 접근 권한.
- 유료 키워드 도구(Ahrefs, Semrush). 스크린샷이나 내보내기 파일도 괜찮습니다.
- 사이트에 표시된 평점, 리뷰 수, "사용자 수" 주장이 실제인가요?
스크립트 (Node 18+, 의존성 없음; scripts/ 디렉토리)
| 스크립트 | 용도 |
|---|---|
check-live.sh <url> | 라이브 사이트에서 크롤러가 보는 내용: 리디렉션, 404, robots, 사이트맵, 페이지별 제목/정규화/H1(JS 없이) |
prerender.mjs --config seo.config.mjs | SPA → 경로별 정적 HTML + 404.html + spa.html + sitemap.xml |
audit.mjs <dist> --base <url> | 빌드된 HTML 점검: 제목, 설명, 정규화, H1, 얇은 페이지, JSON-LD, 사이트맵 일관성, 평점 스키마 |
overlap.mjs <dist> --prefix /<cluster>/ | 중복 콘텐츠 게이트: 5단어 쉬글 자카드 유사도, <40% 및 ≥800단어 |
autocomplete.mjs "<시드>" --gl us,gb,au --expand | 국가별 실제 Google 자동 완성 쿼리 (수요 증거) |
어렵게 배운 규칙
- 대상 시장의 로케일로 조사하라. 잘못된 국가의 자동 완성으로 한 번에 잘못된 시장의 페이지 배치가 생성되었습니다.
- 모든 조사 결과를 날짜가 포함된 파일로
docs/seo/research/에 저장하고, 모든 온페이지 사실을09-sources-log.md에 기록하세요(법적 사실의 공식 출처; 경쟁사 사실은 날짜를 기재하고 90일마다 재확인; 확인 불가능한 주장은 생략). - Ahrefs의 무료 도구는 사용자가 통과해야 하는 사람 확인 과정이 있습니다. 스크린샷을 요청하고, 우회를 시도하지 마세요.
- 페이지는 수요가 있기 때문에 존재합니다. 모든 계획된 페이지는 그 증거를 명시합니다.
- 품질 게이트는 선택 사항이 아닙니다. 형제 페이지와 40% 미만 중복, 800단어 이상, 고유 데이터/도구/출력 보유. 템플릿화된
{도시}교체는noindex를 받고 사이트맵에서 제외됩니다. 대량 콘텐츠 페널티는 전체 도메인에 영향을 미칩니다. - 도구는 페이지이지 위젯이 아닙니다. 각 도구는 고유한 편집 가이드, FAQ 및 스키마를 정적 HTML로 가져야 하며, 그렇지 않으면 얇은 페이지로 간주됩니다.
- 더 적고, 더 깊은 페이지. 얇은 게시물을 심층 가이드로 병합하고 모든 이전 슬러그를 301 리디렉션하세요.
- 허위 숫자나 소셜 증명은 안 됩니다. 가격은 페이지에서 출처를 밝히거나 계산합니다. 경쟁사 사실은 날짜를 기재합니다. 평점 스키마는 소유자가 실제임을 확인한 경우에만 사용합니다.
- 크롤러(및 AI 크롤러)는 JavaScript 없이도 콘텐츠를 볼 수 있어야 합니다.
- 하나의 호스트, 하나의 URL, 실제 404, 페이지와 동일한 데이터로 생성된 사이트맵.
- 10~20개씩 배치로 출시하고, 노출을 받는 페이지만 확장하세요.
- 모든 페이지는 관련 CTA로 끝나고, 페이지 그룹별 전환을 추적합니다.
작업 스타일
- 프로덕션에 영향을 주는 변경 사항(리디렉션, robots.txt, noindex, 페이지 삭제)은 목록과 함께 사용자에게 한 줄 확인을 받으세요.
- Search Console, DNS 및 분석 도구 클릭은 사용자의 몫입니다. 정확한 단계를 알려주세요.
- 모든 빌드 후
audit.mjs를, 모든 배포 후check-live.sh를 실행하고 요약을 붙여넣으세요. - 날짜가 포함된 수치를
06-launch-log.md에 기록하여 다음 세션에서 비교할 수 있게 하세요.
프레임워크
prerender.mjs는 클라이언트 렌더링 SPA(Vite, CRA, React Router)용입니다. Next.js, Astro, Nuxt, SvelteKit, Remix: 해당 메타데이터 API와 사이트맵 플러그인을 사용하고, audit.mjs를 빌드 출력물에 대해 계속 실행하세요. WordPress/Webflow/Shopify: 1단계 코드는 건너뛰고, check-live.sh로 라이브 사이트에 대해 체크리스트를 사용하세요.