claude-seo
CLI 도구AgriciDaniel/claude-seo
오픈 소스 Claude Code 플러그인, 19개의 AI 에이전트로 전체 사이트 SEO 감사 완료.
개요
오픈 소스 Claude Code SEO 감사 플러그인으로, 26개의 하위 스킬과 19개의 전문가 에이전트로 구성되어 있습니다. 기술 SEO, 핵심 웹 지표, E-E-A-T, 구조화된 데이터, AI 검색 가시성(GEO), 로컬, 이커머스 및 국제 SEO를 다룹니다. 우선순위별로 정렬된 실행 계획을 출력하며, PDF/Excel 보고서와 실시간 데이터 확장을 지원합니다.
README 미리보기
\n\n\n\nClaude SEO\n\n\n Free, open-source SEO audits inside Claude Code.\n Rank higher in Google and get cited by AI search.\n\n\n\n Install ·\n Demo ·\n Results ·\n Team ·\n Commands ·\n Pricing ·\n FAQ\n\n\n\n \n \n \n \n \n \n \n\n\n\n \n\n\n**Claude SEO is a free SEO plugin for Claude Code.** Give it any website and it runs a full SEO audit in 10 to 15 minutes, then hands you a clear action plan, sorted by what matters most.\n\nIt checks everything a good SEO consultant would:\n\n- **Technical SEO.** Crawlability, indexing, sitemaps, robots.txt, redirects, page speed and Core Web Vitals.\n- **Content quality.** E-E-A-T (experience, expertise, authority and trust), thin pages and topic coverage.\n- **Structured data.** Finds, validates and writes Schema.org markup for rich results.\n- **AI search (GEO).** How likely Google AI Overviews, AI Mode, ChatGPT, Perplexity and Gemini are to cite your pages.\n- **Local and e-commerce SEO.** Google Business Profile, reviews, map pack, product pages and international sites.\n\nClaude SEO is built from 26 sub-skills and 19 specialist agents, and up to 17 agents work on your site at the same time. Every recommendation explains why it matters and how you will know it worked.\n\n## See it in action\n\nType `/seo` in Claude Code to see every command:\n\n\n\nRun a full audit and watch the agents fan out across the site:\n\n\n\n[Watch the full demo on YouTube](https://www.youtube.com/watch?v=COMnNlUakQk)\n\n## Real results\n\nThe project's own site, [claude-seo.md](https://claude-seo.md), audited with Claude SEO from day one: 10.8K Search Console clicks in its first 12 weeks and a 99 mobile PageSpeed score.\n\n\n\n## Meet the team\n\n\n\n\nAll 19 agents\n\n\n| Agent | Role | Model | Command |\n|---|---|---|---|\n| `seo-technical` | Technical SEO Lead | Sonnet | `/seo technical` |\n| `seo-content` | Content Editor | Opus | `/seo content` |\n| `seo-schema` | Structured Data Engineer | Sonnet | `/seo schema` |\n| `s
FAQ (5)
문제 해결claude-seo v2.3.1에서 유효한 opr_live API 키에도 불구하고 keywordseverywhere_api.py(Open PageRank)에서 발생하는 HTTP 404 오류를 해결하는 방법은?
404는 인증 실패가 아닙니다 — 스크립트가 폐기된 레거시 DomCop 엔드포인트를 호출하고 있습니다. scripts/keywordseverywhere_api.py를 수정하세요: 1) KWE_BASE를 https://openpagerank.keywordseverywhere.com/api/v1.0/getPageRank에서 https://openpagerank.keywordseverywhere.com/v1/domains/bulk로 변경하세요. 2) 반복되는 domains[] 쿼리 파라미터를 사용하는 GET 방식에서 JSON 본문 {"domains": ["example.com"]}을 사용하는 POST 방식으로 전환하세요(호출당 최대 100개 도메인). 3) API-OPR: <key> 헤더를 Authorization: Bearer opr_live_...로 교체하세요. 4) 제거된 response[] 키 대신 results[]를 파싱하고 error/status_code 필드를 처리하세요. 새 페이로드에는 referring_domains와 월별 history 배열도 추가됩니다. 먼저 포지티브 컨트롤로 키를 검증하세요: curl -X POST https://openpagerank.keywordseverywhere.com/v1/domains/bulk -H "Authorization: Bearer <key>" -H "Content-Type: application/json" -d '{"domains":["example.com"]}' — JSON과 함께 HTTP 200이 반환되면 키가 유효하며 (HTML 404를 반환하는) 이전 경로만 손상된 것임을 확인할 수 있습니다. 레거시 DomCop 키는 2026-09-30에 만료된다는 점에 유의하세요. 대안: 공식 MCP 서버 https://openpagerank.keywordseverywhere.com/mcp를 사용하세요(동일한 Bearer 인증, 도구 get_domain_rank, get_domain_history, bulk_domain_rank). 이 서버의 initialize/tools/list는 CI 스모크 테스트를 위해 키 없이도 응답합니다.
문제 해결claude-seo가 프랑스어나 UTF-8 페이지에서 깨진 악센트 문자(é 모지바케)를 표시하는 이유는 무엇인가요?
이것은 claude-seo v2.4.0에서 수정된 알려진 버그입니다. requests는 charset 헤더가 없는 text/* 응답을 (RFC 2616에 따라) ISO-8859-1로 디코딩하며 페이지의 <meta charset="UTF-8">을 무시하므로, render_page.py, parse_html.py, nlp_analyze.py 및 나머지 네 개의 스크립트에서 UTF-8 악센트 문자가 mojibake로 깨져 표시되었습니다. 수정 방법: claude-seo v2.4.0+로 업그레이드하세요. 이 버전에서는 일곱 개의 스크립트가 BOM, 헤더 charset, HTML meta charset, UTF-8 폴백 순서로 확인하는 하나의 디코더를 공유합니다. scripts/url_safety.py에서 수동으로 패치하는 경우, 유지 관리자들이 resp.apparent_encoding을 읽으면 스트리밍된 응답 본문이 소비되기 때문에 이를 의도적으로 사용하지 않았다는 점에 유의하세요.
문제 해결Claude 데스크톱 앱에서 플러그인을 설치할 때 "MARKETPLACE_ERROR:REMOTE_SYNC_FAILED" (marketplace_sync_bin_directory_not_allowed) 오류를 해결하는 방법
플러그인/마켓플레이스를 v2.2.6 이상으로 업데이트한 다음 Claude 데스크톱 앱에서 다시 추가하세요(Customize > Plugins > Add marketplace). 동기화가 실패하는 이유는 claude.ai에서 호스팅되는 플러그인은 최상위 bin/ 디렉터리를 포함할 수 없기 때문입니다. 이러한 실행 파일은 CLI에서는 PATH에 추가되지만 관리자 승인 화면에는 표시되지 않습니다. 데스크톱 UI 메시지 "Marketplace sync failed. Check the repository URL and try again"은 오해를 불러일으킵니다. 실제 원인(marketplace_sync_bin_directory_not_allowed)은 앱 로그에만 나타납니다. claude-seo v2.2.6에서는 이 수정을 통해 런처가 bin/claude-seo에서 scripts/claude-seo로 이동되었고, 스킬은 ${CLAUDE_PLUGIN_ROOT}를 통해 이를 호출합니다. 플러그인이나 마켓플레이스를 관리하는 경우: 실행 파일을 bin/에서 scripts/로 이동하여(${CLAUDE_PLUGIN_ROOT}를 통해 참조) 사용하거나, 대신 hooks, commands 또는 mcpServers를 통해 진입점을 선언하세요. 이전 버전에서의 해결 방법: 이 제한의 영향을 받지 않는 Claude Code CLI(claude plugin marketplace add + claude plugin install)를 통해 설치하세요.
문제 해결claude-seo에서 'fetch_page.py: error: unrecognized arguments: --json' 오류를 해결하는 방법은?
--json 지원이 claude-seo v2.3.0(PR #297)에서 fetch_page.py에 추가되었습니다. v2.3.0 이상으로 업그레이드한 후 다음을 실행하세요:
./bin/claude-seo run fetch_page.py https://example.com --json
JSON 출력은 render_page.py와 동일한 출력 규약을 공유하며, url, status_code, content, headers, redirect_chain 등의 필드를 반환하고, 본문 크기를 제한하는 --max-text 옵션도 제공합니다.
**v2.2.5 이하 버전의 해결 방법:** 구조화된 데이터 조회를 위해 이미 --json을 지원하는 render_page.py를 대신 사용하세요:
./bin/claude-seo run render_page.py https://example.com --json
fetch_page.py의 일반 텍스트 출력(URL: / Status: 헤더)을 프로그래밍 방식으로 파싱하지 마세요. 이 방식은 취약하며 응답 헤더와 리다이렉트 체인이 누락됩니다.
문제 해결로컬 HTTP 프록시 뒤에서 url_safety safe_requests_get을 사용할 때 발생하는 'refused to resolve 127.0.0.1 to non-public IP' ProxyError 해결 방법
이 문제는 HTTPS_PROXY=http://127.0.0.1:<port>가 설정된 경우(샌드박스/CI 환경에서 흔함)에 발생합니다: url_safety.py의 DNS-pinning _pin_dns()가 프록시 자체의 호스트 이름 해석을 가로챘고, is_safe_ip('127.0.0.1')가 이를 루프백으로 거부하여 모든 대상 URL에 대해 requests.exceptions.ProxyError ... Failed to resolve '127.0.0.1' 오류가 발생했습니다. 이로 인해 fetch_page.py, sitemap_discovery.py, indexnow_submit.py를 포함한 약 18개의 스크립트가 중단되었으며, 이 스크립트들은 오해를 불러일으키는 일반적인 'Request failed' 오류를 보고했습니다. 해결 방법: v2.3.0으로 업그레이드하세요. 이 버전에서는 PR #295와 후속 수정을 통해 구성된 프록시 호스트가 DNS-rebinding 검사 대상에서 제외됩니다. 단, 프록시 호스트를 blocklist와 대조하여 검증하고 이름이 해석될 때 다시 확인한 후에만 제외되므로, HTTPS_PROXY의 메타데이터 주소가 SSRF 가드를 우회할 수 없습니다. 업그레이드 후에는 코드 변경이나 우회 방법이 필요하지 않으며, 동일한 HTTPS_PROXY 설정이 그대로 작동합니다.