구조화 데이터 점검: 화면에는 있는데 기계에는 없던 것들
저희 홈페이지 맨 아래에는 전화번호가 적혀 있습니다. 코드에도 상수로 들어 있어서 여러 화면이 같은 값을 가져다 씁니다.
그런데 검색 엔진과 AI가 읽는 자리에는 없었습니다. 화면에도 있고 코드에도 있는데 거기만 비어 있었습니다.
사이트에 있는 두 개의 화면
하나는 사람이 보는 화면입니다. 글자와 그림이 배치된, 우리가 아는 그 화면입니다.
다른 하나는 기계가 읽는 화면입니다. 페이지 안에 눈에 보이지 않게 들어가는 데이터인데, 회사 이름과 주소, 전화번호, 영업 지역 같은 것을 정해진 칸에 나눠 적어 둔 표에 가깝습니다. 이것을 구조화 데이터라고 부릅니다.
명함에 비유하면 이렇습니다. 명함에 인쇄된 글씨가 사람이 보는 화면이고, 그걸 휴대폰 주소록에 저장할 때 이름 칸과 회사 칸과 번호 칸에 나눠 넣은 것이 구조화 데이터입니다. 사람은 명함을 보면 어느 줄이 회사이고 어느 줄이 직급인지 알아서 구분합니다. 기계는 칸이 나뉘어 있어야 압니다.
화면을 아무리 봐도 안 보이는 결함
저희 사이트를 이 기준으로 훑어봤습니다. 결과가 이랬습니다.
| 항목 | 사람이 보는 화면 | 코드 | 기계가 읽는 표 |
|---|---|---|---|
| 전화번호 | 푸터에 있음 | 상수로 있음 | 없음 |
| 가격 | 제품 8종 금액 있음 | 견적기 데이터에 있음 | 0개 |
| 영업 지역 | 주소로만 | 있음 | 국가만 |
| 갱신일 | 표시 없음 | 세 곳이 제각각 | 없음 |
전화번호가 전형적입니다. 푸터에 멀쩡히 떠 있고, 코드에도 있고, 사람이 보기에 빠진 것이 하나도 없습니다. 사이트는 정상으로 돌아갑니다. 그래서 화면을 들여다보는 방식으로는 영영 못 찾습니다.
구조화 데이터의 문제는 대개 없는 정보에서 생기지 않습니다. 있는데 옮겨 적지 않은 정보에서 생깁니다. 그래서 정보가 부실한 사이트보다 오히려 잘 만든 사이트에서 더 자주 나옵니다. 화면이 충실하니 다 됐다고 생각하게 되기 때문입니다.
만원 단위를 기계가 알아서 곱해 주지는 않는다는 것
가격을 옮기면서 걸린 지점이 있습니다.
화면에는 웹사이트 100만원에서 720만원처럼 적혀 있습니다. 사람에게는 100만원이나 1,000,000원이나 같은 말이지만 기계에게는 다릅니다. 만원이라는 단위를 알아서 곱해 주지 않습니다. 통화를 원화로 명시하고 하한과 상한을 각각 숫자로 적어야 합니다.
옮기고 나니 가격 항목이 열 개가 됐습니다. 제품 일곱 개와 유지보수 세 단계입니다.
한 가지 원칙은 지켰습니다. 화면에 없는 것을 표에만 적지는 않았습니다. 실제로 제공하지 않는 할인이나 없는 후기를 마크업으로만 넣는 것은 금지돼 있고, 그 전에 거짓말입니다. 저희가 옮긴 것은 전부 이미 화면에 떠 있던 숫자입니다.
세 곳이 서로 다른 날짜를 말하던 문제
내용이 언제 갱신됐는지도 신호입니다. 오래된 자료보다 최근 자료가 인용될 가능성이 높습니다.
저희는 이 날짜를 세 군데에 적어 두고 있었습니다. 재보니 사이트맵은 7월 21일, AI용 요약 파일 두 개는 각각 8월 4일이었습니다. 각자 다른 날 손으로 고쳤기 때문입니다. 페이지 자체에는 갱신일이 아예 없었습니다.
서로 다른 날짜를 말하는 것은 오래된 날짜 하나를 말하는 것보다 나쁩니다. 어느 쪽을 믿어야 할지 알 수 없으면 셋 다 신뢰를 잃습니다.
상수 하나를 만들어서 네 곳이 모두 그 값을 보게 고쳤습니다. 공개된 문구를 손보는 날 그 한 줄만 올리면 됩니다.
개발자가 아니어도 확인할 수 있는 것
두 가지는 직접 해보실 수 있습니다.
주소창에 자기 사이트 주소를 치고 뒤에 /llms.txt 를 붙여 보십시오. 아무것도 나오지 않으면 AI가 읽어 갈 요약이 아직 없는 것입니다. 무언가 나온다면 회사 정보와 가격이 실제로 그 안에 적혀 있는지 보시면 됩니다. 저희는 파일은 있는데 안이 비어 있던 쪽이었습니다.
구조화 데이터는 리치 결과 테스트에 주소를 넣으면 볼 수 있습니다. 기계가 그 페이지에서 무엇을 읽어 갔는지 항목별로 보여 줍니다. 전화번호가 없거나 가격이 없으면 거기서 드러납니다.
다 고쳤다고 생각한 자리에 남아 있던 홈
여기까지 하고 끝난 줄 알았습니다. 나중에 다시 재보니 홈에만 갱신일이 없었습니다.
하위 페이지들은 공통 부품에서 이 값을 받아 가는데, 홈은 자기 데이터를 따로 만들고 있어서 묶는 작업에서 혼자 빠졌습니다. 가장 자주 크롤링되고 가장 먼저 읽히는 페이지가 정작 날짜를 말하지 않고 있었던 셈입니다.
전화번호도, 가격도, 이 날짜도 원인이 같습니다. 사람이 보는 자리에는 있고 기계가 읽는 자리에는 없었습니다. 한 번 훑어서 다 찾았다고 생각했는데 그러고도 하나가 남아 있었습니다.
다음에 어느 칸이 비어 있을지는 모르겠습니다. 확실한 것은 화면만 봐서는 여전히 안 보인다는 것뿐입니다.
참고: schema.org, 구글 구조화 데이터 가이드
함께 읽기
- SEO와 GEO: 순위 경쟁이 인용 경쟁으로 바뀐 이유저희 사이트에는 llms-full.txt 라는 파일이 하나 있습니다. AI가 회사 정보를 찾을 때 읽으라고 만들어 둔 요약본입니다. 만들어 두고는 한참 열어 보지 않았습니다.
- SEO·AEO·GEO는 무엇이 다를까: AI 검색 시대의 노출 전략예전에는 Google이나 네이버 검색 결과의 상단에 노출되는 것이 목표였습니다. 이제는 AI Overview, AI Mode와 여러 답변형 서비스가 웹 문서를 요약해 답을 만들면서 AEO와 GEO라는 표현도 자주 보입니다.
- 블로그를 서브도메인에서 하위 경로로 옮긴 이유, 그리고 CSP가 애드센스를 막고 있었습니다회사 사이트와 기술 블로그를 따로 운영하는 구성은 흔합니다. 회사는 duolabs.co.kr, 블로그는 blog.duolabs.co.kr.
- 웹사이트 공개 전 무료 점검 도구: 속도·보안·접근성·SEO 한 번에 확인하기웹사이트는 화면과 기능이 완성됐다고 바로 공개할 수 있는 상태가 되는 것은 아닙니다. 실제 사용자가 느끼는 속도, HTTP 보안 헤더, HTTPS 설정, 키보드 접근성, 구조화 데이터, DNS 설정은 서로 다른 문제입니다.
- 네이버 검색광고·구글 검색광고·인스타 광고 비교: 우리 사업에는 무엇이 맞을까광고를 시작하려고 하면 네이버 검색광고, 구글 검색광고, 인스타그램 광고 중 어디에 돈을 써야 할지부터 막힙니다. 세 채널 모두 고객을 데려오는 광고지만 맡은 역할은 다릅니다.