Google이 내 글을 찾지 못하게 두지 마세요
SSR Blog의 SEO 시행착오 기록
Astro + PostgreSQL로 Blog를 만들면서 내린 모든 SEO 결정의 이유와 글이 검색 결과에서 사라질 뻔했던 함정들을 정리했습니다.
SSR Blog의 SEO는 왜 정적 사이트와 다를까요?
우리는 무엇을 했을까요?
동적 sitemap부터 robots.txt까지 다섯 계층을 보완했고, 각 계층에는 명확한 이용자가 있습니다.
sitemap-posts.xml DB에서 발행된 글을 실시간으로 조회해 build할 때 자동으로 패치해 넣습니다: sitemap-index.xmlhttp://localhost 와 https://blog.joneshong.com 가 중복으로 판정되지 않도록 합니다./admin/ 와 /api/는 차단합니다. 두 개의 sitemap을 가리킵니다.우리는 어떻게 문제를 발견했을까요?
처음부터 설계한 것이 아니라, sitemap을 아무도 참조하지 않고 읽기 시간이 73분으로 계산되며 Nginx subpath 페이지가 비는 세 가지 문제를 겪은 뒤에야 보완했습니다.
sitemap-posts.xml 아무도 참조하지 않았습니다
@astrojs/sitemap 생성할 sitemap-index.xml 때 정적 페이지만 포함합니다. 동적 sitemap-posts.xml 는 무시됐습니다. 해결책은 build 후 sitemap-index를 자동으로 패치해 posts sitemap을 추가하는 것이었습니다.
깨달은 점:자동화 도구가 모든 case를 다루는 것은 아닙니다. SSR 동적 페이지의 누락은 직접 메워야 합니다.
내 페이지의 head를 붙여 넣어 확인하기
위 목록의 여섯 항목 중 세 항목은 사이트를 크롤링하지 않고도 검증할 수 있습니다. 내 글 중 하나의 <head> 소스 코드만 붙여 넣으면 됩니다.canonical, hreflang, JSON-LD 세 항목은 모두 브라우저 안에서 로컬로 분석하며 아무것도 전송하지 않습니다. 나머지 세 항목(sitemap 수록 여부, robots.txt, TTFB)은 실제로 내 도메인에 요청을 보내야 하는데, 브라우저의 교차 출처 제한 때문에 여기서는 할 수 없습니다. 이 세 항목은 위의 prompt를 AI에 전달해 크롤링하도록 하세요.
검사 대상은 ‘붙여 넣은 문자열’이지, 온라인 페이지가 아닙니다. 브라우저 DevTools의 Elements 패널(JS 실행 후의 DOM)을 붙여 넣으면 크롤러가 보는 내용과 결과가 다를 수 있습니다. 크롤러가 보는 내용과 맞추려면 ‘페이지 소스 보기’(view-source)의 내용을 사용하세요.
AI Agent에게 복사해 전달하세요
글을 발행했다고 생각했는데, Google은 그 글의 존재조차 모를 수 있습니다——SSR blog 페이지는 runtime에야 생성되고 @astrojs/sitemap은 build 시의 정적 페이지만 수집하기 때문에 동적 글은 sitemap에 아예 기록되지 않습니다. meta tag가 빠지면 기껏해야 순위가 낮아지지만, 색인되지 않으면 검색 결과에서 완전히 사라집니다.
아래 내용을 AI에 붙여 넣으세요. 일반적인 상식으로 답하지 말고 내 사이트를 직접 크롤링한 뒤 이 글의 목록과 대조해 실제로 무엇이 빠졌는지 찾아내도록 하세요:
더 읽어보기
이 다섯 글은 각각 한 가지 결정에 대응하며, 숨은 비용에 대한 비유부터 hreflang 오류율 67%라는 데이터까지 다룹니다.
| 글 | 왜 중요한가 |
|---|---|
| Apideck: Your MCP Server Is Eating Your Context Window | ‘숨은 비용’이라는 비유에 영감을 주었습니다 |
| SEO for Astro: How to Make the Fastest Framework Also the Smartest | Astro SEO 구현에 관한 종합 가이드 |
| JSON-LD Blog Post Example | BlogPosting schema의 참고 구현 |
| Multilingual SEO and Hreflang Guide | 67% 오류율 데이터의 출처 |
| How to Improve Core Web Vitals | SSR 성능을 최적화하는 구체적인 방법 |
SEO는 공학이지 미신이 아닙니다
모든 결정에는 이유가 있고, 모든 함정에는 교훈이 있습니다.
SSR Blog의 SEO는 meta tag를 설정하면 끝나는 일이 아니라 계속 개선해 나가는 엔지니어링 작업입니다.
문제 1: 동적 글이 sitemap에 없음
→ 직접 추가 sitemap-posts.xml
문제 2: SSR에 캐시가 없음
→ 정적 페이지 prerender + 동적 페이지 SSR
문제 3: 다국어 SEO는 오류가 나기 쉬움
→ hreflang 양방향 + x-default
검증: Google Search Console에 직접 제출 + 모니터링
// 요약
Astro SSR + 자동화 SEO pipeline
수록 누락 없이, 중복 없이, 지연 없이