$ cd /blog

SEO 진단툴이 시킨 대로 고치기 전에 — 「텍스트 비율 0.7%」의 진짜 원인은 글이 아니었습니다

SEO 진단툴이 짚은 3가지(설명문 길이·llms.txt·텍스트 비율)를 직접 재서 판단했습니다. 텍스트 비율 0.7%의 정체는 같은 CSS 122KB가 두 번 박힌 것이었고, 고친 뒤 배포 캐시 때문에 사이트가 40분 넘게 깨진 일까지 정리했습니다.


안녕하세요. Jay입니다!

사이트 주소만 넣으면 점수와 "지금 가장 중요한 3가지"를 뽑아 주는 SEO 진단 도구, 한 번쯤 돌려 보셨을 겁니다. 저도 직접 운영하는 도구 사이트를 넣어 봤는데, 이런 결과가 나왔습니다.

진단 항목 감점 도구의 처방
검색 결과 설명 길이 부적정 -10점 70~120자로 줄여라
AI 안내 파일(llms.txt) 없음 -20점 루트에 올려라
본문 대 코드 비율 0.7% -15점 글을 늘리고 스크립트를 줄여라

항목마다 "대신 고쳐 드릴게요 · 9,900원~" 버튼이 붙어 있었습니다. 고치기 전에 세 가지를 하나씩 직접 재 봤고, 결론은 이랬습니다. 하나는 무시, 하나는 해도 그만, 하나는 진짜 문제 — 그런데 진짜 문제의 원인은 도구가 말한 것과 달랐습니다.

📏 ① 설명문 길이 — 따르지 않았습니다

홈 설명문은 153자였습니다. 도구는 70~120자로 줄이라고 했죠.

그런데 흔히 도는 권장 길이는 대부분 영문 기준이고, 한글은 검색 결과에서 8090자 근처에서 잘립니다. 저는 지난번 Bing 경고 50건을 실측해서 기준을 한글 130170자, 핵심은 앞 80자 안에로 잡아 두었습니다. 120자로 줄이면 "도구 60개·6개 카테고리·로그인 없이" 같은 정보가 빠질 뿐입니다.

✅ 실측 근거가 있는 기준과 도구의 일반론이 부딪히면, 근거 쪽을 따릅니다.

🤖 ② llms.txt — 30분짜리, 기대는 낮게

llms.txt는 사이트 소개와 주요 페이지 목록을 마크다운으로 적어 루트(/llms.txt)에 두자는 제안 단계의 관례입니다. 2024년 9월 Answer.AI의 제레미 하워드가 제안했습니다.

없는 건 사실이었지만, 주요 AI 검색이 이 파일을 실제로 읽어 간다고 공식적으로 밝힌 곳은 아직 찾기 어렵습니다. "-20점"은 과장이라고 봤습니다. 다만 만드는 비용이 거의 없어서 추가했습니다.

  • 손으로 쓰지 않고 메뉴 데이터·카테고리 설명·블로그 목록에서 빌드할 때 자동 생성하게 했습니다
  • 손으로 쓴 목록은 도구가 늘 때마다 어긋나기 때문입니다

🔍 ③ 텍스트 비율 0.7% — 진짜 원인은 「글이 적어서」가 아니었다

도구의 처방은 "글을 늘려라"였습니다. 하지만 홈은 원래 도구 목록이 본문인 페이지라 글을 늘릴 이유가 없습니다. 그래서 HTML을 받아 뭐가 그렇게 큰지부터 분해했습니다.

구성 크기
HTML 전체 409KB
**인라인 <style> 244KB (60%)**
프레임워크 데이터(Next.js) 89KB
실제 텍스트 6KB

인라인 스타일 244KB를 열어 보니 UI 라이브러리(Ant Design) CSS 122KB가 똑같은 내용으로 두 벌 들어 있었습니다. 모든 페이지가 그랬습니다.

원인은 Next.js의 스트리밍 렌더링이었습니다. HTML을 여러 번 나눠 보내는데, 그때마다 스타일을 꺼내는 함수가 다시 불리고, 라이브러리가 이미 보낸 스타일까지 매번 전부 내보내고 있었습니다. 라이브러리에 "이미 꺼낸 건 건너뛰기"(once) 옵션이 있어서 그걸 켜자 중복이 사라졌습니다.

⚠️ 여기서 함정이 하나 더 있었습니다. 이 옵션만 켜면 스타일 끝에 붙는 "이미 넣은 스타일 목록" 표시가 빈 값으로 덮어써져서, 브라우저가 스타일을 자바스크립트로 전부 다시 넣었습니다(홈에서 약 120KB). HTML에서 줄인 만큼이 브라우저 작업으로 옮겨간 셈이죠. 코드 리뷰에서 잡아서 목록을 누적하도록 고쳤고, 고장 난 버전을 일부러 다시 돌려 실제로 재주입이 사라졌는지 확인했습니다.

