지난 28일 동안 RLAX의 애드센스 수익은 0.10달러였다.
5년 동안 블로그를 열어두고 기억나는 수익이 10달러쯤이었는데, 다시 시작한 뒤에도 숫자는 아주 작았다. 당연하다. Google Search Console에서 최근 3개월 동안 잡힌 클릭이 8회였고, 한국어 원문도 이제 열 편이 채 되지 않는다. 광고 위치를 세밀하게 나눌 만큼 데이터가 있느냐고 묻는다면 아직 없다고 답하는 편이 맞다.
그런데 그 0.10달러를 보고도 한 가지는 궁금했다. 이 돈은 어디서 생긴 걸까.
홈 중간의 큰 광고였는지, 글을 읽다가 만난 본문 광고였는지, 글을 다 읽고 내려간 하단 광고였는지 알 수 없었다. 광고가 여러 군데에 있으니 각각의 성과도 따로 보일 거라고 막연히 생각했는데, 실제 설정은 그렇지 않았다.
수익이 작은 것보다 먼저 눈에 들어온 건, 작은 수익조차 어디서 생겼는지 모른다는 사실이었다.
처음에는 광고 위치를 개선한다는 말을 광고를 더 잘 보이게 만드는 일로 생각했다. 코드를 열고 실제 페이지를 여러 번 보니 반대에 가까웠다. 작은 블로그에서 먼저 할 일은 광고를 늘리는 것이 아니라, 필요 없는 광고를 덜 보여주고 남은 광고에 이름을 붙이는 일이었다.
광고는 여러 개인데 보고서에서는 하나였다
RLAX 테마 안에는 광고 위치를 나누는 이름이 이미 있었다. leaderboard, in_article, post_bottom, archive_mid, feed_card. 코드만 보면 처음부터 측정을 고려한 구조처럼 보였다.
문제는 WordPress에 저장된 실제 값이었다. 본문 중간에는 3031870131이라는 별도 slot ID가 연결돼 있었지만, 홈과 글 하단, 아카이브는 모두 1287543629를 함께 쓰고 있었다. 피드 광고는 별도 값이 없어 아카이브 광고를 대신 사용했다.
같은 광고 단위를 여러 곳에서 쓰는 것 자체가 오류는 아니다. 광고는 정상적으로 나온다. 문제는 그다음이다. AdSense 보고서에서는 같은 광고 단위의 수치로 합쳐지기 때문에, 홈에서 많이 보인 것인지 글 하단까지 내려온 사람이 광고를 본 것인지 구분하기 어렵다.
내가 알고 싶었던 것은 “광고가 돈을 버는가”라는 큰 질문이 아니었다. 본문 광고 뒤에도 계속 읽는지, 아카이브 광고가 다음 글을 고르는 흐름을 막는지, 글 하단 광고에 실제로 도달하는 사람이 있는지 같은 작은 질문이었다. 하나의 ID로 묶여 있으면 이 질문에 답할 수 없었다.
그래서 테마의 위치 이름만 나눈 상태를 끝난 구조라고 보지 않기로 했다. AdSense 안에서도 위치별 광고 단위를 만들어야 비로소 홈, 본문, 글 하단, 아카이브를 따로 비교할 수 있다.
광고를 더 넣으려다 오히려 늦게 나오게 했다
코드를 보면서 먼저 바꾼 것은 광고 단위가 아니라 등장 시점이었다.
기존 방식대로라면 짧은 글도 본문 광고를 만날 수 있었다. 도입 몇 문단을 읽고 글의 리듬을 느끼기 전에 광고가 나오면, 그 한 번의 노출이 수익에는 도움이 될지 몰라도 사이트 전체의 인상에는 좋지 않았다. 지금처럼 방문자가 거의 없는 블로그에서는 한 명이 다음 글까지 읽는 일이 광고 한 번 더 보이는 것보다 중요했다.
그래서 8문단보다 짧은 글에는 본문 광고를 넣지 않도록 했다. 8문단을 넘는 글은 약 42% 지점에 한 번, 17문단을 넘는 긴 글만 약 76% 지점에 한 번 더 광고가 나온다.
| 본문 길이 | 광고 규칙 | 판단 이유 |
|---|---|---|
| 7문단 이하 | 본문 광고 없음 | 짧은 글에서 내용보다 광고가 먼저 기억되는 상황을 피한다. |
| 8~16문단 | 약 42% 지점 1회 | 도입과 첫 번째 전개를 읽은 뒤에만 광고가 나타난다. |
| 17문단 이상 | 약 42%·76% 지점 | 긴 글에서만 두 번째 광고를 허용한다. |
42%와 76%가 정답이라서 고른 숫자는 아니다. 제목 바로 아래나 첫 소제목 앞에 기계적으로 광고를 끼워 넣지 않으면서, 나중에 위치를 비교할 수 있는 출발점으로 정한 값이다.
여기서 조금 웃긴 상황이 생겼다. 돈을 벌기 위해 광고 코드를 손보고 있었는데, 결과적으로 짧은 글에서는 광고를 없앴다. 하지만 지금 RLAX에 필요한 것은 페이지 한 장에서 몇 센트를 더 얻는 것보다, 읽던 사람이 사이트를 광고판처럼 느끼지 않게 하는 일이었다.
광고가 나오지 않은 자리도 페이지를 차지했다
실제 화면에서는 다른 문제도 보였다. AdSense가 모든 광고 요청을 채우는 것은 아니다. 광고가 들어오지 않았는데 컨테이너의 테두리와 높이, ‘ADVERTISEMENT’라는 라벨만 남으면 독자는 이유를 알 수 없는 빈 구역을 보게 된다.
홈에서는 특히 크게 느껴졌다. 넓은 광고 영역이 비어 있으면 콘텐츠 사이에 커다란 구멍이 생긴다. 수익은 0원인데 글과 글 사이의 흐름만 끊긴다.
그래서 광고가 data-ad-status="unfilled" 상태가 되면 컨테이너의 최소 높이와 여백, 테두리, 라벨을 줄이도록 바꿨다. 반대로 광고를 불러오는 동안에는 최소 높이를 유지한다. 광고가 뒤늦게 나타나며 아래 문장을 갑자기 밀어내는 현상을 줄이기 위해서다.
광고가 안 나오면 자리를 없애고, 나오기 전에는 자리를 잠깐 확보한다. 서로 반대처럼 보이지만 목적은 같다. 광고의 성공 여부 때문에 본문이 크게 흔들리지 않게 하는 것.
0.10달러에 광고를 나누는 것이 정말 먼저일까
가장 강한 반론은 분명하다. 최근 28일 수익이 0.10달러인데 광고 단위를 다섯 개로 나누는 것이 무슨 의미가 있느냐는 것.
맞는 말이다. 지금 슬롯 이름을 정리한다고 수익이 갑자기 늘지는 않는다. 페이지뷰가 거의 없으면 CTR도 RPM도 쉽게 흔들린다. 클릭 한 번에 수치가 크게 달라질 수 있어서 위치별 비교 자체가 성립하지 않을 수도 있다.
그래서 이번 작업을 수익 최적화라고 부르지 않기로 했다. 측정할 준비에 가깝다. 실제 우선순위는 검색되는 한국어 원문을 더 쌓는 일이다. 최근 Search Console 수치가 클릭 8회, 노출 89회라면 광고 배치보다 검색에 들어갈 글의 수가 병목이다.
그럼에도 지금 위치를 나누는 이유는 데이터가 생긴 다음에야 구조를 바꾸느라 비교 기준을 잃지 않기 위해서다. 홈, 본문, 글 하단, 아카이브가 처음부터 따로 기록되면 월 1,000페이지뷰쯤 되었을 때 어떤 자리를 줄이고 남길지 볼 수 있다.
작은 블로그의 광고 최적화는 광고를 많이 넣는 기술보다, 나중에 무엇을 빼도 되는지 알 수 있게 만드는 일에 가까웠다.
아직 남은 한 단계
코드 쪽 준비는 끝났다. 하지만 실제 위치별 측정은 AdSense에서 별도 광고 단위를 만든 뒤 WordPress의 각 위치에 다른 slot ID를 연결해야 끝난다. 현재는 본문 중간만 분리돼 있고, 홈과 글 하단, 아카이브는 여전히 같은 ID를 사용한다.
새 광고 단위를 연결한 뒤에도 곧바로 결론을 내리지는 않을 생각이다. 페이지뷰가 충분하지 않은 동안에는 광고 단위별 수치가 아니라 글이 색인되는지, 어떤 검색어로 노출되는지, 방문자가 다음 글까지 이동하는지를 먼저 본다.
월 1,000페이지뷰가 넘어가면 그때부터 홈, 본문, 글 하단, 아카이브의 페이지 RPM과 노출을 비교한다. 수익이 조금 높은 위치라도 다음 글로 가는 흐름을 크게 막는다면 줄인다. 광고는 콘텐츠를 읽고 난 뒤 따라오는 수익이어야지, 아직 생기지도 않은 유입을 먼저 가로막는 구조가 되어서는 안 된다.
이번 작업은 작은 블로그를 다시 검색엔진에 제출하면서 확인한 것들에서 이어졌다. 오래 방치한 블로그를 다시 열게 된 이유와 비용은 5년 동안 10달러를 번 적자형 블로그를 다시 열었다에 적어두었다.
이야기
댓글 0개