본문으로 건너뛰기

"infra" 태그로 연결된 5개 게시물개의 게시물이 있습니다.

모든 태그 보기

구글 애드센스 가치가 별로 없는 콘텐츠 해결: WAF와 YMYL 가드

· 약 9분
Jaybee
AI & Robotics Engineer

구글 애드센스 가치가 별로 없는 콘텐츠 해결: WAF와 YMYL 가드

💡 핵심 요약 (Executive Summary)

  • 직면했던 난제: 70여 편의 독창적인 심층 엔지니어링 아티클을 보유하고 있음에도, 구글 애드센스 심사에서 '주의 필요: 가치가 별로 없는 콘텐츠' 및 간헐적인 '사이트가 다운되었거나 사용할 수 없음' 사유로 승인이 거절되는 현상 발생.
  • 발견된 3대 근본 원인:
    1. 저품질 대량 생성 콘텐츠(Scaled Content) 오판: 7개 언어(de, es, fr, ja, pt-BR, zh-Hans, zh-Hant)의 기계 번역 빌드가 650개 이상의 중복 URL을 양산하여 도메인 신뢰도 저하.
    2. YMYL 민감 콘텐츠 정책 위반 위험: docusaurus.config.ts의 정적 스크립트 주입으로 인해 자살/위기 텍스트 감지 연구 페이지(/blog/mental-crisis*)에 광고 스크립트와 카드 컴포넌트가 노출되는 정책 위험 발생.
    3. 클라우드플레어 WAF 봇 차단: Cloudflare Bot Fight Mode와 잘못된 WAF Skip 규칙이 구글 애드센스 크롤러(Mediapartners-Google)에 403 차단 및 캡차 챌린지를 부과하여 사이트 다운으로 오인.
  • 프로덕션 해결책:
    1. 동적 라우팅 기반 스크립트 가드: Root.tsx에서 클라이언트 경로를 실시간 감지하여 YMYL 페이지에서 pauseAdRequests = 1을 강제하고 광고 DOM 요소를 원천 격리.
    2. 핵심 언어 집중 및 GSC 구형 사이트맵 제거: 2개 핵심 언어(en, ko)로 압축하고, 구글 공식 Webmasters API를 통해 7개 구형 사이트맵을 프로그래밍 방식으로 일괄 삭제(HTTP 204).
    3. Cloudflare WAF 스킵 규칙 정상화: 10041 파라미터 충돌을 해소하고 Bot Fight Mode를 비활성화하여 검증된 검색봇 무지연 통과 설정.

[2026] 깃허브 블로그 구글 애드센스 승인: ads.txt 404 해결법

· 약 6분
Jaybee
AI & Robotics Engineer

구글 애드센스 심사 및 크롤러 수집 파이프라인

📌 핵심 요약 (TL;DR)

  • 문제(Problem): 워드프레스나 티스토리 같은 동적 CMS와 달리, GitHub Pages나 Cloudflare Pages 기반의 Docusaurus, Next.js 등 정적 웹사이트(SSG)에서는 "수익 손실 위험 - ads.txt 파일 누락" 경고와 크롤러 접근 차단으로 인한 심사 탈락이 빈번하게 발생합니다.
  • 해결(Solution): Docusaurus의 headTags 설정을 통해 번들 성능 저하 없이 소유권 확인 메타태그를 정적 HTML에 주입하고, static/ads.txt로 루트 배포를 단일화하며, Cloudflare WAF에서 Googlebot-AdsTxt 크롤러를 예외 허용하도록 설정합니다.
  • 결과(Result): 크롤러 접근 성공률 100%, /ads.txt 404 응답 0건 달성, Lighthouse 성능 및 SEO 95점 이상 유지하며 안전하게 애드센스 심사 조건을 완비했습니다.

GitHub Pages 커스텀 도메인 & Cloudflare DNS 무중단 연동 가이드

· 약 6분
Jaybee
AI & Robotics Engineer

개발자라면 누구나 한 번쯤 GitHub Pages의 무료 서브도메인(username.github.io/project)을 이용해 블로그를 운영해 보았을 것입니다. Git 푸시 한 번으로 전 세계에 정적 사이트가 배포되고 서버 유지비가 들지 않는다는 점은 초기 개발자 블로그에 최고의 장점입니다.

