<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/brand/s-dark.svg">
<img src="https://raw.githubusercontent.com/iannuttall/seo/HEAD/assets/brand/s.svg" alt="SEO Skill" width="144">
</picture>
</p>
<h1 align="center">SEO Skill</h1>
<p align="center">
AI 에이전트를 위한 SEO 명령어입니다. 무료 Google Search Console MCP 서버 및 CLI를 제공합니다: 사용자의 에이전트가 실제 Search Console, Google Analytics 및 Bing 데이터를 읽고, 그 옆에 Google 업데이트 날짜와 자체 DataForSEO 또는 Ahrefs 키를 통한 키워드 리서치까지 수행할 수 있습니다.
</p>
<p align="center">
<a href="#install-and-run-setup">시작하기</a>
·
<a href="https://seoskill.dev/docs/mcp">호스팅 MCP</a>
·
<a href="https://seoskill.dev/docs">문서화 (Documentation)</a>
·
<a href="https://www.npmjs.com/package/seo">npm</a>
·
<a href="https://github.com/iannuttall/seo/issues">질문 (Questions)</a>
·
<a href="https://seoskill.dev/privacy">개인정보 보호 (Privacy)</a>
·
<a href="SECURITY.md">보안 (Security)</a>
·
<a href="LICENSE">라이선스 (License)</a>
·
<a href="CHANGELOG.md">변경 로그 (Changelog)</a>
</p>
<p align="center">
<a href="https://github.com/iannuttall/seo/actions/workflows/ci.yml"><img alt="Checks" src="https://img.shields.io/github/actions/workflow/status/iannuttall/seo/ci.yml?branch=main&label=checks&style=flat-square"></a>
<a href="https://www.npmjs.com/package/seo"><img alt="npm version" src="https://img.shields.io/npm/v/seo?style=flat-square"></a>
<a href="https://www.npmjs.com/package/seo"><img alt="npm downloads" src="https://img.shields.io/npm/dm/seo?style=flat-square"></a>
<img alt="Node 22 or newer" src="https://img.shields.io/badge/Node-22%2B-339933?style=flat-square">
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-ready-3178c6?style=flat-square">
<a href="LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache--2.0-lightgrey?style=flat-square"></a>
</p>
에이전트에게 검색 현황을 물어보고, 사용자의 Search Console, Bing Webmaster Tools, Google Analytics 및 Clicky 데이터로 구성된 답변과 그 위에 구글 업데이트 날짜까지 확인할 수 있습니다. 키워드, SERP(검색 결과 페이지), 경쟁사 또는 백링크 데이터가 필요할 때는 DataForSEO나 Ahrefs 키를 추가하세요.
결과는 날짜와 한계가 명시된 사실들입니다. 어떠한 조언도 포함되어 있지 않습니다. 에이전트는 사실을 읽고 중요한 것을 보여주며, 페이지를 변경하기 전에 질문합니다.
설치 및 설정 실행
Node 22 이상 버전이 필요합니다.
seo start는 Google로 로그인하게 합니다. 그런 다음 에이전트가 찾은 MCP 서버에 추가할지(무료 호스팅 서버가 첫 번째 선택지이며, 로컬에서 실행할 수도 있습니다) 그리고 스킬을 설치할지 제안합니다. 이것이 전부입니다. 사용자의 사이트에 대한 정보는 저장되지 않습니다. 각 명령어는 작업하는 사이트를 명시합니다.
로그인으로 읽을 수 있는 속성 목록을 나열한 다음, 하나의 주소에 대해 메인 보고서를 실행하세요:
seo sites
seo report --site example.com
호스팅된 MCP 서버 연결
아무것도 설치하고 싶지 않다면, 에이전트를 https://seoskill.dev/mcp의 무료 호스팅 서버에 연결하세요:
claude mcp add --transport http seoskill https://seoskill.dev/mcp
codex mcp add seoskill --url https://seoskill.dev/mcp
클라이언트가 요청할 때 Google로 로그인하세요. 첫 번째 Google 계정이 사용자의 계정이므로 비밀번호나 별도의 가입 절차가 없습니다. 서버는 연결된 Google 계정과 저장하는 API 키만 암호화하여 보관합니다. 보고서 데이터, Search Console 또는 분석 행(row), 요청 로그는 전혀 보관하지 않습니다.
계정 페이지에서는 더 많은 Google 계정을 추가하거나, DataForSEO 또는 Ahrefs 키를 저장하거나, 모든 것을 삭제할 수 있습니다. 각 요청은 사이트를 읽을 수 있는 연결된 Google 계정을 사용합니다. 호스팅 MCP 가이드에서는 다른 클라이언트에 대해 다루며, API 키 가이드에서는 채팅에 붙여넣지 않고 키를 추가하는 방법을 보여줍니다.
크롤링(crawl)은 많은 페이지를 가져오므로, seo crawl과 seo internal-links는 오직 사용자의 기기에서 CLI 또는 로컬 MCP 서버를 통해 실행됩니다. Bing 데이터 역시 현재는 그곳에서만 실행되며, 호스팅된 서버에 Bing을 요청하면 에이전트에게 어떤 CLI 명령어를 실행할지 알려줍니다.
여덟 가지 명령어
| 명령어 | MCP 도구 | 반환 내용 |
|---|
seo report | seo_report | 주요 보고서: 이전 기간 대비 개요, 그리고 각 섹션별 카운트 및 상위 행 |
| ... | | |
각 명령어는 대상(사이트, URL 또는 속성)과 선택적 날짜 범위(date window)를 받습니다. --site은 도메인, URL 또는 Search Console 속성을 받고, seo sites에서 읽을 수 있는 목록을 보여줍니다. 행을 반환하는 명령어는 또한 `--detail summary | rows | full과 --offset`을 받습니다. 브랜드 용어(Brand terms), 최소 노출수(minimum impressions) 및 비교 기간은 자동으로 설정되어 출력에 표시되므로, 사용자가 조정할 필요가 없습니다. |
짧은 목록을 보려면 seo help을 실행하고, 특정 명령어를 보려면 seo <명령어> --help를 실행하세요. 명령어 문서에서 각 명령어에 대해 설명합니다.
보고서부터 시작하기
먼저 섹션 없이 보고서를 실행해 보세요:
seo report --site example.com
이것은 사이트 전체의 수치를 이전 기간과 비교하고, 변경된 페이지와 쿼리, 그리고 각 섹션별 상위 행에 대한 간략한 카운트를 보여줍니다. 그런 다음 중요한 한 섹션을 요청해 보세요:
seo report --site example.com --section quick-wins
섹션에는 overview, quick-wins, low-ctr, striking-distance, second-page, content-decay, cannibalization, traffic-drop 및 bing이 있습니다. 페이지 섹션은 상위 20개 URL을 실시간으로 확인하고 동일 사이트 리디렉션을 병합합니다.
각 결과는 다음에 실행할 명령어로 끝납니다. 트래픽 감소(traffic drop)는 보통 시작 날짜와 함께 seo compare로 이어지고, 이동한 URL에 대해서는 seo page가 뒤따릅니다:
seo compare --site example.com --date 2026-09-15
seo page --url https://example.com/pricing
요약부터 시작합니다. 다음 페이지의 행(row)을 요청하려면 --detail rows --offset 20를 사용하고, 모든 필드가 필요할 때만 --detail full을 요청하십시오.
키워드 및 경쟁사 데이터 추가
검색 기능은 사용자의 자체 제공업체 계정을 사용하므로, 요청할 때마다 해당 제공업체의 크레딧이 소모됩니다. 키를 한 번 연결하십시오:
seo providers dataforseo connect
seo providers ahrefs connect
호스팅된 서버에서는 키를 계정 페이지에 저장하거나 헤더로 전송하십시오. 그런 다음 하나의 작업을 요청하십시오:
seo research keyword_metrics --keywords "invoice software,invoice template"
seo research serp --keywords "invoice software"
seo research ranked_keywords --target example.com
...
도메인이 있는 행에는 "Ahrefs의 Domain Rating"으로 크레딧된 무료 Domain Rating 열이 추가됩니다. 호스팅 서버는 모든 사용자에게 이를 추가하며, CLI는 Ahrefs 키를 저장했을 때 이를 추가합니다. 제공업체 수치는 추정치입니다. Search Console은 사용자의 사이트가 실제로 얻은 기록을 유지합니다.
Bing 데이터는 무료입니다. CLI와 로컬 MCP 서버에서 작동합니다. Bing Webmaster API 키를 저장하십시오 (Bing Webmaster Tools > 설정 > API 액세스):
seo providers bing connect
에이전트(Agents)와 CI는 대신 SEO_BING_API_KEY를 설정할 수 있습니다. seo providers bing status가 연결 상태를 보여주고, seo providers bing disconnect가 이를 제거합니다. 호스팅 서버에는 현재 Bing 기능이 없습니다. Bing을 요청하면, 크롤링(crawl)과 마찬가지로 에이전트에게 대신 CLI를 실행하도록 지시합니다.
그런 다음 seo report는 동일한 날짜에 대한 Google 및 Bing의 클릭 수와 노출(impressions) 횟수, 그리고 각 엔진별 클릭 점유율을 보여줍니다. bing 섹션은 같은 행에 대해 Google의 수치 옆에 Bing의 상위 검색어 및 페이지를 배치하며, seo data --source bing는 원본 Bing 행을 반환합니다. Bing과 Google 숫자는 나란히 위치하며 절대 합산되지 않습니다. Bing은 주차별로 자체 상위 검색어와 페이지 목록만 제공하므로, Bing 목록에 누락된 행은 0이 아니라 알 수 없는 값(unknown)입니다.
분석 도구 추가
Google Analytics는 Google 계정으로 로그인하면 사용할 수 있습니다. 프로퍼티 목록을 확인한 후, 숫자 형태의 프로퍼티 ID를 Google Analytics 명령어에 전달하세요:
seo analytics google properties
seo ai-referrals --property 123456789
Clicky의 경우, Clicky 계정 로그인 정보(모든 사이트) 또는 특정 사이트의 ID와 sitekey를 계정 페이지에 저장하세요. 호스팅 서버와 seo login으로 연결된 CLI 모두 이 정보를 읽습니다:
seo data --source clicky --site example.com
Clicky provider package를 사용하여 기기에 저장한 사이트도 해당 사이트 ID로 작동합니다.
다른 분석 도구의 경우, 공개 프로바이더 SDK(public provider SDK)를 사용하여 프로바이더 패키지를 만드세요. Clicky 패키지가 예시입니다. 각 소스는 자체적인 메트릭 이름을 유지하므로, Clicky 방문이 Google Analytics 사용자(user)로 재분류되는 일은 없습니다.
에이전트와 함께 사용하기
이 스킬은 에이전트에게 8가지 명령어, 단일 보고서 흐름(one-report flow), 그리고 증거 규칙(evidence rules)을 가르칩니다. 만약 seo start 과정에서 건너뛰었다면, 지금 추가하세요:
seo start는 호스팅된 MCP 서버 또는 로컬 MCP 서버를 자동으로 추가할 수 있습니다. 나중에 로컬 MCP 서버를 Codex, Claude Code, Claude Desktop 또는 Cursor에 추가하려면 다음 명령어를 사용합니다:
스크립트는 --codex, --claude-code, --cursor 또는 --claude-desktop을 사용하여 클라이언트를 선택할 수 있습니다. 다른 클라이언트들은 로컬 stdio 서버로 seo mcp serve를 시작할 수 있습니다.
로컬 서버와 호스팅 서버는 동일한 도구들을 제공합니다: seo_sites, seo_report, seo_page, seo_compare, seo_index, seo_research, 그리고 seo_data. 로컬 서버는 설치된 프로바이더 패키지를 위해 seo_crawl과 seo_internal_links에 더하여, seo_list_providers, seo_describe_provider, seo_run_provider를 추가로 제공합니다.
결과가 보여줄 수 있는 것들
- 누락되거나, 부분적이거나, 제한된 데이터가 존재합니다. 이는 결코 0이 되거나 모든 것이 정상이라는 의미는 아닙니다.
- Search Console, Bing, 분석 도구(analytics), 라이브 페이지 검사 및 제공업체 추정치는 서로 다릅니다. 쿼리 행의 합계가 사이트 전체 합계를 이루지 않습니다.
- 자동화된 쿼리가 의심되거나 사이트 자체 곡선 대비 CTR 격차가 발생하는 등의 플래그는 휴리스틱(heuristics)입니다. 이는 검토할 가치가 있는 행을 지적하는 것입니다.
- 같은 기간에 발생한 Google 업데이트는 원인이 아니라 타이밍일 수 있습니다.
- 고의적인
noindex, canonical 또는 리디렉션은 잘못되었다고 단정하기 전까지는 관찰(observation)일 뿐입니다.
여기에는 클릭, 순위, 색인화가 보장되는 것은 없습니다. 동일한 명령을 나중의 완전한 기간에 대해 다시 실행하여 변경 사항을 확인하십시오.
0.3 버전에서 업그레이드하기
저장된 프로젝트 프로필은 사라졌습니다. 모든 명령어는 --site (또는 --url)를 사용해야 하며, seo project 또는 seo client은 이제 그렇게라는 메모와 함께 중단됩니다. seo projects, seo client 및 실행 간에 기록을 저장하던 명령어들(change-log, tests, content-groups, monitoring, schedule, index-watch, technical-watch, crawl-reports, crawl-diff, diagnose)은 제거되었습니다. 이제 에이전트가 자체적인 메모를 유지합니다. 제거된 각 명령어는 대신 무엇을 사용해야 하는지 명시합니다. 이전 버전을 유지하려면 npm i -g [email protected]을 실행하십시오.
0.2 버전에서 업그레이드하기
버전 0.3.0은 대부분의 보고서를 여덟 개의 명령어에 통합했습니다. seo quick-wins와 같은 이전 이름들은 여전히 0.3에서 실행되며 사용할 새 명령어를 출력합니다. 이들은 0.4.0에서는 작동하지 않습니다. 순위 추적(rank tracking), 프로그램적 SEO(programmatic SEO), AI 검색 준비성(AI search readiness), llms.txt, Bing 링크, IndexNow, Semrush, 로컬 검색(local search), 서버 로그(server logs) 및 월별/서술형 보고서를 포함한 일부 보고서와 명령어들이 제거되었습니다. Bing Webmaster 검색 데이터는 0.3.0-beta.3에서 다시 도입되었습니다. 이전 연구 보고서는 seo research가 되었습니다. changelog에 모든 이전 이름과 그것이 어디로 이동했는지 나열되어 있습니다.
CI 및 스크립트에서 사용하기
모든 명령어에 --json을 추가하십시오. JSON 모드는 절대 프롬프트를 요청하지 않습니다. 매번 --site를 전달하십시오.
seo report --site sc-domain:example.com --json
seo report --site sc-domain:example.com --section content-decay --json
A CI 작업은 Google 서비스 계정을 통해 Search Console을 읽을 수 있습니다. JSON 키를 비밀 저장소에 넣고 정확한 속성에 대한 접근 권한을 부여하세요:
- name: SEO 보고서 실행
run: |
npm i -g seo
...
라이브러리로 사용하기
어떤 Node 22 이상 프로젝트에도 동일한 패키지를 설치할 수 있습니다:
import { executeReport } from 'seo/mcp'
import { crawlSite } from 'seo'
...
seo/provider-sdk는 제공자 패키지를 위한 공개 계약(public contract)입니다. Clicky provider가 작동하는 예시입니다.
로컬 데이터 및 Google 접근