---
title: "Yapılandırılmış Veri (Schema.org) ile Yazınızı Makinelere Anlatmak"
url: "https://cilginyazilim.com/blog/yapilandirilmis-veri-schema-org-uygulamasi"
description: "Yapılandırılmış veri nedir, zengin sonuçları nasıl açar? JSON-LD ile Article, FAQPage ve Breadcrumb şemaları, doğrulama araçları ve sık yapılan hatalar."
published: "2026-10-16T10:00:00+03:00"
modified: "2026-10-16T10:00:14+03:00"
author: "Çılgın Yazılım"
category: "SEO ve Dijital Görünürlük"
tags: ["php", "seo", "dijital görünürlük", "json-ld", "schema.org", "yapılandırılmış veri", "zengin sonuçlar", "faqpage", "breadcrumb", "geo", "yapay zeka araması", "meta veri", "arama motoru"]
site: "Çılgın Yazılım"
language: "tr"
---

# Yapılandırılmış Veri (Schema.org) ile Yazınızı Makinelere Anlatmak

Arama motoru metni okur, JSON-LD ise ona ne olduğunu doğrudan söyler. Fark, zengin sonuçlarda görünür.

**Yapılandırılmış veri**, sayfanızın içeriğini makinelerin doğrudan anlayabileceği bir sözlükle tekrar etmektir. Arama motoru metni okuyup tahmin etmek yerine, "bu bir makale, yazarı şu, yayın tarihi bu" bilgisini açıkça alır. Sonuç, arama sayfasında zengin gösterim ve yapay zekâ asistanlarının içeriği daha doğru alıntılamasıdır.

![Şema türleri ve kullanım alanları](https://cilginyazilim.com/uploads/blog/2026/08/yapilandirilmis-veri-schema-org-uygulamasi-ozet.png)
*Şema, sayfanın içeriğini tekrarlar — ona bir şey eklemez.*

## Neden JSON-LD?

Üç biçim vardır: Microdata, RDFa ve JSON-LD. Google JSON-LD'yi önerir ve pratik gerekçe nettir: HTML içine serpiştirilmez, tek bir `<script>` bloğunda durur, dolayısıyla tasarım değişiklikleri şemayı bozmaz.

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Yazının başlığı",
  "datePublished": "2026-08-01T09:00:00+03:00",
  "dateModified": "2026-08-12T14:30:00+03:00",
  "author": { "@type": "Person", "name": "Yazar Adı" },
  "publisher": {
    "@type": "Organization",
    "name": "Site Adı",
    "logo": { "@type": "ImageObject", "url": "https://site.com/logo.png" }
  },
  "image": ["https://site.com/uploads/kapak.png"],
  "mainEntityOfPage": { "@type": "WebPage", "@id": "https://site.com/blog/yazi-slug" }
}
</script>
```

## Şemayı elle değil, veriden üretin

Şemayı görünüm dosyasına elle yazmak, zamanla içerikle ayrışır. Doğru yaklaşım, aynı veriden üretmektir.

```php
final class SemaUretici
{
    public static function makale(array $yazi, ?array $yazar, string $url): array
    {
        $sema = [
            '@context'         => 'https://schema.org',
            '@type'            => 'BlogPosting',
            'headline'         => mb_substr($yazi['title'], 0, 110),  // 110 karakter sınırı
            'description'      => $yazi['meta_description'] ?: $yazi['excerpt'],
            'datePublished'    => date('c', strtotime($yazi['published_at'])),
            'dateModified'     => date('c', strtotime($yazi['updated_at'] ?: $yazi['published_at'])),
            'mainEntityOfPage' => ['@type' => 'WebPage', '@id' => $url],
            'wordCount'        => blog_word_count($yazi['body']),
        ];

        if ($yazar) {
            $sema['author'] = ['@type' => 'Person', 'name' => $yazar['name']];
        }
        if (! empty($yazi['cover_image'])) {
            $sema['image'] = [blog_media_url($yazi['cover_image'])];
        }

        return $sema;
    }

