개발자를 위한 SEO: 크롤러가 읽을 수 있는 HTML, 올바른 HTTP 상태 코드, 필수 head 태그, Core Web Vitals 통과, AI 노출까지 정리했습니다.

요약
개발자에게 SEO란 중요한 모든 페이지를 크롤러가 접근하고 렌더링하고 모호함 없이 이해할 수 있게 만드는 일입니다. 핵심 콘텐츠는 초기 HTML로 제공하고(서버 사이드 렌더링 또는 정적 생성), 정직한 HTTP 상태 코드를 반환하고, title, meta description, canonical, robots 지시어를 서버 응답에 넣고, 실제 <a href> 요소로 링크하고, Core Web Vitals 기준을 충족하고, JSON-LD 구조화된 데이터를 추가하십시오. 대부분의 AI 크롤러는 JavaScript를 실행하지 않으므로, 하이드레이션 이후에만 나타나는 콘텐츠는 ChatGPT, Claude, Perplexity에 보이지 않습니다.
더 알아보고 싶다면 물어보세요
간단 퀴즈
SEO가 맞습니까? 어떻게 시작해야 합니까?
간단한 질문 4개로 Google이 고객을 데려올 수 있는지 확인하십시오.
추천 결과
Sorank가 가장 알맞은 솔루션입니다
사람들이 귀사의 상품을 검색하고 몇 달을 기다릴 수 있습니다. Sorank가 알맞은 검색어를 찾고, 글을 작성해 게시하고, 링크를 확보해 드립니다.
Sorank가 답변에 잘 맞습니다
귀사의 사이트에서 3일 동안 사용해 보시거나, 무료 진단으로 현재 상황부터 확인하십시오.
3일 무료, 이후 언제든 해지할 수 있습니다. 90일 환불 보장.
개발자를 위한 SEO는 검색 최적화 중 코드 안에 있는 부분, 즉 템플릿, 라우팅, 렌더링, 헤더, 성능을 다룹니다. 마케팅팀이 키워드를 고르고 글을 쓰더라도, 잘못된 상태 코드 하나, 클라이언트에서만 렌더링되는 라우트 하나, 잊고 남겨 둔 noindex 하나가 배포 한 번으로 그 노력을 지울 수 있습니다. Google의 JavaScript SEO 기본사항은 크롤링, 렌더링, 색인 생성의 세 단계를 설명하며, 각 단계에는 개발자만 고칠 수 있는 장애가 있습니다. 이 가이드는 그 장애를 고장 나는 순서대로 다룹니다.
| 영역 | 개발자의 책임 | 문제가 생겼을 때의 대표 증상 |
|---|---|---|
| 렌더링 | 핵심 콘텐츠와 링크가 서버 HTML에 존재 | 페이지가 비어 있거나 불완전한 상태로 색인됨 |
| 상태 코드 | 200, 301, 404, 410, 5xx를 사실대로 반환 | 소프트 404, 오류 페이지 색인, 삭제된 페이지가 계속 노출 |
| head 태그 | 고유한 title, description, canonical, robots, hreflang | 중복, 잘못된 URL 노출, 색인에서 빠진 페이지 |
| 크롤링 제어 | robots.txt, XML 사이트맵, 내부 링크, 매개변수 | 중요한 페이지 미발견, 필터 페이지에 크롤링 낭비 |
| 성능 | 실제 모바일 사용자의 Core Web Vitals | 페이지 경험 저하, 전환 감소 |
| 구조화된 데이터 | 보이는 콘텐츠와 일치하는 유효한 JSON-LD | 리치 결과 없음, 엔티티 혼동 |
| AI 접근 | AI 사용자 에이전트 허용, JavaScript 없이 읽히는 콘텐츠 | ChatGPT와 Perplexity 답변에 브랜드가 나오지 않음 |
Googlebot은 JavaScript를 렌더링하지만 지연될 수 있는 두 번째 단계에서 처리하며, Google 스스로도 서버 사이드 렌더링이나 사전 렌더링은 여전히 좋은 방법이라고 밝힙니다. 사용자와 크롤러 모두에게 더 빠르고, 모든 봇이 JavaScript를 실행하지는 않기 때문입니다. 마지막 이유는 지금 어느 때보다 중요합니다. Vercel은 2024년 12월 분석 The rise of the AI crawler에서 주요 AI 크롤러 중 현재 JavaScript를 렌더링하는 것은 하나도 없다고 밝히며 GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot 등을 언급했습니다. Google 인프라를 사용하는 Gemini는 예외입니다.
| 렌더링 방식 | 크롤러가 받는 것 | SEO 적합도 |
|---|---|---|
| 클라이언트 사이드 렌더링(CSR) | 거의 빈 HTML 껍데기, JavaScript 실행 후 콘텐츠 | 약함: Google에는 지연, 대부분의 AI 크롤러에는 보이지 않음 |
| 서버 사이드 렌더링(SSR) | 요청마다 완전한 HTML | 동적 페이지에 강함 |
| 정적 생성(SSG) | 배포 시 생성되는 완전한 HTML | 자주 바뀌지 않는 콘텐츠에 가장 강함 |
| 증분 재생성(ISR) | 주기적으로 또는 요청 시 갱신되는 정적 HTML | 대규모 카탈로그와 블로그에 강함 |
어떤 프레임워크든 두 가지 규칙이 적용됩니다. 링크는 href 속성을 가진 <a> 요소여야 합니다. Google은 이 형태의 링크만 발견할 수 있다고 밝히므로, 클릭 핸들러가 달린 버튼과 프래그먼트 기반 라우트는 막다른 길입니다. 또 각 라우트는 #이 없는 고유 URL을 갖고 그 URL에서 콘텐츠를 바로 반환해야 합니다. JavaScript SEO, 싱글 페이지 애플리케이션 SEO, Next.js SEO 가이드에서 프레임워크별 세부 사항을 다룹니다.
상태 코드는 크롤러에게 주는 지시입니다. Google의 HTTP 상태 코드 및 네트워크 오류 문서는 각 그룹을 어떻게 처리하는지 설명합니다.
서버가 실제로 무엇을 보내는지 HTTP 헤더 검사 도구로 확인하고, 리디렉션 체인은 한 번으로 줄이십시오. 이전 작업 패턴은 SEO 리디렉션 글에서 다룹니다.
색인 대상 페이지에는 고유한 title과 description, 자기 자신을 가리키는 canonical, 그리고 다국어 사이트라면 hreflang 주석이 필요합니다. 모두 서버 응답에 넣으십시오.
<title>Running shoes for flat feet | Example</title>
<meta name="description" content="Tested picks, sizes and prices.">
<link rel="canonical" href="https://example.com/running-shoes-flat-feet">
<link rel="alternate" hreflang="fr" href="https://example.com/fr/chaussures-pieds-plats">
<meta name="robots" content="index, follow">canonical 태그는 순위에 올리고 싶은 URL을 가리켜야 하며, 사이트가 쓰는 프로토콜, 호스트, 끝 슬래시 규칙과 정확히 같아야 합니다.
주의
noindex를 JavaScript로 제거하는 방식에 의존하지 마십시오. Google은 noindex 태그를 발견하면 렌더링을 건너뛸 수 있다고 밝히므로, HTML에 noindex를 담아 보내고 클라이언트에서 제거하는 페이지는 색인 밖에 머물 수 있습니다.
검색엔진은 URL을 색인하므로 URL 구조는 SEO 결정입니다. 소문자와 하이픈을 쓴 읽기 쉬운 경로를 사용하고, 끝 슬래시 규칙을 하나로 정해 나머지는 리디렉션하며, 콘텐츠 하나에 URL 하나를 유지하십시오. 필터, 정렬, 추적 매개변수는 콘텐츠를 늘리지 않고 URL만 늘립니다. 이런 URL의 canonical은 깨끗한 버전을 가리키게 하고, 크롤링을 원하지 않는 매개변수 조합에는 링크하지 마십시오.
내부 링크는 발견과 중요도를 함께 전달합니다. 내비게이션, 이동 경로, 관련 콘텐츠 블록은 서버에서 렌더링하고, 페이지가 나뉜 목록에는 각 페이지로 가는 일반 링크를 제공하며, 뒤에 페이지 URL이 없는 무한 스크롤은 피하십시오. 사이트 내 검색이나 JavaScript 필터로만 도달할 수 있는 상품이나 글은 크롤러에게는 고립된 페이지입니다.
robots.txt는 색인이 아니라 크롤링을 제어합니다. 차단된 URL도 다른 페이지가 링크하면 검색 결과에 나타날 수 있습니다. 페이지를 색인에서 빼려면 크롤링을 허용하고 noindex를 반환하십시오. XML 사이트맵은 라우트나 데이터베이스에서 생성하고, 200을 반환하는 표준 URL만 넣고, lastmod는 콘텐츠가 실제로 바뀔 때만 갱신하십시오. 배포 전마다 robots.txt 검사 도구로 규칙을 확인하고, "Disallow: /"가 들어간 스테이징용 robots.txt를 운영 환경에 배포하는 일은 절대 없어야 합니다.
Google은 Core Web Vitals를 페이지 경험 신호의 일부로 사용합니다. web.dev에 따르면 모바일과 데스크톱 각각에서 실제 페이지 로드의 75번째 백분위수가 다음 기준을 충족하면 좋은 페이지입니다.
| 지표 | 측정 대상 | 좋음 기준 | 개발 측면의 흔한 개선책 |
|---|---|---|---|
| LCP(Largest Contentful Paint) | 로딩 | 2.5초 이하 | 대표 이미지 사전 로드, 첫 화면 서버 렌더링, CDN 사용 |
| INP(Interaction to Next Paint) | 응답성 | 200밀리초 이하 | 긴 작업 분할, 서드파티 스크립트 지연, 하이드레이션 비용 절감 |
| CLS(Cumulative Layout Shift) | 시각적 안정성 | 0.1 이하 | 미디어에 너비와 높이 지정, 광고와 임베드 공간 확보 |
INP는 2024년에 First Input Delay를 대신해 안정적인 Core Web Vital이 되었습니다. 평가는 현장 데이터(Search Console, Chrome UX Report)로 하고, 디버깅은 실험실 도구로 하십시오. Core Web Vitals 용어집 항목에서 도구를 소개합니다.
script 태그 안의 JSON-LD를 서버에서 렌더링해, 페이지에 보이는 내용을 기술하십시오.
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "Article",
"headline": "Running shoes for flat feet",
"datePublished": "2026-10-01",
"author": {"@type": "Person", "name": "Jane Doe"}}
</script>페이지와 같은 데이터로 생성해 둘이 어긋나지 않게 하고, CI에서 검증하며, 태그 관리자를 통한 삽입은 피하십시오. schema 생성기로 자주 쓰는 유형의 시작 템플릿을 얻을 수 있습니다.
팁
파이프라인에 SEO 검사를 넣으십시오. 색인 대상 템플릿에 title이나 canonical이 없을 때, 알 수 없는 slug에 라우트가 200을 반환할 때, 운영 robots.txt에 "Disallow: /"가 있을 때 빌드가 실패하게 하십시오. 이런 회귀는 배포 전에 잡으면 비용이 적고, 배포 후에는 비쌉니다.
AI에서의 노출은 접근에서 시작합니다. 어떤 AI 사용자 에이전트(GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot 등)를 허용할지 정하고 robots.txt에 명시적인 규칙을 쓰십시오. AI 크롤러용 robots.txt 가이드에서 학습용 봇과 검색용 봇의 차이를 설명합니다. 그다음 본문, 가격, 사양, 자주 묻는 질문이 초기 HTML에 있는지 확인하고, 이미지 속 글자 대신 의미 있는 제목과 표를 사용하며, 빠르게 가져갈 수 있도록 페이지를 가볍게 유지하십시오. llms.txt 파일로 AI 도구를 위해 핵심 페이지를 요약할 수 있지만, 이를 사용한다고 확인한 주요 어시스턴트는 아직 없으므로 선택 사항으로 보십시오.
Sorank는 저희 제품으로, autopilot으로 작동하는 SEO·GEO 소프트웨어입니다. 개발자는 주로 연동 기능으로 접하게 됩니다. 설치 페이지에 설명된 대로 WordPress, Shopify, Webflow, Wix에, 또는 webhook을 통해 모든 자체 스택에 글을 발행합니다. SEO Chat은 사이트에 관한 질문에 대화로 답하고, AI 언급 추적은 ChatGPT, Claude, Gemini가 브랜드를 언급하는지 매주 확인합니다.

