네 단계, 그리고 구분이 중요한 이유
검색 엔진은 페이지에 대해 네 가지 별도 단계를 수행하며, 한 단계는 성공해도 다음 단계에서 멈출 수 있습니다. 먼저 URL을 발견하고, 크롤링해 가져옵니다. 그다음 색인에 저장할지 판단하고, 검색어마다 순위를 계산해 표시 여부를 결정합니다. Google의 AI 기능도 검색의 일부이며, 관련 검색으로 확장되더라도 동일한 크롤링·색인·노출 자격 기반에 의존합니다.
「왜 내 페이지가 안 나오지」로 시작하는 물음은 거의 언제나 어느 단계에서 멈췄는지에 관한 물음입니다. 답이 달라지면 다음에 할 일이 통째로 달라지는데, 각 단계의 실패는 밖에서 보면 똑같아 보입니다. 나오지 않는 페이지는 애초에 발견되지 않았든, 가져오는 단계에서 막혔든, 저장할 가치가 없다고 판단됐든, 저장됐지만 그저 밀렸든 결과 화면에서는 구분되지 않습니다.
| 단계 | 무슨 일이 일어나나 | 어떻게 어긋나나 |
|---|---|---|
| 발견 | 링크나 사이트맵을 통해 주소가 알려짐 | 아무것도 링크하지 않고 사이트맵에도 없음 |
| 크롤링 | 주소를 가져와 브라우저처럼 렌더링함 | robots.txt가 허가를 거두거나 서버가 오류를 반환함 |
| 색인 | 검색엔진이 저장 여부를 판단함 | 내용이 중복·빈약하거나 저장할 값어치가 없다고 봄 |
| 순위 | 저장된 페이지를 의도에 견주어 채점함 | 저장은 됐지만 더 나은 답이 존재함 |
발견: 주소는 어떻게 알려지는가
구글은 매일 찾아내는 새 페이지의 압도적 다수가 링크를 통해 들어온다고 밝힙니다. 이미 당신의 페이지 하나를 가져오고 있는 크롤러가 그 마크업에서 주소를 뽑아 대기열에 넣습니다. 그래서 내부 링크는 어느 사이트에서든 발견의 일차 수단이지, 나중에 얹는 최적화가 아닙니다.
사이트맵은 두 번째 경로입니다. 링크가 가장 약한 곳에서 가장 값을 합니다. 아주 큰 사이트, 유입 링크가 적은 갓 만든 사이트, 자연스러운 앵커 텍스트가 없는 미디어 중심 사이트가 그렇습니다. 구글은 주소를 올려도 크롤링도 색인도 보장하지 않는다고 분명히 말합니다. 검토해 달라고 내미는 제안이지, 차례로 처리될 대기열이 아닙니다.
실무적 귀결은 이렇습니다. 아무것도 링크하지 않는 페이지는 둘 중 약한 쪽에 기댑니다. 사이트맵의 한 줄은 맥락을 나르지 않습니다. 주소가 존재한다고 말할 뿐, 그 페이지가 무엇을 위한 것인지, 나머지와 어떻게 이어지는지는 한마디도 하지 않습니다. 링크는 그 두 가지를 자리와 앵커 텍스트로 함께 나릅니다.
크롤링: 허가, 처리 용량, 수요
크롤링은 구글이 따로 이름 붙인 두 가지에 묶여 있습니다. 크롤링 용량 한도는 서버에 부담을 주지 않으면서 열어 두는 동시 연결 수로, 응답 시간과 오류율에 따라 스스로 조정됩니다. 크롤링 수요는 실제로 얼마나 가져오고 싶은지이며, 사이트 규모와 갱신 빈도, 품질에 대한 판단이 좌우합니다.
구글 자신의 안내는 대부분의 사이트가 이것을 아예 생각할 필요가 없다는 것입니다. 크롤링 예산이 진짜 화두가 되는 것은 주 단위로 갱신되는 약 100만 페이지 이상, 매일 바뀌는 1만 페이지 이상, 또는 주소의 큰 몫이 「검색됨 – 현재 색인이 생성되지 않음」에 걸려 있는 사이트입니다. 그 아래에서 크롤링이 느린 것은 거의 언제나 다른 무언가의 증상입니다.
해당되는 경우에도 지렛대는 수수합니다. 중복을 합치고, 영구히 지운 것에는 소프트 404 대신 진짜 404나 410을 돌려주고, 리디렉션 사슬을 짧게 하고, 서버 응답 시간을 개선하고, 조건부 요청을 지원해 바뀌지 않은 페이지에 값싸게 답하는 것. 그 목록에서 무엇이 빠졌는지 보세요. noindex는 크롤링 예산 도구가 아닙니다. 크롤러가 그 지시를 읽으려면 먼저 페이지를 가져와야 하기 때문입니다.
렌더링: 잊히는 단계
가져오기와 색인 사이에 렌더링이 있습니다. 검색엔진은 브라우저가 하듯 페이지를 실행한 뒤, 렌더링된 결과에 담긴 것을 색인합니다. 자바스크립트가 실행된 뒤에야 나타나는 내용도 그래서 색인될 수 있습니다. 다만 그 실행이 성공하고, 필요한 자원을 크롤링할 수 있어야 합니다.
robots.txt의 한 줄이 적힌 자리에서 한참 떨어진 곳에 해를 끼치는 지점이 여기입니다. 스크립트나 API 경로를 막으면, 페이지가 내용을 짓는 데 쓰는 바로 그 파일을 크롤러가 가져오지 못합니다. HTML은 멀쩡히 받아 오고, 거의 빈 채로 렌더링되고, 거의 빈 채로 색인됩니다. 어떤 상태도 「차단됨」이라고 말하지 않습니다. 페이지 자체는 한 번도 차단된 적이 없으니까요.
색인은 판단이지 대기열이 아니다
이 전체 흐름에 대한 가장 흔한 오독은 색인을 줄 서기로 여기는 것입니다. 크롤링되고, 차례를 기다리고, 색인된다 — 그렇게 굴러가지 않습니다. 렌더링 뒤 검색엔진은 그 페이지가 저장할 값어치가 있는지 판단하며, 그 판단은 아니오일 수 있습니다.
Search Console이 「크롤링됨 – 현재 색인이 생성되지 않음」으로 뜻하는 바가 정확히 이것입니다. 망가진 것도 없고 막는 것도 없으며 가져오기는 성공했습니다. 페이지는 평가되었고 옆으로 치워졌습니다. 템플릿에서 찍어 낸, 치환된 이름이나 숫자만 다른 거의 같은 페이지들이 흔한 이유이고, 다시 제출해도 아무것도 달라지지 않습니다. 그 판단의 입력이 그대로이기 때문입니다.
순위와 Google의 AI 기능은 동일한 기반을 공유합니다.
특정 검색어에 대해 Google 검색은 관련 자료를 가져와 순위를 정합니다. AI Overviews와 AI Mode는 query fan-out을 사용해 답변과 지원 링크를 만들기 전에 하위 주제와 데이터 소스에 걸쳐 여러 관련 검색을 실행할 수도 있습니다.
결과는 간단합니다. Google AI 검색 기능의 가시성은 여전히 일반 검색 자격에 따라 달라집니다. 구글은 추가적인 기술 요구 사항이나 특별한 AI 마크업이 없다고 말합니다. 크롤링이 허용되어야 하고, 중요한 콘텐츠는 색인이 가능하고 텍스트로 제공되어야 하며, nosnippet와 같은 미리보기 컨트롤은 AI 기능에 표시되는 내용을 제한할 수 있습니다.