본문 바로가기
MAKESITE
무료 스캔 문의하기 로그인

점검 항목 · 검색 노출

LocalBusiness · Service 스키마 없음

푸터에 상호와 주소와 전화번호가 다 적혀 있는데도 검색엔진이 우리를 업체로 인식하지 못하는 경우가 있습니다.

심각도 치명 검색 노출 무료 스캔 판정 항목 /check/localbusiness-schema

01DEFINITION

한 줄로 말하면

상호, 주소, 전화, 영업시간을 기계가 읽을 수 있는 형태로 적어 두는 표시입니다. 지역 검색과 지도, AI 답변이 모두 이 정보를 참고하는데, 홈페이지에 사람 눈으로만 보이게 적혀 있으면 그 어디에도 반영되지 않습니다.

02RISK

없으면 무슨 일이 생기나

화면에 적힌 글자와 기계가 읽는 데이터는 다릅니다. 푸터에 "서울시 강남구 …"라고 적혀 있어도 검색엔진에게 그것은 주소가 아니라 그냥 문자열입니다. 사람은 위치와 맥락으로 그것이 사업장 주소임을 알지만, 기계는 그 판단을 하지 않습니다. 지역명이 들어간 검색에서 후보로 오르려면 "이것은 주소다"라고 따로 말해 주어야 합니다.

답변엔진은 업체를 지목할 때 이름과 연락처가 한 덩어리로 묶여 있는 출처를 선호합니다. 이름은 헤더에, 전화는 푸터에, 주소는 회사소개 페이지에 흩어져 있으면 그 셋이 같은 사업자의 것이라는 보장이 없습니다. 사람에게는 자명하지만 기계에게는 세 개의 독립된 사실입니다.

경쟁사가 이 표시를 하고 있으면 차이가 눈에 보입니다. 같은 지역 같은 업종을 검색했을 때 한쪽은 이름과 전화가 붙은 카드로 나오고 다른 쪽은 제목과 설명 두 줄로만 나옵니다. 클릭이 어디로 갈지는 명백합니다.

