개발 slecs

사이트 전체 SEO 메타 통합 정리로 크롤러 혼선 해소

목차

BaseHead.astro 하나 건드렸을 뿐인데, 이게 생각보다 꽤 넓은 범위에 영향을 준다.

왜 이 작업이 우선순위에 올라왔나

SEO 메타 작업은 항상 "나중에 해도 되는 일" 취급을 받는다. 기능이 동작하는 것도 아니고, 눈에 바로 보이는 것도 아니니까. 근데 막상 검색 유입을 들여다보면 이 "나중에 해도 되는 일"들이 쌓여서 크롤러가 사이트를 제대로 이해 못 하고 있는 경우가 꽤 있음.

이번에 og:url과 canonical 태그를 정리하게 된 것도 그 연장선이었다. 기존에 두 값이 서로 다른 방식으로 렌더링되거나, canonical이 누락된 페이지가 있었고, 네이버 검색 등록 시 필요한 keywords 메타가 아예 없었다. 작은 것들이 여러 개 묶여 있는 상태.

BaseHead.astro는 Astro 프레임워크에서 <head> 영역 전체를 담당하는 컴포넌트다. 모든 페이지가 이걸 공유하기 때문에, 여기서 한 번 고치면 사이트 전체에 반영된다는 게 장점이자 위험 포인트다. 잘못 건드리면 전 페이지 메타가 한꺼번에 틀어지기 때문에, 변경 범위가 단 한 파일이어도 영향 범위는 "전체"로 봐야 한다.

작업 내용

크게 세 가지를 건드렸다.

항목 변경 전 변경 후
keywords 메타 없음 또는 미설정 네이버 대응 포함하여 추가
og:url 별도 props 또는 하드코딩 canonical URL과 동일하게 통일
canonical 분산 처리 또는 누락 BaseHead에서 단일 처리
---
// BaseHead.astro - 변경  패턴 (예시)
const { title, description, keywords, canonicalURL } = Astro.props;
---

<head>
  <meta name="keywords" content={keywords} />
  <link rel="canonical" href={canonicalURL} />
  <meta property="og:url" content={canonicalURL} />
</head>

포인트는 og:url과 canonical을 같은 값(canonicalURL)으로 묶은 것이다. 둘이 다를 경우 검색 엔진 입장에서 "이 페이지의 대표 URL이 뭐야?"라는 혼선이 생긴다. OG는 SNS 공유 시 사용되고, canonical은 크롤러가 중복 콘텐츠 처리할 때 기준으로 삼는다. 목적이 다르긴 한데, 결국 같은 URL을 가리켜야 한다는 건 같음.

네이버 keywords 추가는 구글 중심으로만 SEO를 고려하면 빠지기 쉬운 부분이다. 구글은 keywords 메타를 랭킹 시그널로 쓰지 않는다고 공식 발표했지만, 네이버는 여전히 참고하는 구조가 있고, 국내 서비스라면 무시하기 어렵다.

단일 파일 수정이 전체를 바꾼다는 것

팀 입장에서 이런 공통 컴포넌트 수정은 코드리뷰에서 한 번 더 체크하게 된다. 변경량이 작아도 "이 파일이 어디서 불리는가"를 먼저 확인해야 하기 때문이다. Astro의 경우 BaseHead가 레이아웃 단에서 호출되고, 레이아웃이 모든 페이지를 감싸는 구조라면 diff 크기와 실제 영향 범위가 비례하지 않는다.

그래서 PR에 "이 변경이 영향을 주는 페이지 목록" 또는 "before/after 스크린샷(소셜 미리보기)"을 첨부하도록 팀에 가이드하고 있다. 작은 커밋일수록 컨텍스트 설명이 더 필요한 경우가 있음.


SEO 작업은 치고 빠지는 게 아니라 쌓이는 종류다. 이번에 canonical + og:url + keywords를 한 번에 정리한 게, 다음에 구조화 데이터나 sitemap 손볼 때 베이스가 되길 기대하고 있다.

끝.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.