DecisionLab

네이버와 구글이 권장하는 자바스크립트 웹사이트 수집 및 색인 최적화 방법

화려한 애니메이션과 매끄러운 화면 전환을 위해 공들여 만든 자바스크립트 기반 웹사이트가 정작 검색 결과에서는 흔적도 없이 사라져 있다면, 그 허탈함은 이루 말할 수 없을 거예요. 수많은 개발자와 마케터가 이 문제로 밤잠을 설치곤 하죠. 결국 우리가 진짜 알고 싶은 건, 검색 로봇이 복잡한 자바스크립트 코드를 뚫고 어떻게 우리 콘텐츠의 본질을 정확히 이해하게 만들 것인가 하는 점입니다.
[자바스크립트 SEO 최적화 로드맵]
1. 검색 로봇의 렌더링 프로세스 이해 (Crawl -> Render -> Index)
2. SSR(서버 사이드 렌더링) 또는 하이브리드 렌더링 도입 고려
3. 핵심 메타데이터와 시맨틱 마크업의 사전 배치
4. API 데이터 호출 시점과 타임아웃 관리
핵심은 '검색 로봇에게 기다림을 강요하지 않는 것'입니다. 구글봇이나 네이버의 예티(Yeti)가 페이지에 들어왔을 때, 자바스크립트가 실행되기 전이라도 빈 껍데기가 아닌 의미 있는 정보를 즉시 보여줄 수 있어야 하거든요.

검색 로봇이 우리 사이트를 보는 눈은 생각보다 까다로워요

예전에 가깝게 지내는 개발자 지인이 아주 멋진 포트폴리오 사이트를 리액트(React)로 만든 적이 있었어요. 디자인도 수려하고 기능도 완벽했지만, 한 달이 지나도록 네이버 검색창에 사이트 이름조차 나오지 않았죠.

확인해 보니 검색 로봇이 처음 마주하는 소스 코드가 고작 한두 줄의 스크립트 태그뿐이었던 거예요. 검색 엔진의 수집 과정을 들여다보면 그 이유를 명확히 알 수 있습니다. 과거에는 텍스트 위주의 HTML만 훑고 지나갔지만, 이제는 구글봇 같은 로봇들이 직접 자바스크립트를 실행해 보기도 하거든요. 하지만 문제는 비용과 시간입니다.

로봇은 전 세계 수조 개의 페이지를 돌아다녀야 하기에, 특정 사이트의 스크립트가 로드될 때까지 마냥 기다려주지 않아요. 특히 네이버의 예티 봇은 구글에 비해 자바스크립트 실행 능력이 조금 더 보수적이라는 평가를 받곤 합니다. 로봇이 페이지를 방문했을 때 실행해야 할 스크립트가 너무 무겁거나 외부 API 응답이 늦어지면, 로봇은 그냥 '내용 없는 페이지'라고 판단하고 발길을 돌려버리는 것이죠.

서버에서 미리 그려주는 마법이 필요한 이유예요

이런 문제를 해결하기 위해 요즘은 서버 사이드 렌더링(SSR)이라는 방식을 많이들 고민하시곤 해요. 제 지인도 결국 사이트를 넥스트(Next.js) 기반으로 옮기고 나서야 검색 노출 문제를 해결할 수 있었거든요.

서버에서 미리 HTML의 뼈대와 핵심 내용을 다 그려서 보내주니 로봇이 굳이 수고스럽게 자바스크립트를 돌려볼 필요가 없어진 셈이죠. 물론 모든 웹사이트를 SSR로 바꿔야 하는 건 아니에요. 정적인 정보 위주의 페이지라면 미리 빌드 타임에 HTML 파일을 만들어두는 정적 사이트 생성(SSG) 방식이 훨씬 유리할 수도 있습니다.

중요한 건 사용자가 보는 화면과 검색 로봇이 보는 화면 사이의 간극을 최대한 좁히는 노력이라고 볼 수 있어요. 건너 들은 이야기지만, 어떤 쇼핑몰은 자바스크립트로만 상품 목록을 불러오다가 매출이 급감한 적이 있었다고 해요. 검색 로봇이 상품 정보를 전혀 긁어가지 못하니 검색 결과에 상품이 노출되지 않았던 거죠. 결국 핵심 콘텐츠만큼은 스크립트 실행 없이도 읽힐 수 있는 구조를 갖추는 것이 무엇보다 소중합니다.

검색 로봇의 수집 경로를 방해하는 장애물을 치워주세요

