MkDocs에 Google AdSense 연동하기
MkDocs 사이트에 Google AdSense 광고를 추가하는 방법을 설명합니다.
사전 준비사항
- Google AdSense 계정
- 승인된 웹사이트
- AdSense 광고 코드
방법 1: extra_javascript를 사용한 전역 설정
1. AdSense 스크립트 파일 생성
docs/js/adsense.js
파일을 생성합니다:
mkdir -p docs/js
// docs/js/adsense.js
// Google AdSense 자동 광고 코드
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "ca-pub-YOUR-PUBLISHER-ID",
enable_page_level_ads: true
});
2. mkdocs.yml 설정
site_name: My Wiki
extra_javascript:
- https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-YOUR-PUBLISHER-ID
- js/adsense.js
extra:
analytics:
gtag: G-YOUR-TRACKING-ID # Google Analytics (선택사항)
방법 2: HTML 템플릿 오버라이드
1. 커스텀 템플릿 디렉토리 생성
mkdir -p overrides
2. mkdocs.yml에 custom_dir 추가
theme:
name: material
custom_dir: overrides
3. 메인 템플릿 오버라이드
overrides/main.html
파일 생성:
{% extends "base.html" %}
{% block extrahead %}
{{ super() }}
<!-- Google AdSense -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-YOUR-PUBLISHER-ID"
crossorigin="anonymous"></script>
{% endblock %}
{% block content %}
{{ super() }}
<!-- 콘텐츠 하단 광고 -->
<div class="admonition adsense">
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-YOUR-PUBLISHER-ID"
data-ad-slot="YOUR-AD-SLOT-ID"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
{% endblock %}
방법 3: 특정 페이지에만 광고 추가
1. 페이지 템플릿 생성
overrides/partials/adsense.html
:
<div class="adsense-container" style="margin: 2rem 0;">
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-YOUR-PUBLISHER-ID"
data-ad-slot="YOUR-AD-SLOT-ID"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
2. 마크다운 파일에서 광고 삽입
# 페이지 제목
일부 콘텐츠...
!!! adsense ""
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-YOUR-PUBLISHER-ID"
data-ad-slot="YOUR-AD-SLOT-ID"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
더 많은 콘텐츠...
광고 스타일링
커스텀 CSS 추가 (docs/css/adsense.css
):
/* AdSense 광고 컨테이너 스타일 */
.adsense-container {
margin: 2rem auto;
padding: 1rem;
background-color: #f5f5f5;
border-radius: 8px;
text-align: center;
}
/* 광고 레이블 */
.adsense-container::before {
content: "Advertisement";
display: block;
font-size: 0.8rem;
color: #666;
margin-bottom: 0.5rem;
}
/* 반응형 광고 */
@media (max-width: 768px) {
.adsense-container {
margin: 1rem 0;
padding: 0.5rem;
}
}
mkdocs.yml에 CSS 추가:
extra_css:
- css/extra.css
- css/adsense.css
중요 고려사항
1. AdSense 정책 준수
- 과도한 광고 배치 피하기
- 콘텐츠와 광고의 명확한 구분
- 사용자 경험 우선 고려
2. 성능 최적화
// 지연 로딩 구현
document.addEventListener('DOMContentLoaded', function() {
// 스크롤 시 광고 로드
let adsLoaded = false;
window.addEventListener('scroll', function() {
if (!adsLoaded && window.scrollY > 100) {
loadAdsense();
adsLoaded = true;
}
});
});
function loadAdsense() {
const script = document.createElement('script');
script.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-YOUR-PUBLISHER-ID';
script.async = true;
script.crossOrigin = 'anonymous';
document.head.appendChild(script);
}
3. 광고 위치 추천
- 헤더 하단: 네비게이션 바로 아래
- 사이드바: 목차 옆 공간 활용
- 콘텐츠 중간: 긴 글의 중간 섹션
- 푸터 상단: 페이지 하단 콘텐츠 끝
테스트 및 디버깅
-
로컬 테스트:
mkdocs serve
-
광고 표시 확인:
- 개발자 도구에서 광고 요청 확인
- AdSense 대시보드에서 노출 수 확인
-
일반적인 문제:
- 광고가 표시되지 않음: AdSense 승인 상태 확인
- 레이아웃 깨짐: CSS 충돌 검사
- 느린 로딩: 지연 로딩 구현 고려