홈 페이지 SEO 타이틀이 고정값으로 나오던 버그 수정
목차
홈 페이지의 <title> 태그가 하드코딩된 고정값으로만 나가고 있었다. CMS에서 SEO 타이틀을 업데이트해도 반영이 안 되는 문제였는데, 이걸 cms_site.meta.seo.title에서 동적으로 가져오도록 src/layouts/Layout.astro를 수정했다.
왜 이 버그가 있었는가
프로젝트 초기에 사이트를 만들 때 고객명이나 브랜드명이 아직 확정되지 않았거나, 그 당시엔 SEO 타이틀을 자주 바꿀 일이 없을 거라고 판단했을 것 같다. 그래서 Layout 컴포넌트에 title을 하드코딩해 놨었을 거다.
// 기존 상태
<title>우리 사이트</title>
시간이 지나면서 마케팅팀이나 운영팀에서 "이번달부턴 이렇게 변경하고 싶다", "계절에 따라 타이틀을 다르게 가져가고 싶다"는 요청이 들어오게 됐다. 매번 개발팀에 ask하고 배포 일정을 맞춰야 했으니, 명백한 운영 병목이었다. 특히 검색 결과 개선 같은 시간 민감한 작업일 땐 더 답답할 수밖에 없다.
어떻게 고쳤는가
다행히 CMS 시스템에 이미 cms_site.meta.seo.title 구조로 설정값들을 저장하고 있었다. 그럼 Layout에서 그 값을 바로 읽어와서 <title>에 바인딩하면 된다.
// 개선된 상태
const seoTitle = cms_site?.meta?.seo?.title || '기본 타이틀';
<title>{seoTitle}</title>
이제:
- 운영팀이 CMS에서 타이틀을 수정하면 다음 빌드부터 반영됨
- 배포 없이 콘텐츠 변경만으로 처리 가능
- 다른 메타 데이터(description, og:image 등)도 같은 원리로 연결할 수 있는 기반이 됨
한 줄 수정이지만 팀 생산성에 미치는 영향
겨우 한두 줄 같지만, 이런 수정이 팀 전체의 운영 방식을 바꾼다.
운영/마케팅 생산성: 개발팀에 ask하는 의존도가 줄어들고, 필요한 변경을 당사자들이 직접 관리할 수 있게 된다.
SEO 민첩성: 검색 결과 순위 개선이나 계절성 캠페인처럼 시간이 중요한 상황에서 즉시 대응할 수 있다.
일관성 유지: 여러 페이지의 title, description 등이 모두 같은 소스(CMS)에서 나오므로, 메타데이터의 관리 포인트가 한곳으로 수렴된다.
Astro 같은 정적 사이트 생성기를 쓸 때 build time에 메타데이터가 결정되기 때문에, CMS와의 연동을 명확하게 설계하지 않으면 "하드코딩 → 자주 요청 들어옴 → 한 건씩 수정 → 배포" 이 루프에 영구적으로 갇히게 된다.
유사한 상황에서의 베스트 프랙티스
이 경험에서 배운 것들:
-
메타데이터는 처음부터 설정 소스와 연결하자: title, description, og:image 같은 SEO 요소는 프로젝트 시작할 때부터 CMS나 설정 DB와 연동시켜야 한다. 나중에 하드코딩을 걷어내는 것보다 훨씬 수월하다.
-
fallback을 항상 준비해 두자:
cms_site?.meta?.seo?.title || '기본값'같이 데이터가 없거나 누락됐을 때의 기본값을 정의해 놓으면, CMS 장애나 DB 오류 상황에서도 서비스가 깨지지 않는다. -
운영팀/마케팅팀과 초기에 조율하자: 어떤 항목은 개발자가 코드로 관리하고, 어떤 항목은 운영팀이 CMS로 직접 관리할지를 설계 단계에서 명확히 해두면, 나중의 요청/수정 사이클을 크게 줄일 수 있다.
다음 프로젝트부터는 "메타데이터 관리 전략"을 기술 스펙의 일부로 문서화하고, 팀과 함께 초기에 정하는 습관을 들여야겠다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.