JSON-LD ve @graph nedir?
JSON-LD (JavaScript Object Notation for Linked Data), web sayfalarına makine tarafından okunabilen yapılandırılmış veri eklemenin en kolay ve önerilen yöntemidir. Schema.org tarafından tanımlanan bu format, Google'ın içeriğinizi anlamasını ve zengin sonuçlar (rich results) olarak göstermesini sağlar.
@graph ise tek bir JSON-LD bloğunda birden fazla schema entity'sini tanımlamanıza ve aralarında ilişki kurmanıza olanak tanır. Geleneksel yaklaşımda her sayfa için ayrı, bağımsız schema blokları yazılırdı. @graph ile bu entity'ler birbirine @id referanslarıyla bağlanarak tutarlı bir bilgi grafiği oluşturuyor.
Tekil Schema (Eski Yöntem)
- Her sayfa için ayrı schema
- Entity'ler arası bağlantı yok
- Çakışma ve tutarsızlık riski
- Google entity'leri ayrı okur
- Knowledge Panel kazanma zor
@graph (Önerilen Yöntem)
- Tüm entity'ler tek blokta
- @id ile çapraz referans
- Tutarlı ve çakışmasız
- Google bütünü kavrar
- Knowledge Panel için güçlü sinyal
Neden @graph kullanmalısınız?
Google'ın Knowledge Graph algoritması, web'deki entity ilişkilerini anlamak için bağlantılı veri kullanır. @graph ile Organization → Service → Review zincirini kurduğunuzda Google şunu anlıyor: "Bu şirket, bu hizmeti sunuyor ve bu müşteriler bu hizmet için değerlendirme yazmış." Bu bağlantı zinciri hem sıralama hem de AI motorlarında kaynak seçimi için kritik.
Temel @graph yapısı
Bir @graph bloğu şu ana bileşenlerden oluşur. Her entity benzersiz bir @id alır ve diğer entity'lere bu ID ile referans verir.
Organization node
Tüm @graph'ın merkezi entity'si Organization'dır. Sitenizin diğer tüm schema'ları buraya bağlanır:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": ["Organization", "Brand"],
"@id": "https://siteniz.com/#org",
"name": "Şirket Adı",
"legalName": "Şirket A.Ş.",
"url": "https://siteniz.com",
"logo": {
"@type": "ImageObject",
"url": "https://siteniz.com/logo.png"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+90-xxx-xxx-xxxx",
"contactType": "customer service"
},
"sameAs": [
"https://linkedin.com/company/sirketadi",
"https://twitter.com/sirketadi"
]
}
]
}
WebSite ve WebPage node'ları
WebSite node'u sitenizin genel bilgilerini, WebPage ise ziyaret edilen sayfayı tanımlar. WebPage, Organization'a isPartOf ile bağlanır:
{
"@type": "WebSite",
"@id": "https://siteniz.com/#site",
"url": "https://siteniz.com",
"name": "Şirket Adı",
"publisher": { "@id": "https://siteniz.com/#org" },
"potentialAction": {
"@type": "SearchAction",
"target": "https://siteniz.com/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
},
{
"@type": "WebPage",
"@id": "https://siteniz.com/#page",
"url": "https://siteniz.com/",
"name": "Ana Sayfa",
"isPartOf": { "@id": "https://siteniz.com/#site" },
"about": { "@id": "https://siteniz.com/#org" }
}
Service node
Her hizmet için ayrı bir Service entity tanımlayın ve provider alanıyla Organization'a bağlayın:
{
"@type": "Service",
"@id": "https://siteniz.com/#web-tasarim",
"name": "Web Tasarım",
"description": "Dönüşüm odaklı web tasarım hizmetleri",
"provider": { "@id": "https://siteniz.com/#org" },
"areaServed": "TR",
"serviceType": "Web Design"
}
FAQPage ve Review node'ları
FAQPage schema, Google arama sonuçlarında akordeon soru-cevap paneli gösterir ve tıklanma oranını artırır. Review schema ise değerlendirmeleri yapılandırarak yıldızlı zengin sonuçları sağlar.
FAQPage şablonu
{
"@type": "FAQPage",
"@id": "https://siteniz.com/#faq",
"isPartOf": { "@id": "https://siteniz.com/#page" },
"mainEntity": [
{
"@type": "Question",
"name": "Web tasarım projesi ne kadar sürer?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Kurumsal web siteleri için tipik proje süresi 4-8 hafta arasındadır."
}
},
{
"@type": "Question",
"name": "Fiyatlar nasıl belirleniyor?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Proje kapsamı, sayfa sayısı ve özel geliştirme ihtiyaçlarına göre belirleniyor."
}
}
]
}
Review node ve AggregateRating
Müşteri değerlendirmelerini Review schema ile işaretleyin. Birden fazla değerlendirmeyi AggregateRating ile özetleyin:
{
"@type": "Organization",
"@id": "https://siteniz.com/#org",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "47",
"bestRating": "5"
}
}
Validasyon ve test araçları
Schema uyguladıktan sonra doğrulama adımını atlamayın. Hatalı schema, zengin sonuçlardan diskalifiye edilmenize neden olur.
Google Rich Results Test
Google Rich Results Test aracı, sayfanızdaki schema'nın zengin sonuçlar için geçerli olup olmadığını gösterir. URL veya kod snippet'i girerek test edebilirsiniz.
Schema.org Validator
validator.schema.org ise schema'nızın Schema.org standartlarına uygunluğunu kontrol eder. Zorunlu ve önerilen alanların eksikliğini raporlar.
JSON-LD bloğunu HTML head veya body sonuna, script tag'i içinde ekleyin.
Sayfa URL'sini girerek schema'nın hatasız algılandığını onaylayın.
Google Search Console → Zengin Sonuçlar bölümünden schema durumunu izleyin.
Schema'nız sayfada görünen içerikle uyumlu olmalıdır. Sayfada olmayan bilgileri schema'ya eklemek Google'ın spam politikasını ihlal eder.