광고 걷어내고 SEO 깔고 홈을 새로 씌운 오후
목차
오늘 오후 12시부터 3시까지, 딱 세 시간 동안 여러 사이트를 동시에 건드렸다. 커밋 목록만 보면 산만해 보이는데, 실제로는 하나의 큰 맥락 안에서 움직인 작업들이었다. 요약하자면 "광고 구조를 갈아엎고, 그 자리에 SEO 기반을 깔고, 홈과 UI를 새 기준으로 올려쌓은" 세 시간이다.
1. 광고 정책 대전환 — 스크립트 제거부터 CPM 규칙 주입까지
시작점은 광고였다. 여러 사이트의 Base.astro <head>에 쿠팡·모비온·AdSense 스크립트 로더가 주렁주렁 달려 있었는데, 이걸 전부 걷어냈다. 완전 광고 제거라기보다는 로더 방식 자체를 교체하는 작업이었다. 기존에는 head에서 스크립트를 직접 심었는데, 이 방식이 페이지 초기 렌더를 지연시키고 LCP에도 악영향을 줬다. funeral 쪽 모비온도 이 타이밍에 함께 제거했다.
그런데 광고를 걷어내기만 하면 수익이 빠진다. 그래서 동시에 반대편에서 수익 최적화 작업을 했다. 블로그 봇들(diet, funeral, insurance, lotto, opsvoro 등)의 generate.py에 AdSense CPM 체류시간 규칙을 프롬프트 레벨에서 주입했다. 단순히 글을 쓰는 게 아니라, 독자가 페이지에 머무는 시간을 늘리도록 글의 구조와 호흡을 설계하게 만드는 것이다. humanizer도 마찬가지로 style_block에 같은 규칙을 추가했다.
# humanizer.py style_block 에 추가된 규칙 (개념 예시)
# - 단락 전환 전 마무리 문장으로 다음 내용을 예고해 스크롤을 유도
# - 중간 소제목을 통해 F-패턴 스캔 독자를 본문으로 재진입시킴
# - 결론을 뒤로 미뤄 체류시간 확보
광고 지침 문서도 이 타이밍에 갱신했다. 기존에 있던 "광고 밀집배치 금지" 규칙을 폐기하고 배치 자유로 전환했다. 이전 지침이 너무 보수적이어서 실제 수익 최적화에 방해가 됐다는 판단이었다.
그리고 한 가지 사고 수습도 했다. www 배포 rsync 에서 .omc 디렉토리가 공개 노출된 일이 있었는데, 이번에 hedvion-CLAUDE.md에 .omc 제외를 명시적으로 박아넣었다. 작은 한 줄이지만 이런 게 쌓여야 다음 사람(또는 미래의 나)이 같은 실수를 안 한다.
2. 구조화 데이터 + 홈페이지 v2 리뉴얼 — 여러 repo 동시 적용
광고 작업과 거의 동시에, SEO 구조화 데이터 강화를 여러 사이트에 일괄 적용했다. 적용 패턴은 세 repo에 걸쳐 반복됐는데 내용은 같다:
| 추가 항목 | 역할 |
|---|---|
Organization + WebSite @graph |
브랜드 인식, 사이트 신뢰도 시그널 |
홈 ItemList |
주요 콘텐츠/도구 목록을 검색엔진에 구조화 전달 |
SearchAction (gov 포함) |
구글 사이트 내 검색 박스 노출 |
@graph 방식으로 Organization과 WebSite를 묶으면 구글이 두 엔티티의 관계를 한 번에 파악한다. 그 전까지는 페이지마다 단순 JSON-LD를 뿌리는 수준이었는데, 이번에 통일된 그래프 구조로 올렸다. SearchAction은 특히 gov 사이트에서 키워드 검색이 실제로 작동하는 걸 확인하고 넣었다 — 그냥 스펙 채우기가 아니라 동작 기반으로 붙였다.
홈페이지 v2 리뉴얼도 같은 맥락이다. 타입별 차별화를 키워드로 잡고, 레퍼런스 섹션의 시각 레이어를 다시 설계했다. 스티키 포지셔닝 오작동과 넘침 이슈가 이전부터 계속 버그 리포트로 올라오던 문제였는데, 이번 v2에서 같이 잡았다. PortfolioRow.astro도 이 흐름에서 손을 댔다.
3. job 사이트 전면 리디자인 + 배포 함정 문서화
세 번째 덩어리는 job 사이트였다. 이건 단순 패치가 아니라 전면 리뉴얼에 가까웠다.
디자인 레퍼런스로 두 가지를 참고했다:
- Wolfram Alpha 스타일: 계산기 찾기 홈 — 검색 중심, 깔끔한 인풋 박스
- onggeulda 스타일: 2단 계산기 UI — 사이드바 결과 + 본문 입력 레이아웃
Header.astro, Footer.astro, Layout.astro, RecentTools.astro를 전부 건드렸고, annual-leave.astro와 car-tax.astro 두 계산기 페이지는 새 UI 패턴으로 직접 리빌드했다. 썸네일도 이 타이밍에 갱신 — job뿐 아니라 money·insurance·gov도 리뉴얼 디자인을 반영해서 새로 뽑았다.
그런데 이 과정에서 배포 함정을 또 만났다. job 사이트는 nginx root가 /var/www/job으로 고정돼 있는데, 빌드만 해서는 반영이 안 된다. publish.sh의 rsync + build-ads 순서를 타야 한다. 게다가 이번 리뉴얼은 광고 제거 버전이라 AD-START 마커 카운트가 0이어서 build-ads가 실질적으로 no-op으로 동작한다. 이걸 처음 마주하면 "왜 빌드했는데 반영이 안 되지?"로 삽질한다. sites-detail.md에 이 함정을 명시적으로 박아놨다.
포트폴리오 문서도 같이 정비했다. 썸네일 갱신 트리거 조건(디자인 변경·신규 사이트)과, repo 이름 오기(portfolio-site → portfolio) 정정까지.
마무리
세 시간 동안 광고·SEO·UI·문서를 동시에 건드렸지만, 거슬러 올라가면 하나의 질문에서 출발했다: "지금 구조가 수익과 검색 양쪽에서 최적화돼 있는가?" 대답이 둘 다 "아니오"였고, 그래서 광고 로더를 걷어내고 체류 시간 규칙을 프롬프트 레벨로 내려보내고, 구조화 데이터를 그래프 방식으로 올리고, 홈과 job UI를 새 기준으로 올려쌓았다. 같은 패턴을 여러 repo에 반복 적용한 커밋이 많은 것도 그래서다 — 단일 변경이 아니라 전사 기준선을 올리는 작업이었다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.