Astro.js 블로그에 Google AdSense 달기 — 승인부터 광고 삽입까지
AdSense 신청하고 Astro.js 정적 사이트에 광고 코드 넣는 과정. 위치 선정과 삽입 방법.
AdSense 신청 전 체크리스트
AdSense는 아무 사이트나 승인하지 않습니다. 신청 전 확인:
- 콘텐츠가 있는가 (빈 사이트 불가)
- 원본 콘텐츠인가 (복사 글 불가)
- 개인정보처리방침 페이지 있는가
- 이용약관 페이지 있는가
- 사이트가 정상 접근 가능한가 (빌드 에러 없이 배포 완료)
신청 방법
adsense.google.com접속- 사이트 URL 입력
- AdSense 코드 스니펫을 사이트
<head>에 삽입 - 승인 대기 (수일~수주)
Astro.js에 AdSense 코드 삽입
Layout 파일의 <head> 안에 넣습니다.
src/layouts/Layout.astro:
---
// ...
---
<html lang="ko">
<head>
<meta charset="UTF-8" />
<!-- 다른 메타태그들 -->
<!-- AdSense 스크립트 -->
<script
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXXXXXXXXXXXXXX"
crossorigin="anonymous"
is:inline
></script>
</head>
<body>
<slot />
</body>
</html>
ca-pub-XXXXXXXXXXXXXXXX: AdSense 대시보드에서 발급받은 게시자 ID.
is:inline이 왜 필요한가?
Astro는 기본적으로 스크립트를 번들링합니다. is:inline을 붙이면 그대로 HTML에 인라인으로 들어갑니다. AdSense 스크립트는 외부 URL 방식이라 번들링하면 안 됩니다.
광고 단위 삽입
승인 후 광고 단위를 만들고 코드를 받습니다.
페이지 내 원하는 위치에 삽입:
<!-- 광고 단위 -->
<div class="ad-container">
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
data-ad-slot="YYYYYYYYYY"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script is:inline>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>
data-ad-slot: 광고 단위별로 다른 ID.
광고 위치 선정
효과적인 위치:
- 포스트 본문 중간 (읽다가 자연스럽게 봄)
- 포스트 끝 (다 읽고 나서)
- 사이드바 (데스크톱만)
피해야 할 위치:
- 콘텐츠보다 광고가 많은 레이아웃 (정책 위반)
- 클릭 유도 문구 옆 (정책 위반)
- 팝업이나 오버레이 방식 (정책 위반)
자동 광고 vs 수동 배치
자동 광고: AdSense가 알아서 최적 위치에 광고 삽입. 설정 쉬움. 레이아웃이 예상 못하게 바뀔 수 있음.
수동 배치: 광고 단위를 원하는 위치에 직접 코드 삽입. 제어 가능. 각 단위마다 코드 추가.
처음엔 자동 광고로 시작해서 나중에 수동으로 최적화하는 방법이 일반적입니다.
겪었던 문제
광고가 안 보임
신청 후 승인 전에는 광고가 안 나옵니다. 승인 이메일 받은 후부터 나옵니다.
승인 후에도 처음엔 adsbygoogle 에러가 날 수 있습니다:
adsbygoogle.push() error: No slot size for availableWidth=0
광고 컨테이너에 최소 너비가 있어야 합니다:
.ad-container {
min-width: 300px;
text-align: center;
}
로컬 개발 시 광고 에러
localhost에서는 AdSense가 광고를 채우지 않습니다. 콘솔 에러가 납니다만 무시해도 됩니다. 실제 도메인에 배포해야 광고가 나옵니다.
수익 현황
AdSense는 페이지 뷰와 클릭 수로 수익이 결정됩니다.
트래픽이 없으면 수익도 없습니다. 콘텐츠가 먼저입니다.
목표: 월 50만원. 현재 시스템 구축 단계.