Schema Markup / Data Structure มี่กี่ชนิด

ปัจจุบัน 3 Type of Schema markup ที่นิยม มีดังนี้

  • RDFa
  • Microdata
  • JSON-LD

บทความนี้ ผมโฟกัสเฉพาะ JSON-LD (JavaScript Object Notation for Linked Data) เนื่องจากเป็นรูปแบบซึ่งกูเกิ้ลแนะนำ และนิยมใช้ในเว็บไซต์มากที่สุด

JSON-LD schema markup core components

JSON-LD Core Components คือ คีย์เวิร์ดและรูปแบบการเขียน JSON-LD schema markup  โดยเหตุผลที่เราควรเข้าใจ Core Components ก็เพราะ ทำให้สร้าง JSON-LD schema markup ได้ด้วยตัวเอง  เนื่องจาก การติดตั้ง Schema markup บนเว็บไซต์มี 2 ทางเลือก คือ ใช้เครื่องมือซึ่งเสียเงินรายปี กับ ติดตั้งเอง (ฟรี) ดังนั้นหากเราสร้างและติดตั้งได้เอง จะประหยัดค่าใช้จ่ายได้มาก

โดยคีย์เวิรด์และรูปแบบการเขียน มีดังนี้


1. Script Wrapper

JSON-LD ทั้งหมดต้องอยู่ใต้ HTML <script> ชนิดพิเศษ เพื่อแจ้งบ็อตของเสิร์ชเอ็นจิน (เช่น Googlebot) ทราบว่า ข้างในคือข้อมูลที่มีโครงสร้าง (Linked Data)

  • รูปแบบ: <script type=”application/ld+json”> … </script>

2. @context

@context คือการยืนยันว่า โครงสร้างข้อมูลอ้างอิงตามมาตรฐานของ Schema.org ส่งผลให้เสิร์ชเอ็นจินเข้าใจนิยามของคีย์เวิรด์ต่างๆ

  • ค่ามาตรฐานที่ใช้: “@context”: “https://schema.org”

3. @type | Properties

@type คือการระบุว่า เว็บเพจคือ “อะไร”

Properties คือ รายละะอียดของ @type

รูปแบบ (syntax)

“@type”: “ประเภทของข้อมูล”,
“Properties”: “value 1”,
“Properties”: “value 2”

ตัวอย่าง

  • อธิบายข้อมูลประเภท “สินค้า”

@type”: “Product”,
“name”: “สมาร์ตโฟนไร้สาย รุ่น Nexus X1”,
“description”: “สมาร์ตโฟนหน้าจอ OLED ขนาด 6.5 นิ้ว พร้อมระบบชาร์จไวและกล้อง AI”

คุณสมบัติของ @type กับ Properties

การเข้าใจคุณสมบัติของ @type กับ Properties คือสิ่งสำคัญมาก เพราะทำให้สร้าง JSON-LD schema markup ได้ถูกต้อง มีคุณสมบัติดังนี้

  1. @Types มี Properties ของตัวเอง

แต่ละ @Type มี Properties ของตัวเอง ตัวอย่างเช่น หากคุณเลือก @type = @Product , Properties ที่เลือกใช้ต้องเป็นของ @Product เท่านั้น

คำถามคือ แล้วรู้ได้ไงว่า @Product มี Properties อะไรบ้าง

คำตอบคือ ไปที่ schema.org >> ค้นหา “Product” >> ปรากฏ Properties list ซึ่งใช้กับ Product ได้

  1. Inheritance Type : @Types[ลูก] ได้ Properties ทั้งหมดของ Types[แม่]

@Type มีลักษณะเป็น “ลำดับขั้น” โดยลำดับบนสุดคือ @Thing จากนั้นคือลำดับขั้นรองลงมาคือ @Action , @Event , @Organization …..] ตัวอย่างตามรูป

คุณสมบัติของ @Typeคือ @Types[ลูก] ได้ Properties ทั้งหมดของ Types[แม่]

ตัวอย่างเช่น เราเขียน schema markup ของ @Restaurant ที่มีลำดับขั้นดังนี้

Thing
└── Organization
└── LocalBusiness
└── FoodEstablishment
└── Restaurant ← เราอยู่ที่นี่

