식당 구조화 데이터는 음식점의 이름, 주소, 영업시간과 메뉴 등을 Schema.org의 Restaurant 유형으로 표현한 데이터입니다. 웹페이지에 담긴 정보가 어느 식당의 어떤 항목인지 검색엔진에 알립니다. Restaurant 유형은 FoodEstablishment를 거쳐 LocalBusiness에 속하는 하위 유형이며, 개별 음식점을 나타냅니다.
식당 한 곳을 표시한 예시
아래는 이름과 주소, 영업시간을 넣은 기본 예시입니다. openingHours의 Mo-Sa 11:00-21:00은 월요일부터 토요일까지 오전 11시부터 오후 9시까지 영업한다는 뜻입니다. 실제 적용할 때는 예시의 이름과 주소, 시간을 해당 지점의 정보로 바꿉니다.
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "식당명",
"address": {
"@type": "PostalAddress",
"streetAddress": "실제 도로명 주소",
"addressCountry": "KR"
},
"openingHours": "Mo-Sa 11:00-21:00"
}
Google과 네이버의 필수 속성
Google의 LocalBusiness 지침에서 필수 속성은 name과 address입니다. 영업시간, 전화번호, 메뉴 URL, 음식 종류와 가격대, 좌표는 권장 항목입니다. 네이버의 Restaurant 지침은 name과 openingHours를 필수로 정하고, 전화번호, 이미지, URL, 메뉴와 가격대, 설명을 선택 항목으로 둡니다.
영업시간을 표현하는 속성도 주의해야 합니다. 위 예시와 네이버 지침은 openingHours를 쓰지만, Google은 권장 속성으로 openingHoursSpecification을 안내합니다. Google에 맞춰 보완할 때는 그 안에 요일을 dayOfWeek, 여는 시간을 opens, 닫는 시간을 closes로 적습니다. 두 형식을 함께 제공한다면 같은 영업시간을 뜻해야 합니다.
식당 정보와 조리법 정보의 차이
Restaurant 유형은 음식점을, Recipe는 재료와 조리 단계를 갖춘 조리법을 나타냅니다. 음식 이름이 있다는 이유만으로 식당 메뉴 페이지를 Recipe로 표시하지는 않습니다. 반대로 조리법을 소개한 블로그 글 자체도 Restaurant에 해당하지 않습니다.
배포 전 확인할 내용
먼저 페이지 본문과 구조화 데이터가 같은 지점의 주소, 영업시간, 휴무일, 전화번호를 담고 있는지 대조합니다. 지도에 등록한 정보가 다르다면 실제 운영 정보를 기준으로 바로잡고, 메뉴 링크가 해당 식당의 현재 메뉴를 여는지도 확인합니다.
Schema.org Validator에서는 Restaurant의 address 안에 PostalAddress가 들어 있는지, 속성과 값의 형식에 오류가 없는지 검사합니다. Google 리치 결과 테스트에서는 Google이 지원하는 항목과 필수 속성을 검사합니다. 네이버의 필수 항목은 네이버 지침과 별도로 대조해야 하며, Google 검사 통과를 네이버 검증 결과로 대신할 수는 없습니다.
자주 묻는 질문
검사를 통과하면 검색결과에도 표시되나요?
코드가 유효하고 필수 속성을 채웠더라도 검색 노출은 보장되지 않습니다. Google은 마크업 외에도 페이지 내용과 검색 상황 등을 고려해 표시 여부를 정합니다. 식당 정보를 전달하는 코드와 검색 화면에 실제로 나타난 결과를 구별해야 합니다.
지점 목록 하나로 표시해도 되나요?
목록 페이지에 여러 지점을 담을 수는 있지만, 하나의 Restaurant에 여러 지점의 주소와 시간을 섞어 넣으면 안 됩니다. 각 지점을 별도의 Restaurant 항목으로 나누고 해당 지점의 이름, 주소, 영업시간을 넣습니다. 지점별 페이지가 있다면 각 페이지의 정보도 그 지점에 맞춥니다.
함께 알아두면 좋은 용어
- 지역 비즈니스 구조화 데이터: 실제 사업장의 이름, 위치와 운영 정보를 표현한 데이터
- 주소 구조화 데이터: 도로명, 지역, 우편번호 등으로 주소를 나누어 표현한 데이터
- 레시피 구조화 데이터: 재료와 조리 단계 등 음식 조리법을 표현한 데이터