🤖
5487 in / 1662 out / 7149 total tokens
광고가 한 개도 안 나오더라. 페이지 소스엔 <ins class="adsbygoogle"> 태그가 분명히 있는데, 브라우저 개발자 도구를 열어보면 전부 data-ad-status="none" 상태. AdSense 계정은 정상이고, 슬롯 ID도 맞고, 스크립트 로드도 되는데 왜 광고가 안 뜨는지 한참 헤맸다.
원인은 허무할 정도로 단순했다. 각 광고 슬롯 뒤에 (adsbygoogle = window.adsbygoogle || []).push({}) 호출이 없었다. head에 page-level config용 push 하나만 있고, 개별 슬롯을 구글 봇한테 "이 위치에 광고 달아줘"라고 알려주는 push가 전부 빠져 있었던 것. 태그만으로는 광고를 못 식별한다.
게임 4종(주사위, 브릿지, 경마, 룰렛 — 각 3개) + index.html(2개) + SEO 페이지 16종(각 2개) = 총 46개 슬롯 전부 동일한 문제. 템플릿을 복사하면서 push 라인만 누락된 듯하다.
수정은 각 </ins> 직후에 표준 push 스크립트를 한 줄씩 추가하는 것이 전부다.
html
로컬에서 확인해보니 status가 "none"에서 "done" 또는 "unfilled"로 정상 처리됐다. "unfilled"가 뜨는 건 광고 소진이거나 로컬 환경이라 그런 것인데, 어쨌든 슬롯이 구글 쪽에 제대로 인식됐다는 뜻이므로 정상 동작이다.
21개 파일 변경, +46 -35. 삭제된 35줄은 bridge-cross-multiplayer에서 중복 제거된 코드.
게임 개발할 때도 비슷한 실수를 종종 한다. UE5에서 Widget 블루프린트에 BindUIAction 누락하면 입력은 들어오는데 콜백이 안 터지는 것과 같은 패턴. "설정은 다 해놨는데 연결을 안 했다"는 실수는 항상 찾기 어렵다. 시각적으로 태그가 보이니까 정상이라고 착각하는 게 문제다.
다음엔 빌드 스크립트에서 adsbygoogle 태그 개수와 push() 호출 개수를 자동 비교하는 체크를 넣어야겠다. CI 단계에서 diff가 나오면 에러 뱉게.
HTML 태그는 선언이고, push()는 실행이다. 둘 다 있어야 동작한다.