สมมุติว่า @Thing & @Organization มี Property ดังนี้

Properties ที่ Restaurant สืบทอด
ชั้นที่ 1 (Thing) และ ชั้นที่ 2 (Organization)
Property มาจาก
ชั้นที่ 1 — Thing  ·  ชั้นสูงสุด ทุก Type สืบทอดจากที่นี่
name Thing
description Thing
url Thing
image Thing
sameAs Thing
identifier Thing
ชั้นที่ 2 — Organization  ·  สืบทอดจาก Thing + เพิ่ม Properties ของตัวเอง
address Organization
telephone Organization
email Organization
logo Organization
foundingDate Organization
numberOfEmployees Organization

ดังนั้น @Restaurant สามารถใช้ Properties ของ @Thing & @Organization ได้ เนื่องจากเป็นลำดับชั้นรองที่อยู่ใต้ @Thing & @Organization นั่นเองครับ

  1. Properties มี “Value Type”

Value Type คือ ชนิดข้อมูลของ Properties มีทั้งหมด 6 ชนิด

Value Types ใน Schema Markup
ประเภทค่าที่ใช้ใน JSON-LD ทั้ง 6 ชนิด
Type รูปแบบ ตัวอย่าง
ค่าข้อความ — กลุ่มที่ใช้บ่อยที่สุด
Text ข้อความในเครื่องหมาย "..." "servesCuisine": "Thai"
"name": "ร้านข้าวต้มปลา"
URL ลิงก์ขึ้นต้นด้วย https:// "url": "https://example.com"
"image": "https://example.com/img.jpg"
ค่าตัวเลขและตรรกะ — ห้ามใส่เครื่องหมายคำพูด
Number ตัวเลขล้วน ไม่มี "..." "ratingValue": 4.5
"reviewCount": 128
Boolean true หรือ false เท่านั้น "isAccessibleForFree": true
"isFamilyFriendly": false
ค่าวันที่และโครงสร้าง — ต้องใช้รูปแบบที่กำหนด
Date ISO 8601 รูปแบบ YYYY-MM-DD "datePublished": "2025-06-01"
"startDate": "2025-12-31T18:00:00+07:00"
Object ซ้อน Schema type ข้างใน ต้องมี @type "address": {
  "@type": "PostalAddress",
  "addressCountry": "TH"
}
ค่าข้อความ — กลุ่มที่ใช้บ่อยที่สุด
Text
รูปแบบ
ข้อความในเครื่องหมาย "..."
ตัวอย่าง
"servesCuisine": "Thai"
"name": "ร้านข้าวต้มปลา"
URL
รูปแบบ
ลิงก์ขึ้นต้นด้วย https://
ตัวอย่าง
"url": "https://example.com"
"image": "https://example.com/img.jpg"
ค่าตัวเลขและตรรกะ — ห้ามใส่เครื่องหมายคำพูด
Number
รูปแบบ
ตัวเลขล้วน ไม่มี "..."
ตัวอย่าง
"ratingValue": 4.5
"reviewCount": 128
Boolean
รูปแบบ
true หรือ false เท่านั้น
ตัวอย่าง
"isAccessibleForFree": true
"isFamilyFriendly": false
ค่าวันที่และโครงสร้าง — ต้องใช้รูปแบบที่กำหนด
Date
รูปแบบ
ISO 8601 รูปแบบ YYYY-MM-DD
ตัวอย่าง
"datePublished": "2025-06-01"
"startDate": "2025-12-31T18:00:00+07:00"
Object
รูปแบบ
ซ้อน Schema type ข้างใน ต้องมี @type
ตัวอย่าง
"address": {
  "@type": "PostalAddress",
  "addressCountry": "TH"
}

ในเว็บ schema.org จะระบุว่า Properties ต้องใช้ Value Type อะไร ตัวอย่างเช่น

Nested Objects คือ Value Type ที่เป็น Schema type เป็นการใส่ Schema type ซ้อนอยู่ภายใน Schema type อีกตัวหนึ่ง

ตัวอย่างเช่น

Leave a Reply

Your email address will not be published. Required fields are marked *