본문으로 건너뛰기
유환호 연락하기

홈 / 기록

우리가 남에게 요구한 규칙에 우리 사이트가 걸려 있었다

한눈에 답변

요금 안내 페이지의 질문과 답변 4개가 구조화 데이터에만 존재하고 화면에는 렌더되지 않고 있었다. 이미 발행한 글에서 '스키마에만 있고 화면에는 없는 FAQ는 정책 위반'이라고 설명해 놓은 바로 그 문제였다. 원고를 화면과 구조화 데이터가 같은 배열을 읽도록 한 곳으로 합치고, 빌드 결과물에서 질문과 답이 실제 화면에도 있는지 자동으로 확인하는 검사를 새로 만들었다.

어떻게 발견했나

경쟁사를 조사하며 나온 ‘비용’ 관련 주제를 새 글감 후보로 등록했더니, 요금 안내 페이지와 겹친다는 판정이 나왔다. 그런데 그 판정 로직이 “이미 같은 질문에 대한 답이 있다”며 추가 작업 없이 넘어갔다. 실제 화면을 열어 보니 그 질문에 대한 답이 화면에 없었다 — 판정 로직과 실제 화면이 서로 다른 것을 보고 있었다.

정확히 뭐가 문제였나

요금 안내 페이지의 질문과 답변 4개(비용, 진단 비용 여부, 최소 계약 기간, 보장 여부)가 구조화 데이터(FAQPage)에는 있는데 화면 HTML에는 한 글자도 없었다. 검색엔진이나 답변엔진이 읽는 신호와 사람이 실제로 보는 화면이 서로 다른 내용을 담고 있었던 셈이다.

왜 뼈아픈 발견이었나

이 사이트가 이미 발행한 다른 글에서 정확히 이 문제를 지적하며 “스키마에만 있고 화면에는 없는 FAQ는 정책 위반”이라고 써 놓았다. 남에게 요구해 온 기준에 스스로 걸려 있었던 것이다. 게다가 같은 페이지의 영어판은 처음부터 화면에 제대로 렌더하고 있었다 — 번역 과정에서 한쪽만 어긋난, 사람 눈으로는 알아채기 어려운 종류의 결함이었다.

어떻게 고쳤나

원고를 별도 배열 하나로 옮기고, 화면과 구조화 데이터가 그 배열 하나를 함께 읽도록 만들었다. 이제 같은 결함이 다시 생기려면 원고가 있는 곳과 화면이 읽는 곳, 두 곳이 아니라 한 곳만 확인하면 된다.

재발 방지 장치는 무엇을 확인하나

빌드 결과물 전체에서 구조화 데이터에 선언된 질문과 답이 실제 화면 텍스트에도 있는지 대조하는 검사를 새로 만들었다. 스크립트가 실제로 결함을 잡아내는지 확인하려고 화면의 답변 부분을 일부러 지우고 검사를 돌려, 정확히 그 부분을 지목하는 것을 확인한 뒤에야 상시 검사에 포함시켰다.