Communitygithub.com

SEO 플레이북

실제 웹사이트 구축 및 변경을 위한 실전 SEO 구현 가이드 — 승산이 있는 키워드 발굴, 페이지당 하나의 키워드 세트 매핑, 제목/메타/H1/콘텐츠/FAQ/내부 링크 작성, 구조화된 데이터, 기술적 색인 가능성 확인(표준 태그, 소프트 404, 서버 렌더링 HTML, 사이트맵), 오프페이지 링크 확보 및 출시 배포, Search Console 후속 조치. 공개 웹 페이지, 랜딩 페이지, 도구 페이지, 블로그 게시물을 만들거나 편집할 때마다 이 스킬을 사용하세요.

SEO 플레이북란 무엇인가요?

이 스킬은 SEO를 반복 가능한 엔지니어링 워크플로우로 전환합니다: 사이트가 실제로 이길 수 있는 쿼리를 찾고, 각 페이지에 하나의 명확한 임무를 부여하며, 올바른 단어를 올바른 HTML 요소에 배치하고, Google이 크롤링, 렌더링 및 색인할 수 있도록 보장한 후, 링크를 확보하고 측정 및 반복합니다. 이는 젊은 Next.js 도구 사이트를 장기 테일 쿼리에서 1위 순위로 끌어올리는 과정에서 효과가 있었던 점과 조용히 실패했던 점을 정제한 것입니다. 이 스킬은 모든 스택에 일반화할 수 있으며, Quick Mode(빠른 모드)와 Full Mode(전체 모드)를 제공합니다. Quick Mode는 알려진 키워드로 한두 페이지를 편집할 때 사용하고, Full Mode는 새 사이트, 키워드 진단, 사이트 전체 감사 또는 오프페이지 계획에 사용합니다. 전체 워크플로우는 정찰(Recon), 키워드 조사 및 맵, 온페이지 구현, 기술적 게이트, 오프페이지 및 배포, 검증/출시/모니터링의 6단계로 구성됩니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wali-developer/seo-playbook/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

SEO 플레이북은(는) 무엇을 하나요?

이 스킬은 SEO를 반복 가능한 엔지니어링 워크플로우로 전환합니다: 사이트가 실제로 이길 수 있는 쿼리를 찾고, 각 페이지에 하나의 명확한 임무를 부여하며, 올바른 단어를 올바른 HTML 요소에 배치하고, Google이 크롤링, 렌더링 및 색인할 수 있도록 한 후, 링크를 확보하고 측정 및 반복합니다.

이것은 젊은 Next.js 도구 사이트를 장기 테일 쿼리에서 1위 순위로 끌어올리는 과정에서 효과가 있었던 점(그리고 조용히 실패했던 점)을 정제한 것입니다. 이 교훈은 모든 스택에 일반화됩니다.

다섯 문장으로 된 마인드셋

  1. 순위는 소망이 아닌 승산 가능성을 따릅니다. 젊은 도메인이 올해 "QR 코드 생성기"와 같은 헤드 용어로 상위 5위 안에 들기는 어렵습니다. 하지만 "무료 QR 코드 생성기 회원가입 없음"이나 "이름이 포함된 생일 소원 링크"와 같은 용어로는 몇 주 안에 순위를 올릴 수 있습니다. 먼저 장기 테일을 목표로 하고 주제 권위가 헤드 용어를 나중에 끌어올리도록 하십시오.
  2. 하나의 페이지, 하나의 검색 의도, 하나의 주요 키워드. 동일한 쿼리를 대상으로 하는 두 페이지는 신호를 분할합니다(카니발리제이션). 두 가지 의도를 대상으로 하는 하나의 페이지는 어느 쪽도 제대로 충족시키지 못합니다.
  3. Google은 사용자가 보는 앱이 아니라 수신하는 HTML을 기준으로 순위를 매깁니다. 콘텐츠, H1, FAQ 답변 또는 링크가 JavaScript가 실행된 후에만 나타난다면 존재하지 않는 것으로 가정하십시오. 매번 원시 서버 응답을 확인하십시오.
  4. 색인 가능성 버그는 카피라이팅보다 더 중요합니다. 소프트 404, 잘못된 표준 태그 또는 레이아웃에서 상속된 noindex는 오류 없이 몇 달 간의 콘텐츠 작업을 지울 수 있습니다. 모든 페이지 유형에서 상태 코드, 표준 태그 및 로봇을 확인하십시오.
  5. 직관이 아닌 Search Console로 측정하십시오. 8~20위의 노출이 가장 저렴한 승리입니다. 50위 이상은 더 많은 온페이지 조정으로는 해결되지 않는 권위 또는 의도 문제를 의미합니다.

사용자의 기대치를 정직하게 설정하십시오: 장기 테일 페이지의 첫 번째 노출은 보통 2~6주 후에 나타납니다. 헤드 용어는 몇 달과 백링크가 필요합니다. "빠른" SEO는 사이트가 이길 수 있는 싸움을 선택하는 것을 의미합니다.

먼저 깊이 선택

대부분의 SEO 요청은 소규모입니다. 아무 작업을 하기 전에 모드를 선택하십시오. 전체 워크플로우는 작은 변경에 필요한 것보다 몇 배 더 많은 시간과 토큰을 소모합니다.

Quick Mode(빠른 모드) 는 키워드가 알려져 있거나 명확한 한두 페이지 편집(페이지 제목 변경, 메타 설명 작성, FAQ 추가, 플래그된 문제 수정, 또는 이미 SEO 패턴이 있는 프로젝트에 페이지 추가)을 위한 것입니다. 빠른 모드에서:

  • 아래 확인 중 하나가 실패하거나 정말 결정을 내릴 수 없는 경우가 아니라면 참조 파일을 읽거나 라이브 SERP를 조사하지 마십시오.
  • 프로젝트의 기존 SEO 패턴(메타데이터 도우미, 콘텐츠 구성 및 스키마 컴포넌트)을 따르십시오.
  • 변경을 수행한 후 결과에 대해 아래 빠른 체크리스트를 실행하십시오. 빌드되거나 제공된 HTML이 있으면 그에 대해 scripts/seo_check.py를 한 번 실행하십시오.
  • 몇 줄로 보고하십시오. 조사하지 않고 "또한 할 가치가 있는 것"으로 한 줄로 언급한 더 큰 사항을 언급하십시오.

Quick Checklist(빠른 체크리스트) (변경 중인 페이지에만 해당):

  1. 제목은 고유하고, 키워드로 시작하며, ≤ 60자입니다. 설명은 120~160자이며 참된 주장만 합니다.
  2. 정확히 하나의 H1이 있으며, 주요 카피, H1 및 FAQ 답변은 서버 HTML에 있습니다(클라이언트 전용, opacity:0, 마운트 해제되지 않음).
  3. 페이지는 자체 표준 태그를 설정하고, 색인 가능하며, 사이트맵에 있습니다. 숨겨진 페이지는 noindex를 사용하고 robots.txt에서 허용되지 않습니다.
  4. 3~5개의 나가는 내부 링크와 적어도 하나의 들어오는 링크가 있습니다.
  5. 구조화된 데이터는 표시되는 콘텐츠와 일치하며, 사이트 자체의 평가가 아닌 평점은 없습니다.

Full Mode(전체 모드) 는 아래의 워크플로우입니다. 다음과 같은 경우에 사용하십시오:

  • 새 사이트, 페이지 세트 또는 클러스터
  • 올바른 타겟이 불분명할 때 키워드 선택
  • "왜 순위가 오르지 않는가" 또는 "트래픽이 정체된 이유" 진단
  • 출시 전 또는 사이트 전체 감사
  • 오프페이지 계획

