9 Mayıs 2026 · 12 dk okuma · Teknik SEO
Schema.org Markup Eksiksiz Rehberi 2026 — JSON-LD Hangi Sayfada Hangisi
Schema.org JSON-LD markup hangi sayfada hangi tipler kullanılmalı? Organization, Person, Service, FAQPage, Article, Product, Review, BreadcrumbList — kod örnekleriyle 2026 güncel rehber.
Google “Schema.org JSON-LD markup’ı sıralama faktörü değil” der ama dolaylı etkisi:
- Rich Results (yıldız, fiyat, FAQ accordion) → CTR %30-50 artıyor
- AI Overviews → kaynak listesinde olma şansı
- ChatGPT/Perplexity citation → entity tanıma
- Knowledge Graph → marka bilgisi tutarlılığı
Yani schema = dolaylı ama büyük etki. 2026’da olmazsa olmaz. 12 yıllık SEO + 2 yıl GEO tecrübesinden tam kapsam rehber.
Hızlı özet: Schema.org markup (JSON-LD formatında) Google rich results, AI Overviews ve AI citation için kritik. Olmazsa olmaz schema’lar: Organization (her sayfada), Person, WebSite, WebPage, Service/Product, FAQPage, BreadcrumbList. @graph ile birleşik tek JSON-LD bloğu en iyi pratik.
Schema.org Hangi Sayfa Tipinde Hangi Markup?
Hiyerarşik yaklaşım — her sayfada bazı schema’lar her zaman, bazıları sayfa tipine göre.
Her Sayfada (Site genelinde tekrarlayan)
- Organization veya ProfessionalService (şirket bilgisi)
- Person (kurucu, E-E-A-T için kritik)
- WebSite (SearchAction ile arama özelliği)
Sayfa Tipine Göre
| Sayfa Tipi | Eklenecek Schema’lar |
|---|---|
| Ana sayfa | + WebPage, FAQPage |
| Hizmet sayfası | + Service, Offer (fiyat varsa), FAQPage, BreadcrumbList |
| Paket sayfası | + Service + Offer (fiyat dahil), FAQPage |
| Ürün sayfası | + Product, Offer, AggregateRating (varsa) |
| Blog yazısı | + Article, Person (yazar), BreadcrumbList, FAQPage |
| Vaka çalışması | + Article + CreativeWork + Organization (müşteri) |
| Hakkımda | + AboutPage, Person (zaten var), Organization |
| İletişim | + ContactPage, LocalBusiness (varsa) |
| Doktor sayfası | + Physician + LocalBusiness/MedicalClinic |
| Avukat sayfası | + LegalService + Attorney |
| Restoran sayfası | + Restaurant + Menu + Review |
@graph ile Tek JSON-LD Bloğu
Kötü pratik (ayrı bloklar):
<script type="application/ld+json">{ "@type": "Organization", ... }</script>
<script type="application/ld+json">{ "@type": "Person", ... }</script>
<script type="application/ld+json">{ "@type": "WebPage", ... }</script>
Google parse eder ama dağınık.
İyi pratik (@graph):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "...",
"founder": { "@id": "https://example.com/#founder" }
},
{
"@type": "Person",
"@id": "https://example.com/#founder",
"name": "..."
},
{
"@type": "WebPage",
"@id": "https://example.com/page#webpage",
"isPartOf": { "@id": "https://example.com/#website" },
"publisher": { "@id": "https://example.com/#organization" }
}
]
}
</script>
Entity’ler @id ile birbirine bağlı. Google bunu “tek tutarlı veri seti” olarak okuyor.
Detaylı Örnek — Hizmet Sayfası
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "ProfessionalService",
"@id": "https://abdullahustun.com/#organization",
"name": "Abdullah Üstün",
"url": "https://abdullahustun.com",
"logo": "https://abdullahustun.com/logo.png",
"description": "Yapay Zeka Destekli Dijital Reklam Ajansı",
"founder": { "@id": "https://abdullahustun.com/#founder" },
"priceRange": "₺₺",
"address": {
"@type": "PostalAddress",
"addressLocality": "İstanbul",
"addressCountry": "TR"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+90 530 090 9142",
"email": "[email protected]",
"contactType": "customer service"
}
},
{
"@type": "Person",
"@id": "https://abdullahustun.com/#founder",
"name": "Abdullah Üstün",
"jobTitle": "Kurucu, Dijital Pazarlama Uzmanı",
"knowsAbout": [
"Google Ads",
"Search Engine Optimization",
"Generative Engine Optimization",
"AI Search",
"WordPress to Modern Stack Migration",
"E-commerce",
"Local SEO"
],
"worksFor": { "@id": "https://abdullahustun.com/#organization" }
},
{
"@type": "Service",
"@id": "https://abdullahustun.com/hizmetler/google-ads/#service",
"name": "Google Ads Yönetimi",
"description": "Performans odaklı kampanya kurulumu ve sürekli yönetim",
"provider": { "@id": "https://abdullahustun.com/#organization" },
"serviceType": "Google Ads Yönetimi",
"areaServed": { "@type": "Country", "name": "TR" },
"offers": {
"@type": "Offer",
"price": "5000",
"priceCurrency": "TRY",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Performance Max yönetir misiniz?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Evet — PMax'ı en sık kullandığımız tip..."
}
}
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Ana Sayfa", "item": "https://abdullahustun.com/" },
{ "@type": "ListItem", "position": 2, "name": "Hizmetler", "item": "https://abdullahustun.com/hizmetler/" },
{ "@type": "ListItem", "position": 3, "name": "Google Ads Yönetimi" }
]
}
]
}
Person Schema’da knowsAbout — E-E-A-T Anahtarı
Google’ın 2024’ten beri öne çıkardığı E-E-A-T kriterinde Expertise (uzmanlık) sütununda Schema.org Person’da şunlar olmalı:
{
"@type": "Person",
"name": "Abdullah Üstün",
"jobTitle": "Dijital Pazarlama Uzmanı",
"alumniOf": "İstanbul Üniversitesi",
"worksFor": { ... },
"knowsAbout": [
"Google Ads",
"SEO",
"GEO",
"AI Search Optimization",
"WordPress Migration"
],
"memberOf": "Türkiye Dijital Pazarlama Derneği",
"yearsOfExperience": 12,
"sameAs": [
"https://www.linkedin.com/in/abdullahustun/",
"https://x.com/abdullahustun",
"https://www.youtube.com/@abdullahustun"
]
}
knowsAbout AI’lar için kritik. ChatGPT “X kim, ne yapar” sorusunda bu listeye bakıp eşleştirme yapıyor.
sameAs marka entity sinyali — LinkedIn, X, YouTube hepsi tek kişiye ait. AI doğrulayabiliyor.
FAQPage Schema — En Kazandıran
Her hizmet, paket, blog yazısı, kategori sayfasında 4-7 SSS olsun. Schema’lı + görünür HTML olarak.
Google bunu “sıkça sorulanlar” rich result’ında gösteriyor — CTR’yi %30-50 artırıyor.
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Soru metni?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cevap metni — 50-300 karakter arası ideal. Net, somut, sayılarla."
}
}
]
}
Önemli: Schema’daki cevap = sayfada görünür HTML cevap olmalı. Aksi takdirde Google “manipülasyon” sayar (cloaking).
BreadcrumbList — Hiyerarşi Sinyali
Her alt sayfada (her şey hariç ana sayfa):
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "position": 1, "name": "Ana Sayfa", "item": "https://..." },
{ "position": 2, "name": "Kategori", "item": "https://..." },
{ "position": 3, "name": "Mevcut Sayfa" }
]
}
Son item’da item URL’si konmaz (current page). Google rich result’ında breadcrumb gösteriyor — kullanıcı dostluk + CTR.
Article Schema (Blog yazıları)
{
"@type": "Article",
"headline": "Yazı başlığı",
"description": "Açıklama",
"image": ["url1", "url2"],
"datePublished": "2026-05-09",
"dateModified": "2026-05-09",
"author": {
"@type": "Person",
"@id": "https://abdullahustun.com/#founder"
},
"publisher": { "@id": "https://abdullahustun.com/#organization" },
"mainEntityOfPage": { "@id": "https://abdullahustun.com/blog/x/#webpage" }
}
Kritik alanlar:
datePublished(yazı ilk yayın)dateModified(son güncelleme — Perplexity bu sinyale çok duyarlı)author(Person schema’sına bağlı)
Product Schema (E-ticaret)
{
"@type": "Product",
"name": "Ürün Adı",
"image": [...],
"description": "...",
"sku": "ABC123",
"brand": { "@type": "Brand", "name": "..." },
"offers": {
"@type": "Offer",
"url": "https://...",
"priceCurrency": "TRY",
"price": "199.99",
"availability": "https://schema.org/InStock",
"seller": { "@id": "#organization" }
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
Google Shopping rich results için zorunlu. Yıldız + fiyat + stok durumu organik sonuçlarda görünür.
Test ve Doğrulama Araçları
1. Google Rich Results Test
https://search.google.com/test/rich-results URL gir → schema’lar listelenir + hatalar gösterilir.
2. Schema.org Validator
https://validator.schema.org/ Daha derin validation, JSON-LD syntax + property typo’ları yakalar.
3. Google Search Console — Rich Results Reports
Indekslenmiş sayfalarda hangi rich result tetikleniyor / hata var, hangi sayfa kaç defa gösterilmiş.
Yaygın Schema Hataları
❌ Schema’da olan, sayfada olmayan içerik
“Cloaking” — Google ban’ler. Schema’da FAQ varsa sayfada da görünür HTML olarak FAQ olsun.
❌ Yanlış @type
“FAQPage” yerine “FAQ” yazmak — boş sonuç. Tam tip adlarına dikkat.
❌ priceCurrency olmayan Offer
Google “geçersiz” sayar. ISO 4217 kodu (TRY, USD, EUR) zorunlu.
❌ datePublished ISO formatında değil
“09 Mayıs 2026” değil “2026-05-09T00:00:00+03:00”.
❌ Aynı @id birden fazla entity’de
@id unique olmalı. “abdullahustun.com/#service” iki schema’da varsa karışıklık.
Astro / Next.js’te Otomatize Etmek
Manuel her sayfaya schema yazmak hata kaynağı. Merkezi bir lib:
// src/lib/schema.ts
export function organizationGraph() { ... }
export function service({ url, name, ... }) { ... }
export function faqPage(items) { ... }
export function graph(...nodes) {
return { "@context": "https://schema.org", "@graph": nodes.flat() };
}
Sayfada:
---
const schemaGraph = graph(
organizationGraph(),
service({ url, name: 'Google Ads' }),
faqPage(faqs)
);
---
<script type="application/ld+json" set:html={JSON.stringify(schemaGraph)} />
Tek yerden yönetim, her sayfa tutarlı.
2026 İtibarıyla Yeni Schema Tipleri
Schema.org sürekli evrim ediyor. 2024-2025’te eklenen:
- HowTo — adım adım rehber içerikleri için
- EducationalOccupationalCredential — eğitim/sertifika
- GovernmentService — kamu hizmeti
- InteractionCounter — sosyal etkileşim sayısı
Yıllık review yapın, yeni tipler ekleyin.
Schema Setup Hizmeti
Sıfırdan eksiksiz schema kurulumu için GEO/AI Search Audit içinde tam analiz var (5 gün, 7.500 TL).
Veya web tasarım/migration projesinde Web Tasarım hizmetimiz kapsamında tam schema setup dahil.
Ücretsiz strateji görüşmesi → mevcut sitenizin schema durumuna bakıp öneri yapalım.
İlgili yazılar: