광고 심사 결과를 열었더니 이렇게 적혀 있었습니다. 주의 필요 — 정책 위반: 가치가 별로 없는 콘텐츠.
저는 곧바로 원인을 알았다고 생각했습니다. 제 apex 도메인은 CDN 뒤에 있고, 그 CDN은 봇을 챌린지로 막습니다. curl로 제 페이지를 받으면 콘텐츠가 아니라 "잠시만 기다리십시오" 화면이 옵니다. 심사관이 본 게 그 화면이라면, 콘텐츠가 없다고 판정하는 게 당연합니다. 게다가 이 가설에는 전례까지 있었습니다. 몇 달 전 같은 심사에서 실제로 크롤 차단이 원인이었던 적이 있거든요.
토글 하나만 끄면 되는 문제. 저는 그렇게 믿고 싶었습니다.
질문 하나 드리고 시작하겠습니다. 당신의 진단 중에 **"고치기 쉬워서 믿고 있는 것"**이 있습니까? 저는 있었습니다.
첫 번째 측정이 거짓말을 했다
가설을 확인하려고 앱별 본문 글자수를 쟀습니다. HTML을 받아 태그와 스크립트를 걷어내고 남는 글자를 세는 스크립트였습니다. 결과 중 하나가 이랬습니다.
ootssu.com/guides/mbti-compatibility.html 58자58자. 저는 이걸 보고 "가이드 페이지가 렌더링이 깨졌구나" 하고 새 버그를 하나 만들어 냈습니다.
깨진 건 페이지가 아니라 제 측정이었습니다. 그 58자는 CDN 챌린지 페이지의 텍스트였습니다. 서버에 SSH로 들어가 원본 파일을 확인하니 14,989바이트에 본문·구조화 데이터·FAQ 3문항이 전부 멀쩡했습니다.
여기서 아이러니가 하나 생깁니다. 저는 "크롤러가 챌린지 페이지를 봤을 것"이라는 가설을 검증하려다가, 제 자신이 챌린지 페이지를 쟀습니다. 가설이 예측한 실패를 제가 재현한 셈인데, 그렇다고 가설이 참이 되는 건 아닙니다. 봇마다 대우가 다르니까요.
가설이 무너진 지점
그래서 반대편을 봤습니다. 크롤러가 정말 막혀 있나?
첫째, 제 앱 33개는 apex가 아니라 별도 호스팅에 있습니다. 응답 헤더를 찍어 보니 CDN을 아예 거치지 않습니다.
ddi.ootssu.com server: Vercel
tarot.ootssu.com server: Vercel
dev.ootssu.com server: Vercel즉 심사관이 앱들을 읽는 데는 아무 장애물이 없었습니다. 차단 가설이 성립하려면 판정 대상이 apex 한 장뿐이어야 하는데, 광고 네트워크는 도메인 전체를 봅니다.
둘째, 서버 접근 로그를 열었습니다. 보관 창이 13시간뿐이지만 그 안에서:
Googlebot: 12 (304 11건, 200 1건, 301 1건)
AdsBot-Google: 1
Mediapartners-Google: 0검색 크롤러는 정상적으로 들어와 정상 응답을 받고 있었습니다. 차단됐다면 이 줄들이 없어야 합니다.
가설 기각. 편한 쪽이 틀렸습니다.
그럼 진짜 뭘 봤길래
남은 가능성은 하나뿐이었습니다 — 심사관이 콘텐츠를 읽었고, 읽은 뒤에 얇다고 판단했다. 그래서 CDN을 안 타는 앱들만 골라 다시 쟀습니다. 이번엔 측정이 유효합니다.
mindage 472자
ddi 530자 ← 유입 1위 앱
bloodtype 814자
tarot 홈 900자
lifeweeks 1,296자
zodiac 1,689자
tarot 카드상세 1,706자 ← 최대입력 폼 하나, 계산 결과 한 화면, 고유 텍스트 500자 안팎. 이런 앱이 서른네 개, 전부 같은 템플릿에서 나왔습니다.
이 숫자를 보고 나니 심사 문구가 다르게 읽혔습니다. "가치가 별로 없는 콘텐츠"는 모호한 트집이 아니라 정확한 서술이었습니다.
값싼 수정이 없다는 걸 확인한 방법
여기서 멈추고 여쭙겠습니다. 당신이라면? 서른네 개 앱에 글을 채워 넣어 재심사를 노리겠습니까, 아니면 이 판정이 가리키는 방향을 받아들이겠습니까?
저는 회수부터 계산했습니다. 같은 기간 유입 계측을 읽어 보니 28일 동안 앱 전체 세션이 189개였습니다. 여기에 광고가 붙어 정상 단가가 나온다 해도 월 1달러 언저리입니다. 서른네 개 앱의 콘텐츠를 채우는 작업량과 비교가 되지 않습니다.
구조도 불리했습니다. 광고 네트워크의 사이트 단위는 루트 도메인입니다. 서브도메인을 따로 등록할 수 없습니다. 그러니까 서른네 개 중 가장 얇은 하나가 도메인 전체를 막습니다. 두꺼운 자산이 없지도 않습니다 — apex의 로케일 허브는 1만 자가 넘고, 타로 카드 사전은 1,706자짜리 페이지가 468장 있습니다. 그런데 그것들이 얇은 계산기 서른 개를 상쇄해 주지 않습니다.
같은 원인을 가리키는 세 번째 숫자
마지막으로 하나 더 맞춰 봤습니다. 같은 28일, 유튜브 채널 열 개의 조회수 합계는 29,625였습니다. 그리고 그 조회가 만든 앱 세션은 29개였습니다. 전환율 0.098%, 조회 천 번에 방문 한 명입니다.
광고 심사관의 판정, 검색 클릭 수, 그리고 이 전환율. 세 개가 서로 다른 곳에서 같은 말을 하고 있었습니다. 사람이 도착해서 머물 이유가 페이지에 없다는 것.
거절은 손실이 아니라 정보였습니다. 그것도 무료로 받은, 외부의 정직한 평가.
자가진단 3개
당신 프로젝트에 그대로 대볼 수 있는 항목만 남깁니다.
- 당신의 측정 도구가 진짜 콘텐츠를 재고 있습니까? CDN·봇 차단·로그인 벽 뒤라면, 당신이 세고 있는 건 에러 페이지 글자수일 수 있습니다. 원본 파일과 한 번은 대조하세요.
- 가장 유입이 많은 페이지의 고유 텍스트가 몇 자입니까? 500자 근처라면, 검색엔진과 광고 심사가 같은 결론을 내릴 준비가 돼 있습니다.
- 당신의 진단 중 "토글 하나로 끝나는 것"이 있습니까? 그게 사실이면 다행이고, 아니라면 그 가설이 다른 곳을 못 보게 막고 있습니다.
솔직한 부분
이 글에는 반전이 없습니다. 크롤러 설정을 고쳐 승인을 받아 냈다는 결말이면 좋았겠지만, 실제로는 제가 편한 가설을 세웠다가 데이터에 밀려 접었습니다. 그리고 그 데이터는 이 도메인의 다른 지표들이 이미 몇 주째 말하고 있던 것과 정확히 같았습니다.
거절 통보는 아직 그대로 있습니다. 재심사는 넣지 않았습니다. 지금 이 자산에서 값이 매겨지는 경로는 광고가 아니라 다른 쪽이라는 게 오늘 계산의 결론이고, 저는 그쪽부터 확인해 볼 생각입니다.
이 결정 이전의 이야기 — 결제사가 카테고리를 막아 유료를 접고 광고로 갔던 과정 — 은 결제사가 운세 앱을 거절한 뒤에 적어 뒀습니다. 그때 세운 계획이 오늘 이 판정으로 닫혔습니다. 유입을 소스별로 처음 쟀을 때 나온 숫자는 앱 유입의 63%는 내가 안 밀던 채널에서 왔다에 있습니다.
당신 사이트에서 가장 잘 나가는 페이지의 본문 글자수, 지금 한 번 세어 보시겠습니까? 예상보다 작게 나온다면 저와 같은 자리에 서 계신 겁니다.