murattunalı.

Sessizce bozulan katman: kendi şemamızı nasıl test ediyoruz.

Murat Tunalı YAYIN TARİHİ: OKUMA: 2′ SYSTEM GEO · Teknik

Sayfanın hiçbir pikselini değiştirmeyen tek katman, makinelerin en dikkatli okuduğu katmandır. JSON-LD, siteni yanıt motoruna cümle cümle değil, varlık varlık anlatır.

Bu sitenin grafiği dört aileden kurulu: kimlik (Organization, ProfessionalService, Person, WebSite), sayfa (WebPage, ItemPage, CollectionPage), hizmet (Service, HowTo, FAQPage) ve içerik (TechArticle rehberde, BlogPosting journal’da, Article vakada, DefinedTerm sözlükte). Hepsi tek bir @graph içinde birbirine @id ile bağlanır — yazar Person’ı hem Organization’ın kurucusudur hem her Article’ın author’ı. Model, «kim, neyi, nerede» sorusunu bu bağlardan çözer.

@id neden her şeyin merkezinde

Şemayı sayfa sayfa kopyalayan siteler, aynı kişiyi kırk kere yeniden tanıtır. Kırk ayrı Person nesnesi, model için kırk ayrı insan olabilir. @id bunu tek satırda çözer: kişi bir kez tanımlanır, geri kalan her yer ona işaret eder. Grafik büyüdükçe kazanç büyür — vaka sayfasındaki eser, kurucusunu ve yazarını yeniden anlatmak zorunda kalmaz, var olan düğüme bağlanır.

  1. "@type": "Article"
  2. "author": { "@id": "…/#person" }
  3. "publisher": { "@id": "…/#org" }
  4. "isPartOf": { "@id": "…/#blog" }
  5. # üç bağ, sıfır tekrar

Her düğüm bir soruya cevap verir

Organization «bu kim» der ve logo taşır — Google’ın kuruluş zengin sonucu logosuz çalışmaz. Person «arkasında kim var» der; jobTitle ve knowsAbout, modelin uzmanlık eşleştirmesini yaptığı alanlardır. WebPage «bu sayfa nedir» der ve siteye isPartOf ile bağlanır. BreadcrumbList sayfanın hiyerarşideki yerini söyler. Article yazının yazarını, tarihini ve kelime sayısını taşır.

İki tip özellikle yanıt motorları için var. FAQPage soru-cevap çiftlerini işaretler; modelin alıntıladığı birim tam olarak budur. HowTo süreci adım adım verir — «nasıl ilerliyor» sorusunun makine-okunur karşılığı. İkisi de bu sitede hizmet sayfalarında duruyor ve içerikleri sayfada da görünüyor.

Görünmeyen alanda yalan söylememek

Şemanın değeri doğruluğundadır: wordCount gerçekten sayılır, timeRequired okuma süresinden hesaplanır, datePublished gerçek yayın günüdür. Sayfada görünmeyen bir alana yalan yazmak en pahalı yalandır — okuyan tek şey, yalanı en iyi hatırlayan şeydir.

Bunun bir de eksiltme tarafı var. Bu sitenin Organization düğümünde sameAs YOK: yayınlanacak bir sosyal profil listesi olmadığı için alan hiç yazılmadı. Telefon ve adres de öyle. Boş bırakmak, doldurmuş görünmekten iyidir; üstelik doğrulama süiti ters yönde nöbet tutuyor — bir gün uydurma bir profil sızarsa test kırmızı yanar.

Aynı disiplin fiyat için de geçerli. Service düğümüne offers ya da priceRange yazmak kolaydı; yayınlanmış bir fiyat listesi olmadığı için yazılmadı. Şemada var olup sitede olmayan bilgi, Google’ın açıkça yasakladığı desendir.

Şema sayfayı yavaşlatmaz

JSON-LD bir script etiketidir ama çalıştırılabilir değildir; en sıkı Content-Security-Policy altında bile yaşar. Bu sitede default-src 'self' geçerli — şema katmanı tek satır gevşetme istemedi. Ağırlığı da küçük: sayfa başına altı-sekiz düğümlük grafik gzip sonrası birkaç kilobayt, ve hiçbir isteği bloke etmiyor.

Doğrulama tarafında iki araç yeter: Google’ın Rich Results Test’i zengin sonuç uygunluğunu, schema.org’un kendi doğrulayıcısı tip hatalarını yakalar. Ama asıl nöbetçi süitte olmalı — bu sitede her düğüm tipi için ayrı test var, çünkü şema sessizce bozulan katmandır: hiçbir piksel değişmez, hiçbir hata görünmez.

Görünmeyen katmanda yalnız doğrulanabilir şey yazılır.

Murat Tunalı

Kurucu. 20 yıl kurumsal IT altyapısı + web geliştirme.

Sonraki yazı →

KAYNAKLAR

ŞEMA: BLOGPOSTING + PERSON + BREADCRUMBLIST — YAZAR, TARİH VE OKUMA SÜRESİ ALANLARI ŞEMAYI BESLER