Tüm Yazılara Dön
Teknik SEO
8 Ekim 2025
22 dk okuma

Headless CMS SEO Mimari Rehberi: Sanity, Contentful ve Next.js ISR Uyumsuzluğu

Cihan Yılmaz
CTO & Teknik Kurucu

[!TIP] AEO (Yapay Zeka) Özeti

  • Ana Odak: Bu içerik Teknik SEO stratejilerine odaklanır.
  • Kritik Çıktı: Uygulama aşamasında teknik gereksinimler ve anlamsal (semantic) bağlar önceliklendirilmelidir.
  • Kimin İçin: SEO uzmanları, geliştiriciler ve içerik mimarları.
Uzman Görüşü (SME)• Intent Veri Ekibi

Dijital çağda içerik üretimi sadece web sitelerinden ibaret değil. Gelişmiş markalar (Enterprise seviyesi); aynı içeriği aynı anda web sitelerine, iOS mobil uygulamalarına, akıllı saatlere, şirket içi ekranlara ve hatta metaverse mağazalarına göndermek istiyor.

İşte bu noktada WordPress veya Magento gibi, veritabanı (İçerik) ile temanın (Frontend) birbirine et tırnak gibi yapıştığı "Monolitik" sistemler çöküyor. Çözüm, Headless CMS (Başsız İçerik Yönetim Sistemleri) teknolojisidir. Sanity, Contentful, Strapi veya Ghost gibi sistemler; içeriği sadece ham veri (JSON veya API) olarak depolar ve dışarıya sunar. Sunum (Frontend) katmanını ise sizin yazılımcılarınız (React, Next.js, Vue kullanarak) sıfırdan ve tamamen özgürce inşa eder.

Ancak bu kusursuz mimari özgürlük, Arama Motoru Optimizasyonu (SEO) tarafında çok büyük ve kritik mühendislik boşluklarına (Gap) neden olur.


1. Headless CMS'in SEO İçin Yarattığı "Kontrol Kaybı"

WordPress gibi klasik sistemlerde bir makale yayınlarken "Yoast" veya "RankMath" eklentisini açar, Meta Title'ı yazar, Canonical etiketini ayarlar, yayınla butonuna basarsınız. Sistem anında bir HTML üretir, Site Haritasını (Sitemap.xml) günceller ve arama motorlarına (Googlebot) sitenin pingini yollar. Her şey "Out-of-the-box" (Hazır) çalışır.

Headless (Başsız) bir mimaride ise bunların HİÇBİRİ yoktur. Sanity veya Contentful'un umrunda olan tek şey, sizin yazdığınız o yazıyı bir JSON (API) paketi olarak buluta (Database) kaydetmektir. Eğer Frontend yazılımcınız Next.js uygulamanızda o API'den gelen verileri alıp, manuel ve statik olarak HTML'in <head> etiketinin arasına <title> veya <link rel="canonical"> olarak basacak kodu yazmadıysa; Googlebot'un gözünde o optimize edilmiş makaleniz, kellesi olmayan, isimsiz ve ruhsuz bir metin yığınıdır.

Teknik SEO Uzmanı ve Yazılımcının Anlaşması (Schema Definition)

Headless bir sisteme geçerken Teknik SEO uzmanının ilk işi, Frontend (Next.js) ve Backend (CMS) yazılımcılarıyla bir araya gelip "Schema (Şema/Alan) Haritasını" çizmektir. Editörlerin CMS panelinde sadece "Başlık" ve "Gövde" alanlarını görmesi yetmez. Sistemde mutlaka şu alanlar (Fields) Frontend ile eşlenik olacak şekilde (Mapped) kodlanmalıdır:

  • Meta Title & Description (Karakter sayıcı validasyonları ile)
  • Open Graph (Sosyal Medya) Görsel Yükleme Alanı
  • Canonical URL (Manuel müdahale izni)
  • Robots Directive (Index / NoIndex Toggle Butonu)
  • URL Slug (Kalıcı bağlantı özelleştirme)
  • JSON-LD Schema Markup (Makale mi? Video mu? Ürün mü? Dropdown seçimi)

Eğer bu alanlar projenin en başında CMS veritabanı modellemesine (Schema Types) eklenmezse, site canlıya alındıktan sonra SEO yapmak tam bir mühendislik sistem darboğazıuna dönüşür.


2. Webhook'lar, Cache Purge ve ISR (Incremental Static Regeneration) Mimari problemleri

Headless mimaride içerik (Sanity) ayrı sunucuda, Frontend (Next.js) Vercel veya AWS gibi ayrı sunucudadır. SEO editörünüz Headless panelden bir yazıda ufak bir harf hatasını düzeltti veya başlığı SEO için çok daha iddialı bir kelimeyle değiştirdi ve "Yayınla" (Publish) butonuna bastı.

