JSON-LD doğrulayıcı rehberi: Yapılandırılmış veri nasıl denetlenir ve düzeltilir?
Hazırlayan Otopilot EkibiYayın: Son güncelleme:
9 dk okuma
Kısa özetJSON-LD doğrulayıcı hangi şema türlerini, hangi alanlarla denetler? Sözdizimi hataları, eksik alanlar, düzeltilmiş örnek ve Zengin Sonuçlar Testi ile farkı.
Yapılandırılmış veri, sayfanızdaki bilgileri makinelerin kesin olarak anlayacağı biçimde tarif eder. Bir insan "299 TL" ifadesinin fiyat, "4,8" değerinin puan olduğunu hemen anlar. Bir program için bu bir tahmindir. schema.org sözlüğü bu kavramlara ortak adlar verir. JSON-LD ise bu bilgiyi sayfaya eklemenin en pratik yoludur.
Sorun şu ki yapılandırılmış veri görünmez. Bir eklenti güncellemesiyle bozulan blok, yanlış yazılmış bir virgül ya da boş kalmış bir alan sayfada hiçbir iz bırakmaz. Bu rehber Otopilot'un üyeliksiz JSON-LD doğrulayıcısını anlatır: hangi türleri denetlediğini, hangi alanları aradığını, düzeltilmiş örneği nasıl ürettiğini ve Google'ın Zengin Sonuçlar Testi ile ilişkisini.
Yapılandırılmış veri neden önemli?
Google'ın yapılandırılmış veriye giriş belgesi üç biçimi destekler: JSON-LD, Microdata ve RDFa. Google bunlar arasında JSON-LD'yi önerir, çünkü HTML'e dokunmadan tek bir script bloğu olarak yazılır ve yönetimi kolaydır.
Doğru işaretleme iki iş görür:
- Zengin sonuçlara uygunluk: Ürün fiyatı, değerlendirme, etkinlik tarihi, tarif süresi ve içerik haritası gibi görünümler yapılandırılmış veriye dayanır. Google'ın arama galerisi hangi türün hangi görünümü sağladığını listeler.
- Varlıkların açıkça anlaşılması: İşletmenin adı, adresi, logosu ve sosyal profilleri gibi bilgiler tek bir yerde, tutarlı biçimde tanımlanır. Bu, yapay zekâ yanıt sistemlerinin de işini kolaylaştırır.
Bir uyarı baştan yapılmalı: geçerli bir işaretleme, arama sonucunda zengin görünüm alacağınız anlamına gelmez. Google bunu sayfa kalitesine ve politikalarına bakarak kendisi karar verir.
JSON-LD doğrulayıcı neyi denetler?
Doğrulayıcı sayfasına adres yazdığınızda site raporu açılır ve "Yapılandırılmış veri" bölümü en üste gelir. Araç sayfanın ham HTML'indeki application/ld+json türündeki script bloklarını okur. En fazla 20 blok incelenir. İç içe varlıklar da sayılır, yani bir @graph dizisindeki ya da bir Product içindeki Offer da ayrı bir varlık olarak denetlenir.
Bölümde beş kontrol vardır:
- Yapılandırılmış veri var mı: Sayfada hiç işaretleme yoksa orta etkili bulgu çıkar.
- JSON söz dizimi: Geçerli JSON olmayan bloklar hata alır. Tek bir eksik virgül ya da kapatılmamış tırnak bütün bloğun yok sayılmasına yol açar.
- @context: Geçerli bloklarda schema.org bağlamı aranır. Bağlam yoksa türler tanınmaz ve uyarı verilir.
- Zorunlu alanlar: Tanınan türlerde zorunlu alan eksikse hata verilir. Hangi varlıkta hangi alanın eksik olduğu listelenir.
- Önerilen alanlar: Eksikse düşük etkili uyarı verilir. Bu alanlar zorunlu değildir, ama daha zengin bir görünüm sağlar.
Hangi türler, hangi alanlarla denetlenir?
Araç kendi kural tablosuyla çalışır. Tablodaki türler ve aranan alanlar şöyledir:
- Article, BlogPosting, NewsArticle: Zorunlu headline. Önerilen author, datePublished, dateModified, image.
- FAQPage: Zorunlu mainEntity. İçindeki Question için name ve acceptedAnswer, Answer için text.
- Product: Zorunlu name ve şu üçünden en az biri: offers, review, aggregateRating. Önerilen image, description, brand.
- Offer: Zorunlu price ya da priceSpecification. Önerilen priceCurrency, availability, url.
- LocalBusiness, Restaurant, Store, ProfessionalService: Zorunlu name ve address. Önerilen telephone, openingHoursSpecification, url.
- BreadcrumbList: Zorunlu itemListElement. İçindeki ListItem için position zorunlu, name ve item önerilen.
- Organization: Zorunlu name. Önerilen url ve logo.
- WebSite: Zorunlu name ve url.
- WebPage: Zorunlu name. Önerilen url.
- SoftwareApplication ve WebApplication: Zorunlu name. Önerilen offers ve applicationCategory. SoftwareApplication için operatingSystem de önerilir.
- Recipe: Zorunlu name ve image. Önerilen recipeIngredient, recipeInstructions, author.
- Event: Zorunlu name, startDate, location. Önerilen endDate, image, offers.
- VideoObject: Zorunlu name, thumbnailUrl, uploadDate. Önerilen description ve contentUrl.
- Person: Zorunlu name. Önerilen url.
Bu tablo Google'ın listeleriyle birebir aynı değildir. Bazı türlerde Google daha fazla alan ister, bazılarında ise hiç zorunlu alan tanımlamaz. Örneğin Google'ın Article belgesi yalnız önerilen alanlar listeler. Araç yine de headline alanını zorunlu sayar, çünkü başlıksız bir makale işaretlemesi pratikte anlamsızdır. Zengin sonuç uygunluğu için son söz her zaman Google'ın kendi testindedir.
Tabloda olmayan bir tür gördüğünde araç bunu hata saymaz. "Kural tablomuzda yok" diye belirtir ve alanlarını denetlemez. Yalnız kuralını bildiği türler için sonuç verir.
Hatalı blok nasıl bulunur ve düzeltilir?
Bölümün altında dört ayrıntı tablosu bulunur:
- Bulunan şemalar: Her varlığın türü, eksik zorunlu alanları ve eksik önerilen alanları. En fazla 40 satır gösterilir.
- Hatalı satırlar: Bozuk JSON bloklarında hatanın hangi satır ve sütunda olduğu ve o satırın metni. Geliştiriciniz hatayı doğrudan o satırda arayabilir.
- Düzeltilmiş örnek: Araç bozuk ya da eksik bloklar için düzeltilmiş bir sürüm üretir.
- Sayfadaki JSON-LD: İlk altı bloğun ham içeriği.
Düzeltilmiş örnek şu adımlarla oluşturulur:
- Dosya başındaki görünmez karakterler, kıvrık tırnaklar, son elemandan sonra kalan virgüller ve
/* */biçimindeki yorumlar temizlenir. JSON'da yorum ve sondaki virgül geçersizdir. Bunlar en sık görülen bozulma nedenleridir. - schema.org bağlamı yoksa eklenir.
- Eksik zorunlu ve önerilen alanlar
BURAYA_DEGER_YAZINyer tutucusuyla doldurulur.
Bu son adım önemlidir. Yer tutucu bilerek seçilmiştir. Araç sizin yerinize fiyat, adres ya da tarih uydurmaz. Örneği kopyalarsanız yer tutucuları sayfanızdaki gerçek bilgilerle değiştirmeden yayına almayın.
Otomatik onarılamayan bir blok varsa ya da sayfada hiç işaretleme yoksa araç bir başlangıç şablonu gösterir. Bu şablon sitenizin adı ve adresiyle doldurulmuş bir Organization ve WebSite ikilisidir. Logo adresi varsayılan bir yol olarak yazılır, kendi logo adresinizle değiştirmeniz gerekir.
En sık görülen JSON-LD hataları
Yapılandırılmış veri sorunlarının çoğu birkaç tanıdık nedenden çıkar. Raporu okurken bunları akılda tutmak sorunun kaynağını bulmayı hızlandırır:
- Elle düzenleme sırasında bozulan JSON: Bir alan silinirken önceki satırın sonundaki virgül kalır ya da bir tırnak kapanmaz. Bu tek hata bütün bloğu geçersiz kılar. Hatalı satırlar tablosu tam olarak bu durum için vardır.
- Kelime işlemciden kopyalanan metin: Düz tırnak yerine kıvrık tırnak gelir. Göz bunu fark etmez, ama JSON ayrıştırıcısı fark eder.
- İki eklentinin aynı işi yapması: Tema bir Organization, SEO eklentisi başka bir Organization üretir. Ad, logo veya adres birbirini tutmayabilir. Bulunan şemalar tablosunda aynı türün iki kez göründüğünü fark ederseniz kaynaklardan birini kapatın.
- Şablonda boş bırakılan alanlar: Ürün şablonu fiyat alanını boş string olarak yazar. Araç boş değeri eksik sayar ve zorunlu alan bulgusu verir.
- Eski türler ve yanlış yazımlar: Tür adındaki küçük bir yazım hatası, tanınmayan bir türe yol açar. Kural tablomuzda yok uyarısı bazen bu yüzden çıkar. Tür adını schema.org'daki yazımla karşılaştırın.
- Sayfayla uyuşmayan değerler: Kampanya bitmiş, fiyat değişmiş ama şema eski değeri taşıyor. Araç bunu yakalayamaz, düzenli kontrol sizdedir.
Raporda karşılaşacağınız belirtileri nedenleri ve çözümleriyle şöyle eşleştirebilirsiniz.
| Belirti | Olası neden | Ne yapılır |
|---|---|---|
| Blok hata alıyor, JSON geçersiz | Silinen alandan kalan virgül ya da kapanmamış tırnak | Hatalı satırlar tablosundaki satırı düzeltin |
| Bağlam uyarısı çıkıyor | Kelime işlemciden gelen kıvrık tırnak veya eksik @context | Düz tırnak kullanın, schema.org bağlamını ekleyin |
| Aynı tür iki kez görünüyor | Tema ve SEO eklentisi aynı işi yapıyor | Kaynaklardan birini kapatın |
| Zorunlu alan bulgusu geliyor | Şablonda boş bırakılan alan | Şablonda alanı gerçek değerle doldurun |
| Kural tablomuzda yok uyarısı | Tür adında yazım hatası | Tür adını schema.org'daki yazımla karşılaştırın |
Şema çoğu zaman şablondan üretildiği için bir sayfadaki hata yüzlerce sayfada tekrar ediyor olabilir. Şablonu düzeltmek sayfa sayfa uğraşmaktan çok daha verimlidir. Yapılandırılmış verinin yapay zekâ yanıtlarındaki rolünü merak ediyorsanız yapay zekâ yanıtlarında görünürlük yazısına da bakabilirsiniz.
Google'ın Zengin Sonuçlar Testi ile ilişkisi
Bu doğrulayıcı hızlı bir ön denetimdir. Google'ın Zengin Sonuçlar Testi ise Google'ın kendi kurallarıyla çalışır ve son sözü söyler. İkisinin farkı şöyledir:
- Kural seti: Zengin Sonuçlar Testi Google'ın güncel gereksinimlerini kullanır. Doğrulayıcının tablosu daha sadedir.
- Kapsam: Zengin Sonuçlar Testi Microdata ve RDFa'yı da okur. Doğrulayıcı yalnız JSON-LD bloklarına bakar.
- JavaScript: Zengin Sonuçlar Testi sayfayı oluşturarak test eder. Doğrulayıcı ham HTML'i okur. Tag Manager ile ya da tarayıcıda eklenen işaretlemeyi göremez.
- Bağlam: Doğrulayıcı aynı raporda başlık, meta, hız ve teknik bulguları da gösterir. Yapılandırılmış veri sorununu sayfanın diğer sorunlarıyla birlikte görürsünüz.
Önerilen akış basittir. Doğrulayıcıyla sözdizimi ve eksik alan sorunlarını hızla bulun, düzeltin, sonra Zengin Sonuçlar Testi ile sonucu doğrulayın. Yayından sonra Search Console'daki geliştirmeler raporları sorunların site genelindeki durumunu gösterir.
JavaScript ile işaretleme üretiyorsanız Google'ın JavaScript ile yapılandırılmış veri oluşturma belgesine bakın. Mümkünse işaretlemeyi sunucudan gönderin. Hem bu araç hem diğer sistemler onu daha güvenilir biçimde okur.
Politikalar: neyi işaretlememelisiniz?
Google'ın yapılandırılmış veri genel yönergeleri birkaç temel kural koyar:
- İşaretlediğiniz bilgi sayfada ziyaretçinin de görebileceği bir bilgi olmalıdır. Sayfada görünmeyen değerlendirme ya da fiyatı işaretlemek politikaya aykırıdır.
- İşaretleme sayfanın gerçek içeriğini anlatmalıdır. Yanıltıcı ya da alakasız işaretleme elle işlem riskini doğurur.
- Fiyat, stok veya çalışma saati değiştiğinde işaretlemeyi de güncelleyin.
FAQPage için ayrıca bir not: Google SSS zengin sonuçlarını artık çoğunlukla resmî kurumlar ve sağlık alanındaki bilinen sitelerle sınırlı gösterir. FAQPage belgesi bu sınırlamayı açıklar. İşaretleme yine geçerlidir, ama bu görünümü beklemek doğru olmaz.
Hangi sayfaya hangi tür?
Her sayfaya her şemayı eklemek gerekmez. Sayfanın gerçekten ne olduğunu anlatan türü seçin:
- Ana sayfa: Organization ve WebSite iyi bir başlangıçtır.
- Yerel işletme: LocalBusiness ya da uygun alt türü, adres, telefon ve çalışma saatleriyle. Yerel görünürlük için yerel SEO rehberi de yol gösterir.
- Blog yazısı: Article ya da BlogPosting, yazar ve tarihle.
- Ürün sayfası: Product ve içinde Offer, fiyat ve stok bilgisiyle.
- İç sayfalar: BreadcrumbList neredeyse her iç sayfaya uygundur.
Aynı işletmeyi farklı sayfalarda tek varlık olarak tanımlamak için @id değerlerini tutarlı kullanın.
Bu aracın sınırları
- Yalnız JSON-LD okur. Microdata ve RDFa denetlenmez.
- Ham HTML'i okur. JavaScript ile eklenen işaretlemeyi göremez. Sayfanın içeriği tamamen JavaScript ile oluşuyorsa "yapılandırılmış veri yok" demek yerine Ölçülemedi yazar.
- Kural tablosu Google'ın gereksinimleriyle birebir aynı değildir ve zengin sonuç uygunluğunu onaylamaz.
- Değerlerin doğruluğunu bilemez. Fiyatın güncel olup olmadığını ya da adresin sayfadakiyle aynı olup olmadığını denetlemez.
- Yalnız girdiğiniz sayfaya bakar. Örnek sayfaların yapılandırılmış verisi denetlenmez.
Şemadaki sorunları düzenli izlemek ve onayınızla düzeltmek isterseniz panel tarafındaki SEO onarım özelliğine bakabilirsiniz. Kapsamı plana göre değişir.
Sık sorulan sorular
Araçta geçerli görünen şema Google'da da geçerli olur mu?
Her zaman değil. Kural setleri birebir aynı değildir. Son kontrol için Google'ın Zengin Sonuçlar Testini de çalıştırın.
Tag Manager ile eklediğim şemayı görüyor musunuz?
Hayır. Araç ham HTML'i okur. Tarayıcıda eklenen işaretleme burada görünmez. Mümkünse işaretlemeyi sunucudan gönderin.
Düzeltilmiş örneği olduğu gibi yayına alabilir miyim?
Hayır. Eksik alanlar yer tutucuyla doldurulur. Yer tutucuları sayfanızdaki gerçek bilgilerle değiştirdikten sonra kullanın.
Sayfamda çok sayıda JSON-LD bloğu var, hepsi inceleniyor mu?
İlk 20 blok incelenir. Her bloktaki iç içe varlıklar da ayrı ayrı denetlenir. Rapordaki ham içerik bölümünde ise ilk altı blok gösterilir. Bu kadar çok blok genellikle birden fazla eklentinin aynı işi yaptığını gösterir, kaynakları sadeleştirmeyi düşünün.
Şemayı head içine mi, body içine mi koymalıyım?
İkisi de olur. Önemli olan işaretlemenin sayfadaki görünen bilgilerle uyumlu olmasıdır.
Kaynaklar
Bu sayfayı kim hazırladı?
Bu içerik, Otopilot ürününü geliştiren ekip tarafından hazırlandı. Deneyimimizi kendi sitemizde ediniyoruz: otopilot.net'i de aynı panelden, 95 kurallı denetimle tarıyor ve çıkan bulguları düzeltiyoruz. Ölçmediğimiz bir rakamı ölçülmüş gibi yazmıyoruz.
Ekibimiz ve ilkelerimizSitenizde aynı kontrolleri yapın
Ücretsiz site analiziyle sayfalarınızdaki teknik ve içerik sorunlarını görün. Düzeltmeleri panelde hazırlamak ve sitenize uygulamak için planları inceleyin.