📜 ads.txt 생성기
Google AdSense, Ad Manager, Amazon, Index Exchange, Rubicon, OpenX, PubMatic 등 주요 SSP 프리셋으로 IAB 호환 ads.txt 생성. DIRECT / RESELLER 지원.
🔒 개인정보 보호
- ・퍼블리셔 ID 서버 전송 없음
- ・브라우저 내 처리
- ・가입 · 로그인 · 결제 불필요
🏷️ 퍼블리셔 ID
🌐 네트워크 선택
➕ 커스텀 행
형식: domain, id, DIRECT|RESELLER, TAG-ID
📄 ads.txt
도메인 루트에 배치.
📚 ads.txt 소개
ads.txt (Authorized Digital Sellers)는 IAB Tech Lab에서 수립한 광고 사기 방지 표준입니다. 광고 인벤토리를 판매할 수 있는 권한을 가진 공급업체를 텍스트 파일로 공개하여 도메인 스푸핑을 방지합니다. Google AdSense 또는 Ad Manager 사용 시 설정이 거의 필수입니다.
📖 자주 걸리는 지점
퍼블리셔 ID 와 애드 네트워크 선택으로부터 domain, publisher-id, DIRECT|RESELLER, TAG-ID 4 열 형식의 ads.txt 를 조립합니다. 처리는 브라우저 안에서 끝나며 ID 가 서버로 전송되지 않습니다. 이 도구가 보증할 수 있는 것은 서식뿐입니다 — ID 가 올바른지, 그 네트워크와 실제로 계약이 있는지는 검증할 수 없습니다. 그리고 ads.txt 는 「여기에 적히지 않은 판매자의 인벤토리는 사지 말라」고 선언하는 파일이므로 서식이 완벽해도 ID 가 한 글자 다르면 그 판매자를 거친 입찰이 조용히 전부 멈춥니다.
| 사례 | 무슨 일이 일어나는가 | 어떻게 하면 되는가 |
|---|---|---|
| 위치가 다르면 없는 것과 같은 취급 | 크롤러가 읽는 곳은 도메인 루트 바로 아래뿐, 즉 https://example.com/ads.txt 입니다. /blog/ads.txt 도 /ads.txt.html 도 보러 가지 않습니다. 흔한 실패가 셋 있습니다. 첫째는 SPA 나 정적 호스팅이 알 수 없는 경로에 index.html 을 200 으로 돌려주는 경우로, 크롤러는 HTML 을 받고 거기에 광고 시스템 행이 없으므로 「전부 미승인」이라고 해석합니다. 둘째는 서브도메인 — blog.example.com 의 인벤토리는 blog.example.com/ads.txt 를 참조하며 루트의 파일이 자동으로 적용되지 않습니다. 셋째는 리다이렉트로, 규격상 따라갈 수 있는 횟수는 제한되어 있습니다. |
브라우저로 열어 확인하는 것만으로는 부족합니다. curl -I https://example.com/ads.txt 를 실행해 상태 코드가 200 인지, Content-Type 이 text/plain 인지, 리다이렉트가 없는지 세 가지를 보세요. text/html 이 돌아온다면 그것은 ads.txt 가 아니라 애플리케이션의 폴백 페이지입니다. 서브도메인에서 광고를 내보낸다면 루트 파일에 subdomain=blog.example.com 행을 추가하거나 그 서브도메인에도 실물을 두세요. www 유무도 다른 호스트 취급이므로 양쪽 모두 curl 로 확인하세요. |
| DIRECT 와 RESELLER 를 실제와 다르게 적는다 | DIRECT 는 「그 광고 시스템과 직접 계약하고 있으며 거기서 직접 지급을 받는다」는 뜻입니다. MCM 이나 중개 파트너를 거쳐 AdSense 를 운영한다면 올바른 행은 그 파트너가 지정한 것이며 대개 RESELLER 행을 포함합니다. DIRECT 라고 적는 편이 유리한 일은 없습니다 — 구매 측의 대조는 sellers.json 과 맞춰서 이뤄지므로 실제와 어긋나면 오히려 신용을 잃습니다. 또 하나의 단골 실수가 도메인 칸으로, 여기에 넣는 것은 광고 시스템의 정규 도메인 (google.com) 이지 관리 화면의 URL (adsense.google.com) 이 아닙니다. |
행을 스스로 만들지 말고 각 파트너의 관리 화면에 적힌 문자열을 그대로 복사하세요. 주요 애드 네트워크는 반드시 「ads.txt 에 추가할 행」을 공개하고 있습니다. 퍼블리셔 ID 는 지급 계정 표시와 한 글자씩 대조하고, Google 이라면 pub- 접두사까지 포함해 완전히 일치시킵니다. 네 번째 열의 TAG-ID 는 임의지만 쓸 수 있다면 쓰세요 — 구매 측 필터에서 가점이 되는 경우가 있습니다. 마무리로 완성된 파일을 Google Ad Manager 나 AdSense 의 ads.txt 상태 화면에서 읽히고 경고가 사라지는지 확인합니다. 서식 검증은 그곳이 최종 권위입니다. |
| 다시 만들 때 이전에 있던 행이 사라진다 | ads.txt 의 변경은 즉시 반영되지 않으며 즉시 되돌릴 수도 없습니다. 크롤러는 취득 결과를 대략 하루 정도 캐시하므로 새 네트워크를 추가해도 당일에는 송출이 시작되지 않습니다. 문제는 반대 방향입니다 — 이전에는 실려 있던 행을 뺀 파일을 공개하면 그 판매자를 거친 수요가 하루쯤 만에 멈춥니다. 제너레이터로 처음부터 다시 만들어 덮어쓰는 운용을 하고 있으면 몇 달 전에 추가한 파트너의 행을 잊고 빠뜨리는 사고가 일어납니다. 게다가 수익이 줄었다는 사실만으로는 원인을 알 수 없어서 알아차리기까지 시간이 걸립니다. |
생성한 파일을 그대로 올리지 말고 반드시 현재 공개 중인 파일과 차분을 뜨세요. curl -s https://example.com/ads.txt > live.txt 로 실물을 내려받고 diff live.txt new.txt 로 「사라지는 행」이 의도한 것뿐인지 확인합니다. 운용으로는 ads.txt 를 Git 으로 관리하고 변경을 반드시 리뷰를 거치게 하는 편이 확실합니다. 더불어 광고 수익의 일별 추이를 파트너별로 볼 수 있게 해 두면 사고가 났을 때 원인을 가려낼 수 있습니다. 행을 추가한 날짜를 주석 (# 로 시작하는 행) 으로 남겨 두면 후임자가 지워도 되는 행인지 판단할 수 있습니다. |
ads.txt 는 공개 파일이며 그것이 사양입니다. 누구나 가져갈 수 있으므로 어느 네트워크와 손잡고 있는지가 경쟁사에게도 훤히 보입니다. 이는 피할 방법이 없고 감출 구조도 없습니다 — 광고 스택을 비밀로 하는 운용은 애초에 ads.txt 와 양립하지 않습니다. 범위에 대한 오해도 많으니 정리해 둡니다. 이 파일이 지키는 것은 웹의 광고 지면뿐입니다. 앱 인벤토리는 app-ads.txt 라는 별도의 파일이고, 게다가 둘 곳은 앱 스토어 등록 정보에 적은 개발자 사이트의 URL 이지 앱의 도메인이 아닙니다. 동영상에는 ads.cert 등 다른 구조가 있습니다. 그리고 마지막으로 — ads.txt 는 「사칭 인벤토리를 사지 못하게」 하기 위한 선언이지 수익을 늘리는 설정이 아닙니다. 두었다고 단가가 오르는 것이 아니라 두지 않으면 구매자가 꺼리게 되는 성질의 것입니다.
📖 사용법
-
1
퍼블리셔 ID 입력Google / Amazon ID 입력.
-
2
네트워크 선택사용 중인 SSP 체크.
-
3
배포https://example.com/ads.txt 배치.
❓ 자주 묻는 질문
DIRECT vs RESELLER 차이?
TAG-ID 필수?
ads.txt 반영 시간?
🔗 관련 도구
🐛 이 도구에서 문제가 발생했나요?
무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.
보고 감사합니다!
운영자에게 전달되었습니다. 개선에 사용됩니다.