Şema ve yapılandırılmış veriyi öğrenmek
Yapılandırılmış veri, bir makineye bu sayfanın ne olduğunu söyleyen birkaç satır koddur: bir ürün, bir makale, bir işletme. Google JSON-LD biçimini öneriyor ve geri kalan her şeyin dayandığı tek bir kuralı var: sayfada görünmeyeni işaretlemeyin.
- Ders 10 / 15
- Orta
- Ücretsiz, kayıt yok
Birbiri olmadan eksik kalan dört parça
Yapılandırılmış veri, ancak dört parçanın da yerinde olmasıyla çalışır. İlk parça her zaman koddur değil, sayfadır.
-
Sayfa
Okurun gördüğü bilgi, herhangi bir koddan önce
-
Varlık
Sayfanın gerçekte ne olduğu: ürün, makale, işletme
-
İşaretleme
O türün zorunlu özelliklerini taşıyan JSON-LD
-
Sonuç
Zengin sunuma uygun hâle gelmek, fazlası değil
Dördüncü parça bir garanti değildir. Doğru işaretleme sayfayı uygun kılar; gösterme kararı Google'da kalır.
Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.
Google bu kodla ne yapar?
Google, web'de bulduğu yapılandırılmış veriyi sayfanın içeriğini anlamak için ve ayrıca web ile dünya hakkında bilgi toplamak için kullandığını yazıyor: kişiler, kitaplar, şirketler. Yani bu kod her şeyden önce bir SEO tekniği değil, ortak bir dildir.
Üç biçim destekleniyor: JSON-LD, Microdata ve RDFa. Google, işaretleme geçerli ve düzgün uygulandığı sürece üçünün de kendisi için eşit olduğunu yazıyor ve çoğu durumda JSON-LD'yi öneriyor; çünkü sayfa HTML'inin arasına serpilmek yerine kendi script bloğunda durur. Pratikte de insanların yazdığı bu.
Ve kısa kesilmesi gereken bir beklenti: bu kodu yazmak zengin sonuç almak demek değildir. Doğru işaretleme sayfayı zengin bir sunuma uygun hâle getirir; gösterme kararı Google'da kalır. Söyleyecek şeyi olmayan bir sayfanın, üzerine şema konunca da söyleyecek şeyi olmaz.
Bir adım ötesi: sunumların kendisi de geri çekiliyor. Google, belge güncellemelerinde SSS zengin sonucunun 7 Mayıs 2026'dan itibaren Arama'da görünmeyeceğini yazdı ve ardından o belgeyi tümüyle kaldırdı; aynısını daha önce "nasıl yapılır" zengin sonucu için de yapmıştı. Yani 2023'te yazmaya değer olan işaretleme bugün aynı kod ve aynı ölçüde geçerli, ama sonuçlarda hiçbir şey göstermiyor. Bu site de soru ve yanıt içeren sayfalarda FAQPage basıyor ve o tarihten beri ondan bir zengin sonuç çıkmıyor; yerinde kalması sorun değil, çünkü gerçekten görünen içeriği tanımlıyor, ama ondan bir şey beklemek sorun.
Hangi şema türü sizin sayfanıza aittir?
Yanıt kısa: sayfanın gerçekte olduğu tür. Bir hosting satış sayfası Product'tır. Bir blog yazısı Article'dır. Bir iletişim sayfası Organization ya da LocalBusiness'tır. Bir hizmet sayfası Service'tir. Türü, hangi zengin sonucun daha güzel göründüğüne bakarak seçmek, sonradan manuel işlemle biten hatadır.
Her türün zorunlu ve önerilen özellikleri vardır ve bunlar Google'ın o tür için hazırladığı belgede listelenir. Örneğin LocalBusiness türünün iki zorunlu özelliği var: adres ve ad. Google, bir nesnenin zengin sonuca uygun olması için bütün zorunlu özelliklerin bulunması gerektiğini yazıyor.
Tek bir sayfada birden çok tür bulunması normaldir: bir blog yazısı Article'dır, izi BreadcrumbList'tir, yayıncısı Organization'dır. Bunları temiz yazmanın yolu graf kullanmaktır: birkaç düğüm taşıyan ve düğümlerin birbirine tanımlayıcıyla atıf yaptığı tek bir JSON-LD bloğu. Böylece "kurum" bir kez tanımlanır ve diğer bütün düğümler ona işaret eder.
Üç fikri bir arada tutan küçük bir örnek: doğru tür, zorunlu bir özellik ve tanımlayıcıyla atıf.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "İşletmenin adı",
"url": "https://example.com/"
},
{
"@type": "Article",
"@id": "https://example.com/post/#article",
"headline": "Sayfada basılı olan başlığın aynısı",
"datePublished": "2026-09-05",
"publisher": { "@id": "https://example.com/#org" }
}
]
}
Bu birkaç satırda üç şey görünüyor. Birincisi, her düğümün bir tanımlayıcısı var ve o tanımlayıcı bir adres; dolayısıyla başka her şey ona işaret edebilir. İkincisi, makalenin yayıncısı yeniden tanımlanmamış, yalnızca kurumun tanımlayıcısına atıf yapılmış; aynı şeyin iki farklı tanımını engelleyen tek hamle budur. Üçüncüsü, makale başlığı optimize edilmiş bir varyantı değil, sayfada basılı olan başlığın kendisi; bu da doğrudan bir sonraki bölümün kuralına götürür.
Sayfada olmayanı neden işaretlememelisiniz?
Google bunu iki ayrı yerde yazmış ve ikisinde de açık sözlü. Genel yönergelerde: "Sayfanın okurlarına görünmeyen içeriği işaretlemeyin." Ve tanıtım sayfasında: yalnızca yapılandırılmış veri taşımak için boş sayfalar oluşturmayın ve kullanıcının göremediği bilgiler hakkında, o bilgi doğru olsa bile, işaretleme eklemeyin.
Tartışma o son sözcüklerde biter. En sık duyduğumuz gerekçe şudur: "ama sayı gerçekten doğru, sadece sayfaya yazmadık". Politika açısından bu hiçbir şeyi değiştirmez.
Sonucun bir adı var: "yapılandırılmış veri sorunu", Search Console'da bildirilen manuel işlemlerden biri. Etkisi, sayfanın zengin sonuçlara uygunluğunu yitirmesi. Fazla işaretlemenin kazandıracağı sanılan şey, tam olarak kaybettirdiği şeydir.
Doğru sıra basit ve her zaman tek yönlü: önce bilgiyi sayfaya koyun, sonra işaretleyin. Asla tersi değil.
Neyi işaretlemeli, neyi asla işaretlememeli
Sayfada var, işaretleyin
- Ziyaretçinin görebildiği fiyat
- İletişim sayfasında yazan çalışma saatleri
- Kullanıcının okuyabildiği soru ve yanıt
- Adı başlığın altında görünen bir yazar
Sayfada yok, o hâlde asla
- Sayfanın hiçbir yerinde görünmeyen bir puan
- İşletme ya da kurum türünde kendi toplanan puan
- Yalnızca kodun içinde var olan soru ve yanıt
- Sonucu daha güzel göründüğü için sayfanın olmadığı bir tür
İkinci sütun bir zevk meselesi değil. "Yapılandırılmış veri sorunu", Google'ın manuel işlemlerinden biridir.
Kendi topladığınız puan neden yıldız getirmez?
Küçük bir pazarda yanlış şemanın çoğu burada yazılır. Google'ın değerlendirme snippet'i belgesinde birebir okunması gereken bir madde var: değerlendirilen varlık kendisi hakkındaki değerlendirmeleri denetliyorsa, LocalBusiness ya da başka herhangi bir Organization türü yapılandırılmış veri kullanan sayfaları yıldızlı değerlendirme özelliğine uygun değildir.
Google'ın verdiği örnek tam da bizim yaygın durumumuz: A varlığı hakkındaki bir değerlendirmenin, doğrudan yapılandırılmış verisinde ya da gömülü bir üçüncü taraf widget'ı aracılığıyla, A varlığının kendi sitesinde bulunması. Yani değerlendirmeler gerçek olsa bile kendi değerlendirme kutunuz.
Kısıtlamanın bütün türlere değil iki türe bağlı olduğuna dikkat edin. Product ve Software App gibi türlerde puan gösterimi hâlâ destekleniyor; Google'ın kapattığı şey, işletme ve kurum türlerinde kendi topladığınız puandır. LocalBusiness için ayrıca, puan özelliğinin yalnızca başka işletmeler hakkında değerlendirme toplayan siteler için önerildiğini söylüyor.
Daha az dikkat çeken bir kural daha: işaretlediğiniz değerlendirme, ziyaretçiye aynı sayfadan ulaşılabilir olmalı ve sayfada değerlendirme içeriği bulunduğu hemen anlaşılmalıdır. İşaretlemeye toplu bir puan yazıyorsanız, aynı puanın sayfada da görünmesi gerekir.
Nasıl test edilir ve bir sayfa kaç blok taşır?
Google iki ayrı aşamayı adıyla anıyor ve bu ayrım önemli. Geliştirme sırasında Zengin Sonuç Testi; yayına aldıktan sonra Search Console'daki zengin sonuç durum raporları; çünkü işaretleme genellikle siz yazarken değil, sonradan şablon ve sunum sorunları yüzünden bozulur. URL Denetleme aracı ise Google'ın yapılandırılmış verinizi hiç bulup bulmadığını görmek içindir. Kodun kendisini, zengin sonuç uygunluğu sorusundan bağımsız denetlemek içinse schema.org'un kendi doğrulayıcısı var.
Şimdi araçların size göstermediği tuzak: bir sayfa birden çok JSON-LD bloğu taşıyabilir ve genelde taşır; çünkü tema bir tane, her eklenti bir tane basar. Kendi sayfalarımızdan birinde 5 Eylül 2026'da dört ayrı blok saydık: temadan gelen beş düğümlü bir graf ve eklentilerin bastığı üç bağımsız blok. Tek komutla sayın:
curl -s -A "Mozilla/5.0" "https://example.com/page/" \
| grep -c 'application/ld+json'
Neden önemli? Çünkü tek sayfada birkaç blok bulununca aynı şey iki kez ve iki farklı biçimde tanımlanabilir. Bizim o sayfamızda birbiriyle uyuşmayan iki breadcrumb düğümü var: biri iki basamaklı, biri üç. Bu denetim tam da bunu bulmak için vardır ve biz onu kendi sitemizde bulduk. Doğru kural, her varlık için tek bir doğruluk kaynağı tutmak ve geri kalan her şeyin ona atıf yapmasıdır. Birkaç eklentinin aynı anda şema bastığı bir sitede bu birleştirme, genellikle bir SEO projesinin yapması gereken ilk iştir.
Test sırası: koddan yayın sonrasına
İlk iki adım yayından önce, sonraki ikisi yayından sonradır. Bunları ayrı tutmak Google'ın önerdiği şeydir.
-
1
schema.org doğrulayıcısı
Kod düzgün mü ve düğümler birbirine oturuyor mu?
-
2
Zengin Sonuç Testi
Google bu türü tanıyor mu ve zorunlu özellikler tam mı?
-
3
URL Denetleme
Google, gerçekten aldığı sürümde bu kodu gördü mü?
-
4
Search Console'daki durum raporu
Yayından sonra bozuldu mu? Burada görünür
Bu araçların hiçbiri zengin sonucun gösterileceğini söylemez; yalnızca bir engel olup olmadığını söyler.
Yapay zekayla hızlı yol
Dil modelleri JSON-LD'yi akıcı yazar ve burada tehlikeli olmalarının sebebi tam da budur: çıktı, sayfada bulunmayan özellikler taşırken bile her zaman geçerli görünür. Hızlı ve güvenli yol, iş sırasını tersine çevirmektir. Önce modelden bir kanıt tablosu isteyin, sonra kodu yalnızca kanıtı olan satırlardan kurun. Bunun için ucuz ve hızlı bir model yeter, çünkü iş metin eşleştirmedir; güncel tercihimiz <a class="text-link" href="/tr/ai/">yapay zeka bölümünde</a>.
- Sayfanın görünen metnini tarifteki komutla çıkarın. Sayfanın tam kodunu yapıştırmayın; CSS'ini sayfaya gömen bir sitede head bölümü bile model için fazla büyüktür.
- Şema türüne kendiniz karar verin ve o türün zorunlu ile önerilen özellik listesini Google'ın belgesinden kopyalayın. Türü seçmek modelin işi değildir.
- Tarifin ilk aşamasını çalıştırın: kanıt tablosu. Her özellik için bir satır ve değeri destekleyen, sayfanın kendisinden alınmış bir cümle ya da açıkça "sayfada yok".
- "Sayfada yok" satırlarını silin, sonra ikinci aşamayı çalıştırın ki kod kalanlardan kurulsun. En sonunda çıktıyı bir kez ayrıştırın ve Zengin Sonuç Testi'nden geçirin.
Kopyalamaya hazır şablon
U="https://example.com/page/"
curl -s -A "Mozilla/5.0" "$U" > p.html
python3 -c '
import re, html, sys
h = open("p.html", encoding="utf-8", errors="replace").read()
m = re.search(r"<main.*?</main>", h, re.S)
b = m.group(0) if m else h
b = re.sub(r"<(script|style|nav|footer)[^>]*>.*?</\1>", "", b, flags=re.S)
t = html.unescape(re.sub(r"<[^>]+>", " ", b))
print(re.sub(r"[ \t]+", " ", t).strip())'
# hâlihazırdaki blokları sayın ve model çıktısını ayrıştırın:
grep -c 'application/ld+json' p.html
python3 -c 'import json,sys; json.load(open("out.json")); print("JSON OK")'
---- Aşama 1: kanıt tablosu ----
Rol: yapılandırılmış veri denetçisi. Bu aşamada hiç kod yazma.
Şema türü: {tür}
Bu türün zorunlu ve önerilen özellikleri, Google belgesinden:
{özellik listesi}
Sayfanın görünen metni:
{yukarıdaki komutun çıktısı}
Her özellik için üç sütunlu bir satır yaz: özellik adı, değer, kanıt.
Kanıt sütunu, değeri destekleyen ve yukarıdaki metinden harfiyen alıntılanmış
bir cümle olmalıdır. Böyle bir cümle yoksa hem değer hem kanıt sütununa
"sayfada yok" yaz.
Kurallar:
- Hiçbir değeri kendi genel bilginden doldurma, doğru olduğundan emin olsan bile.
- Birimi, para birimini ve tarihi sayfada göründüğü gibi yaz ve hiçbir şeyi
dönüştürme.
- Yukarıdaki listede olmayan bir özellik ekleme.
- Bu aşamada JSON yazma.
---- Aşama 2: kodu kurmak ----
Şimdi yalnızca kanıtı olan satırlardan tek bir JSON-LD bloğu kur.
Kurallar:
- "Sayfada yok" satırlarını tamamen çıkar. Yerlerine bir şey koyma.
- Bu türün zorunlu bir özelliğinin kanıtı yoksa kodu kurma; bunun yerine hangi
zorunlu özelliğin sayfada bulunmadığını yaz.
- Çıktı yalnızca JSON olsun; yorum ve çevresinde metin olmasın.
Çıktıya güvenmeden önce: Yayımlamadan önce iki şeyi kendiniz denetleyin. Birincisi, kanıt sütunundaki cümlelerin gerçekten sayfada olduğunu; model bir cümle uydurduysa kanıt tablosu tam da engellemek için var olduğu şeye dönüşür. İkincisi, sayfanın aynı varlığı farklı biçimde tanımlayan başka bir blok taşımadığını; sayma komutu tarifte bunun için var. Ve üretilen kodu Zengin Sonuç Testi'nden geçirin: JSON'ın ayrıştırılması yalnızca sözdiziminin doğru olduğunu söyler, anlamın sayfayla örtüştüğünü değil.
Bu işte yapay zeka
Şema, bir dil modelinin gerçekten insandan hızlı olduğu birkaç SEO alanından biridir; çünkü çıktının belirli bir yapısı vardır ve girdi metindir. Sorun başka yerde: model bir şeyi bilmediğinde uydurur ve uydurduğu, kodun geri kalanına tıpatıp benzer.
Gerçekten işe yarayan araçlar
- Claude Kanıt tablosu aşamasına uygun; birebir alıntı istediğinizde daha az başka sözcüklerle anlatır. İran, Anthropic'in iki desteklenen ülke listesinin de dışında.
- Gemini Onaylanmış bir tablodan JSON bloğunu üretmek için yeter. Kendi kaydımız İran'ın Google'ın desteklenen ülkeler listesinde olmadığını yazıyor; ödeme yolu <a class="text-link" href="/tr/ai/buy/">yapay zeka satın alma</a> sayfasında.
- Rich Results Test Yapay zeka değil ve yukarıdakilerin hiçbirinin yerini tutmaz. Google'ın bu türü tanıdığını ve eksik zorunlu özellik olmadığını söyleyen tek yerdir.
Nerede geri teper
Buradaki belirli risk basit ve mekaniktir: model, sayfada bulunmayan özellikler yazar; çünkü benzer dosyalardan o özelliklerin genelde bulunduğunu öğrenmiştir. Hiçbir yerde görünmeyen 4.8 puanı, kimsenin saymadığı bir değerlendirme sayısı, hiç basılmamış bir yayın tarihi. Google'ın yönergesi, doğru olsa bile okurlara görünmeyen içeriğin işaretlenmemesi gerektiğini açıkça söylüyor ve "yapılandırılmış veri sorunu" manuel işlemlerden biri. Riskin ikinci katmanı, hiç var olmayan ya da o tür için tanımlanmamış özelliklerdir; bunları araçlar yakalar ama yine de vaktinizi alır. Bağlı kaldığımız kural, ajans kuralımız: yalnızca sayfada görüneni işaretleyin.
Kaynaklar: Google Search Central: structured data general guidelines Google Search Central: introduction to structured data markup Google Search Console Help: manual actions report
Bu tavsiyenin sınırı
Yapılandırılmış veri sıralama getirmez. Yaptığı şey, sayfayı zengin bir sunuma uygun kılmak ve bir makineye sayfanın neyle ilgili olduğunu anlatmaktır; Google hiçbir yerde bu kodun kendisinin bir sıralama sinyali olduğunu söylemedi. Bir sayfanın içeriği yanlışsa şema onu düzeltmez. Zengin sonuç da garanti edilemez: gösterme kararı Google'da kalır ve aynı sayfa için haftadan haftaya değişebilir.
Kendi işimizden
Tam da bu sitede, SEO eklentisinin varsayılan şeması tek bir filtre satırıyla kapatılmış ve tema kendi JSON-LD grafını basıyor; böylece bütün düğümler tek yerde kuruluyor ve tutarlı kalıyor. İkinci karar daha ilginç: toplu puan yalnızca gerçekten uygun bir sayfa düzeyi düğümü taşıyan sekiz sayfaya enjekte ediliyor; Product'ı olan yedi hosting ve SSL sayfası ile SoftwareApplication'ı olan tek bir araç sayfası. Hizmet, hakkımızda ve blog sayfalarında yıldızlar sayfa içinde görünüyor ama hiç puan işaretlemesi üretilmiyor; çünkü Google'ın kendi toplanan değerlendirmelere dair kuralı buna izin vermiyor. Üç alan adı sayfası listenin dışında, çünkü hiç Product düğümleri yok; dört araç sayfası daha dışarıda, çünkü SoftwareApplication'ı yalnızca kurum kataloğundan alıyorlar ve o, o sayfanın öğesi değil katalog öğesi. Kodda her şeyi bağlayan son bir koşul var: değerlendirme sayısı sıfırsa hiç puan üretilmiyor, çünkü değerlendirmesiz bir puan şeması başlı başına bir Search Console hatasıdır. Bu yüzden Linux hosting sayfasındaki Product düğümü, bu dersin yazıldığı gün, fiyat taşıyor ama puan taşımıyor. Açıp kendiniz görün.
Gerçek devam soruları
Şema bir sitenin sıralamasını yükseltir mi?
Google, yapılandırılmış veriyi sayfanın içeriğini anlamak ve sayfayı zengin sunuma uygun kılmak için kullandığını söylüyor. Kodun kendisinin bir sıralama sinyali olduğunu hiçbir yerde söylemedi. Pratikte görülen etki genellikle sonuçlardaki yer değişiminden değil, tıklama oranından gelir.
Şemayı eklentiyle mi elle mi yazmalıyım?
Çoğu site için eklenti yeter ve doğru yanıt odur. Elle yazmak, birkaç eklenti aynı anda şema bastığında ve tanımlar birbiriyle çeliştiğinde ya da sayfa eklentinin tanımadığı bir türse anlam kazanır. Elle yazacaksanız, iki paralel tanım oluşturmamak için önce mevcut çıktıyı sayın.
Gerçek müşteri değerlendirmelerim var, neden yıldız yok?
Çünkü Google'ın kuralı değerlendirmenin gerçek olup olmadığıyla değil, değerlendirmeleri kimin denetlediğiyle ilgili. Kendi sitenizde toplanmış, kendiniz hakkındaki bir değerlendirme, işletme ya da kurum türlerinde yıldıza uygun değildir. Değerlendirmeleri tutun, ziyaretçi için değerlidir; yalnızca o iki türde puan işaretlemesi kurmayın.
SSS zengin sonucu kalktığına göre FAQPage kaldırılmalı mı?
Zorunda değilsiniz. Kod hâlâ geçerli ve sayfada gerçekten bulunan içeriği tanımlıyor; yani ne ceza ne hata getirir. Yalnızca artık sonuçlarda bir şey göstermiyor ve yazılmasının tek sebebi o gösterimse, kaldırmanın da bir maliyeti yok.