애드센스 승인을 막는 저품질 스크립트 프로파일링


1. 구글 크롤러의 한계와 '렌더링 차단 스크립트'의 치명적 위협

수십 개의 정성스러운 포스팅을 작성하고도 구글 애드센스로부터 "가치가 없는 콘텐츠(Low value content)" 또는 "사이트가 다운되었거나 사용할 수 없음"이라는 거절 메일을 받는 블로거들이 부지기수입니다. 글의 질이 낮아서일까요? 아닙니다. 대부분의 경우, 문제는 사용자가 설치한 블로그 테마 내부의 무거운 자바스크립트(JavaScript)나 외부 위젯(방문자 카운터, 날씨 위젯, 마우스 효과 등)이 구글 크롤러의 눈을 가려버렸기 때문입니다.

구글의 광고 심사 봇인 Mediapartners-Google은 전 세계 수십억 개의 페이지를 심사해야 하므로, 단일 사이트에 머무는 시간과 컴퓨팅 자원(크롤 버짓, Crawl Budget)이 극도로 제한되어 있습니다. 크롤러가 HTML 문서를 위에서 아래로 파싱(Parsing)하며 내려오다가 <head> 태그나 본문 상단에 위치한 무거운 동기식(Synchronous) 스크립트를 만나면, 해당 스크립트의 다운로드와 실행이 끝날 때까지 화면 그리기를 전면 중단합니다.

이를 '렌더링 차단 자바스크립트(Render-blocking JavaScript)'라고 부릅니다. 이 과정이 3~5초 이상 지연되면, 크롤러는 "이 사이트는 텅 비어있거나 응답이 없다"고 판단하여 파싱을 포기하고 이탈해버립니다. 1만 자의 전문적인 텍스트를 적어두었어도, 크롤러의 눈에는 하얀 백지로 인식되는 논리적 비극이 발생하는 것입니다.

2. Chrome 개발자 도구를 활용한 악성 스크립트 프로파일링 전략

내 블로그에 기생하며 애드센스 승인을 가로막는 저품질 스크립트를 찾아내려면, 크롬 브라우저의 개발자 도구(F12)를 활용한 정밀한 프로파일링(Profiling)이 필요합니다. 감에 의존하지 않고 객관적인 데이터로 범인을 색출하는 3단계 과정입니다.

① Network 탭의 Waterfall 분석

개발자 도구를 열고 Network 탭으로 이동한 뒤, Disable cache를 체크하고 페이지를 새로고침(F5) 합니다. 파일들이 로드되는 막대그래프(Waterfall)를 관찰하십시오. 특정 외부 스크립트 파일(예: jquery.min.js, custom-widget.js)의 막대가 비정상적으로 길게 늘어져 있다면, 해당 파일이 브라우저의 메인 스레드(Main Thread)를 독점하며 DOM(문서 객체 모델) 생성을 가로막고 있는 주범입니다.

② Coverage 탭을 통한 낭비 데이터(Unused Bytes) 추적

Ctrl + Shift + P를 누르고 'Coverage'를 검색하여 탭을 엽니다. 녹화 버튼을 누르고 페이지를 로드하면, 현재 불러온 자바스크립트와 CSS 파일 중 '실제로 사용되지 않은 코드의 비율(Unused Bytes)'이 붉은색 막대로 표시됩니다. 블로그 테마에 기본 내장되어 있으나 내 사이트에서는 쓰지 않는 거대한 라이브러리 파일이 80% 이상의 낭비율을 보인다면, 과감하게 HTML 편집기에서 해당 호출 태그를 삭제해야 합니다.

③ Lighthouse TBT(Total Blocking Time) 점검

Lighthouse 탭에서 성능(Performance) 검사를 실행하십시오. 여러 지표 중 Total Blocking Time(TBT)이 300ms(밀리초)를 초과한다면 경고등이 켜진 것입니다. 이는 스크립트가 메인 스레드를 장시간 점유하여 사용자가 화면을 클릭하거나 스크롤할 수 없는 '먹통' 상태가 길었다는 뜻이며, 애드센스 봇이 가장 치명적인 감점 요인으로 삼는 지표입니다.

3. 코드 레벨의 해결책: defer와 async 속성의 비동기 렌더링 도입

프로파일링을 통해 필수적인 스크립트지만 속도를 저하시키는 원인을 찾았다면, 이를 삭제하는 대신 HTML5의 비동기 호출 속성을 부여하여 크롤러의 파싱 흐름을 방해하지 않도록 구조를 개조해야 합니다.


<!-- ❌ 최악의 예: 렌더링을 완전히 차단하는 동기식 로드 -->
<script src="https://example.com/heavy-script.js"></script>

<!-- 💡 해결책 1: async 속성 (비동기 다운로드 후 즉시 실행) -->
<!-- 구글 애널리틱스나 애드센스 코드처럼 독립적으로 동작하는 스크립트에 적합 -->
<script async src="https://example.com/analytics.js"></script>

<!-- 💡 해결책 2: defer 속성 (비동기 다운로드 후, HTML 파싱이 완료되면 실행) -->
<!-- DOM 요소를 조작해야 하는 테마 디자인 스크립트 등에 가장 이상적인 방식 -->
<script defer src="https://example.com/theme-ui.js"></script>
      

블로그스팟이나 티스토리의 HTML 편집 창을 열고, <head> 태그 내부에 위치한 <script> 태그들을 점검하십시오. 핵심 렌더링과 무관한 서드파티(Third-party) 스크립트에 defer 속성을 부여하는 것만으로도, 초기 화면을 구성하는 First Contentful Paint(FCP) 시간을 수 초 앞당길 수 있습니다. 구글 봇은 즉시 화면에 나타난 텍스트 콘텐츠를 온전히 수집하게 되고, 비로소 "가치 있는 문서"로 정당한 평가를 내려 애드센스 승인 도장을 찍어줄 것입니다.

💡 블로그 운영자 노트 및 검색엔진 최적화(SEO) 팁

이 과정을 거치면 블로그의 로딩 속도가 체감될 정도로 비약적으로 상승합니다. 애드센스 승인 전에는 외부 유입을 체크하는 온갖 잡다한 트래커와 위젯(특히 우클릭 방지 스크립트, 마우스 커서 이펙트 등)을 무조건 100% 제거하십시오. 구글은 화려한 사이트가 아니라, 가볍고 빠르며 텍스트의 본질에 충실한 '표준화된 DOM 구조'를 사랑합니다.

댓글