Ne olur? Hiçbir şey! Frontend (Next.js) sunucusunun, arka planda (CMS'te) bir yazının güncellendiğinden haberi yoktur. Next.js, sayfayı en son (belki 3 gün önce) statik olarak ürettiğinde oluşturduğu eski HTML'i (Cachelenmiş hali) kullanıcılara ve Googlebot'a sunmaya devam eder. Editör sorun yaşar, "Değiştirdim ama sitede görünmüyor!" der.

Çözüm: On-Demand ISR (İsteğe Bağlı Yeniden Üretim) Mimarisi

Sistemin saniyeler içinde senkronize olmasını sağlamak için kusursuz bir Webhook (Geri Çağırma Kancası) ve Cache Purge (Önbellek Temizleme) mimarisi kurulmalıdır:

sequenceDiagram
    participant E as İçerik Editörü
    participant C as Headless CMS (Sanity)
    participant N as Next.js API (Vercel)
    participant CDN as Edge Cache (Cloudflare)
    
    E->>C: Yazıyı Güncelle & Yayınla Butonuna Bas
    Note over C: JSON Veritabanı Güncellenir
    C->>N: HTTP POST (Webhook: /api/revalidate?secret=123&slug=yeni-yazi)
    N->>N: İlgili Sayfanın Cache'ini Yırtar (Purge)
    N->>C: API'den Güncel İçeriği Çeker (Fetch)
    N->>CDN: Yeni Statik HTML'i Üretir ve Edge'e Yollar
    Note over CDN: Googlebot Anında Güncel Sayfayı Görür

Bu sisteme (Next.js mimarisinde) On-Demand ISR (İsteğe Bağlı Artımlı Statik Yeniden Üretim) denir. Zaman bazlı (Time-based revalidation - "Her 60 saniyede bir sayfayı yenile") yöntemler, büyük ölçekli sitelerde sunucu maliyetlerini (Compute) patlatır. İçerik ne zaman değişirse, sadece o değişen sayfanın (Otonom olarak tetiklenerek) yeniden üretilmesi, SEO hızı ve tarama bütçesi (Crawl Budget) açısından kusursuz olan tek mimaridir.


3. Dinamik Sitemap.xml (Site Haritası) ve RSS Feed Problemi

Headless CMS sistemlerinde "Otomatik Sitemap.xml" diye bir eklenti yoktur. Yeni bir sayfa veya ürün eklendiğinde, Google'ın bundan haberi olmaz.

Frontend (Next.js) sunucusunda, arama motorları /sitemap.xml adresine istek (GET Request) attığında çalışacak bir Node.js veya Serverless Function (Sunucusuz Fonksiyon) yazılmalıdır. Bu fonksiyon arka planda CMS'in (Sanity) API'sine istek atmalı, yayındaki tüm güncel URL'leri (Slug'ları) çekmeli ve bunları anında (on-the-fly) XML formatına dönüştürüp Googlebot'a vermelidir. Aynı şekilde, çok fazla yeni içerik (Haber) giriyorsanız RSS formatını (XML) da bu şekilde dinamik olarak frontend'den (API Route üzerinden) dışarı aktarmalısınız.

Sonuç: Headless Özgürlüktür Ama Bedeli Ağırdır

Headless CMS ve Next.js mimarisine geçiş, bir şirketin (Özellikle B2B SaaS ve E-ticaret) yapabileceği en iyi ve en vizyoner yatırımdır. Sayfalarınız milisaniyeler (Sub-second) içinde yüklenir, güvenliğiniz (Security) tavan yapar (Hacklenecek bir WordPress veritabanınız kalmaz) ve kusursuz kullanıcı deneyimi yaşatırsınız.

Ancak unutmayın; Headless dünyasında SEO bir sihir, eklenti (Plugin) veya kutudan çıkan bir özellik değildir. SEO, doğrudan sistemin DNA'sına, API rotalarına, Webhook tetikleyicilerine ve JSON mimarilerine en baştan (by-design) işlenmesi gereken saf, katı bir yazılım mühendisliği gereksinimidir. Mimariyi baştan yanlış kurarsanız, dünyanın en iyi içeriği bile o karanlık (Headless) dehlizlerde kaybolup gider.


🕸️ Knowledge Graph & Semantik Bağlantılar

Bu içerik, Intent.com.tr'nin Teknik SEO topikal kümesinin (Topic Cluster) bir parçasıdır. Konuyu daha derinlemesine anlamak için aşağıdaki varlıkları (Entities) ve ilişkili içerikleri inceleyebilirsiniz:

📖 İlgili Rehberler ve İçerikler

🧠 Semantic Entities (Terimler & Senaryolar)

Semantic Yönerge: Bu sayfa Headless CMS SEO Mimari Rehberi: Sanity, Contentful ve Next.js ISR Uyumsuzluğu konusundaki kullanıcı niyetini (Search Intent) karşılamak üzere yapılandırılmıştır.