스터디
Next.js에 Google AdSense 광고를 삽입
행복한 수지아빠
2025. 2. 27. 14:22
Next.js에 Google AdSense 광고를 삽입할 수 있습니다. 다만, Next.js는 기본적으로 서버 사이드 렌더링(SSR)을 지원하기 때문에 AdSense 코드가 제대로 실행되려면 클라이언트 사이드에서 실행되도록 설정해야 합니다.
1. Google AdSense 승인 및 코드 발급
먼저, Google AdSense 계정을 승인받고, 광고 코드를 발급받아야 합니다.
2. Next.js에 AdSense 삽입하는 방법
(1) _document.js에 전체 사이트용 스크립트 추가
Google AdSense의 스크립트를 모든 페이지에서 실행하려면 _document.js 또는 _document.tsx 파일을 수정해야 합니다.
📌 pages/_document.js
import { Html, Head, Main, NextScript } from 'next/document';
export default function Document() {
return (
{/* Google AdSense Script */}
(2) 특정 페이지 또는 컴포넌트에 광고 배너 추가
다음은 특정 페이지나 컴포넌트에서 광고를 삽입하는 방법입니다.
📌 components/AdSense.js (광고 컴포넌트)
import { useEffect } from 'react';
const AdSense = ({ adClient, adSlot, format = "auto", responsive = "true" }) => {
useEffect(() => {
try {
(window.adsbygoogle = window.adsbygoogle || []).push({});
} catch (e) {
console.error("AdSense error", e);
}
}, []);
return (
<ins
className="adsbygoogle"
style={{ display: "block" }}
data-ad-client={adClient}
data-ad-slot={adSlot}
data-ad-format={format}
data-full-width-responsive={responsive}
></ins>
);
};
export default AdSense;
이제 광고를 넣고 싶은 페이지에서 다음과 같이 사용하면 됩니다.
📌 pages/index.js (홈페이지에서 광고 삽입)
import AdSense from "../components/AdSense";
export default function Home() {
return (
<div>
<h1>Welcome to My Website</h1>
<p>This is a sample Next.js page with Google AdSense.</p>
{/* Google AdSense 광고 삽입 */}
<AdSense adClient="ca-pub-XXXXXXXXXX" adSlot="1234567890" />
</div>
);
}
(3) SSR 이슈 해결 (동적 로딩)
Next.js에서는 Google AdSense가 window 객체를 필요로 하기 때문에 SSR에서는 작동하지 않습니다. 이를 해결하기 위해 next/dynamic을 활용해 동적으로 로드해야 합니다.
📌 동적 로딩을 적용한 광고 컴포넌트 사용
import dynamic from 'next/dynamic';
const AdSense = dynamic(() => import('../components/AdSense'), { ssr: false });
export default function Home() {
return (
<div>
<h1>My Next.js Website</h1>
<AdSense adClient="ca-pub-XXXXXXXXXX" adSlot="1234567890" />
</div>
);
}
3. 추가 설정 및 고려 사항
- 광고 반응형 디자인 적용
- Google AdSense는 반응형 광고를 지원합니다. <ins> 태그 내에 data-full-width-responsive="true"를 추가하면 됩니다.
- 광고 표시가 안 되는 경우
- AdSense가 승인이 완료되지 않으면 광고가 표시되지 않습니다.
- 도메인이 AdSense에 등록되지 않았다면 광고가 나오지 않습니다.
- ad-block 확장 프로그램이 광고 차단하는 경우도 있음.
- 페이지 속도 영향 최소화
- Google AdSense 스크립트가 로딩 속도에 영향을 줄 수 있으므로, 필요한 경우 lazy-loading 기법을 활용하세요.
결론
Next.js에서 Google AdSense 광고를 사용하려면:
- _document.js에 AdSense 스크립트 추가
- 광고 컴포넌트(AdSense.js)를 만들어 동적으로 로드
- 특정 페이지에서 next/dynamic을 사용하여 SSR 문제 해결
- 광고가 표시되지 않을 경우 AdSense 승인 및 도메인 등록 확인
이 방법을 따르면 Next.js에서도 AdSense 광고를 원활하게 삽입할 수 있습니다. 🚀