JSON-LD

·2025년 1월 17일

참고
1. schema.org
2. 블로그 - SEO를 위한 JSON-LD(구조화 데이터 마크업) 적용하기
3. 블로그 - Linked Data 와 JSON-LD [TIL / 네트워크]



SEO를 위해 metadata, rss.xml, robots, sitemap을 생성하는 것 외에도 JSON-LD라는 방법이 있는 것을 알게되었다. 그리고 구글같은 경우 JSON-LD를 더 잘 크롤링 한다는 것을 알게되었다.

JSON-LD(JavaScript Object Notation for Linked Data)는 웹에서 데이터를 연결하고 상호 운용성을 높이기 위해 설계된 Linked Data의 한 형태이다. JSON 형식을 기반으로 하며, 구조화된 데이터를 쉽게 표현하고 공유할 수 있도록 도와줍니다. 주로 시맨틱 웹(Semantic Web)과 구조화된 데이터를 웹 페이지에 통합하는 데 사용된다.

JSON-LD는 구조가 단순하고 JSON과 완벽하게 호환이 되는 장점도 갖고 있다. 그래도 처음에 봤을 때 약간 헷갈려서 블로그에 기록하기로 결정하였다.

우선 JSON-LD의 구성요소는 다음과 같다.

✏️ 1. @context : 데이터의 의미를 정의하는 데 사용됩니다. 이는 용어가 무엇을 의미하는지, 어떤 어휘를 사용하는지 등을 설명합니다.
✏️ 2. @type : 데이터의 유형을 지정합니다. 예를 들어, 사람, 장소, 이벤트 등 다양한 유형을 정의할 수 있습니다.
✏️ 3. @id : 각 데이터 항목의 고유 식별자를 지정합니다. 주로 URI를 사용하여 데이터 항목을 고유하게 식별합니다.

다음은 JSON-LD의 예시이다.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "홍길동",
  "jobTitle": "소프트웨어 개발자",
  "telephone": "(123) 456-7890",
  "url": "http://www.example.com"
}

우선 위에서 언급했던 대로 @context는 데이터의 의미를 정의하는 것으로 schema.org에서 정의되어있는 Schemas를 주로 사용할 것임을 나타낸다!(내가 이해한 바로는..)

그리고 그 아래 @typeschema.org의 Schemas안에 있는 Event, Person, Place, Product, ... 등등을 기입하면 된다.

나머지 properties는 Schema(ex. Person)의 property에 대한 내용으로, address, birthDate, email 등이 있다.

위의 예시와 같이 단순한 모양의 JSON-LD도 있지만 사실 조금 더 구체적인 형태의 JSON-LD가 더 보편적으로 많이 쓰이는 경향이 있다.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Seattle",
    "addressRegion": "WA",
    "postalCode": "98052",
    "streetAddress": "20341 Whitworth Institute 405 N. Whitworth"
  },
  "colleague": [
    "http://www.xyz.edu/students/alicejones.html",
    "http://www.xyz.edu/students/bobsmith.html"
  ],
  "email": "mailto:jane-doe@xyz.edu",
  "image": "janedoe.jpg",
  "jobTitle": "Professor",
  "name": "Jane Doe",
  "telephone": "(425) 123-4567",
  "url": "http://www.janedoe.com"
}

위의 JSON-LD에서 볼 수 있듯이 한 property 안에 @type(Schema) 추가적으로 기입하여 구체화할 수 있다.



(+) @type 안에는 커스텀 타입을 작성할 수도 있다.

{
  "@context": {
    "@vocab": "https://schema.org/",
    "custom": "https://example.com/vocab#"
  },
  "@type": "custom:Doctor",
  "name": "홍길동",
  "specialty": "Cardiology",
  "worksFor": {
    "@type": "Hospital",
    "name": "서울 중앙병원"
  }
}

@context에 custom 네임스페이스를 정의하여, 커스텀 타입이 https://example.com/vocab#Doctor를 가리키도록 설정한다.

그리고 @typecustom:Doctor 와 같이 작성하면서 custom 네임스페이스의 Doctor를 의미한다 ~ 라고 정의할 수 있다.

JSON-LD에 커스텀 네임스페이스를 추가해도 되지만 Schema.org에 Schema들이 꽤 많아서 되도록이면 Schema.org에 있는 것을 사용하는게 좋을것 같다!

0개의 댓글