    /** SSS bloğu sayfada GÖRÜNÜYORSA şemaya eklenir — aksi hâlde politika ihlali */
    public static function sss(array $sorular): ?array
    {
        if (! $sorular) {
            return null;
        }

        return [
            '@context'   => 'https://schema.org',
            '@type'      => 'FAQPage',
            'mainEntity' => array_map(static fn(array $s) => [
                '@type'          => 'Question',
                'name'           => $s['q'],
                'acceptedAnswer' => ['@type' => 'Answer', 'text' => $s['a']],
            ], $sorular),
        ];
    }
}
```

> En sık yapılan ve en riskli hata: sayfada **görünmeyen** bilgiyi şemaya yazmak. Kullanıcının göremediği bir SSS bloğunu FAQPage olarak işaretlemek, elle yaptırım (manual action) sebebidir ve tüm zengin sonuçlarınızı kaybettirebilir.

## Breadcrumb: küçük ama etkili

```php
public static function yol(array $adimlar): array
{
    return [
        '@context'        => 'https://schema.org',
        '@type'           => 'BreadcrumbList',
        'itemListElement' => array_map(static fn(int $i, array $a) => [
            '@type'    => 'ListItem',
            'position' => $i + 1,
            'name'     => $a['ad'],
            'item'     => $a['url'],
        ], array_keys($adimlar), $adimlar),
    ];
}
```

Site yolu (breadcrumb), arama sonucunda ham adres yerine okunur bir hiyerarşi gösterilmesini sağlar. Etkisi küçük görünür ama tıklama oranına doğrudan yansır. İç bağlantı yapısıyla birlikte düşünülmelidir; iç linkleme stratejisi yazımız bu tarafı ele alıyor.

Yayın öncesi kontrol listesi hazırlarken [proje öncesi SSS](https://cilginyazilim.com/blog/yazilim-projesi-oncesi-sik-sorulan-sorular) sayfamızdaki sorular kapsamı netleştirir.

## Doğrulama olmadan yayınlamayın

Şemadaki bir yazım hatası sessizdir: sayfa normal görünür, yalnızca zengin sonuç hiç çıkmaz. Yayına almadan önce iki kontrol yapın — JSON'un geçerliliği ve şema kurallarına uygunluk.

```bash
# Sayfadaki JSON-LD bloklarını çıkarıp geçerliliğini sına
curl -s https://site.com/blog/yazi-slug \
  | grep -oP '(?<=<script type="application/ld\+json">).*?(?=</script>)' \
  | while read -r blok; do echo "$blok" | python -m json.tool > /dev/null \
      && echo "geçerli JSON" || echo "BOZUK JSON"; done
