일기 slecs

AdSense 광고 수익 인증을 위한 ads.txt 영구 배포

목차

public/ads.txt 파일 하나 추가한 커밋인데, 이게 생각보다 꽤 중요한 작업이었다.


ads.txt가 필요한가

AdSense를 붙이고 광고 수익을 받으려면 단순히 스크립트 코드 삽입만으로 끝나는 게 아니다. 구글 AdSense 측에서 요구하는 인증 파일 중 하나가 바로 이 ads.txt다. Authorized Digital Sellers(공인된 디지털 판매자)의 약자로, 광고 생태계에서 해당 도메인의 광고 인벤토리를 실제로 판매할 권한이 있는 사람이 누구인지 공개적으로 선언하는 파일이다.

파일 내용 자체는 단순하다. 아래처럼 퍼블리셔 계정 ID와 광고 네트워크 정보가 한 줄이면 끝난다.

google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0

그런데 이 파일이 https://yourdomain.com/ads.txt 경로에서 공개적으로 접근 가능해야 한다는 조건이 있다. 스크립트를 head에 박아 넣는 것과 달리, 서버 루트에 실제 파일이 존재해야 하는 방식이다.


public/ 디렉토리에 넣는 이유

Next.js 나 일반 정적 사이트 기준으로 public/ 디렉토리는 빌드 결과물에 그대로 복사되어 루트 경로로 서빙된다. public/ads.txt를 두면 별도 라우팅 없이 /ads.txt 경로에서 바로 접근된다. 이건 사실 프레임워크를 막론하고 정적 파일 서빙의 기본 원칙인데, 이 파일은 특히 Google 봇이 크롤링해서 자동으로 읽어가는 방식이라 경로 하나가 틀리면 인증 자체가 실패한다.

내가 이 파일을 누락했거나 늦게 추가했다면 AdSense 관리 콘솔에서 "ads.txt 파일 없음" 경고가 계속 뜨는 상태가 됐을 것이다. 광고 수익 자체가 막히는 건 아니지만, 구글 입장에서는 인증되지 않은 퍼블리셔로 취급될 수 있고 장기적으로 수익 최적화에 불리하게 작용한다는 게 공식 가이드의 설명이다.


"영구화"라는 표현을 쓴 이유

커밋 메시지에 "AdSense publisher 영구화" 라고 붙인 건 단순히 파일 추가 그 이상의 의미다. 이전에 임시로 설정하거나 환경에 따라 파일이 있다 없다 했던 상태였을 가능성이 있다. 혹은 로컬/스테이징에서 테스트하다가 프로덕션 배포에 빠뜨리는 패턴이 반복됐을 수도 있다.

chore 커밋 타입으로 분류한 것도 맞다고 본다. 기능 변경도, 버그 픽스도 아닌 인프라/설정 수준의 유지보수 작업이기 때문에. 그러나 팀 입장에서 이런 작업은 사소해 보여도 누락되면 리뷰 사이클에서 잡히지 않고 조용히 광고 수익에 영향을 주는 종류라서 오히려 더 챙겨야 하는 항목이다.

항목 내용
파일 경로 public/ads.txt
서빙 경로 /ads.txt (루트 접근)
크롤링 주체 Google Ads 봇
누락 시 영향 AdSense 콘솔 경고, 인증 미완료 상태 지속
커밋 타입 chore (기능 변경 없음, 설정 파일 추가)

이런 류의 작업이 팀에서 종종 우선순위에서 밀리는 이유가 있다. 당장 기능이 터지는 것도 아니고, 사용자가 체감하는 버그도 아니다. 그러나 광고 수익 모델이 존재하는 서비스라면 이 파일 하나가 수익 파이프라인의 인증 기반이 된다. 작업 자체는 파일 한 줄 추가지만, "영구화"라는 표현을 붙인 만큼 앞으로 이 파일은 배포 체크리스트에서 빠지지 않아야 할 항목으로 자리잡아야 한다.

끝.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.