이미지 캐러셀에 별도 스키마는 필요 없었다
한눈에 답변
구글 검색결과의 이미지 캐러셀은 별도 구조화 데이터가 있는 게 아니라, 페이지 본문에 실제로 있는 이미지를 구글이 색인해서 붙여주는 기능이다. 리뷰로거는 카드에 이미지가 0장이라 애초에 캐러셀이 성립할 수 없었다. 원본 플랫폼 썸네일을 핫링크로 가져오고, 프록시로 용량을 줄이고, 실패 시 텍스트 카드로 폴백하는 구조를 만든 뒤에야 후보가 됐다.
이미지 캐러셀은 어떤 원리로 붙나
이미지 캐러셀은 특별한 구조화 데이터 태그가 있는 게 아니라, 검색엔진이 페이지 본문에 실제로 존재하는 이미지를 색인해서 검색결과에 붙여주는 기능이다. 선행 조건은 단순하다 — 페이지에 이미지가 있어야 한다. 리뷰로거는 이 전제부터 충족하지 못했다. 목록 카드에 이미지가 한 장도 없었다.
왜 카드에 이미지가 없었나
체험단 공고는 직접 촬영한 사진이 아니라 원본 플랫폼에 이미 있는 썸네일이다. 이 썸네일을 원본 URL 그대로 가져와 쓰는 핫링크 방식을 운영자 승인을 받아 도입했다. 플랫폼마다 마크업이 달라 이미지 위치를 찾는 방식도 제각각이라, 공용 헬퍼를 만들어 lazy 속성을 우선 확인하고 배경 이미지도 지원하고 아이콘·로고·SNS 뱃지는 걸러내도록 했다.
실제로 어떤 문제들을 만났나
원본 썸네일 중 가장 큰 것이 1.1MB에 달해 모바일 성능을 크게 깎아 먹었고, 무료 이미지 프록시로 축소·변환해 해결했다. 제목에서 이모지 장식을 제거하는 정규식이 유니코드 플래그 없이 작성돼 있어, 서로게이트 페어로 된 이모지의 절반만 지워지면서 깨진 문자열이 DB 삽입 자체를 거부하는 문제도 있었다 — 다른 무관해 보이는 수집기 전체가 실패하는 것처럼 보였다. 일부 플랫폼이 리퍼러를 확인해 핫링크를 막고 있어 리퍼러 정책을 조정했고, 로드 실패 시 이미지가 스스로를 제거해 텍스트 카드로 자연스럽게 돌아가게 했다.
결과는 어땠나
재수집 후 게시 중 공고의 79%가 이미지를 확보했다. 전국 배송형 공고는 96%까지 올라갔다. 다만 캐러셀이 실제로 붙는지는 구글이 재크롤하고 색인하는 시간(수 주)이 필요해서, 조건을 갖췄다고 즉시 나타나는 것은 아니다.
네이버에서도 같은 방식이 통하나
아니다. 네이버 웹문서는 구글식 다중 이미지 캐러셀이 표준 UI가 아니고, 대표 썸네일 한 장 형태가 현실적인 상한이다. 다만 필요한 재료(본문 이미지 + alt 텍스트)는 구글·네이버 양쪽에 공통이라 추가 코드 작업 없이 결과를 관찰하는 것으로 충분했다.