6만 페이지 AI 웹사이트를 10달러로 만들고 12시간에 GPTBot이 3만 번 이상 크롤링한 실험
핵심
이 웹사이트는 순수 실험용으로 설계되었으며, 대규모 프로그래매틱 SEO 사이트의 실제 트래픽과 AI 크롤러의 행동을 관찰하기 위한 것이다. AI로 생성된 콘텐츠만으로 지속 가능한 비즈니스를 구축하는 방법 가이드가 아니다.
웹사이트 구축 배경
프로그래매틱 SEO의 함정
- 트래픽만을 위해 페이지를 대량 생성하면 두 가지 결과 중 하나가 발생한다.
- 수주 내 Google의 디인덱싱(deindexing)으로 트래픽이 급락한다. Google 시스템은 규모에서 얇고 템플릿화된 콘텐츠 감지에 점점 능숙해지고 있다.
- 처음에는 성장세를 보이다가 수개월에 걸쳐 수동 검토나 알고리즘 업데이트로 인해 서서히 하락한다.
- 이 패턴이 업계 전반에서 반복적으로 나타나고 있다. 페이지 생성 비용이 극도로 저렴해져 진입 장벽이 거의 없으므로, Google이 공격적으로 대응하고 있다.
실험의 진짜 목적
- SEO가 아니라 봇의 행동 방식이다. 특히 GPTBot이 백링크나 사회적 신호가 전혀 없는 새로운 도메인을 이렇게 적극적으로 크롤링할 것이라는 예상을 하지 못했다. 이것이 진정한 발견이었다.
StateGlobe.com 구축 결과
규모
- 200개 국가에 걸친 디지털 마케팅, SEO, 콘텐츠 마케팅, 웹 기술 관련 통계 데이터(Statista 스타일)를 다루는 웹사이트
- 모든 페이지가 AI로 생성됨
- 6만 개 페이지를 30분 이내에 생성
- 총 API 비용: 10달러 미만
- 모델: OpenAI의 Chat Completions API를 통한 gpt-4.1-nano
- 호스팅: Cloudflare Workers + D1 (서버리스, 엣지 렌더링)
기술 구현
생성 파이프라인
- 분류 체계: 300개 통계 주제 × 200개 국가 = 6만 개의 고유 조합
- 생성: Node.js 스크립트가 gpt-4.1-nano에 실시간 API 호출을 수행하며, 제어된 동시성(50개 병렬 요청)과 토큰 버킷 속도 제한기를 적용
- 출력: 각 페이지는 제목, 메타 설명, 5개의 핵심 통계, 3개의 분석 문단, 2개의 FAQ 항목으로 구성되며 모두 구조화된 JSON 형식
- 임포트: 결과를 Cloudflare D1(서버리스 SQLite)에 대량 임포트
프롬프트와 비용
- 프롬프트는 모델에 업계 트렌드를 기반으로 한 2026년 예측을 생성하도록 요청
- 각 응답 비용은 gpt-4.1-nano를 max_tokens: 700, response_format: json_object로 사용할 때 1센트의 극소 부분
- Cloudflare Workers: 엣지 렌더링 HTML, 빌드 단계 없음, 정적 파일 없음. 모든 페이지는 D1 데이터에서 요청 시 조립됨
- Cloudflare D1: 모든 6만 개 페이지와 방문 분석을 저장하는 서버리스 SQLite
- 동적 OG 이미지: @resvg/resvg-wasm를 사용해 PNG로 실시간 생성, Inter 글꼴은 CDN에서 로드. 사전 생성 이미지나 저장소 비용 없음
- 깔끔한 URL: /brazil/seo-budget-allocation-statistics 형식, .html 확장자 없음, 적절한 404 헤더
- SEO: 구조화된 데이터(Article, FAQPage, BreadcrumbList), XML 사이트맵(페이지 나눔), 정규 URL, 내부 링크(국가별 동일 주제, 주제별 동일 국가)
- 총 호스팅 비용: Cloudflare 무료 티어에서 사실상 무료
크롤링 데이터 분석
배포 직후 크롤링 현황
- GPTBot 단독으로 2만 9천 개 이상의 요청 발생
- GPTBot은 초당 약 1개의 요청 속도로 웹사이트를 체계적으로 크롤링
- OAI-SearchBot과 ChatGPT-User도 나타남
- GoogleOther는 60개 이상의 요청으로 나타남
- Googlebot, AhrefsBot, PerplexityBot 순서로 따라옴
세부 봇 요청 수 (서버 측 추적 전 집계)
- GPTBot: 5,200개 이상
- GoogleOther: 140개 이상
- OAI-SearchBot: 94개
- Googlebot: 11개
- AhrefsBot: 7개
- PerplexityBot: 2개
- ChatGPT-User: 1개
전체 통계
- 서버 측 추적이 완전히 작동했을 때 Cloudflare의 자체 분석에는 워커에 대한 3만 7천 개 이상의 총 요청이 표시됨
- GPTBot이 Googlebot보다 엄청난 격차로 가장 공격적인 크롤러였다.
예상 밖의 결과
- 저자는 이전에 많은 사이트를 출시했고 Googlebot 방문과 일부 SEO 도구 크롤러의 출현을 예상했다. 이는 정상이다.
- 예상하지 못한 점: OpenAI의 GPTBot이 백링크, 소셜 공유, Search Console 제출이 전혀 없는 새로운 도메인을 배포 직후 몇 분 내에 초당 1개의 요청 속도로 타격했다. XML 사이트맵을 통해 사이트를 발견하고 모든 것을 소비하기 시작했다.
- Googlebot이 같은 기간에 11개의 요청을 했을 때 GPTBot은 5,200개 이상을 했다. 이는 470배의 크롤링 강도 차이이다.
분석 대시보드 구축
추적 방식의 전환
- 처음에는 클라이언트 측 비콘(navigator.sendBeacon)을 사용했지만, 봇은 JavaScript를 실행하지 않으므로 모든 봇 트래픽을 놓치고 있었다.
- 해결책은 서버 측 추적이었다.
- 워커에 대한 모든 요청은 page_slug, user_agent, 국가(cf-ipcountry에서), 그리고 is_bot을 D1에 직접 기록
- 봇 감지는 패턴 목록(GPTBot, Googlebot, AhrefsBot 등)에 대해 실행
- ctx.waitUntil()는 응답을 차단하지 않으면서 D1 쓰기가 완료되도록 보장
- 클라이언트 측 비콘을 완전히 제거, 하나의 깔끔한 추적 경로
대시보드 기능
- 인간 대 봇 트래픽(오늘, 이번 주, 전체 기간)을 별도의 요약 카드로 표시
- 일일 트래픽 차트(인라인 SVG 라인 차트, 지난 30일, 인간 대 봇)
- 상위 페이지, 상위 봇, 상위 인간 사용자 에이전트
- 최근 방문 목록(봇 배지 포함, 페이지 나눔)
- 사전 추적 예상치를 총계에 포함하되 명확히 표시
봇 확인 (IP 검증)
사용자 에이전트 스푸핑 문제
- 사용자 에이전트 문자열은 누구든지 스푸핑할 수 있다. curl 요청에 -A "GPTBot"을 사용하면 실제 봇 방문으로 계산된다.
IP 검증 구현
- openai.com/gptbot.json, searchbot.json, chatgpt-user.json에서 공식 IP 범위를 다운로드
- 워커 내에서 직접 CIDR(클래스리스 도메인 간 라우팅) 매칭 엔진을 구축, IP 범위를 비트마스크로 파싱해 효율적 조회 수행
- 요청이 GPTBot, OAI-SearchBot, 또는 ChatGPT-User임을 주장할 때, 발신 IP(Cloudflare의 cf-connecting-ip 헤더에서)가 공식 범위에 대해 확인됨
- IP가 일치하지 않으면 인간으로 분류(잠재적 스푸핑자)
- 분석 페이지의 봇 카운트는 검증되며, OpenAI의 실제 인프라에서만의 요청만 OpenAI 봇 트래픽으로 계산된다.
검증 확인
- 터키에서 GPTBot 사용자 에이전트를 가진 curl 요청이 올바르게 인간 방문으로 표시되는 것을 확인했다. 봇이 아니다.
콘텐츠 은폐 기술
"이 실험 소개" 상자 처리
- 홈페이지에 사이트가 AI로 생성된 것임을 설명하는 "이 실험 소개" 상자를 추가했다. 그러나 GPTBot이 이를 읽고 콘텐츠를 할인할 가능성이 있다.
해결책: 클라이언트 측 렌더링
- HTML 소스는 빈 <div>와 Base64로 인코딩된 콘텐츠가 있는 <script> 태그를 포함
- 브라우저는 정상적으로 디코딩하고 표시
- JavaScript를 실행하지 않는 봇은 아무것도 보지 못하며, JS 소스 코드를 파싱하는 봇도 Base64를 디코딩하지 않으면 읽을 수 없다.
curl로 검증
- GPTBot으로 확인: "experiment", "AI Slop", "Metehan"에 대해 응답에서 0개 일치
전체 비용
| 항목 | 비용 | |------|------| | OpenAI API (gpt-4.1-nano, 6만 페이지) | ~$10 | | Cloudflare Workers | $0 (무료 티어) | | Cloudflare D1 | $0 (무료 티어) | | 도메인 (stateglobe.com) | ~$10/년 | | OG 이미지 생성 | $0 (온디맨드, 저장소 없음) | | 합계 | ~$20 |
전체 6만 페이지 웹사이트 생성 및 운영 비용은 약 20달러이다.
현실적 전망
프로그래매틱 SEO의 현실
- 저자는 솔직해지고 싶다. 이렇게 하고 순위 매김을 기대하지 말라.
- 경제학은 매력적이다. 6만 페이지를 10달러에, 무료로 호스팅. 하지만 Google은 이 전략을 천 번 봤다.
- 일반적인 경로:
- 1~2주: 페이지가 색인되고 Search Console에서 노출수를 본다.
- 3~4주: 트래픽이 흘러들고 검증된 느낌.
- 2~3개월: Google의 품질 시스템이 따라잡는다. 페이지가 디인덱싱되기 시작. 트래픽이 절벽에서 떨어진다.
- 4개월 이상: 대부분의 페이지가 색인에서 제거된다.
패턴 반복
- 저자는 수십 개의 프로그래매틱 SEO 프로젝트가 이 사이클을 겪는 것을 봤다. 콘텐츠 품질 기준은 계속 상승하고 있으며, 대량 생성 페이지는, 적절한 스키마, 사이트맵, 내부 링크가 있는 페이지도 더 이상 요구 사항을 충족하지 못한다.
이 사이트의 미래
- 이 사이트는 거의 확실히 디인덱싱될 것이다. 이는 실패가 아니다. 예상되는 결과이다. 실험은 순위 매김에 관한 것이 아니라 생태계를 관찰하는 것이었다.
주요 발견사항
1. GPTBot의 공격성
- GPTBot이 Googlebot보다 더 공격적이다. 권위가 없는 새로운 도메인에서 GPTBot은 처음 24시간 동안 Googlebot보다 470배 많은 요청을 했다. 요청 없이 거의 즉시 사이트를 발견하고 크롤링했다.
2. 봇 트래픽이 인간 트래픽을 압도
- 봇이 모든 요청의 약 98%를 차지했다. 사용자 에이전트 분석을 통해 서버 측에서 추적하지 않으면 실제로 사이트에서 일어나고 있는 일에 대해 맹목이다.
3. 사용자 에이전트 검증의 중요성
- IP 검증 없이는 누구든 봇 트래픽을 스푸핑할 수 있다. OpenAI는 IP 범위를 공개하므로 이를 사용해야 한다.
4. 대규모 웹사이트 생성의 장벽이 제거됨
- 6만 페이지, 10달러, 30분. 이는 동시에 인상적이고 개방 웹의 건강에 대해 공포스럽다.
5. SEO만을 위한 프로그래매틱 SEO는 막다른 골목
- Google이 이를 포착할 것이다. 실제 가치를 구축하거나 시도하지 말라.
6. Cloudflare Workers + D1 스택
- 이 종류의 프로젝트에는 견고한 스택이다. 엣지 렌더링, 서버리스 SQLite, 수천 개의 요청을 처리하는 무료 티어. 관리할 서버가 없다.
참고 자료
- 라이브 사이트: stateglobe.com
- 공개 분석(실시간 봇 및 인간 트래픽): stateglobe.com/analytics
- LinkedIn: linkedin.com/in/metehanyesilyurt
- X (Twitter): x.com/metehan777
사이트는 여전히 살아 있고 GPTBot은 계속 크롤링 중이다. 최신 수치를 확인하려면 분석 페이지를 참고하라.
이 웹사이트는 의도적으로 또 다른 AI Slop(AI로 생성된 저품질 콘텐츠)이다. AI 크롤러가 규모에서 프로그래매틱으로 생성된 콘텐츠와 어떻게 상호작용하는지 관찰하기 위한 실험으로 작성되었다. 실제 SEO를 위해 이를 시도할 생각이 있다면 하지 말라. 대신 진정으로 유용한 것을 구축하라.