개발 slecs

AdSense 심사 앞두고 글쓴이 거짓말 전부 지운 날

목차

오늘 저녁 22시 블록은 사실 하나의 질문에서 시작됐다: "이 글들, AdSense 심사관이 보면 뭐라고 할까?"

자동 생성 글에 "I've personally tested this" 같은 표현이 섞여 있다는 걸 알고는 있었다. 크게 신경 안 쓰고 있다가, 슬러그 URL 정리하면서 canonical 링크를 점검하던 중에 문득 눈에 밟혔다. 봇이 만든 글인데 "on real client work"라고 써놨으니, 심사관이 보면 바로 걸린다. 거기서부터 이 한 시간의 작업 순서가 정해졌다.

가짜 1인칭 표현: 능동태만 잡으면 안 됐다

처음엔 I've tried, I tested, In my experience 같은 능동형 1인칭만 걸러내고 있었다. 그런데 수동태 버전이 문제였다. has been evaluated, was tested on real client work, has been proven in practice — 행위자는 숨겼지만 "실제 체험"을 주장하는 구조는 동일하다. AdSense 정책이 보는 건 "사실 여부를 주장하는가"지, 문장 형식이 능동이냐 수동이냐가 아니다. 스크러버가 이걸 통째로 놓치고 있었던 거다.

패턴 레이어를 추가했다:

PASSIVE_HANDS_ON = [
    r"has been (evaluated|tested|proven|used) (on|in|with) (real|actual|live)",
    r"was (applied|tested|evaluated) (on|in) real",
    r"on real client work",
]

능동+수동 양쪽을 커버하고 나서야 스크러버가 쓸만해졌다. 여기서 멈추지 않고 generate.py 파이프라인 진입 시점에도 강제 제거 로직을 박아 넣었다. 생성 단계에서 이미 걸러지니, 스크러버는 2차 방어선 역할을 하게 됐다.

187개 기존 글 일괄 재작성

패턴만 고쳐선 기존 글에 아무 효과가 없다. 이미 퍼블리시된 글 187개에 가짜 표현이 남아 있으니, 새 파이프라인만 고치면 기존 글은 그냥 오염된 채로 두는 꼴이다. Sonnet으로 본문을 재작성하는 배치 툴을 scrub_first_person.py에 붙였다.

항목 내용
대상 글 수 187개
재작성 모델 Sonnet
탐지 패턴 능동 1인칭 + 수동태 hands-on 주장
처리 방식 본문 단위 재작성 (부분 치환 아님)

단순 정규식 치환이 아니라 모델로 재작성한 건, 표현만 바꿨을 때 문장이 어색해지는 경우가 너무 많아서다. "I found that X works well" 같은 걸 단순히 잘라내면 문단이 흐름을 잃는다. 재작성이 훨씬 깔끔하다.

블로그 이전 + canonical 정리

scrub 작업이 어느 정도 궤도에 오른 뒤, 미뤄두던 slecsblog.com 이전을 처리했다. about, post, privacy 템플릿과 포트폴리오 페이지들에 흩어져 있던 canonical 태그를 일괄 정리했고, 브랜드 커버카드도 이번에 같이 붙였다.

AdSense 정책상 canonical URL 일관성은 꽤 무게 있는 체크포인트다. 같은 콘텐츠가 여러 URL로 노출되면 중복으로 읽히고, 심사에서 불리하게 작용한다. 이전 타이밍과 canonical 정리가 맞아떨어진 건 우연이었지만, 결과적으로는 좋은 순서였다.

Footer와 Header에서 저자 표기도 손봤다. "편집팀"이라는 표현을 정직하게 쓰는 방향으로. 개인 체험을 주장하는 저자명을 내세우는 건 canonical 못지않게 리스크가 크다.

글 길이 기준 상향

scrub 돌리면서 기존 글들 길이가 전반적으로 짧다는 게 눈에 들어왔다. 1200~2500자 범위는 AdSense 품질 기준을 통과하기에 빠듯하다. bulk_seed.py의 기준을 올렸다:

  • 발행 글 길이: 1200~2500자 → 2500~4000자
  • 최솟값 floor: 800자 → 2000자

짧은 글이 많을수록 "thin content" 판정 리스크가 올라간다. 길이 기준을 올리는 건 단기적으로 생성 비용이 오르지만, 심사 통과율과 글 품질 모두에 더 낫다.


결국 이 한 시간은 단일 목표로 수렴한다: 정직하게 만든 콘텐츠라는 걸 코드 레벨에서 보장하는 것. 가짜 체험 주장 제거 → 기존 187개 일괄 정정 → canonical 정리 → 저자 표기 수정 → 글 길이 기준 강화까지, 작업 하나하나가 따로 노는 것처럼 보이지만 AdSense 심사라는 하나의 맥락으로 꿰어진다. docs에 정책 기록까지 남긴 건, 다음에 같은 판단을 반복하지 않기 위해서다.


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

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

댓글 0

첫 댓글 달아줘.