로컬 비즈니스 스키마 마크업에 대한 대부분의 가이드는 명백한 필드를 다룹니다: name, address, telephone, openingHours. 대부분의 구현은 거기서 멈춥니다. 그리고 이러한 필드만 구현하는 대부분의 비즈니스는 여전히 AI 엔진에 보이지 않습니다. 스키마가 잘못되었기 때문이 아니라 AI 인용에 특별히 중요한 방식으로 불완전하기 때문입니다.
AI 엔진이 로컬 쿼리 해결을 위해 가장 무겁게 가중치를 두는 필드는 위치 특정 필드입니다: geo, hasMap, areaServed, sameAs. 이들은 AI 엔진이 비즈니스를 명확한 지리적 엔티티로 해결하고, 위치 특정 쿼리와 일치시키며, 여러 권위 있는 소스에서 존재를 확인하도록 하는 필드입니다. 이 가이드는 모든 위치 필드를 포함하는 완전한 복사-붙여넣기 JSON-LD 구현과 각 필드가 AI 가시성을 위해 수행하는 작업의 설명을 제공합니다.
위치 필드가 AI에 독특하게 중요한 이유
전통적인 SEO 스키마 가이드는 geo 좌표를 선택 사항으로 취급합니다. Google의 풍부한 결과의 경우 좌표는 실제로 선택 사항이고 Google은 주소를 지오코딩할 수 있습니다. AI 엔진의 경우 좌표는 근본적으로 다른 함수를 제공합니다: 엔티티 명확성.
"The Blue Door Café"라는 이름의 비즈니스를 생각해보세요. 유럽 전역에서 이 이름 또는 유사한 이름을 가진 수십 개의 비즈니스가 있을 수 있습니다. AI 엔진이 "좋은 커피를 하는 근처 카페" 쿼리를 받으면 올바른 엔티티를 해결해야 합니다. 주소 문자열은 도움이 되지만 형식 불일치가 발생하기 쉽습니다. "123 High St" 대 "123 High Street" 대 "123 High St, 1st floor"는 같은 위치를 설명하더라도 기술적으로 다른 문자열입니다.
지오좌표는 명확합니다. "latitude": 52.3676, "longitude": 4.9041은 지구상의 다른 어떤 포인트와도 혼동될 수 없습니다. 스키마에 Google 비즈니스 프로필 핀 및 Apple Maps 위치와 일치하는 정확한 좌표가 포함되면 AI 엔진은 엔티티를 확실하게 해결할 수 있으며 인용 신뢰도가 상승합니다.
이 엔티티 해결 프로세스는 Gemini가 로컬 비즈니스를 추천하는 방법에 대한 가이드 및 AEO가 로컬 비즈니스를 의미하는 것의 더 넓은 맥락에서 자세히 설명됩니다.
완전한 LocalBusiness JSON-LD 구현
다음은 LocalBusiness의 완전하고 프로덕션 준비된 JSON-LD 블록입니다. @type을 특정 비즈니스 유형에 맞게 조정하세요(올바른 유형 선택에 대한 아래 섹션 참조). 모든 필드는 목적으로 주석이 달려 있습니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Maison Durand",
"alternateName": "Maison Durand Brasserie",
"description": "Traditional French brasserie in central Lyon serving seasonal Lyonnais cuisine since 1984. Reservations available for groups.",
"url": "https://www.maisondurand.fr",
"telephone": "+33-4-72-00-00-00",
"email": "contact@maisondurand.fr",
"address": {
"@type": "PostalAddress",
"streetAddress": "14 Rue Mercière",
"addressLocality": "Lyon",
"addressRegion": "Auvergne-Rhône-Alpes",
"postalCode": "69002",
"addressCountry": "FR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
},
"hasMap": "https://maps.google.com/?q=45.7640,4.8357",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "12:00",
"closes": "14:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "19:00",
"closes": "22:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "12:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Sunday"],
"opens": "12:00",
"closes": "15:00"
}
],
"servesCuisine": ["French", "Lyonnais"],
"priceRange": "€€",
"menu": "https://www.maisondurand.fr/menu",
"acceptsReservations": true,
"areaServed": {
"@type": "City",
"name": "Lyon"
},
"image": [
"https://www.maisondurand.fr/images/exterior.jpg",
"https://www.maisondurand.fr/images/interior.jpg",
"https://www.maisondurand.fr/images/menu-dish.jpg"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "284",
"bestRating": "5",
"worstRating": "1"
},
"sameAs": [
"https://www.google.com/maps/place/Maison+Durand+Lyon",
"https://www.facebook.com/MaisonDurandLyon",
"https://www.tripadvisor.com/Restaurant_Review-maisondurand",
"https://www.yelp.com/biz/maison-durand-lyon"
],
"founder": {
"@type": "Person",
"name": "Pierre Durand"
},
"foundingDate": "1984",
"currenciesAccepted": "EUR",
"paymentAccepted": "Cash, Credit Card, Visa, Mastercard",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "Outdoor seating",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Wheelchair accessible",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Wi-Fi",
"value": true
}
]
}
</script>
[Image: Browser developer tools showing the Elements panel with the HTML head section open, and the LocalBusiness JSON-LD script tag visible and expanded, showing the geo, sameAs, and openingHoursSpecification fields highlighted]
필드별 분석: 중요한 위치 필드
geo, 지오좌표
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
}
수행 작업: 기계 가독 좌표 쌍으로 비즈니스의 정확한 지리적 위치를 제공합니다. AI 엔진은 이를 엔티티 명확화 및 위치 특정 쿼리 해결에 사용합니다.
좌표 찾는 방법: Google Maps를 열고 비즈니스 위치를 마우스 우클릭한 후 "여기가 어디인가?"를 선택합니다. 좌표가 화면 아래에 나타납니다. 또는 Google 비즈니스 프로필 핀 위치는 GBP 대시보드를 통해 액세스할 수 있는 좌표가 있습니다.
일반적인 실수: 실제 건물 위치가 아닌 대략적인 좌표(예: 도시 중심 좌표) 사용. AI 엔진은 소스 전반에 좌표를 교차 참조하고, 부정확한 일치는 신뢰도를 감소시킵니다.
hasMap, 맵 링크
"hasMap": "https://maps.google.com/?q=45.7640,4.8357"
수행 작업: 매핑 플랫폼의 위치로 직접 링크를 제공합니다. 이는 검증 신호로 기능하며, AI 엔진 및 크롤러는 이 링크를 따라 지리적 위치를 확인할 수 있습니다.
모범 사례: 좌표가 명확하지 않으므로 장소 이름 URL이 아닌 좌표 기반 Google Maps URL을 사용합니다. 또한 추가 부증을 위해 MapAtlas 또는 OpenStreetMap 위치를 가리키는 두 번째 hasMap 값을 추가할 수 있습니다.
areaServed, 서비스 영역
"areaServed": {
"@type": "City",
"name": "Lyon"
}
배송 또는 서비스 반경이 있는 비즈니스의 경우 GeoCircle을 사용합니다:
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
},
"geoRadius": "15000"
}
수행 작업: 비즈니스가 서비스하는 지리적 영역을 AI 엔진에 알려줍니다. 이는 물리적 주소를 넘어 서비스하는 영역을 다루는 서비스 비즈니스(배관공, 청소부, 배송 서비스) 및 "내 근처" 쿼리 일치에 필수적입니다. 레스토랑은 City를 사용할 수 있습니다. 15km 반경을 다루는 배송 서비스는 미터 단위의 반경이 있는 GeoCircle을 사용합니다.
일반적인 실수: areaServed 완전히 생략. 이것 없이 AI 엔진은 정확한 주소 또는 지역을 포함하는 쿼리와만 비즈니스를 연결할 수 있으며, 실제로 서비스하는 더 넓은 영역과 연결할 수 없습니다.
sameAs, 권위 있는 프로필 링크
"sameAs": [
"https://www.google.com/maps/place/YOUR_PLACE_ID",
"https://www.facebook.com/yourbusiness",
"https://www.tripadvisor.com/Restaurant_Review-yourbusiness",
"https://www.yelp.com/biz/your-business"
]
수행 작업: 부증 네트워크를 생성하고, 스키마에서 권위 있는 외부 플랫폼에 나타나는 동일한 엔티티로의 링크를 생성합니다. AI 엔진은 이러한 링크를 따라 웹사이트의 엔티티가 Google Maps, Facebook 및 TripAdvisor의 엔티티와 동일한지 확인합니다. 각 부증 소스는 인용 신뢰도를 증가시킵니다.
최소 권장 sameAs 링크: Google 비즈니스 프로필, Facebook, 하나의 업계 관련 디렉토리(호텔업을 위한 TripAdvisor, 의료를 위한 Zocdoc, 가정 서비스를 위한 Houzz).
일반적인 실수: 웹사이트와 NAP 정보가 일치하지 않는 페이지로 이동하는 sameAs 링크 포함. sameAs 대상의 불일치는 신뢰도를 증가시키지 않고 능동적으로 감소시킵니다.
전체 NAP 일관성 그림은 AI 검색을 위한 NAP 일관성 가이드에서 다룹니다.
올바른 @type 선택
LocalBusiness는 기본 유형입니다. 더 구체적인 하위 유형을 사용하면 AI 엔진에 더 나은 카테고리 신호를 제공합니다. 가장 일반적으로 사용되는 하위 유형:
| Business Type | @type Value |
|---|---|
| Restaurant, café, bar | Restaurant, CafeOrCoffeeShop, BarOrPub |
| Hotel, B&B, hostel | Hotel, BedAndBreakfast, Hostel |
| Doctor, clinic | MedicalClinic, Physician |
| Dentist | Dentist |
| Gym, fitness studio | SportsActivityLocation, HealthClub |
| Lawyer | LegalService |
| Accountant | AccountingService |
| Retail shop | Store, or more specific: ClothingStore, ElectronicsStore |
| Museum, gallery | Museum |
| Tourist attraction | TouristAttraction |
| Real estate agency | RealEstateAgent |
특정 유형이 여기에 나열되지 않으면 schema.org/LocalBusiness에서 전체 Schema.org 유형 계층 구조를 확인합니다.
웹사이트에 JSON-LD를 추가하는 방법
<script type="application/ld+json"> 블록을 비즈니스를 나타내는 모든 페이지의 <head> 요소 내에, 최소한 홈페이지와 연락처/위치 페이지에 배치합니다.
정적 HTML 사이트: 스크립트 태그를 HTML 파일의 <head>에 직접 붙여넣습니다.
WordPress: Yoast SEO 또는 RankMath 플러그인(둘 다 설정에 LocalBusiness 스키마 필드가 있음)을 사용하거나 헤더 삽입 플러그인을 통해 원시 JSON-LD를 추가합니다.
Next.js / React: next/head 또는 App Router의 메타데이터 API를 사용하여 <script> 요소 내의 <head> 내에 스크립트 태그를 추가합니다:
export default function Page() {
const schema = {
"@context": "https://schema.org",
"@type": "LocalBusiness",
// ... all fields
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
{/* page content */}
</>
);
}
Shopify: theme.liquid 파일의 <head> 섹션을 통해 추가하거나 Shopify App Store의 스키마 마크업 앱을 사용합니다.
[이미지: search.google.com/test/rich-results의 스크린샷은 LocalBusiness 스키마 검증 결과를 표시하며 녹색 "유효한 항목 감지됨" 메시지와 검출된 필드 나열: 이름, 주소, geo, openingHoursSpecification, aggregateRating]
구현 검증
JSON-LD를 추가한 후 두 가지 도구로 검증합니다:
1. Google Rich Results Test, search.google.com/test/rich-results
페이지 URL을 입력하거나 JSON-LD를 직접 붙여넣습니다. 도구는 감지된 스키마 유형을 표시하고 모든 필드를 검증하며 오류를 표시합니다. 유효한 LocalBusiness 결과는 Google이 마크업을 올바르게 읽을 수 있음을 의미합니다.
2. Schema.org Validator, validator.schema.org
Google의 도구보다 더 엄격합니다. Rich Results Test가 때때로 놓치는 더 이상 사용되지 않는 속성 및 유형 불일치를 표시합니다.
3. MapAtlas AEO Checker, /aeo-checker
Rich Results Test가 다루지 않는 AI 인용 신호(위치 필드, 외부 소스에 대한 NAP 일관성, 검토 신선도)를 특별히 감사합니다. Google 검증 후 이를 사용하여 AI 특정 레이어를 확인합니다.
AI 가시성을 훼손하는 일반적인 실수
openingHoursSpecification 대신 산문 형식의 영업 시간 사용: "월-금 오전 9시-오후 6시, 토요일 오전 10시-오후 4시, 일요일 휴무"는 사람이 읽을 수 있지만 기계 가독이 아닙니다. AI 엔진은 시간 쿼리 필터링을 위해 안정적으로 구문 분석할 수 없습니다.
주소가 완전하기 때문에 geo 생략: 주소는 사람의 이해를 위한 것입니다. 지오좌표는 기계 해결을 위한 것입니다. 둘 다 필요합니다.
sameAs 대상 불일치: Facebook 페이지의 전화번호가 웹사이트의 전화번호와 다르면 sameAs 링크는 부증이 아닌 모순을 생성합니다. 링크하기 전에 소스를 수정합니다.
오래된 aggregateRating 값: 일부 구현은 평가 개수를 하드코딩합니다. 2023년에 정확했지만 현재는 부정확한 정적 "reviewCount": "47"은 AI 신뢰도를 감소시키는 데이터 품질 신호를 생성합니다. 동적 값을 사용하거나 현재 상태를 유지할 수 없으면 필드를 생략합니다.
페이지당 여러 JSON-LD 블록: 페이지에 여러 스키마 스크립트가 있는 경우 서로 모순되지 않는지 확인합니다. 한 블록이 "telephone": "+33-4-72-00-00-00"이라고 말하고 다른 블록이 "telephone": "+33 4 72 00 00 01"이라고 말하는 페이지는 충돌을 생성합니다.
장기 복합 효과
JSON-LD 스키마는 일회성 전술이 아닙니다. AI 엔진이 웹사이트를 크롤링할 때마다 완전하고 일관되며 정확한 스키마 블록을 찾으면 엔티티의 신뢰도 점수가 점진적으로 증가합니다. 시간이 지남에 따라 이 복합은 자기 강화 인용 존재를 구축합니다: 더 많은 인용은 더 많은 방문, 더 많은 검토, 더 많은 언급을 생성하며, 차례로 AI 엔진이 찾을 더 많은 구조화된 신호를 생성합니다.
로컬 비즈니스를 위한 완전한 AEO 가이드는 웹사이트 스키마뿐만 아니라 AI 인용 엔진을 공급하는 모든 채널에서 이 복합 시스템을 구축하는 방법을 안내합니다.
현재 스키마 완전성 점수를 보기 위해 무료 MapAtlas AEO Checker로 시작한 다음 AI 검색 가시성 솔루션을 사용하여 전체 구조화된 데이터 스택을 구현하고 모니터링합니다. 위의 JSON-LD는 기초이며, 지속적으로 구축하면 AI 인용 존재는 모든 엔진 업데이트와 함께 성장할 것입니다.