연락처가 바뀌었을 때 문제가 드러납니다. 화면 문구만 고치고 구조화 표시를 그대로 두면 기계는 옛 번호를 계속 들고 있습니다. 표시가 아예 없는 것보다 이 상태가 더 나쁩니다 — 잘못된 정보가 검색 결과에 남습니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    구조화 데이터가 나가고 있는지부터 본다

    먼저 있는지를 봅니다. 아무것도 안 나오면 이 항목은 실패입니다. 나온다면 그 안에 사업자 종류가 있는지 다음 단계에서 봅니다.

    $ curl -s https://example.com/ | grep -A2 'application/ld+json'
    <script type="application/ld+json">{"@context":"https://schema.org", …
  2. 02
    종류가 무엇으로 선언돼 있는지 본다

    Organization 만 있고 LocalBusiness 계열이 없는 경우가 가장 흔합니다. Organization 은 "어떤 조직"이라는 뜻이고 사업장 정보를 요구하지 않습니다. 지역 검색에 필요한 것은 그 하위 종류입니다.

    $ curl -s https://example.com/ | grep -o '"@type":[^,]*' | sort -u
    "@type":"Organization"
    "@type":"WebSite"
  3. 03
    이름과 연락처가 실제로 값을 갖고 있는지 본다

    마크업을 넣어 두고 값이 비어 있는 경우가 실제로 많습니다. 테마가 껍데기만 출력하고 관리자가 내용을 안 채운 상태입니다. 검색엔진은 빈 값을 무시하므로 넣으나 마나가 됩니다.

    $ curl -s https://example.com/ | python -c \
      "import sys,json,re;d=re.search(r'ld\+json\">(.*?)</script>',sys.stdin.read(),16);print(d.group(1)[:400])"
  4. 04
    화면의 값과 마크업의 값이 같은지 대조한다

    이 항목에서 가장 자주 나는 사고입니다. 전화번호를 바꾸면서 화면만 고치면 둘이 갈립니다. 사람이 보는 번호와 기계가 읽는 번호가 다른 상태는 표시가 없는 것보다 나쁩니다.

    $ curl -s https://example.com/ > /tmp/p.html
    $ grep -o '02-[0-9-]*' /tmp/p.html | sort -u
  5. 05
    구글 리치 결과 테스트로 확인한다

    문법 오류와 필수 속성 누락을 한 번에 잡아 줍니다. 우리 판정은 종류와 이름만 보지만 이 도구는 구글이 실제로 무엇을 읽었는지 보여 줍니다. 조치 후 반드시 한 번 돌려 보십시오.

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

노드를 새로 만들지 말고 있던 것의 종류를 정확히 한다

이미 Organization 이 있다면 그것을 고칩니다. 사업자 노드를 하나 더 만들면 같은 회사가 그래프에 둘이 되고, 그 상태는 신원 신호를 오히려 흐립니다. ProfessionalService 는 LocalBusiness 의 하위이고 LocalBusiness 는 Organization 의 하위라, 종류를 둘로 적으면 기존 참조가 그대로 살아 있습니다.

{
  "@context": "https://schema.org",
  "@type": ["Organization", "ProfessionalService"],
  "@id": "https://example.com/#org",
  "name": "회사이름",
  "url": "https://example.com/"
}
업종에 맞는 종류를 고른다

LocalBusiness 아래에는 업종별 하위 종류가 수십 가지 있습니다. 병원은 MedicalBusiness, 음식점은 FoodEstablishment, 법률사무소는 LegalService 입니다. 맞는 것이 없으면 ProfessionalService 나 LocalBusiness 를 그대로 씁니다. 억지로 다른 업종을 고르지 마십시오.

LocalBusiness              업종이 애매하거나 일반적일 때
ProfessionalService        컨설팅 · 대행 · 전문 서비스
Store                      소매점
MedicalBusiness            의원 · 병원          Dentist  치과
FoodEstablishment          음식점 · 카페
LegalService               법무 · 노무          FinancialService  금융 · 세무
HomeAndConstructionBusiness  인테리어 · 시공
연락처와 주소를 값으로 채운다

이름만 있으면 형식은 통과하지만 지역 검색에서는 쓸모가 적습니다. 주소는 PostalAddress 로 구조를 만들고, 없는 값은 빈 문자열로 넣지 말고 키째로 빼십시오. 빈 문자열은 "주소가 없는 회사"가 아니라 "주소가 빈 문자열인 회사"로 읽혀 오류로 잡힙니다.

"telephone": "02-000-0000",
"email": "info@example.com",
"address": {
  "@type": "PostalAddress",
  "streetAddress": "서울특별시 …",
  "addressCountry": "KR"
}
값의 출처를 한 곳으로 만든다

화면 푸터와 구조화 표시가 같은 데이터에서 나오게 하십시오. 두 곳에 따로 적으면 언젠가 한쪽만 바뀝니다. 관리자 설정이든 설정 파일이든, 고치는 자리가 하나여야 둘이 갈리지 않습니다.

// 푸터와 스키마가 같은 함수를 부른다
$biz = get_business_info();
echo $biz['tel'];                        // 화면
$ld['telephone'] = $biz['tel'];          // 스키마
영업시간과 좌표는 있을 때만 넣는다

openingHours 와 geo 는 지역 검색에서 도움이 되지만 정확할 때만 그렇습니다. 실제와 다른 영업시간은 헛걸음한 방문자를 만들고, 그 불만은 리뷰로 남습니다. 확실하지 않으면 넣지 않는 편이 낫습니다.

주의. 지어내지 마십시오. 없는 지점, 실제와 다른 영업시간, 대표번호가 아닌 개인 휴대폰을 넣으면 당장은 통과하지만 나중에 정정하기가 더 어렵습니다. 이 표시는 신원 선언이므로 틀린 값은 신뢰를 깎는 쪽으로 작동합니다.

05FAQ

자주 묻는 질문

오프라인 매장이 없는데도 LocalBusiness 를 써야 하나요

사업자 등록 주소가 있고 그 주소로 방문이 가능하다면 씁니다. 온라인으로만 운영하고 방문객을 받지 않는다면 Organization 에 ProfessionalService 를 함께 적는 정도가 정확합니다. 방문할 수 없는 주소를 매장처럼 표시하면 지도 검색에서 오히려 문제가 됩니다.

Organization 만 있어도 되지 않나요

Organization 은 조직이라는 것만 말하고 사업장 정보를 요구하지 않습니다. 지역 검색과 지도, 그리고 "○○ 근처" 형태의 질문은 LocalBusiness 계열을 봅니다. 둘을 함께 적으면 기존 참조를 그대로 두면서 종류만 정확해집니다.

지점이 여러 곳이면 어떻게 하나요

지점마다 페이지를 만들고 각 페이지에 그 지점의 정보를 선언하는 것이 원칙입니다. 한 페이지에 여러 주소를 몰아넣으면 검색엔진이 어느 것이 그 페이지의 사업장인지 판단하지 못합니다. 본사는 Organization, 각 지점은 LocalBusiness 로 두고 서로 연결하는 구조가 안전합니다.

적용했는데 검색 결과가 그대로입니다

구조화 표시는 노출을 보장하지 않고 판단 재료를 제공할 뿐입니다. 반영에는 재크롤링이 필요해 며칠에서 몇 주가 걸립니다. 먼저 리치 결과 테스트로 문법이 맞는지, 그리고 화면의 값과 마크업의 값이 같은지 확인하십시오. 둘 중 하나가 어긋나면 아무리 기다려도 반영되지 않습니다.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 39가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.