← 목록으로
개발일지

VideoObject 구조화 데이터 추가 · 서치콘솔 인덱싱 문제 분석

2

구글 서치콘솔에서 특정 게시글이 여러 차례 색인 요청을 해도 계속 등록이 안 되는 문제를 분석하고, 영상 포스트에 VideoObject 구조화 데이터를 추가한 날입니다.


색인이 안 된 원인 분석

/games/fc-online/review/94 게시글이 서치콘솔에서 '발견됨 - 현재 색인이 생성되지 않음' 상태로 계속 머물러 있었습니다.

이 상태는 구글이 URL을 발견은 했지만 아직 크롤링 자체를 하지 않은 것을 의미합니다. 콘텐츠를 보고 품질이 낮다고 판단한 게 아니라, 크롤 큐에서 순서를 기다리고 있는 상태입니다.

원인은 최근에 진행한 URL 계층 구조 대규모 변경에 있었습니다. /post/[slug] 에서 /games/fc-online/review/94 형태로 수백 개 URL이 한꺼번에 바뀌면서, 구글 크롤러 입장에서는 새로 발견해야 할 URL이 대거 쌓인 겁니다. 도메인 전체 크롤 예산이 분산되면서 개별 URL이 실제 크롤링되는 데 시간이 걸리고 있습니다.

DB 값과 URL 파라미터가 정확히 일치하는지도 확인했습니다. 코드에 DB에서 꺼낸 값으로 URL을 재조립한 뒤, 실제 요청 URL과 다르면 301 리다이렉트하는 로직이 있어서입니다. 확인 결과 완전히 일치했고, 코드 문제는 아니었습니다.


VideoObject 구조화 데이터 추가

크롤링됐을 때를 대비해서 영상 포스트에 구조화 데이터를 추가했습니다.

본문에 유튜브 URL이 포함된 포스트가 있을 때, 구글이 해당 페이지를 크롤링하면 페이지 <head> 안에 영상 관련 정보가 없어서 '영상 소개 페이지'임을 알 방법이 없었습니다.

VideoObject 스키마를 <script type="application/ld+json"> 형태로 페이지에 삽입하도록 했습니다. 페이지 컴포넌트에서 본문의 유튜브 URL을 감지해서 제목, 설명, 썸네일, embedUrl, 업로드 날짜를 자동으로 구성합니다.

generateMetadata 에서 OG 이미지를 유튜브 썸네일로 자동 추출하는 로직이 이미 있었기 때문에, 동일한 정규식 패턴을 그대로 가져왔습니다.

일반 영상 URL(youtube.com/watch?v=), 단축 URL(youtu.be/), 쇼츠(youtube.com/shorts/) 세 가지 형식을 모두 커버합니다.

수정 대상은 games, design, channel 포스트 페이지 세 파일입니다. 글을 작성할 때 별도로 입력할 게 없고, 본문에 유튜브 URL이 있으면 자동으로 적용됩니다. 없으면 아무 변화도 없습니다.


크롤링 자체는 기다리는 것 외에 당장 할 수 있는 게 없어서 답답하지만, 크롤링됐을 때 제대로 평가받을 수 있게 준비해두는 정도는 해둔 날입니다.