참고
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과 완벽하게 호환이 되는 장점도 갖고 있다. 그래도 처음에 봤을 때 약간 헷갈려서 블로그에 기록하기로 결정하였다.
✏️ 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를 주로 사용할 것임을 나타낸다!(내가 이해한 바로는..)
그리고 그 아래 @type은 schema.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를 가리키도록 설정한다.
그리고 @type에 custom:Doctor 와 같이 작성하면서 custom 네임스페이스의 Doctor를 의미한다 ~ 라고 정의할 수 있다.
JSON-LD에 커스텀 네임스페이스를 추가해도 되지만 Schema.org에 Schema들이 꽤 많아서 되도록이면 Schema.org에 있는 것을 사용하는게 좋을것 같다!