개발 slecs

Astro 블로그에 아티클 SEO 메타 네 가지를 뒤늦게 추가한 이유

목차

Astro 기반 블로그에 article 메타 풀세트를 박았다. published, modified, author, tag — 네 가지를 한 번에.


왜 지금 이걸 했나

솔직히 말하면 미뤄왔던 작업이다. 기본적인 OG 태그나 title/description 정도는 진작 붙여뒀는데, article 특화 메타는 "나중에 하지" 하고 계속 뒤로 밀었음. 검색 크롤러 입장에서 보면 이 네 가지 태그는 단순한 SEO 점수 올리기 이상의 의미가 있다.

article:published_time, article:modified_time, article:author, article:tag — 이걸 제대로 박아야 SNS 공유 시 카드가 날짜 정보를 올바르게 표시하고, Google News나 검색 인덱서가 콘텐츠 freshness를 판단할 수 있다. modified_time이 없으면 크롤러는 페이지가 언제 갱신됐는지 알 방법이 없어서 오래된 콘텐츠로 취급할 수도 있음.


변경 파일별 역할 정리

파일 역할 이번 변경 포인트
BaseHead.astro 전역 <head> 컴포넌트 article 메타 props 수신 + 조건부 렌더링
Base.astro 레이아웃 래퍼 BaseHead로 메타 데이터 넘기는 인터페이스 확장
c/[category]/[slug]/index.astro 아티클 상세 페이지 실제 frontmatter에서 값 꺼내 레이아웃에 주입

파일 세 개가 계층 구조로 딱 맞물려 있다. 데이터 흐름이 slug → Base → BaseHead 방향이라 한 곳만 건드리는 게 불가능한 구조임. 이런 변경은 작아 보여도 실제로는 세 파일을 동시에 맞춰야 하는 연쇄 작업이라 꼼꼼히 체크해야 한다.


실제 패턴

BaseHead.astro 에서는 대략 이런 형태로 조건부로 렌더링하게 됐다.

---
interface Props {
  // 기존 props
  title: string;
  description: string;
  // 이번에 추가
  publishedTime?: string;
  modifiedTime?: string;
  author?: string;
  tags?: string[];
}

const { publishedTime, modifiedTime, author, tags } = Astro.props;
---

{publishedTime && (
  <meta property="article:published_time" content={publishedTime} />
)}
{modifiedTime && (
  <meta property="article:modified_time" content={modifiedTime} />
)}
{author && (
  <meta property="article:author" content={author} />
)}
{tags?.map(tag => (
  <meta property="article:tag" content={tag} />
))}

tags는 배열이라 map으로 여러 개 뽑아내야 한다. OGP 스펙상 article:tag는 복수 선언을 허용하기 때문에 이렇게 처리하는 게 맞음. 하나만 박으면 멀티 태그 콘텐츠에서 검색 노출이 단일 키워드로만 잡히는 손해가 생긴다.


회고

이 작업을 하면서 다시 한번 느낀 건, 메타 태그는 "있으면 좋고 없어도 돌아간다"는 인식이 가장 위험하다는 점이다. 실제로 페이지는 멀쩡하게 렌더링된다. 에러도 없다. 그래서 우선순위에서 계속 밀리는 거다.

근데 검색 엔진이나 SNS 크롤러 입장에서 보면 이야기가 다르다. published_time이 없는 글은 freshness 신호가 약해서 같은 퀄리티의 글이라도 색인 순위에서 불리하고, modified_time이 없으면 꾸준히 갱신하는 블로그임에도 그 신호가 전달이 안 된다. author는 E-E-A-T(경험, 전문성, 권위성, 신뢰성) 신호와도 연결되는 부분이라 개인 블로그라도 챙기는 게 낫다.

팀 프로젝트였다면 이런 류의 작업은 "런칭 체크리스트" 항목으로 만들어서 누가 봐도 빠뜨리지 않게 했을 텐데, 1인 프로젝트다 보니 그냥 기억에 의존하다가 늦어진 셈이다. 앞으로 이런 SEO 관련 항목들은 frontmatter 스키마 정의 시점에 함께 정리해두는 게 맞겠다 싶었음.

다음엔 sitemap 갱신 주기와 lastmod 연동도 손봐야겠다.


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

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

댓글 0

첫 댓글 달아줘.