```

Kural tarafı için Google'ın zengin sonuç testi ve [schema.org BlogPosting tanımı](https://schema.org/BlogPosting) kullanılmalıdır. Yapay zekâ aramaları için şemanın önemi giderek artıyor; bu tarafı [GEO optimizasyonu](https://cilginyazilim.com/blog/geo-optimizasyonu-yapay-zeka-aramasi) yazımızda ele almıştık. Teknik altyapının geri kalanı için [teknik SEO kontrol listesi](https://cilginyazilim.com/blog/teknik-seo-kontrol-listesi-siteniz-gorunur-mu) tamamlayıcıdır.

## Sonuç

Yapılandırılmış veri, içeriğinize yeni bir şey eklemez; var olanı makinelerin anlayacağı biçimde tekrar eder. Bu tekrar, arama sonucunda zengin gösterim ve yapay zekâ asistanlarında daha doğru alıntılama olarak geri döner. Üç kurala uyun: şemayı elle değil aynı veriden üretin, sayfada görünmeyen hiçbir bilgiyi şemaya yazmayın ve yayından önce hem JSON geçerliliğini hem şema kurallarını doğrulayın. Blog altyapınızda bu üretim tek bir servise toplanabiliyorsa, her yeni yazı ek iş gerektirmeden doğru şemayla yayına çıkar.

## Pratik Uygulama Kontrol Listesi

Bu yazıdaki önerileri kendi ekibinize uyarlarken aşağıdaki adımları sırasıyla uygulamanız, teoriden pratiğe geçişi kolaylaştırır:

1. **Mevcut durumu ölçün.** Değişiklik yapmadan önce bugünkü performansı/süreyi/hata oranını kaydedin; aksi halde iyileşmeyi kanıtlayamazsınız.
2. **Küçük bir pilot seçin.** Tüm sisteme veya tüm ekibe birden uygulamak yerine tek bir modülde veya tek bir sprintte deneyin.
3. **Sonuçları ekiple paylaşın.** Elde ettiğiniz veriyi (olumlu ya da olumsuz) kısa bir notla ekibe aktarın; kararın gerekçesi belgelenmemişse aynı tartışma birkaç ay sonra tekrar açılır.
4. **Süreci tekrarlanabilir hale getirin.** İşe yarayan pratiği bir kontrol listesine veya şablona dönüştürün ki yeni katılan ekip üyeleri de aynı standardı hızlıca öğrensin.

> Yapılandırılmış Veri konusunda attığınız her küçük adım ölçülebilir olduğu sürece değerlidir; büyük ve tek seferlik dönüşümler yerine sürekli, küçük iyileştirmeler uzun vadede daha kalıcı sonuç verir.

## Sık Yapılan Yanlışlar

Bu konuda ekiplerin en çok düştüğü tuzak, çözümü tek bir kişiye ya da tek bir araca yüklemektir. Oysa kalıcı iyileşme, sürecin ekibin günlük rutinine (code review kontrol listesi, sprint planlama, onboarding dokümanı gibi) gömülmesiyle mümkün olur. İkinci yaygın hata ise "en iyi pratiği" olduğu gibi kopyalamaktır — başka bir ekipte işe yarayan bir yaklaşım, farklı bir ölçekte veya farklı bir teknoloji yığınında aynı sonucu vermeyebilir; önce kendi bağlamınızda küçük ölçekte test edin, sonra genişletin. Üçüncü tuzak ise ölçmeden karar vermektir: "daha iyi hissettiriyor" öznel bir gerekçedir, ekip içi tartışmalarda nesnel veriyle desteklenmeyen kararlar er ya da geç sorgulanır ve geri alınır. Son olarak, dokümantasyonu atlamak da sık görülen bir hatadır: bir kararın "neden" alındığı yazılı değilse, ekip altı ay sonra aynı tartışmayı sıfırdan yeniden yapmak zorunda kalır ve önceki deneyimden öğrenilenler kaybolur.

## Sonuç

Yapılandırılmış Veri (Schema.org) ile Yazınızı Makinelere Anlatmak konusunda burada değindiğimiz noktalar, konuyu ilk kez ele alan ekipler için de deneyimli geliştiriciler için de pratik bir kontrol listesi görevi görür. yapılandırılmış veri üzerine çalışırken en çok fayda sağlayan yaklaşım, tek seferde her şeyi mükemmelleştirmeye çalışmak yerine küçük, ölçülebilir adımlarla ilerlemektir. Ekibinizde bu konuyu bir sonraki sprint retrospektifinde veya teknik tartışma toplantısında gündeme getirmenizi, burada anlatılan pratiklerden hangilerinin sizin bağlamınıza uyduğunu birlikte değerlendirmenizi öneririz. Sonuç olarak, doğru araçları seçmek kadar bunları ekip kültürüne oturtmak da başarıyı belirleyen asıl etkendir.

## Sıkça Sorulan Sorular

### Yapılandırılmış veri sıralamayı doğrudan yükseltir mi?

Doğrudan bir sıralama sinyali değildir. Etkisi dolaylıdır: zengin sonuç gösterimi tıklama oranını artırır, arama motorunun içeriği doğru yorumlaması ise yanlış eşleşmeleri azaltır. "Şema ekledim, sıralamam yükselecek" beklentisi gerçekçi değildir.

### Aynı sayfada birden fazla şema olabilir mi?

Olabilir ve yaygındır: bir blog yazısında BlogPosting, BreadcrumbList ve FAQPage birlikte bulunabilir. Ayrı script blokları hâlinde yazmak, birini güncellerken diğerini bozma riskini azaltır.

### Şema eklemek sayfayı yavaşlatır mı?

Etkisi ihmal edilebilir; birkaç kilobaytlık bir metin bloğudur ve render engellemez. Yine de gereksiz derinlikte, kullanılmayan alanlarla dolu şemalar üretmenin bir faydası yoktur — yalnızca ilgili alanları doldurun.

### Şemadaki tarih biçimi neden bu kadar önemli?

Arama motorları ISO 8601 biçimi bekler ve saat dilimi bilgisi olmadan tarihi yanlış yorumlayabilir. Özellikle zamanlanmış yayınlarda, yerel saat ile UTC karışması yazının yayın tarihini bir gün kaydırabilir; date("c") kullanmak bu riski kapatır.

---

Kaynak: [Yapılandırılmış Veri (Schema.org) ile Yazınızı Makinelere Anlatmak](https://cilginyazilim.com/blog/yapilandirilmis-veri-schema-org-uygulamasi)
