4개 언어 사이트, SEO 스터디에서 배운 대로 AI 팀에게 전면 재수술을 시켰습니다 (SEO·AEO·GEO 실전기)
코딩을 모르는 비개발자가 AI 에이전트 팀(Claude Code)과 함께, 한국어·번체중문·간체중문·영어 4개 언어 사이트를 구글 공식 가이드 기준으로 전면 재설정한 3주 기록입니다. 실패담 포함입니다.
━━━━━━━━━━━━ ━━━━━━
📌 3줄 요약
━━━━━━━━━━━━━━━━━━
1. SEO·AEO·GEO 스터디에서 배운 구글 다국어 사이트 공식 원칙(언어별 URL + hreflang + 페이지 언어 순수성)대로, 한 페이지에 4개 언어가 섞여 있던 사이트를 언어별 독립 페이지로 전면 분리했습니다.
2. 사람이 한 게 아니라 AI 에이전트 오케스트레이션(서브에이전트 배치)으로 51페이지 재생성 + 번역 백로그 0까지 완주했고, 재발 방지용 자동 검사기(언어 섞임 검출)를 파이프라인에 심었습니다.
3. 그 과정에서 프로덕션을 한 번 날려먹고 복구했습니다. 이 실패에서 배운 검증 원칙이 이 글의 가장 비싼 내용입니다.
숫자로 보는 결과 (Before → After)
· 자체 SEO·AEO 점검 점수: 8.2/10 → 9.7/10
· 모바일 렌더 차단(폰트): 22.6초 → 제거
· 접근성 색 대비 위반(axe): 40건 → 1건
· 한 페이지 H1 개수: 최대 24개 → 1개
· 미번역 페이지: 51p → 0p
· 언어 페이지 무게: 255KB → 133KB
· 언어 전환 시 CSS 재다운로드: 매번 82KB → 0바이트(캐시)
━━━━━━━━━━━━━━━━━━
0. 배경 — 왜 다국어 SEO였나
━━━━━━━━━━━━━━━━━━
저는 한국·대만·중국을 잇는 사업을 준비하면서 서비스 사이트(kndli.com)를 한국어 / 繁體中文 / 简体中文 / English 4개 언어로 운영하고 있습니다. 문제는, 처음에 "편하다"는 이유로 한 페이지 안에 4개 언어를 다 넣고 버튼으로 보여주는 언어만 바꾸는 방식으로 만들었다는 것.
사용자한테는 그럴듯해 보이지만, 검색엔진 입장에서는 재앙이었습니다. 실제 당시 화면을 보시면 — URL은 셋 다 똑같이 kndli.com/index.html인데 버튼에 따라 다른 언어가 뜹니다.
📷 [이미지 1] before_1_같은URL_번체중문.png
한자가 적혀 있는 웹사이트
📷 [이미지 2] before_2_같은URL_한국어.png
한국사이트 스크린샷
📷 [이미지 3] before_3_같은URL_영어.png
개와 고양이가 표시된 웹사이트의 스크린샷
그리고 헤딩 구조를 뜯어보면 이랬습니다. H1이 한 페이지에 4개 — 한국어·번체·간체·영어가 나란히.
📷 [이미지 4] before_4_H1_4개_헤딩맵.png
한국어 텍스트가 포함된 웹페이지의 스크린샷
· 구글이 "이 페이지는 무슨 언어 페이지지?"를 판단하지 못함 (구글은 보이는 콘텐츠로 언어를 판단하는데, 4개 언어가 다 "보이는" 상태)
· H1이 언어별로 하나씩, 한 페이지에 4개
· 대만 사용자가 검색해도 한국어 페이지가 걸리거나, 아예 안 걸림
━━━━━━━━━━━━━━━━━━
1. 스터디 전에 했던 것 (7월 중순~24일) — 기초 체력 만들기
━━━━━━━━━━━━━━━━━━
스터디 들어가기 전, AI 팀에게 사이트 전면 진단을 시켰습니다. 이때 나온 문제와 수리:
· AEO 기초: 전 페이지 JSON-LD(구조화 데이터), FAQ 블록(질문형 소제목), Quick Answer 블록, llms.txt와 robots.txt에 AI 크롤러 명시 허용 → 자체 점검 점수 8.2 → 9.7/10
· 성능: 웹폰트 6벌이 첫 화면을 막고 있어서 모바일에서 렌더 차단 22.6초가 나오던 것을 비차단 로딩으로 수술. 중국어 폰트는 "필요할 때만" 로딩하게 변경
· 접근성 = SEO다: axe 실측으로 색 대비 위반 40건 → 1건 (브랜드 컬러를 살짝 어둡게 조정해서 해결). 접근성 개선은 구글이 보는 페이지 품질과 직결됩니다
· 검색엔진 등록: 구글 서치콘솔 + 네이버 서치어드바이저 소유 인증 등록 (메타태그 + HTML 파일 2중)
💡 여기서 배운 것: "예쁘게 만들기"보다 측정 먼저. PageSpeed, axe, 서치콘솔 같은 공짜 도구가 문제를 숫자로 보여줍니다. 숫자가 있어야 AI에게 "이거 고쳐"라고 정확히 시킬 수 있습니다.
━━━━━━━━━━━━━━━━━━
2. 스터디에서 만난 결정타 — 구글 다국어 공식 문서
━━━━━━━━━━━━━━━━━━
스터디장님이 공유해주신 구글 검색센터의 '다지역 및 다국어 사이트 관리' 공식 문서가 결정타였습니다. 제 사이트가 정확히 반대로 하고 있던 원칙 4가지:
1) 언어 버전별로 다른 URL을 써라 — 쿠키/버튼으로 언어를 바꾸는 방식은 구글이 크롤링하지 못할 수 있음 (Googlebot은 미국에서, Accept-Language 없이 옴)
2) hreflang으로 언어 버전을 알려줘라
3) 페이지 언어가 명확해야 한다 — 한 페이지에는 한 언어만. 나란히 번역을 두지 마라 (구글은 lang 속성이 아니라 눈에 보이는 콘텐츠로 언어를 판단)
4) 자동 리디렉션 하지 마라 — 사용자 언어를 추측해서 튕기지 말고, 링크로 선택하게 하라
읽으면서 식은땀이 났습니다. 저는 1번도, 3번도 어기고 있었으니까요.
━━━━━━━━━━━━━━━━━━
3. 배운 대로 전면 재설정 — AI 오케스트레이션 투입
━━━━━━━━━━━━━━━━━━
여기서부터가 이번 사례의 본편입니다. 사람 손으로 페이지 수십 개를 언어별로 쪼개는 건 불가능해서, AI 에이전트 팀에게 공장 라인처럼 시켰습니다.
[3-1. 구조 재설계]
· URL 구조: kndli.com/(한국어 정본) + /tw/ + /cn/ + /en/ — 구글이 권장하는 하위 디렉터리 방식 (ccTLD는 비싸고, URL 파라미터는 비권장)
· 전 페이지에 hreflang 5종 태그: ko / zh-Hant / zh-Hans / en / x-default
· 언어 전환은 리디렉션 없이 상단 KO·繁·简·EN 링크로
[3-2. 페이지 언어 순수화 (H1 정리)]
· 한 페이지에 4개 언어가 섞여 있던 것을 페이지당 단일 언어로 재생성
· H1은 페이지당 정확히 1개, H1→H2→H3 계단 구조로 재정리
· 브라우저 확장(HeadingsMap 류)으로 언어판마다 헤딩 트리를 눈으로 검수
수술 후의 간체중문 페이지(/cn/) 헤딩 구조입니다. 아까 H1 4개짜리와 비교해 보세요 — H1 1개, 그 아래 H2→H3→H4가 간체중문 하나로만 내려갑니다.
📷 [이미지 5] after_1_cn페이지_H1_1개_헤딩맵.png
중국사이트 스크린샷
[3-3. 오케스트레이션으로 대량 처리]
· 메인 AI(총괄)가 서브에이전트 수십 개를 병렬로 돌려 언어판 51페이지 재생성 + 번역
· 미번역 잔량 관리: 30p → 16p → 9p → 0p (백로그 파일이 빌 때까지 배치 반복)
· 자동 게이트 2종을 파이프라인에 심음:
- 언어 순수성 검사기: 한 페이지에 여러 언어가 섞이면 배포 전에 잡아냄
- 공개 안전 검사기: 내부 정보·키가 공개 페이지에 새는지 검사
💡 포인트: AI에게 "번역해줘"가 아니라 "기준(구글 문서)-작업-검증-게이트"를 한 세트로 시키는 것. 검사기를 만들어두면 다음부터는 AI가 실수해도 시스템이 잡습니다.
━━━━━━━━━━━━━━━━━━
4. 💥 실패담 — 프로덕션을 날려먹은 날
━━━━━━━━━━━━━━━━━━
솔직하게 공유합니다. 언어판 재생성 중에 "타 언어 삭제" 스크립트가 목표 언어까지 지워버려서, 라이브 사이트의 중문·영문 페이지에서 본문이 통째로 사라진 적이 있습니다. 배포는 자동이었고, 저희는 한동안 눈치채지 못했습니다.
왜 몰랐을까요? 검증을 "페이지가 200 OK로 열리는가"로만 했기 때문입니다. 빈 페이지도 200은 뜹니다.
복구하면서 세운 원칙:
✅ 검증은 H1 존재 + 헤딩 개수 + 핵심 문구 실측으로 (예: /tw/에 "不會寫程式,也能有 AI 團隊。"가 실제로 렌더되는지)
✅ 콘텐츠를 지우는 방식 대신 표시를 전환하는 방식을 우선 검토 (파괴는 되돌리기 어렵다)
✅ 프로덕션 자동 배포 앞에는 게이트(검사기 통과 + 실기기 확인)를 둔다
이 사고 덕분에 위의 검사기들이 태어났습니다. 수업료 치고는 쌌다고 생각합니다.
━━━━━━━━━━━━━━━━━━
5. GEO의 실전 — "중국에서는 구글폰트가 안 열립니다"
━━━━━━━━━━━━━━━━━━
언어판을 분리하고 나니 지역(GEO) 문제가 보이기 시작했습니다. 가장 큰 발견:
간체중문 페이지(/cn/)가 구글폰트(fonts.googleapis.com)를 불러오고 있었습니다. 중국 본토에서는 구글이 차단이라, 대륙 방문자는 폰트 로딩을 기다리며 수 초~수십 초 멈출 수 있습니다. "중국어로 번역했다"와 "중국에서 잘 열린다"는 완전히 다른 문제였던 겁니다.
수술 내용 (전부 AI 팀이 실행, 저는 결재만):
· /cn/에서 구글폰트 참조 완전 제거 → 중국 기기의 시스템 폰트(PingFang, 微软雅黑 등)로 즉시 렌더
· 제목용 영문 폰트(Playfair Display)는 우리 도메인에 자체 호스팅 (외부 의존 제거)
· 페이지마다 박혀 있던 인라인 CSS/JS 130KB를 공용 파일로 추출 → 페이지 무게 255KB → 133KB, 언어 전환 시 CSS 재다운로드 0바이트 (브라우저 캐시 재사용, 실측 확인)
📷 [이미지 6 · 선택] 언어 전환 시 Network 탭에서 home.css가 "memory cache"로 뜨는 화면 (F12 → Network → /cn/에서 /tw/로 이동)
중국어로 된 웹사이트 스크린샷
━━━━━━━━━━━━━━━━━━
6. 측정과 추적 — 등록 전후로 달라진 것
━━━━━━━━━━━━━━━━━━
· 구글 서치콘솔: 소유 확인 + sitemap 제출. 언어판 분리 후 언어별 페이지가 개별 색인되기 시작
📷 [이미지 7 · 선택] 서치콘솔 → 색인 → 페이지 화면
한국 구글 플레이 스토어 스크린샷
· 네이버 서치어드바이저: 소유 인증 완료 — 네이버 검색 노출도 준비됐습니다 (한국 사용자 유입의 필수 관문인데 의외로 다들 구글만 등록하고 잊더라고요)
· AI 노출 측정(AEO/GEO 추적): 외부 전문 기관의 공개 루브릭으로 자가측정 대시보드를 만들어 추적 중 — 3일간 66.25 → 72.75점(+6.5). "AI 답변엔진이 우리를 인용하는가"를 감이 아니라 숫자로 봅니다
· 페이지에는 JSON-LD + FAQ + Quick Answer가 깔려 있어서, 구글뿐 아니라 AI 검색(ChatGPT·퍼플렉시티류)이 인용하기 좋은 구조를 유지합니다
기타 추가 작업 - 네이버 웹사잍 노출 작업!
한국 검색 엔진의 스크린샷
━━━━━━━━━━━━━━━━━━
7. 이번 스터디+실전에서 배운 것 5가지
━━━━━━━━━━━━━━━━━━
1) 공식 문서가 최고의 스터디 교재다. 블로그 백 개보다 구글 검색센터 문서 하나. 스터디에서 같이 읽으니 실행까지 갔습니다.
2) 다국어 SEO의 핵심은 번역이 아니라 구조다. 언어별 URL, hreflang, 페이지 언어 순수성 — 이 3개가 없으면 번역 품질은 의미가 없습니다.
3) GEO는 "그 나라에서 실제로 열리는가"까지다. 중국 구글폰트 차단 같은 건 번역만 봐서는 절 대 안 보입니다.
4) AI에게 작업만 시키지 말고 검증 게이트를 만들게 하라. 검사기 하나가 사고 하나를 영구히 막습니다. 그리고 검증은 200 OK가 아니라 콘텐츠 실측으로.
5) 비개발자여도 됩니다. 저는 코드를 못 씁니다. 대신 기준(구글 문서)을 이해하고, AI 팀에게 기준-작업-검증을 세트로 시키고, 결재만 했습니다.
한국어 텍스트가 표시된 컴퓨터 화면의 스크린샷
━━━━━━━━━━━━━━━━━━
다음 계획
━━━━━━━━━━━━━━━━━━
· 하위 페이지 166개에 같은 폰트/공용화 수술 확대
· 서치콘솔에서 언어별 색인·노출 추이 4주 추적 후 후속 공유~
이번 스터디 덕분에 정말 좋은 지식을 많이 쌓였고 성장했고요. 이렇게 설정해야 바이브 코딩으로 만들어진 웹사이트도 잘 노출할 수 있는 세티값 - 잘 배웠습니다! 감사합니다 🙌