Files
html-examples/doc/seo/09_Schema.org.md
2025-03-11 00:21:14 +09:00

7.3 KiB

Schema.org는 구조화된 데이터를 웹에 추가하기 위한 개방형 표준으로, 검색 엔진(Google, Bing, Yahoo 등)이 웹 페이지의 콘텐츠를 더 잘 이해하고 활용할 수 있도록 설계되었습니다. 2011년에 Google, Microsoft, Yahoo, Yandex가 공동으로 시작했으며, 현재는 커뮤니티 주도로 유지됩니다. Schema.org는 주로 마크업 형식(Microdata, RDFa, JSON-LD)을 통해 HTML에 의미론적 데이터를 삽입하며, 이를 통해 검색 결과의 풍부한 표시(Rich Snippets), 음성 검색 최적화, 기계 학습 등 다양한 용도로 활용됩니다.


1. Schema.org의 정의와 목적

  • 정의: 웹 콘텐츠에 의미를 부여하는 어휘(Vocabulary)와 이를 적용하는 가이드라인 집합.
  • 목적:
    • 검색 엔진 최적화(SEO): 콘텐츠의 의미를 명확히 해 검색 결과 개선.
    • 풍부한 검색 결과: 리뷰 별점, 이벤트 날짜, 제품 가격 등이 검색 결과에 표시.
    • 기계 이해도 향상: AI, 크롤러가 데이터를 구조적으로 파싱 가능.
    • 상호운용성: 다양한 플랫폼 간 데이터 공유 용이.

2. Schema.org의 주요 특징

  • 어휘 기반: 계층적 타입(Type)과 속성(Property)으로 구성.
    • 예: Person 타입은 name, email, birthDate 속성을 가짐.
  • 확장성: 커뮤니티 제안으로 새로운 타입과 속성 추가 가능.
  • 형식 지원:
    • Microdata: HTML 속성 사용.
    • RDFa: HTML 속성으로 시맨틱 웹 연결.
    • JSON-LD: 별도 스크립트로 삽입 (가장 널리 사용).
  • 오픈 소스: 누구나 무료로 사용 가능, schema.org에서 문서 제공.

3. Schema.org의 주요 타입과 속성

Schema.org는 수백 개의 타입과 속성을 제공하며, 몇 가지 대표적인 예는 다음과 같습니다:

(1) Person (사람)

  • 속성: name, email, telephone, address, jobTitle.
  • 예: 개인 프로필.

(2) Event (이벤트)

  • 속성: name, startDate, endDate, location.
  • 예: 컨퍼런스, 공연.

(3) Product (제품)

  • 속성: name, description, price, brand, review.
  • 예: 전자상거래 상품.

(4) Article (기사)

  • 속성: headline, author, datePublished, image.
  • 예: 블로그 포스트, 뉴스.

(5) Organization (조직)

  • 속성: name, logo, contactPoint, url.
  • 예: 회사 정보.

4. Schema.org 마크업 형식

Schema.org는 세 가지 주요 형식으로 구현됩니다.

(1) Microdata

  • HTML 태그에 itemscope, itemtype, itemprop 속성 추가.
  • 예제:
    <div itemscope itemtype="http://schema.org/Person">
        <span itemprop="name">홍길동</span>
        <a href="mailto:hong@example.com" itemprop="email">hong@example.com</a>
    </div>
    

(2) RDFa

  • HTML 속성(typeof, property)으로 데이터 연결.
  • 예제:
    <div typeof="Person">
        <span property="name">홍길동</span>
        <a href="mailto:hong@example.com" property="email">hong@example.com</a>
    </div>
    

(3) JSON-LD (권장)

  • <script> 태그에 JSON 형식으로 삽입.
  • 예제:
    <script type="application/ld+json">
    {
        "@context": "http://schema.org",
        "@type": "Person",
        "name": "홍길동",
        "email": "hong@example.com"
    }
    </script>
    
  • 왜 권장?: HTML 구조와 분리, 유지보수 용이, 검색 엔진 선호.

5. Schema.org의 작동 방식

  1. 마크업 추가: 웹 페이지에 적절한 타입과 속성 삽입.
  2. 크롤링: 검색 엔진이 마크업을 파싱.
  3. 활용:
    • Rich Snippets: 별점, 가격 등이 검색 결과에 표시.
    • Knowledge Graph: Google의 지식 패널에 정보 제공.
    • 음성 검색: "가까운 이벤트는?" 같은 질문에 답변.

6. 자바로 Schema.org JSON-LD 생성 예제

Jackson 라이브러리를 사용해 Schema.org 데이터를 JSON-LD로 생성할 수 있습니다.

(1) 의존성 (Maven)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>

(2) 모델링 및 생성

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

@Data
public class PersonSchema {
    @JsonProperty("@context")
    private String context = "http://schema.org";

    @JsonProperty("@type")
    private String type = "Person";

    private String name;
    private String email;
}

public class SchemaOrgExample {
    public static void main(String[] args) throws Exception {
        PersonSchema person = new PersonSchema();
        person.setName("홍길동");
        person.setEmail("hong@example.com");

        ObjectMapper mapper = new ObjectMapper();
        String jsonLd = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
        
        System.out.println("<script type=\"application/ld+json\">");
        System.out.println(jsonLd);
        System.out.println("</script>");
    }
}

출력 결과:

<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Person",
  "name" : "홍길동",
  "email" : "hong@example.com"
}
</script>

7. Schema.org의 장점과 단점

  • 장점:
    • 검색 엔진의 강력한 지원 (Rich Snippets, SEO 향상).
    • 다양한 타입과 속성으로 유연성 제공.
    • JSON-LD로 쉬운 구현.
  • 단점:
    • 초기 학습 곡선 존재.
    • 잘못된 마크업 시 검색 엔진 패널티 가능.
    • 모든 데이터가 풍부한 결과로 반영되지 않을 수 있음.

8. Schema.org와 Microformats 비교

특성 Schema.org Microformats
형식 JSON-LD, Microdata 등 HTML 클래스
복잡도 중간 낮음
SEO 지원 강력 제한적
어휘 범위 광범위 제한적
현재 사용 주류 소규모/레거시
  • Schema.org: 현대 웹에서 SEO와 데이터 활용에 최적화.
  • Microformats: 간단한 구조화 데이터에 유용.

9. 현대적 맥락

  • 사용 사례: 전자상거래, 블로그, 이벤트 사이트, 지역 비즈니스 등.
  • 도구:
    • Google Structured Data Testing Tool: 마크업 검증.
    • Rich Results Test: 풍부한 결과 확인.
  • 확장: pending.schema.org로 새로운 타입 제안 가능.

10. 결론

Schema.org는 웹 콘텐츠에 구조화된 데이터를 추가하는 강력한 도구로, SEO와 사용자 경험을 동시에 개선합니다. JSON-LD 형식이 가장 널리 사용되며, 자바로 쉽게 생성 가능합니다. 검색 엔진의 풍부한 결과를 노리거나 데이터를 기계 친화적으로 만들고 싶다면 필수적인 선택입니다.

추가로 특정 타입(예: Event, Product)에 대한 예제나 질문이 있다면 말씀해주세요!