사이트의 기술적 구조를 잘 갖췄더라도 문을 걸어 잠그고 있다면 아무 소용이 없겠죠? robots.txt 설정은 그 문을 열어주는 열쇠와 같습니다. 가끔 자바스크립트 파일을 담아둔 폴더를 'Disallow' 처리해버리는 실수를 범하는 경우를 보게 되는데,

이러면 로봇이 페이지 렌더링에 필요한 핵심 파일을 가져가지 못해 페이지가 깨진 상태로 색인될 수 있어요. 또한, 링크 구조 역시 매우 중요합니다. 자바스크립트의 이벤트 리스너를 통해서만 이동하는 방식보다는 표준적인 a 태그와 href 속성을 사용하는 것이 훨씬 권장되거든요.

로봇은 버튼을 클릭해보는 존재가 아니라, 소스 코드에 명시된 경로를 따라 흐르는 물줄기 같은 존재라는 점을 기억하면 이해가 쉬울 거예요. 검색 로봇이 사이트 내부를 구석구석 살필 수 있도록 사이트맵(sitemap.xml)을 꼼꼼히 관리하는 것도 잊지 말아야 합니다. 특히 자바스크립트 비중이 높은 사이트일수록 로봇에게 명확한 이정표를 제시해주는 것이 수집 효율을 높이는 결정적인 한 수가 될 수 있습니다.
[성공적인 자바스크립트 SEO를 위한 핵심 결론]

1. 하이브리드 전략: 초기 로딩 시 핵심 콘텐츠는 SSR로 제공하고, 복잡한 인터랙션은 클라이언트 사이드에서 처리하십시오.
2. 시맨틱 태그 준수: h1, p, a 태그 등 표준 HTML 요소를 사용하여 스크립트 없이도 구조 파악이 가능하게 만드십시오.
3. 로봇 리소스 개방: robots.txt에서 JS 및 CSS 파일에 대한 로봇의 접근을 허용하여 렌더링을 방해하지 마십시오.
4. 성능 최적화: 스크립트 실행 속도를 높여 로봇의 렌더링 타임아웃 안에 핵심 내용이 담기도록 관리하십시오.

네이버 서치어드바이저와 구글 서치콘솔을 활용해 보세요

우리가 아무리 완벽하게 준비했다고 해도, 로봇의 시선에서 어떻게 보이는지는 직접 확인해봐야 확신할 수 있습니다. 네이버 서치어드바이저의 '수집 현황'이나 구글 서치콘솔의 'URL 검사' 기능을 활용하면 로봇이 렌더링한 실제 화면을 들여다볼 수 있거든요.

여기서 텍스트 스냅샷을 유심히 살펴보는 것이 좋습니다. 만약 내가 배치한 중요한 키워드가 스냅샷에서 누락되어 있다면, 그 부분의 자바스크립트 실행 방식에 문제가 있다는 강력한 신호입니다. 어떤 분들은 이 과정을 번거롭다고 생각하시지만, 한 번의 확인이 수개월의 공백을 메워주는 가장 빠른 지름길이 되기도 합니다.

또한 이미지나 동영상 같은 미디어 파일의 지연 로딩(Lazy Loading)을 구현할 때도 주의가 필요해요. 로봇은 스크롤을 내리지 않는 경우가 많기 때문에, 자칫하면 모든 이미지가 누락된 채로 색인될 수 있거든요. 이를 위해 표준적인 lazy loading 속성을 활용하거나 로봇에게는 원본 소스를 직접 노출하는 세밀한 배려가 필요합니다.

기술적인 완벽함보다 중요한 것은 정보의 가치입니다

결국 자바스크립트 최적화라는 것도 우리가 만든 소중한 콘텐츠를 세상에 더 잘 알리기 위한 수단일 뿐입니다. 기술적인 장벽 때문에 양질의 정보가 사장되는 것은 사용자나 검색 엔진 모두에게 손해인 일이니까요. 로봇의 특성을 이해하고 한 걸음만 먼저 배려한다면,

화려함과 검색 노출이라는 두 마리 토끼를 모두 잡을 수 있습니다. 검색 알고리즘은 시간이 흐를수록 점점 더 똑똑해지고 인간의 사고방식을 닮아갑니다. 이제는 단순히 기술적인 기교를 부리는 것을 넘어, 어떻게 하면 더 빠르고 정확하게 사용자에게 도움을 줄 것인가를 고민하는 것이 진정한 최적화의 본질이 아닐까 싶어요.
 

연관글

연관 글