📦 남은 CSS는 파일로 — 그런데 「전부」는 아니었다

중복을 없애도 페이지마다 CSS 120~200KB가 남았습니다. 이걸 별도 파일로 빼면 두 번째 페이지부터는 캐시를 쓸 수 있습니다. 그런데 재 보니 그렇게 간단하지 않았습니다.

방식 첫 방문 CSS (압축 후) 두 번째 페이지부터
지금처럼 페이지마다 인라인 약 16KB 매번 다시 받음
쓰는 컴포넌트 전부 파일로 약 42KB 0
공통 컴포넌트 11종만 파일로 약 12KB 0

전부 빼면 첫 방문에 화면을 막는 CSS가 세 배가 됩니다. 검색으로 들어와 한 페이지만 보고 나가는 방문자에게는 오히려 손해죠. 그래서 거의 모든 페이지가 쓰는 11종(버튼·카드·레이아웃 등)만 파일로 뺐습니다. 홈 HTML은 409KB → 192KB가 됐습니다.

이때도 화면이 한 군데 달라졌습니다. 파일로 옮기자 CSS 적용 순서가 바뀌어, 칼로리 계산기의 태그가 커졌습니다. 우선순위가 같은 규칙끼리는 뒤에 오는 쪽이 이기는데, 그 앞뒤가 뒤집힌 겁니다. 예전 인라인 스타일이 있던 바로 그 자리에 파일 링크를 넣는 방식으로 바꾸고, 84개 페이지를 모바일·데스크톱으로 찍어 라이브와 픽셀 단위로 비교해서 차이가 없는 걸 확인한 뒤에 배포했습니다.

🚨 그리고 사이트가 40분 넘게 깨졌습니다

고친 걸 배포한 뒤, 작업 기록 문서만 바꾼 커밋을 하나 더 올렸습니다. "코드는 안 바뀌었으니 괜찮겠지" 했는데, 이게 문제였습니다.

  • 배포할 때마다 JS·CSS 파일 이름(해시)이 바뀌고, 옛 파일은 새 서버에 없습니다
  • CDN(Cloudflare)에는 옛 HTML이 남아 있었고, 그 HTML이 지워진 파일을 가리켰습니다
  • 결과: 스타일 일부가 빠지고, 버튼을 눌러도 계산 결과가 안 나오는 상태가 약 40~50분

화면 비교를 하다가 "라이브 쪽이 이상하다"는 걸 보고서야 알았습니다. CDN 캐시를 전부 비워 복구했고, 근본 대책으로 배포가 끝나면 자동으로 캐시를 비우는 장치를 다시 만들었습니다.

  • GitHub Actions가 배포 완료 신호(호스팅이 커밋에 남기는 success 상태)를 받으면 시작
  • 서버가 정말 그 커밋으로 바뀌었는지 헬스체크로 확인한 뒤 전체 캐시 삭제
  • 삭제 뒤 페이지가 참조하는 파일이 전부 200인지 검사, 아니면 한 번 더

첫 실행은 배포 완료부터 검증까지 34초였습니다.

💡 Jay의 정리 — 진단툴은 「어디를 볼지」까지만

이번 일로 정리된 생각은 이렇습니다.

  • ✅ 진단 도구는 어디를 봐야 할지 알려 주는 데까지는 쓸모가 있습니다. 텍스트 비율 경고가 없었다면 CSS 두 벌을 몰랐을 겁니다
  • ❌ 처방은 그대로 믿지 않습니다. "글을 늘려라"를 따랐다면 진짜 원인은 그대로 둔 채 홈에 필요 없는 문단만 생겼을 겁니다
  • 📏 고치기 전에 재고, 고친 뒤에도 잽니다. 재주입 함정도, 적용 순서 회귀도, 캐시 장애도 전부 "다시 재 보다가" 찾았습니다
  • 🧯 배포는 "문서만 바꿨으니 괜찮다"가 없습니다. CDN 앞에 Next.js를 둔 사이트라면, 배포 후 캐시 비우기를 사람 기억에 맡기지 마세요

결론

SEO 진단 점수는 출발점일 뿐입니다. 세 항목 중 실제로 고칠 가치가 있었던 건 하나였고, 그마저 원인은 도구의 설명과 달랐습니다. 감점 숫자보다 "이 경고가 가리키는 곳을 직접 열어 보면 무엇이 있는가" 를 보시길 권합니다. 9,900원을 내기 전에, 개발자 도구에서 HTML 크기부터 한 번 확인해 보세요.

다음에도 유익한 포스팅으로 찾아오겠습니다. 감사합니다!

📚 참고 / 출처

#SEO#SEO 진단#llms.txt#Next.js#Cloudflare

$ ls related/

더 많은 IT·AI 활용법이 궁금하다면?

매주 새로운 실전 가이드가 업데이트됩니다.

전체 글 보기