정리하면, 서버에서 완전한 HTML, 정직한 상태 코드, 올바른 태그를 보내고, 그다음 실제 사용자 기준으로 성능을 측정하는 것입니다. 이는 Googlebot은 물론 JavaScript를 실행하지 않는 AI 크롤러에도 효과가 있습니다. 잘 만든 사이트를 순위에 오르는 콘텐츠로 채우려면 Sorank 요금제를 확인하십시오. 월 $49부터 시작하며 3일 무료 체험을 제공합니다.
JavaScript를 렌더링하는 Google에는 항상 불리한 것은 아니지만 지연과 위험을 더하며, 대부분의 AI 크롤러는 JavaScript를 전혀 실행하지 않습니다. 순위에 오르거나 인용되어야 하는 페이지는 서버 사이드 렌더링, 정적 생성, 사전 렌더링으로 핵심 콘텐츠와 링크를 초기 HTML에 담고, 클라이언트 사이드 렌더링은 상호작용 부분에만 쓰십시오.
둘 다 Google에 페이지가 더 이상 없다고 알리며, 어느 경우든 Google은 시간이 지나면 해당 URL을 사용하지 않습니다. 410은 의도적이고 영구적인 삭제를 뜻하므로, 일부러 삭제한 콘텐츠에 410을 선호하는 팀도 있습니다. 가장 중요한 것은 오류 메시지가 담긴 200을 반환하지 않는 것입니다. 그것은 소프트 404를 만듭니다.
Core Web Vitals는 페이지 경험 신호의 일부이며, Google은 이를 여러 요인 중 하나로 설명하고 관련성과 콘텐츠 품질에 더 큰 비중을 둡니다. 주로 비슷한 페이지 사이에서 승부를 가르고 전환에 큰 영향을 주므로, 기준을 충족할 가치가 충분합니다.
먼저 Sorank를 경험한 사람들
