AI 검색 시대에는 웹페이지가 사람 눈에 보이는 것만으로 부족합니다. Googlebot이나 일반 크롤러가 읽고 ChatGPT 계열 검색 봇이나 Perplexity 같은 답변 엔진이 문맥을 가져갈 수 있어야 합니다. GEO와 AEO에서 자바스크립트 렌더링은 생각보다 자주 병목이 됩니다.

문제는 단순합니다. 브라우저에서 글은 멀쩡히 보이는데 크롤러가 받는 HTML에는 빈 div만 남습니다. 사람에게는 페이지지만 기계에게는 빈 껍데기입니다. 이 상태에서는 좋은 글을 써도 AI 답변에 인용될 가능성이 낮습니다.

AI 크롤러가 보는 HTML부터 확인합니다

동적 웹사이트를 점검할 때 먼저 볼 것은 화면이 아닙니다. 렌더링 전 HTML입니다. curl로 받은 HTML에 제목과 요약, 본문 일부와 canonical URL, JSON-LD가 들어 있는지 확인해야 합니다. 여기서 비어 있으면 AEO는 출발선에 서지도 못합니다.

검색엔진은 어느 정도 자바스크립트를 실행합니다. 그래도 모든 봇이 같은 방식으로 기다려주지는 않습니다. AI 검색 봇은 더 제각각입니다. 어떤 봇은 렌더링된 DOM을 보고 어떤 봇은 초기 HTML과 구조화 데이터에 더 의존합니다. 그래서 중요한 콘텐츠는 서버에서 먼저 내려주는 편이 안전합니다.

SSG나 SSR을 쓰면 이 문제가 크게 줄어듭니다. Hugo 같은 정적 사이트는 기본적으로 유리합니다. 다만 외부 위젯과 댓글, 임베드와 클라이언트 사이드 검색처럼 자바스크립트로만 붙는 영역은 기계가 못 읽을 수 있습니다. 인용을 기대하는 문장은 본문 HTML에 남겨야 합니다.

스크래핑 파이프라인은 우회보다 관측이 먼저입니다

외부 웹을 수집하는 파이프라인에서도 같은 문제가 나옵니다. 단순 HTTP 요청으로는 빈 페이지가 오고 브라우저를 띄우면 비용이 늘어납니다. Playwright나 Puppeteer를 쓰면 해결되는 것처럼 보이지만 운영에서는 바로 계산서가 옵니다. 탭 하나가 가벼운 API 요청과 같지 않습니다.

그래서 먼저 나눠야 합니다. 내가 소유한 사이트는 크롤러 친화적으로 고칩니다. 외부 사이트는 robots.txt와 이용약관을 확인하고 허용된 범위 안에서 수집합니다. 차단을 뚫는 기술보다 실패를 빨리 감지하는 장치가 더 중요합니다. 응답 HTML 길이와 제목 추출 여부, JSON-LD 존재 여부와 본문 토큰 수 같은 지표를 남겨두면 조용히 깨진 수집기를 빨리 잡아냅니다.

헤드리스 브라우저는 필요한 곳에만 씁니다. 이미지와 폰트 요청을 끄고 브라우저 컨텍스트를 재사용합니다. 작업 단위가 끝나면 메모리를 비웁니다. 대규모로 돌릴 때는 수집과 저장을 분리합니다. 큐에 쌓고 벌크로 적재해야 DB 커넥션 풀이 버팁니다.

GEO와 AEO는 구조화 데이터에서 차이가 납니다

AI 답변 엔진은 긴 글을 통째로 외우지 않습니다. 제목과 요약, 본문 첫 문단과 헤딩, 목록과 schema.org, canonical과 업데이트 날짜 같은 단서를 엮어 이해합니다. 이 단서가 흐트러지면 좋은 문장도 검색 결과 밖으로 밀립니다.

GEO 관점에서는 인용 가능한 문장을 페이지 안에 남겨야 합니다. AEO 관점에서는 질문에 바로 답하는 짧은 단락이 필요합니다. 둘 다 자바스크립트 뒤에 숨어 있으면 안 됩니다. JSON-LD는 특히 유용합니다. TechArticle이나 BlogPosting, FAQPage 같은 타입으로 글의 성격을 알려주면 AI가 문서를 분류하기 쉬워집니다.

스크래핑 파이프라인도 여기서 도움을 줍니다. 내 사이트를 주기적으로 긁어보면 크롤러가 실제로 무엇을 보는지 알 수 있습니다. 제목이 빠졌는지 태그가 누락됐는지 본문이 너무 늦게 로드되는지 바로 드러납니다. GEO 최적화는 감으로 하는 일이 아닙니다. 기계가 읽은 결과물을 다시 사람이 확인하는 루프에 가깝습니다.

AI가 읽을 수 없는 페이지는 AI가 인용하지 않습니다. 자바스크립트가 문제인지 구조화 데이터가 문제인지 차단 설정이 문제인지부터 분리해서 봐야 합니다.

요약

  • GEO와 AEO에서는 브라우저 화면보다 크롤러가 받은 초기 HTML과 구조화 데이터가 먼저입니다.
  • 자바스크립트 렌더링 의존도가 높은 페이지는 SSG와 SSR, JSON-LD로 인용 가능한 정보를 서버에서 내려줘야 합니다.
  • 수집 파이프라인은 차단 우회보다 관측 지표와 실패 감지, 큐 기반 적재로 안정성을 확보하는 편이 실무에 맞습니다.