하지만 전문적인 기술 브랜딩과 구글 애드센스(Google AdSense) 수익화를 준비하는 순간 타협할 수 없는 기술적 한계에 부딪힙니다. 구글 애드센스는 *.github.io와 같은 무료 2차 서브도메인의 사이트 등록 및 심사 신청을 정책적으로 원천 차단하기 때문입니다. 또한 포털 검색엔진에서 쌓이는 도메인 지수(Domain Authority)가 깃허브가 아닌 온전한 '내 자산'으로 누적되게 하려면 반드시 **독립 커스텀 도메인(Apex Domain, 예: globaldevlog.com)**이 필수적입니다.

정적 사이트(SSG) 엔지니어링 시리즈의 첫 번째 편인 이번 글에서는, 기존 jbjihwan.github.io/global_blog에서 독립 도메인 https://globaldevlog.com으로의 무중단 마이그레이션을 완수한 Porkbun + Cloudflare + GitHub Pages 3계층 고가용성 아키텍처와 DNS 설정 실무를 완벽하게 정리합니다.

GitHub Pages 애드센스 승인 가이드: 커스텀 도메인 & ads.txt 연동

· 약 6분
Jaybee
AI & Robotics Engineer

개발자 블로그를 GitHub Pages의 무료 서브도메인(username.github.io/project)에 배포하여 운영하는 것은 간편하지만, 전문적인 브랜딩과 수익화를 시작하는 순간 거대한 벽에 부딪힙니다. 구글 애드센스는 *.github.io와 같은 무료 서브도메인의 사이트 등록을 원천 차단하기 때문입니다. 애드센스 게시자 심사를 통과하고 검색엔진 도메인 점수(Domain Authority)를 쌓으려면 반드시 독자적인 **독립 커스텀 도메인(Apex Domain)**이 필요합니다.

정적 사이트(SSG)의 도메인 이전은 단순한 DNS 주소 변경에 그치지 않습니다. 도메인 등록기관(Registrar)의 네임서버 위임, 엣지 SSL 암호화, CNAME 평탄화(Flattening), Docusaurus 빌드 파이프라인의 루트 재매핑, ads.txt 호스팅, 그리고 각 검색엔진 포털의 특유한 UI 트랩을 모두 해결해야 합니다.

본 포스팅에서는 기존 jbjihwan.github.io/global_blog에서 독립 도메인 https://globaldevlog.com으로의 무중단 이전 아키텍처와 구글 서치 콘솔, 네이버 서치어드바이저, 빙 웹마스터 도구의 실제 트러블슈팅 과정을 상세히 정리합니다.

[2026] npm audit fix --force 함정과 해결법: npm 취약점 0개 만들기

· 약 5분
Jaybee
AI & Robotics Engineer

프론트엔드나 정적 블로그를 운영하는 개발자라면 누구나 한 번쯤 등골이 서늘해지는 순간을 겪어보셨을 것입니다. 평화롭게 npm audit을 입력했을 때, 터미널 가득 시뻘건 경고 문구가 쏟아져 내리는 장면입니다:

45 vulnerabilities (15 moderate, 15 high, 15 critical)
To address all issues (including breaking changes), run:
npm audit fix --force

Critical, Remote Code Execution (원격 코드 실행), Prototype Pollution (프로토타입 오염) 같은 무시무시한 단어들을 보면, 당장 빨간 불을 끄기 위해 무의식적으로 npm audit fix --force를 타이핑하고 싶어집니다.

하지만 Docusaurus, Next.js, Hugo처럼 **정적 사이트 생성기(SSG)**를 통해 빌드된 후 GitHub Pages나 AWS S3에 배포되는 아키텍처에서는, 이러한 무지성 다운그레이드가 오히려 멀쩡한 프로덕션 빌드를 깨뜨리는 최악의 악수가 되곤 합니다.

본 포스팅에서는 **정적 웹 사이트의 위협 모델(Threat Model)**을 명확히 정의하고, 빌드 도구의 취약점과 런타임 취약점의 본질적인 차이를 파헤치며, 정적 블로그에서 진짜로 지켜야 할 4단계 실전 보안 하드닝(Security Hardening) 청사진을 공유합니다.