왜
구조화 파서는 JSON-LD 최상위가 Product 일 때만 상품 노드를 찾는다. Shopify 계열은 최상위가 ProductGroup 이고 실제 Product 는 hasVariant 배열 안에 있는데, 노드 수집 재귀가 @graph 와 itemListElement[].item 만 따라가고 hasVariant 는 보지 않아 전부 미스한다.
지금은 #51 의 og:price 폴백 덕분에 OG 경로가 이 사이트들을 건진다. 하지만 OG 조차 실패하는 사이트(구형 가격 태그도 없고 ProductGroup 만 있는 곳)는 여전히 LLM 으로 간다.
무엇을
ProductGroup 인식을 OG 다음 세 번째 폴백으로 추가한다.
1. JSON-LD 의 Product 성공하면 반환
2. OpenGraph 성공하면 반환
3. JSON-LD 의 ProductGroup 성공하면 반환 <- 추가
왜 첫 자리가 아니라 OG 다음인가
ProductGroup 을 JSON-LD Product 와 같은 첫 자리에 넣으면 기존 사이트의 상품명이 회귀한다. JSON-LD 가 성공하면 OG 를 아예 보지 않기 때문이다.
postarchivefaction.com 실측 (2026-08-25, extractor 와 같은 Accept-Language 로 fetch):
|
f26-cut-out-boots-black |
f26-cut-out-boots-beige |
og:title |
Cut Out Boots (2026) - Black |
Cut Out Boots (2026) - Beige |
ProductGroup.name |
컷아웃 부츠 |
컷아웃 부츠 |
hasVariant |
사이즈 5개 (컷아웃 부츠 - 250 등) |
사이즈 5개 |
- 색상은 JSON-LD 어디에도 없다. 그룹·변형 어느 노드에도
color 키가 없고, 색상은 Shopify 상품 자체가 갈려 URL 로만 구분된다(-black / -beige). 변형은 색상이 아니라 신발 사이즈다.
- 그래서
ProductGroup 이 먼저 이기면 두 색상이 모두 컷아웃 부츠 가 된다. 변형까지 재귀해 첫 Product 를 잡으면 두 색상이 모두 컷아웃 부츠 - 250 이 되어 신발 사이즈가 상품명에 박힌다.
- 토너먼트는 항목을 이름으로 구분한다. 같은 상품의 두 색상이 한 토너먼트에 올라오면(1350 에 실제로 그렇다) 투표 화면에서 구분이 사라진다.
OG 다음에 두면 OG 가 성공하는 사이트의 이름은 그대로 두고, OG 조차 실패하는 사이트만 건진다. 회귀 없이 커버리지만 는다.
구현 시 정할 것
ProductGroup 에 offers 가 없는 경우가 있다. PAF 가 그렇고, 가격이 변형 안에만 있다.
ProductGroup name: "컷아웃 부츠" offers 없음
└─ hasVariant[0] name: "컷아웃 부츠 - 250" offers.price: 800000 KRW
이름은 그룹의 name, 가격은 첫 변형의 offers 로 조합해야 한다. 그룹에 offers 가 있으면 그쪽을 먼저 본다.
범위 밖
상품명을 한글(그룹명)로 바꾸는 것은 하지 않는다. 색상 구분이 사라지기 때문이다. 한글 표기가 필요해지면 이름 정책을 별도로 판단한다.
관련: #51 (og:price 폴백), PR #52
왜
구조화 파서는 JSON-LD 최상위가
Product일 때만 상품 노드를 찾는다. Shopify 계열은 최상위가ProductGroup이고 실제Product는hasVariant배열 안에 있는데, 노드 수집 재귀가@graph와itemListElement[].item만 따라가고hasVariant는 보지 않아 전부 미스한다.지금은 #51 의
og:price폴백 덕분에 OG 경로가 이 사이트들을 건진다. 하지만 OG 조차 실패하는 사이트(구형 가격 태그도 없고ProductGroup만 있는 곳)는 여전히 LLM 으로 간다.무엇을
ProductGroup인식을 OG 다음 세 번째 폴백으로 추가한다.왜 첫 자리가 아니라 OG 다음인가
ProductGroup을 JSON-LD Product 와 같은 첫 자리에 넣으면 기존 사이트의 상품명이 회귀한다. JSON-LD 가 성공하면 OG 를 아예 보지 않기 때문이다.postarchivefaction.com 실측 (2026-08-25, extractor 와 같은
Accept-Language로 fetch):f26-cut-out-boots-blackf26-cut-out-boots-beigeog:titleCut Out Boots (2026) - BlackCut Out Boots (2026) - BeigeProductGroup.name컷아웃 부츠컷아웃 부츠hasVariant컷아웃 부츠 - 250등)color키가 없고, 색상은 Shopify 상품 자체가 갈려 URL 로만 구분된다(-black/-beige). 변형은 색상이 아니라 신발 사이즈다.ProductGroup이 먼저 이기면 두 색상이 모두컷아웃 부츠가 된다. 변형까지 재귀해 첫 Product 를 잡으면 두 색상이 모두컷아웃 부츠 - 250이 되어 신발 사이즈가 상품명에 박힌다.OG 다음에 두면 OG 가 성공하는 사이트의 이름은 그대로 두고, OG 조차 실패하는 사이트만 건진다. 회귀 없이 커버리지만 는다.
구현 시 정할 것
ProductGroup에offers가 없는 경우가 있다. PAF 가 그렇고, 가격이 변형 안에만 있다.이름은 그룹의
name, 가격은 첫 변형의offers로 조합해야 한다. 그룹에offers가 있으면 그쪽을 먼저 본다.범위 밖
상품명을 한글(그룹명)로 바꾸는 것은 하지 않는다. 색상 구분이 사라지기 때문이다. 한글 표기가 필요해지면 이름 정책을 별도로 판단한다.
관련: #51 (
og:price폴백), PR #52