seo-title-creator: 검색 데이터로 제목을 정하는 클로드 코드 스킬
seo-title-creator는 검색 데이터를 조회해 제목 후보 3개와 근거, 약점을 제안하는 Claude Code 스킬입니다. 필요한 계정과 설치 위치, 연결 점검 순서, 작은 검색량과 추천 기준을 해석하는 방법을 설명합니다.

세 줄로 먼저 읽기
- seo-title-creator는 서치 콘솔 실적과 네이버 검색량, 실제 검색 결과를 조회해 제목 후보 3개와 근거, 약점을 제안하는 Claude Code 스킬입니다.
- 서치 콘솔이 연결되지 않으면 후보를 하나도 만들지 않고 멈추며 한국어 제목에는 네이버 검색광고 연결도 필수입니다.
- 점검 명령의 READY는 인증 정보가 있다는 표시이고, Google과 네이버에 실제로 조회되는지는 --live를 붙여 따로 확인합니다.
seo-title-creator는 검색 자료를 조회해 제목 후보 3개와 각 후보의 근거, 약점을 제안하는 Claude Code 스킬입니다. 스킬은 반복할 작업의 절차와 보조 코드를 묶어 AI에게 주는 기능이고, SEO는 검색엔진이 문서를 찾고 이해하도록 개선하는 작업입니다.
이 스킬을 쓰려면 Search Console에 등록한 사이트와 그 사이트의 조회 권한이 있어야 합니다. Search Console은 내 사이트가 Google 검색에서 얼마나 노출되고 클릭됐는지 보여 주는 도구입니다. 사이트 없이 글 제목만 떠올리고 싶은 경우라면 이 스킬은 맞지 않습니다.
먼저 준비할 것
제목을 정할 글, 그 글을 게시할 사이트, 그 사이트를 Search Console에서 조회할 수 있는 권한이 있어야 합니다. 한국어 검색어로 제목을 정하려면 네이버 검색광고 API도 연결합니다. API는 프로그램이 다른 서비스에 자료를 요청하는 통로입니다.
제목 언어에 따라 필요한 연결
| 이런 경우 | |||
|---|---|---|---|
| 영어 검색어로 제목 정하기 | 제공 | – | 선택 |
| 한국어 검색어로 제목 정하기 | 제공 | 제공 | 선택 |
| 연결이 없을 때 스킬의 동작 | 추천 멈춤 | 한국어 추천 멈춤 | 웹 검색으로 대신 |
Search Console이 필수인 이유는 이 스킬이 내 사이트의 실제 실적을 근거로 제목을 고르도록 만들어졌기 때문입니다.
준이아빠블로그 운영 기록과 이 스킬
준이아빠블로그를 운영하면서 남긴 기록에는 평균 게재순위 6, 평균 클릭률 4.6%, 자연 검색 세션 비중 86.63%가 있습니다. 아래는 2026년 8월에 저장한 화면입니다.
Search Console 화면의 기간은 2026년 2월 3일부터 8월 2일까지이고, GA4 화면은 1월 1일부터 8월 3일까지입니다. GA4는 웹사이트와 앱의 이용을 분석하는 도구입니다. 86.63%는 사람 수가 아니라 세션의 비중이며, 세션은 한 번 방문해서 머무는 동안의 이용 흐름을 묶은 단위입니다. 평균 게재순위 6은 여러 글과 검색어의 순위를 평균한 값입니다.
블로그를 운영하면서 제목과 목표 검색어를 검토한 절차를 묶어 공개한 것이 seo-title-creator입니다. 같은 기간에 본문과 내부 링크, 기술 설정도 함께 운영했기 때문에 위 성과에서 제목의 몫만 따로 떼어 낼 수는 없습니다.
스킬은 GitHub 저장소에 MIT 라이선스로 공개돼 있습니다. 본문 전체나 핵심 내용을 받아 제목을 제안하는 기능만 있고, 본문 교정과 이미지 수정은 하지 않습니다.
제목을 감으로 정할 때 놓치는 것: 표기 변형
같은 제품을 찾는 검색어도 구글 애널리틱스, 구글애널리틱스, Google Analytics, GA4처럼 여러 표기로 들어옵니다. 사람마다 띄어쓰기와 영문, 약어를 다르게 입력하기 때문입니다. 검색엔진이 관련 표현을 서로 연결하기도 하므로, 어떤 표기가 내 글의 내용과 맞는지는 실제 검색 결과와 자료를 함께 놓고 정합니다.
아래는 준이아빠블로그의 GEO 안내 글 제목을 정할 때 원고에 남긴 네이버 검색량 조회 결과입니다.
GEO 관련 검색어의 네이버 월간 검색량
이 값은 네이버 검색량이고 Google 전체 검색량과는 다릅니다. 경쟁정도는 네이버 광고 입찰의 경쟁 수준이라 자연 검색에서 상위에 오르는 난이도와는 다른 지표입니다.
공개 코드가 숫자를 어떻게 가공하는지도 봐야 합니다. naver-keywords.mjs는 요청할 때 띄어쓰기를 지우고, API가 < 10으로 돌려준 검색량을 표에서 5로 바꿔 합산합니다. 그래서 띄어쓰기만 다른 두 표기를 별개의 수요처럼 더하면 수요가 부풀고, 표의 작은 숫자는 실제 검색 횟수가 아닐 수 있습니다. 위 GEO전략의 15처럼 작은 값은 원자료와 대조한 뒤에 씁니다.
작동 원리: 세 가지 데이터와 거부 규칙
스킬은 세 가지 데이터를 차례로 읽고 나서 후보를 만듭니다.
제목 후보가 나오기까지 읽는 데이터
1. 서치 콘솔이 사이트가 받은 노출과 클릭
평균 게재순위
2. 네이버 검색광고표기 변형별 월간 검색량
경쟁정도
3. 실제 검색 결과상위를 누가 차지했는지
SerpApi 또는 웹 검색
4. 후보 3개후보마다 목표 검색어
근거와 약점
세 데이터는 서로 다른 질문에 답합니다. 네이버 검색량은 수요가 있는지, 검색 결과 상위는 어떤 페이지가 그 질문에 답하고 있는지, 서치 콘솔은 이 사이트가 이미 그 검색어 근처에서 노출되고 있는지를 알려 줍니다. 범위가 다르므로 하나만 보고 결론을 내지 않습니다. 서치 콘솔에 특정 검색어가 없어도 그 검색어의 전체 수요는 있을 수 있습니다.
필수 데이터가 없으면 이 스킬은 제목 후보를 하나도 만들지 않습니다. 필수 데이터를 읽으려면 자격증명이 있어야 합니다. 자격증명은 API 키나 서비스 계정 정보처럼 서비스에 접근할 때 쓰는 인증 자료입니다.
자격증명이 없을 때 아예 멈추도록 만든 데는 이유가 있습니다. 일부 데이터만으로 만든 추천도 근거 형식을 갖추면 측정한 결과처럼 보이고, 받아 본 사람은 그 숫자를 믿고 제목을 바꿉니다. 그래서 서치 콘솔이 연결돼 있지 않으면 스킬은 무엇이 없는지 알리고, 설정 절차를 안내한 뒤 멈춥니다.
후보 3개에 근거와 약점이 붙는 이유
필수 조건을 갖추고 추천을 실행하면 후보 3개가 나오고, 후보마다 목표 검색어와 근거, 약점이 붙습니다. 세 후보는 서로 다른 패턴으로 만듭니다. 검색창에 치는 문제 상황을 그대로 올리는 상황형, 주제와 동작을 앞세우는 주제형, 특정 도구나 조건으로 범위를 좁히는 한정형입니다. 패턴을 나눠 두면 세 후보가 같은 모양의 제목으로 몰리지 않습니다.
후보 2 주제형: 엑셀 중복 이름 표시하기
후보 3 한정형: 회원 명단 엑셀에서 중복 이름 찾아 표시하기
후보를 거르는 기준도 있습니다. 공개 스킬은 검색 결과 상위에 커뮤니티 질문이 있으면 아직 답이 부족한 검색어로 보고 기회로 판정하고, 공식 문서가 많으면 그 후보를 뺍니다. 이 기준은 스킬이 정한 판단 규칙이며 Google의 순위 규칙은 아닙니다. 커뮤니티 글에도 좋은 답이 있고, 공식 문서가 상위에 있는 검색어에서 설명 글이 함께 노출되기도 하므로 실제 답변 내용과 검색한 사람의 목적을 읽고 판단합니다.
마지막으로 자기잠식 검사를 합니다. 자기잠식은 목적이 같은 내 페이지 여러 개가 같은 검색어에서 서로 경쟁하는 문제입니다. 후보 검색어를 이미 잡고 있는 내 글이 있으면 스킬은 그 후보를 버립니다. 같은 검색어에 내 페이지가 두 개 보여도 목적이 다르면 둘 다 살릴 수 있으므로, 기존 글을 보완할지 새 글을 낼지는 사람이 정합니다.
메타 타이틀은 브라우저와 검색엔진에 전달하는 페이지 제목입니다. 화면의 큰 제목과 표현은 달라도 되지만, 둘 다 본문에 있는 내용을 말해야 합니다.
이미 발행한 글의 제목을 다시 정할 때도 같은 과정을 거칩니다. 노출이 나오지 않는 기존 글의 제목을 다시 정하는 일도 이 스킬을 실행하는 경우 가운데 하나입니다. 준이아빠블로그도 GEO 가이드 글의 제목과 메타 타이틀이 서로 다르다는 것을 찾아, 당시 조회 자료를 참고해 "GEO 최적화" 표기로 통일했습니다.
준이아빠블로그가 얻은 결과
저장해 둔 화면에서 "opus 5 업데이트" 검색에는 준이아빠블로그가 공식 문서보다 위인 첫 번째 일반 결과로, "메타 mcp" 검색에는 공식 문서 바로 다음 일반 결과로 나왔습니다.
검색 목록의 순위와 AI 답변의 출처는 다른 결과입니다. 다음 화면은 "구글애즈 mcp"를 검색했을 때 AI 개요에 준이아빠블로그의 출처 카드가 나온 사례입니다. AEO는 검색 서비스의 답변 영역에서 내 콘텐츠가 출처로 쓰이도록 개선하는 작업을 가리킵니다.
위 결과는 제목 검토 절차와 함께 본문, 내부 링크, 기술 설정을 운영한 기간에 나왔습니다.
설치와 사용법
Claude Code가 설치돼 있고 글을 다룰 작업 폴더가 있다는 전제로 설명합니다. 스킬의 보조 코드는 Node.js 18 이상에서 돌아갑니다. Node.js는 자바스크립트 파일을 실행하는 프로그램입니다. 터미널에서 node --version을 입력해 버전 번호가 나오면 설치된 것이고, 명령을 찾을 수 없다고 나오면 Node.js 설치 안내대로 설치한 뒤 다시 입력합니다.
설치부터 첫 추천까지 네 단계
1. 폴더에 넣기skills 폴더 아래에
SKILL.md가 바로 보이게
2. 설정 점검check-setup.mjs 실행
READY 또는 BLOCKED
3. 데이터 연결서치 콘솔과 네이버 인증 등록
--live로 호출 성공 확인
4. 제목 추천/seo-title-creator와 본문 입력
후보 3개와 근거, 약점
1. 개인 스킬 폴더에 넣기
처음이라면 저장소에서 Code → Download ZIP을 눌러 파일을 받습니다. 압축을 푼 폴더 안의 SKILL.md, scripts, references를 다음 위치 바로 아래로 옮깁니다.
macOS: /Users/내계정/.claude/skills/seo-title-creator/SKILL.md
Windows: C:\Users\내계정\.claude\skills\seo-title-creator\SKILL.md내계정은 컴퓨터 계정 이름으로 바꿉니다. ZIP 폴더를 통째로 넣어 seo-title-creator/seo-title-creator-main/SKILL.md처럼 한 단계 더 들어가면 Claude Code가 스킬을 찾지 못합니다. .claude나 skills 폴더가 없으면 새로 만듭니다. Finder에서 숨김 폴더가 보이지 않으면 "이동 → 폴더로 이동"에 ~/.claude/skills를 입력해 엽니다.
명령줄 설치에 익숙하다면 다음 명령으로 설치해도 됩니다.
npx skills add osomahong/seo-title-creator이 명령은 스킬 설치 도구로 내려받는 방식입니다. 선택 화면에서 Claude Code와 설치 범위를 고르고, 완료 메시지에 나온 설치 경로를 적어 둡니다. 개인 설치와 프로젝트 설치는 위치가 달라서 다음 단계의 점검 명령도 그 경로에 맞춰 입력해야 합니다.
2. 인증 자료가 있는지 점검하기
ZIP으로 위 개인 폴더에 설치했다면 터미널에서 다음 명령을 실행합니다.
macOS:
node ~/.claude/skills/seo-title-creator/scripts/check-setup.mjsWindows PowerShell:
node "$env:USERPROFILE\.claude\skills\seo-title-creator\scripts\check-setup.mjs"이 명령은 인증 정보가 설정돼 있는지만 봅니다. "연결됨"이나 READY는 인증 정보가 있다는 표시이고, 실제 API 요청이 성공했다는 결과는 3단계의 --live 점검에서 나옵니다. 영어 대상만 준비됐다고 나오면 한국어 검색어를 쓰기 위해 네이버 설정을 더 합니다. BLOCKED는 필요한 설정이 빠졌다는 뜻이며, 이 상태에서 스킬은 제목 후보 대신 설정 안내를 보여 줍니다.
파일을 찾을 수 없다는 오류가 나오면 설치 폴더 아래에 scripts/check-setup.mjs가 있는지 봅니다. 프로젝트 안에 설치했다면 명령의 경로를 그 프로젝트의 스킬 폴더로 바꿉니다.
3. 필요한 데이터 소스 연결하기
저장소의 안내 문서를 아래 순서대로 따라 합니다.
- Search Console 연결: API를 쓸 서비스 계정을 만들고 대상 사이트의 조회 권한을 줍니다. 서비스 계정은 사람이 아니라 프로그램이 쓰는 계정입니다.
- 네이버 검색광고 연결: 한국어 검색어에 필요한 고객 ID와 API 인증 정보를 등록합니다.
- 검색 결과 조회: SerpApi를 쓸지 정합니다. SerpApi는 검색 결과를 프로그램으로 조회하는 별도 서비스이고, 이 스킬에서는 선택 사항입니다.
서비스 계정에 사이트 권한을 주지 않으면 키를 만들어도 데이터를 읽지 못합니다. GSC_SITE_URL 값도 사이트를 등록한 형태와 같아야 합니다. 도메인 속성은 sc-domain:example.com, URL 접두어 속성은 https://example.com/ 형태이고, 예시 주소 대신 내 사이트의 실제 등록값을 넣습니다.
인증 자료를 아래 "쓰기 전에 알아 둘 제약"의 보관 방법대로 설정한 뒤, 같은 점검 명령 끝에 --live를 붙여 실행합니다. 이번에는 Google과 네이버에 실제 조회 요청이 갑니다. 결과에서 READY 문구가 아니라 각 API의 호출 성공 표시를 봅니다. 권한 오류가 나오면 사이트 권한과 설정값을 다시 맞추고, 인증값을 채팅이나 오류 제보에 붙여 넣지 않습니다. SerpApi 연결은 --live 점검 대상에 들어 있지 않습니다.
4. Claude Code에서 제목 추천 실행하기
공개해도 되는 짧은 글 하나로 시작합니다. 파일이 없다면 본문을 Claude Code 대화에 붙여 넣어도 됩니다. 아래는 터미널 명령이 아니라 Claude Code 입력창에 넣는 요청입니다.
/seo-title-creator
아래 글의 제목을 추천해 주세요. 본문은 수정하지 마세요.
[여기에 실제 글 본문을 붙여 넣기]대괄호 안내문은 지우고 실제 본문을 넣습니다. 처음 실행하면 대화 언어를 묻는데, 이 선택은 대화 언어만 정하고 제목을 만들 검색어의 언어는 바꾸지 않습니다.
파일로 요청하려면 실제 파일 경로를 적습니다.
/seo-title-creator content/insights/my-post.mdmy-post.md는 예시 이름입니다. 파일이 없다는 응답이 오면 현재 작업 폴더 기준의 실제 경로로 고치거나 본문 붙여 넣기로 바꿉니다. 설치했는데 /seo-title-creator 명령이 목록에 나타나지 않으면 SKILL.md의 폴더 위치를 다시 보고 Claude Code에서 새 대화를 엽니다.
쓰기 전에 알아 둘 제약
스킬 파일의 MIT 라이선스와 AI 서비스 이용료는 별개입니다. Claude Code 이용 비용과 API별 조건은 쓰고 있는 계정의 요금제를 따릅니다. SerpApi는 2026년 10월 4일 공식 요금표 기준 월 250회까지 무료로 조회할 수 있고, 그보다 많이 쓰려면 유료 요금제로 바꿔야 합니다.
스킬은 인증 정보를 네 곳에서 찾고, 같은 값이 여러 곳에 있으면 앞선 곳의 값을 씁니다. 파일을 고쳤는데 결과가 그대로라면 앞 순서에 다른 값이 남아 있는지 봅니다.
인증 정보를 읽는 순서
1. 환경 변수터미널에 설정한 값
가장 먼저 적용
2. .env.local현재 작업 폴더
3. .env현재 작업 폴더
4. .seo-title-advisor.env사용자 홈 폴더
개인 설정을 한 곳에
개인 설정을 한 곳에 두려면 사용자 홈의 .seo-title-advisor.env 파일을 텍스트 편집기로 엽니다. macOS는 /Users/내계정/, Windows는 C:\Users\내계정\ 아래에 있고, 파일명 끝에 .txt가 붙지 않게 저장합니다. Google JSON 키를 따로 보관했다면 다음 두 항목처럼 키 파일 경로와 실제 사이트 등록값을 적습니다. 아래 값은 형식만 보여 주는 예시입니다.
GSC_SERVICE_ACCOUNT_KEY=/Users/내계정/private-keys/search-console.json
GSC_SITE_URL=sc-domain:내사이트도메인Windows에서는 키 파일 경로를 C:/Users/내계정/private-keys/search-console.json처럼 실제 위치로 적습니다. 네이버 항목은 NAVER_AD_CUSTOMER_ID, NAVER_AD_API_KEY, NAVER_AD_SECRET_KEY 세 개이고, 각각 이름=발급받은 값 형식으로 같은 파일에 넣습니다. 이 파일의 내용은 대화에 올리지 않습니다.
이 파일들은 암호화되지 않은 일반 텍스트입니다. Google 서비스 계정 JSON은 파일 경로로 지정하면 되므로 내용을 터미널에 출력하거나 채팅에 붙이지 않아도 됩니다. 프로젝트 폴더에 둘 때는 키 JSON과 환경 파일이 버전 관리에 올라가지 않게 .gitignore에 넣습니다. .gitignore에 추가해도 이미 커밋한 비밀은 과거 기록에서 지워지지 않습니다.
후보를 받은 뒤 직접 검토하기
후보 3개마다 대상 검색어, 조회 시점과 자료 출처, 약점이 적혀 있는지 봅니다. 네이버 수치를 Google 검색량처럼 썼거나 < 10을 바꾼 숫자를 정확한 값처럼 설명했다면 원자료를 보여 달라고 요청합니다. 없는 데이터를 채워 달라고 요구하지는 않습니다.
그다음 제목이 본문 범위를 넘어서는지 봅니다. 앞의 예처럼 본문이 "엑셀 명단에서 같은 이름을 표시하는 방법"만 설명한다면, 두 제목이 약속하는 내용은 이렇게 다릅니다.
제목이 본문보다 많이 약속하는 경우
| 제목 후보 | ||
|---|---|---|
| 엑셀 중복 이름을 표시하는 방법 | 제공 | – |
| 엑셀 중복 데이터를 완전히 정리하고 삭제하는 방법 | 제공 | 약속하지만 본문에 없음 |
제목을 바꾸기로 했다면 바꾼 날짜와 기존 제목, 새 제목을 기록해 두고 이후 서치 콘솔에서 변화를 비교합니다. Google이 검색 결과에 보여 주는 제목은 페이지 제목과 다를 수 있고, 제목을 바꾼다고 순위가 바로 오르지도 않습니다. 스킬의 추천은 판단 자료이며, 마지막에는 사람이 본문을 읽고 제목을 고릅니다.
쓰다가 좋았던 점이나 고칠 점이 있으면 저장소에 의견을 남길 수 있습니다. 문제를 제보할 때는 사용 환경과 오류 메시지를 적고 비밀값은 뺍니다.
자주 묻는 질문
서치 콘솔을 연결하지 않으면 어떻게 되나요?
제목 후보를 하나도 만들지 않고 멈춥니다. 무엇이 연결되지 않았는지 알리고 설정 절차를 안내하는 것이 기본 동작입니다. 일부 데이터로 만든 추천이 측정한 값처럼 보이면 받아 본 사람이 그 숫자를 믿고 움직이기 때문입니다. 한국어 제목을 다룰 때는 네이버 검색광고 키워드도구도 필수입니다.
SerpApi가 없으면 쓸 수 없나요?
쓸 수 있습니다. 공개 스킬은 SerpApi가 없으면 내장 웹 검색으로 검색 결과를 대신 확인하고, 그때 순위는 근삿값으로 표시하도록 정해 두었습니다. 웹 검색도 쓸 수 없는 환경이라면 확인하지 못한 항목을 결과에서 따로 구분합니다. 확인하지 못한 데이터를 확인한 것처럼 쓰지 않는다는 원칙은 이때도 같습니다.
이미 발행한 글의 제목도 바꿀 수 있나요?
바꿀 수 있습니다. 노출이 나오지 않는 기존 글의 제목을 다시 정하는 일도 이 스킬을 실행하는 경우 가운데 하나라서, 새 글과 같은 과정을 거칩니다. 준이아빠블로그도 GEO 가이드 글의 제목과 메타 타이틀이 서로 다르다는 것을 찾아, 당시 조회 자료를 참고해 표기를 하나로 맞췄습니다.
참고 자료

제대로 이해했는지 한 문제로 확인해 볼까요?
답을 고르면 바로 풀이가 나와요.
seo-title-creator가 서치 콘솔 없이 실행되면 어떻게 동작할까요?

새 글과 AI 소식을 메일로 받아 보세요
AI가 바꾸는 일과 도구, 측정 실무 이야기를 매주 한 번 보내 드려요.
이 글이 도움이 되었나요?
설치 다음 단계인 명령어, 플랜 모드, 메모리, 한도를 차례로 익힙니다
- 1Claude Code 이해하기: 파일을 읽고 수정하는 AI 도구
- 2클로드 코드(Claude Code) 설치 방법: 윈도우, 맥, 리눅스 명령어와 터미널 로그인
- 3클로드 코드 슬래시 명령어 정리: /clear, /usage, /compact와 내 명령 만들기
