애드센스 수익이 오르지 않는 티스토리 블로거를 위한 가이드 모바일 광고 노출 한계와 해결 방법

블로그를 운영하다 보면, 애드센스 수익이 기대만큼 오르지 않아 고민하는 분들이 많습니다. 특히 티스토리 블로그를 운영 중이라면 이런 문제를 더 자주 경험할 수 있습니다. 이번 글에서는 티스토리 애드센스 수익이 저조한 핵심 이유를 분석하고, 모바일 수익 향상을 위한 실전 팁까지 소개합니다.

블로그 방문자의 대다수는 ‘모바일 사용자’

최근 웹 트래픽 데이터에 따르면, 대부분의 사용자는 모바일을 통해 블로그에 접속합니다. 다음은 일반적인 방문자 비율입니다:

  • 모바일 접속 비중: 약 60~80%
  • 데스크탑 접속 비중: 약 20~40%

이처럼 모바일 사용자 비중이 압도적임에도 불구하고, 티스토리 블로그는 모바일 광고 운영에 큰 제약이 있습니다. 이것이 바로 수익 저조의 근본 원인 중 하나입니다.

데스크탑 모바일: 티스토리 광고 운영의 차이점

데스크탑 스킨

  • HTML/CSS/JS 편집 가능
  • 원하는 위치에 애드센스 코드 직접 삽입 가능
  • 여러 개의 광고 배치 자유롭게 구성 가능
    → 결과적으로 수익률이 높아질 수 있음

모바일 스킨

  • 운영자 직접 수정 불가
  • 티스토리 기본 광고만 적용됨
  • 본문에 1개 광고만 표시 가능 (전체 화면 이미지 제외)
  • 앵커 광고 / 오퍼월 광고 사용 제한
    → 수익 극대화에 한계가 있음

모바일 환경에서 광고를 마음대로 제어할 수 없다면, 전체 방문자의 70% 이상에게 제대로 된 수익 기회를 놓치게 되는 셈입니다.

최근 애드센스 정책 변화가 수익을 더 줄이는 이유

티스토리는 애드센스 앵커 광고, 오퍼월 광고 등 일부 고수익 광고 유형의 사용을 티스토리 환경에서 제한하고 있습니다. 즉 모바일에서 광고를 노출시킬 수 있는 방법은 극히 제한적입니다.

그 결과?

  • 본문 외 광고 노출이 거의 불가
  • 페이지 체류시간 대비 광고 노출 수 ↓
  • 클릭률(CTR) 감소 → 수익 감소

해결 방법: 모바일 본문 광고 직접 노출하는 팁

모바일 환경에서 애드센스 수익을 높이기 위해, 아래와 같은 방법으로 광고 노출을 직접 추가할 수 있습니다.

적용 방법: 본문 하단에 광고 코드 직접 삽입

다음 스크립트를 본문 콘텐츠 하단 HTML에 삽입하면, 모바일 접속 시에도 자신의 광고를 강제로 노출시킬 수 있습니다.

애드센스 광고 삽입 코드의 간단한 사용 방법

사용 목적

모바일 페이지(/m/ 경로)에 자동으로 애드센스 광고를 본문 중간에 삽입하는 코드입니다.

사용 조건

Tistory 블로그에서 사용 가능

모바일 페이지 전용 (URL에 /m/ 포함 시 작동)

애드센스 ID 및 광고 ID 필요

광고 삽입 위치

h2, h4 태그 뒤 (자신이 필요한 태그로 수정)

p 태그 기준으로 5번째마다 삽입

<script>
document.addEventListener(“DOMContentLoaded”, () => {
if (location.href.includes(“/m/”)) {
(function () {
const c = {
clientId: “ca-pub-0000000000000000”, // 애드센스 ID
slotIds: [“광고id”, “광고id”, “광고id”]
};

const createAd = (e) => {
const d = document.createElement(“div”);
d.className = “secure-ad-unit”;
d.style.cssText = “margin:25px auto; min-height:90px!important; text-align:center; width:100%; background:url(‘https://tistory1.daumcdn.net/tistory/7331789/skin/images/ad.webp’) no-repeat center center; background-size:cover;”;
const i = document.createElement(“ins”);
i.className = “adsbygoogle”;
i.style.cssText = “display:block; width:100%; max-width:728px; min-height:90px; height:auto; margin:0 auto;”;
i.setAttribute(“data-ad-client”, c.clientId);
i.setAttribute(“data-ad-slot”, e);
i.setAttribute(“data-ad-format”, “auto”);
i.setAttribute(“data-full-width-responsive”, “true”);
d.appendChild(i);
return d;
};

const checkAndInsertAd = () => {
const a = document.querySelector(“.blogview_content.useless_p_margin.editor_ke”);
if (!a) return false;
let b = 0;
const s = new Set;
for (const t of [“h2”, “h4”]) {
if (b >= c.slotIds.length) break;
const el = a.querySelector(t);
if (el && !s.has(t) && (!el.nextElementSibling || !el.nextElementSibling.classList.contains(“secure-ad-unit”))) {
el.insertAdjacentElement(“afterend”, createAd(c.slotIds[b++]));
s.add(t);
}
}
if (b < c.slotIds.length) {
const ps = a.querySelectorAll(“p”);
for (let i = 0; i < ps.length && b < c.slotIds.length; i++) {
if ((i + 1) % 5 === 0) {
const p = ps[i];
if (!p.nextElementSibling || !p.nextElementSibling.classList.contains(“secure-ad-unit”)) {
p.insertAdjacentElement(“afterend”, createAd(c.slotIds[b++]));
}
}
}
}
return b > 0;
};

const loadAds = () => {
let t = 0, i = setInterval(() => {
if (window.adsbygoogle && document.querySelectorAll(“.adsbygoogle”).length) {
try {
document.querySelectorAll(“.adsbygoogle”).forEach(() => {
(adsbygoogle = window.adsbygoogle || []).push({});
});
clearInterval(i);
} catch (e) {}
}
if (++t >= 5) clearInterval(i);
}, 1000);
};

const init = () => {
checkAndInsertAd() && loadAds();
};

const lazyLoadAds = () => {
if (scrollY > innerHeight / 3) {
init();
removeEventListener(“scroll”, lazyLoadAds);
}
};

const script = document.createElement(“script”);
script.async = true;
script.src = `https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${c.clientId}`;
script.crossOrigin = “anonymous”;
document.head.appendChild(script);

addEventListener(“scroll”, lazyLoadAds);
if (document.readyState === “complete”) {
init();
} else {
addEventListener(“load”, init);
document.addEventListener(“DOMContentLoaded”, init);
}
})();
}
});
</script>