빠른 확인 결과 상속된 표준 태그, 소프트 404 패턴 또는 조작된 평점과 같은 사이트 전체 문제가 드러날 수 있습니다. 작업을 조용히 확장하지 마십시오: 요청된 변경을 완료하고, 보고서 상단에 문제를 넣고 그 중요성에 대해 한 줄로 설명한 후 전체 패스를 제안하십시오. 사용자가 비용을 지불할지 결정합니다. 예외는 요청된 변경이 수정 없이는 작동할 수 없는 경우입니다(예: 편집 중인 페이지에 서버 렌더링된 H1이 없는 경우). 이 경우 최소한의 수정만 수행하고 그렇게 말하십시오.

워크플로우 (전체 모드)

새 사이트 또는 페이지 세트의 경우 단계를 순서대로 실행하십시오. 단일 페이지 변경의 경우 최소한 3, 4, 6단계를 수행하십시오. 해당 단계에 도달하면 연결된 참조 파일을 읽으십시오. 각 파일에는 상세 체크리스트와 템플릿이 있습니다.

작업을 요청에 맞게 조정하십시오. 페이지 검토는 페이지 검토입니다. 키워드 맵은 키워드 맵입니다. 요청된 작업을 철저히 수행하고 인접 기회(키워드, 오프페이지 아이디어)는 아무도 요청하지 않은 전체 추가 계획을 생성하는 대신 짧은 "또한 할 가치가 있는 것" 목록에 넣으십시오. 추가 산출물은 사용자가 필요로 하는 작업을 희석시키고 시간을 소모합니다.

주장하기 전에 확인하십시오. 확인 가능한 사실(라이브 SERP, 브랜드 이름이 이미 사용 중인지 여부, 페이지에 실제로 포함된 내용, 기능이 실제로 수행하는 작업)을 확인하십시오. 확인할 수 없는 것(URL로만 아는 페이지, 로드되지 않는 사이트, 본 적 없는 기능)은 가정이라고 말하고 사용자에게 확인할 내용을 알려주십시오. 다른 사람의 사이트에 대한 자신 있는 추측은 SEO 조언이 잘못되는 가장 흔한 방법입니다.

