Membangun @graph JSON-LD Lintas-Halaman
Template dan walkthrough untuk memasang satu @graph JSON-LD yang merujuk ke dirinya sendiri lintas-halaman, agar Google merakit Organization, Person, dan Service jadi satu entitas.
Cara paling umum memasang schema.org adalah satu JSON-LD per halaman. Itu valid, tapi lemah. Pendekatan @graph lintas-halaman adalah membuat setiap halaman menerbitkan mini-graph yang isinya entity sama, dirujuk via @id yang identik. Hasilnya: Google membaca 10 halaman sebagai 10 saksi yang mengkonfirmasi entitas yang sama.
Prinsip inti: @id sebagai entity identifier
Schema.org tidak memaksa @id identik lintas-halaman. Tapi kalau kamu buat identik, Google akan menggabungkan mereka. Itulah yang kita manfaatkan.
Pola yang dipakai: @id = URL + fragment hash. Contoh:
https://hibranwar.com/#person → Person (Ibrahim Anwar) https://hibranwar.com/#website → WebSite https://hibranwar.com/#organization → Organization (Hibranwar Labs)
Fragment hash #person, #website, #organization adalah konvensi yang diadopsi Yoast, Rank Math, dan kebanyakan plugin. Tidak wajib, tapi disarankan untuk konsistensi.
Minimal viable graph
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://witanabe.com/#organization",
"name": "PT Witanabe Integrasi Indonesia",
"url": "https://witanabe.com/",
"logo": "https://witanabe.com/images/logo.webp",
"sameAs": [
"https://www.linkedin.com/company/witanabe",
"https://www.wikidata.org/wiki/Q123456789"
]
},
{
"@type": "WebSite",
"@id": "https://witanabe.com/#website",
"url": "https://witanabe.com/",
"name": "Witanabe",
"publisher": { "@id": "https://witanabe.com/#organization" }
}
]
}
Cross-page linkage
Di halaman /products/albin-pump/, kamu tidak ulangi semua. Kamu terbitkan Product, dan rujuk Organization via @id:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Product",
"@id": "https://witanabe.com/products/albin-pump/#product",
"name": "ALBIN ALP Series Air-Operated Diaphragm Pump",
"brand": { "@id": "https://witanabe.com/#organization" },
"manufacturer": { "@id": "https://witanabe.com/#organization" }
}
]
}
Perhatikan: Product tidak mendefinisikan ulang Organization. Ia hanya menunjuk ke @id canonical. Ini membuat crawler paham: Product ini diproduksi oleh Organization yang ada di homepage.
Portofolio multi-domain
Kalau kamu punya beberapa domain (seperti Ibrahim: hibranwar.com, ptarsindo.com, witanabe.com, hibrkraft.com), satu Person bisa dirujuk dari semua domain. Ini adalah entity triangle pattern.
// Di hibranwar.com (canonical Person):
{ "@type": "Person", "@id": "https://hibranwar.com/#person", "name": "Ibrahim Anwar", ... }
// Di ptarsindo.com (reference, tidak canonical):
{ "@type": "Organization", "@id": "https://ptarsindo.com/#organization",
"founder": { "@id": "https://hibranwar.com/#person" } }
Hanya satu domain yang 'canonical' untuk Person. Domain lain merujuk via @id tapi tidak mendefinisikan ulang. Kalau semua domain mendefinisikan Person yang sama, Google bisa bingung mana yang primary.
Validasi
- Test di Schema Markup Validator (validator.schema.org).Harus lulus tanpa warning.
- Test di Rich Results Test Google.Hasilnya akan tunjukkan entitas mana yang eligible untuk rich result.
- Cek di Google Search Console > Enhancements.Tunggu 7-14 hari. Harus muncul Organization atau Person sebagai dapat diakses.
- Uji di AI chatbot: tanyakan 'Siapa founder [brand]'.Kalau jawaban akurat, graph sudah terbaca.