스크립트는 당신을 위한 것입니다. scripts/*.py를 직접 실행하십시오. 사용자를 위해 작성된 지침에서는 확인 내용을 일반 용어로 설명하거나 이 스킬 없이 실행할 수 있는 명령어(curl, Search Console 단계)를 제공하십시오. 사용자가 스킬을 설치했음을 아는 경우에만 스킬의 스크립트 경로를 참조하십시오.

1단계 — 정찰 (변경 전)

  • 스택과 페이지 렌더링 방식(SSR, SSG, SPA, 하이브리드)을 식별하십시오. 프레임워크 함정에 대해서는 references/technical-seo.md의 관련 섹션(Next.js App Router에는 자체 섹션이 있음)을 읽으십시오.
  • 존재하는 것의 목록을 작성하십시오: 메타데이터 설정 방식, 페이지 카피 위치, 사이트맵 및 robots 생성, 구조화된 데이터 컴포넌트, 분석. 기존 패턴을 재사용하고 병렬 패턴을 추가하지 마십시오.
  • 각 유형의 대표 페이지를 Googlebot으로 가져와 기준을 기록하십시오: python3 <skill-dir>/scripts/seo_check.py <url> [<url> ...] 이 스크립트는 상태, 제목/설명 길이, 표준 태그, robots 메타 및 X-Robots-Tag, H1 개수, 표시되는 단어 수, JSON-LD 유형, OG 이미지 및 "로딩 중…"과 같은 주요 요소의 위험 신호를 보고합니다.
  • Search Console 데이터를 사용할 수 있는 경우(내보내기, API 도우미 또는 seo-google 스킬이 설치된 경우) 90일 분량의 쿼리+페이지 행을 가져와 scripts/gsc_opportunities.py를 실행하십시오(6단계 참조). 기존 노출은 Google이 이미 사이트와 연관시키는 것을 알려줍니다.
  • 프로젝트 SEO 문서나 이전 감사의 메모를 찾아 그 위에 구축하십시오.

2단계 — 키워드 조사 및 키워드 맵

references/keyword-research.md를 읽으십시오. 간단히 말해서:

  1. 제품에서 시드 생성: 페이지가 수행하는 작업, 사용하는 사람, 사용자가 정확히 그것을 원할 때 입력하는 단어.
  2. 무료 신호로 확장: Google 자동 완성 및 "People also ask", 관련 검색어, 경쟁사 제목, GSC 쿼리, Reddit/Quora 표현. 프로젝트에 유료 API가 있는 경우에만 사용하십시오(예: seo-dataforseo 또는 seo-ahrefs 스킬이 설치된 경우).
  3. 의도 분류(do / know / go / buy) 및 각 후보에 대해 라이브 SERP를 살펴보십시오. 1페이지가 모두 대형 브랜드이거나 모두 다른 페이지 유형(예: 도구가 있는데 목록 게시물)인 경우, 해당 키워드는 아직 이 페이지에서 승산이 없습니다.
  4. 승산 가능성 점수: 1페이지에 약한 경쟁자(얇은 인디 페이지, 포럼, GitHub 저장소, *.vercel.app 사이트)가 가장 강력한 신호입니다.
  5. 브랜드 이름 확인: 베어 검색 및 관련된 경우 npm/PyPI/GitHub/앱 스토어에서 검색하십시오. 사용 중인 경우 도메인 형식("Brand.app")을 일관되게 사용하도록 권장하십시오.
  6. 키워드 맵 생성: URL당 하나의 행, 주요 키워드, 3~8개의 보조/장기 테일 용어, 의도 및 각 용어가 들어가는 위치(제목, H1, H2, 소개, FAQ). 어떤 주요 키워드도 두 행에 나타나지 않으며, 모든 테이블의 모든 행에는 의도가 있습니다.

유료 도구 없이 볼륨은 방향성 계층(매우 높음 / 높음 / 중간 / 낮음)입니다. 출력 시 숫자를 조작하는 대신 그렇게 말하십시오.

3단계 — 온페이지 구현

references/on-page.md를 읽어 전체 체크리스트와 페이지 콘텐츠 모델을 확인하십시오. 모든 색인 가능한 페이지의 필수 사항:

  • 제목: 고유하고, 주요 키워드가 먼저 오며, 브랜드 접미사를 포함하여 이상적으로 ≤ 60자, 클릭을 유도하도록 작성.
  • 메타 설명: 고유하고, 120~160자, 사용자가 얻는 것과 차별점("무료, 회원가입 없음, 브라우저에서 실행")을 사실인 경우에만 명시.
  • 서버 HTML에 정확히 하나의 H1, 페이지의 주요 의도와 일치(제목의 가까운 변형, 복사본 아님).
  • 본문: 첫 번째 단락에서 질문에 답변한 다음 경쟁사 페이지에 없는 깊이 추가: 방법 단계, 작업 예제, 일반적인 문제와 해결책, 제한 사항, FAQ. 각 섹션은 검색자가 필요하기 때문에 존재하며, 단어 수를 맞추기 위해 존재하지 않습니다.
  • FAQ가 HTML에 표시됨(접힌 마운트 해제된 아코디언에만 있거나 JSON-LD에만 있는 것이 아님), 실제 쿼리로 표현.
  • 내부 링크: 관련 페이지에 대한 3~5개의 컨텍스트 링크와 관련 허브 또는 기사에서 페이지로의 적어도 하나의 링크. 고아 페이지 없음.
  • 표시되는 콘텐츠와 일치하는 구조화된 데이터: references/structured-data.md에서 어떤 유형이 여전히 리치 결과를 얻는지 확인.
  • 신뢰: 실제 작성자 또는 조직, 정확한 주장, 콘텐츠가 변경될 때 변경되는 마지막 검토 날짜, 숫자에 대한 출처. 플레이스홀더 리뷰나 사용후기를 게시하지 마십시오. Google은 이를 허위 표시로 간주합니다.

페이지 SEO 콘텐츠를 JSX 전체에 문자열을 흩뿌리는 대신 데이터(타입이 지정된 구성 객체 또는 CMS 필드)로 저장하십시오. 이렇게 하면 고유성 검사, 길이 테스트 및 대량 검토가 가능해집니다.

4단계 — 기술적 게이트 (건너뛰지 마십시오)

references/technical-seo.md를 읽으십시오. 페이지가 완료되었다고 말하기 전에 빌드되거나 배포된 HTML에서 다음을 확인하십시오:

  • 실제 페이지는 상태 200, 알 수 없는 URL은 실제 404("찾을 수 없음" 텍스트가 있는 200 아님).
  • 자기 참조 절대 표준 태그, 상위 레이아웃에서 실수로 상속된 표준/robots 없음.
  • 색인 가능한 페이지는 정직한 lastmod와 함께 사이트맵에 있음. noindex 페이지는 없음.
  • 숨기려는 페이지는 noindex(메타 또는 X-Robots-Tag)를 사용하고 robots.txt에서 차단되지 않음. 그렇지 않으면 Google이 noindex를 읽을 수 없습니다.
  • 주요 콘텐츠, H1, FAQ 답변 및 내부 링크가 원시 HTML에 존재함(seo_check.py 단어 수 및 H1 확인).
  • 하나의 선호 호스트(https, www 또는 에이펙스)와 다른 호스트에서의 단일 홉 301.
  • Core Web Vitals가 퇴보하지 않음(LCP ≤ 2.5초, INP ≤ 200ms, CLS ≤ 0.1). 필드 데이터는 PageSpeed Insights / CrUX 또는 설치된 seo-performance / seo-google 스킬을 사용하십시오.

5단계 — 오프페이지 및 배포

references/off-page.md를 읽으십시오. 온페이지 작업은 페이지를 적격하게 만듭니다. 링크와 브랜드 수요는 경쟁적인 모든 항목에서 순위가 얼마나 올라갈지를 결정합니다. 페이지와 함께 링크 계획을 세우고, 이후가 아닌 동시에 세우십시오:

  • 클러스터당 하나의 링크 가능한 자산 구축(무료 도구, 템플릿 저장소, 데이터 테이블, 독창적인 가이드).
  • 청중에게 맞는 소수의 디렉토리 및 출시 플랫폼에 제출, 진정한 게시물로 작성.
  • 시각적 틈새 시장에는 시각적 플랫폼(Pinterest, YouTube Shorts) 사용. 개발자 청중에게는 GitHub 사용.
  • Bing Webmaster Tools 및 IndexNow 설정(Bing의 인덱스는 ChatGPT Search 및 Copilot에 공급).
  • 링크를 구매하거나, 링크 계획에 참여하거나, 정크 디렉토리에 대량 제출하지 마십시오.

직접 오프페이지 작업을 수행할 수 없는 경우 사용자를 위해 바로 실행 가능한 키트를 생성하십시오: 타겟 목록, 게시물 초안, 아웃리치 이메일 초안 및 달력.

6단계 — 검증, 출시, 모니터링

references/measurement.md를 읽으십시오.

  • 빌드되거나 배포된 페이지에 대해 seo_check.py를 다시 실행하고 1단계 기준과 비교하십시오. 공유 레이아웃 또는 컴포넌트의 변경 사항에 대해 편집한 페이지만이 아닌 모든 페이지 유형을 비교하십시오. 사이트 전체 변경은 이미 순위에 오른 페이지를 조용히 변경할 수 있습니다.
  • 배포 후: 사이트맵을 다시 제출하고 가장 중요한 새 URL 몇 개에 대해서만 색인 생성을 요청하고 IndexNow에 핑을 보내십시오.
  • 2~4주 후: python3 <skill-dir>/scripts/gsc_opportunities.py <gsc-export.json|csv>를 실행하여 타격 거리 내 쿼리, 낮은 CTR 페이지 및 카니발리제이션을 나열한 다음 해당 항목에 대한 제목, 섹션 및 내부 링크를 반복하십시오.

힘들게 얻은 규칙

이것들은 실제 성능 저하에서 비롯되었습니다. 각각 발견되기 전에 순위나 색인을 손상시켰습니다.

  • 크롤러가 실제로 받는 것을 확인하십시오. 경로 수준 로딩 스피너, ssr:false 동적 가져오기 또는 opacity: 0에서 시작하는 페이드인은 브라우저가 완벽해 보이는 동안 서버 HTML을 "로딩 중…"만 남길 수 있습니다. AI 크롤러는 JavaScript를 전혀 실행하지 않습니다.
  • 등장 애니메이션이 히어로를 숨깁니다. 애니메이션 라이브러리(framer-motion initial={{ opacity: 0 }}, AOS, GSAP)는 시작 상태를 서버 렌더링하므로 H1과 소개가 수화될 때까지 보이지 않는 상태로 제공되어 LCP를 지연시킵니다. 접힌 부분 위에는 initial={false} 또는 CSS 전용 애니메이션을 사용하십시오. 빌드된 HTML에서 opacity:0를 grep하십시오.
  • CMS 본문이 두 번째 H1을 추가합니다. 페이지 수준 H1 아래에 # Title로 시작하는 Markdown은 이를 중복시킵니다. 렌더러에서 본문 H1을 H2로 낮추십시오.
  • 스트리밍 SSR로 인한 소프트 404. 스트리밍 응답이 시작되면 이후의 notFound()는 200을 변경할 수 없습니다. 렌더링 전에 알 수 없는 슬러그를 거부하거나(동적 매개변수가 비활성화된 정적 매개변수) 메타데이터 누락 분기에서 명시적 noindex를 반환하십시오.
  • 상속된 표준 태그. 루트 레이아웃의 표준 태그는 자체 표준을 설정하지 않는 모든 페이지로 누출됩니다. 이를 상속하는 소프트 404는 실제 페이지의 색인 가능한 복제본이 됩니다.
  • "API 다운"은 "결과 없음"이 아닙니다. notFound() 또는 noindex를 결정하는 코드는 실패한 가져오기와 빈 결과를 구분해야 합니다. 그렇지 않으면 한 번의 중단으로 실제 페이지가 색인에서 제외될 수 있습니다.
  • 숨겨진 콘텐츠. 닫힌 패널을 마운트 해제하는 아코디언은 HTML에서 FAQ 답변을 제거합니다. 마운트된 상태로 유지하십시오(hidden="until-found" 또는 CSS). 그러면 크롤링 가능하고 페이지 내 검색에서 찾을 수 있습니다.
  • 공유 컴포넌트는 폭발 반경입니다. 한 페이지가 잘 순위를 올리면 선택적 props 뒤에서 공유 SEO 컴포넌트를 변경하고 변경 전후에 다른 페이지의 빌드된 HTML을 비교하십시오.
  • 조작된 소셜 증거. 가짜 리뷰, 조작된 평점 또는 제휴 링크는 순위에 이익을 주지 않으며, 발견되면 수동 조치의 위험이 있습니다.
  • 모든 것을 측정하십시오. 직관은 종종 틀립니다. 변경 전후에 Search Console, Google Analytics 및 순위 추적기를 확인하십시오.
  • 문서화하십시오. 모든 SEO 변경 사항, 그 이유 및 결과를 기록하십시오. 이는 문제 해결 및 새로운 팀원 온보딩에 필수적입니다.

참조 파일

  • references/keyword-research.md — 키워드 조사 방법론 및 도구
  • references/on-page.md — 온페이지 SEO 체크리스트 및 템플릿
  • references/technical-seo.md — 기술적 SEO 함정 및 구성
  • references/off-page.md — 오프페이지 전략 및 배포
  • references/structured-data.md — 구조화된 데이터 유형 및 구현
  • references/measurement.md — 측정 및 반복

스크립트

  • scripts/seo_check.py — 단일 페이지 SEO 감사
  • scripts/gsc_opportunities.py — Search Console 내보내기에서 기회 분석

설치

이 스킬을 사용하려면 저장소를 복제하고 종속성을 설치하십시오:

git clone <repository-url>
cd seo-playbook
pip install -r requirements.txt

그런 다음 당신의 AI 어시스턴트가 이 디렉토리의 파일을 읽고 스크립트를 실행하도록 지시하십시오.

관련 스킬