Tek sayfa uygulamanız AI botuna boş bir kabuk gösteriyor olabilir
React, Vue veya Angular ile istemci tarafında render edilen bir sayfa, tarayıcıda mükemmel görünür. JavaScript çalıştırmayan bir bota giden ham HTML'de aynı sayfa genellikle boş bir `<div id="root">`'tan ibarettir.
Bir React uygulamasının ham HTML'i genellikle şuna benzer:
<body>
<div id="root"></div>
<script src="/static/js/bundle.js"></script>
</body>
Tarayıcı bu HTML'i alır, bundle.js'i çalıştırır, ve içerik saniyeler içinde #root içine dolar. Kullanıcı için sonuç kusursuzdur. AI botlarının tam listesinde anlatılan botların büyük kısmı için ise bundle.js hiç çalışmaz — bot yalnızca yukarıdaki iki satırı görür ve okur. Sayfa onlar için boştur.
Hangi botlar render eder, hangileri etmez
| Bot | JavaScript render |
|---|---|
| Googlebot | Evet, ama gecikmeli (iki dalgalı indeksleme) |
| Bingbot | Sınırlı |
| GPTBot, ClaudeBot, CCBot, PerplexityBot, Bytespider | Hayır — ham HTML alır |
| ChatGPT-User, Claude-User, Perplexity-User | Genellikle hayır |
Tablo şunu söylüyor: arama motorlarının en büyüğü bu sorunu büyük ölçüde tolere eder, ama AI görünürlüğünde asıl belirleyici olan botların hiçbiri tolere etmez.
Kendi sitenizde nasıl test edersiniz
Adım 1. Tarayıcıda sayfayı açın, sağ tık → "Kaynağı görüntüle" (Ctrl+U veya Cmd+Option+U). Bu, JavaScript çalıştırılmadan önce sunucudan gelen ham HTML'dir — botun gördüğü şeyle aynıdır.
Adım 2. Aynı sayfada geliştirici araçlarını açıp "Elements" panelini inceleyin. Bu, JavaScript çalıştıktan sonraki DOM'dur — tarayıcının gördüğü şeydir.
İkisi arasındaki fark, botun kaybettiği içeriktir. Ana içerik ikisinde de aynıysa sorun yok. Kaynak görünümünde yalnızca bir kabuk varsa ve Elements panelinde tam sayfa varsa, JS-render sorununuz var demektir.
Adım 3. Aynı testi bir AI bot user-agent'ıyla gerçek bir curl isteği atarak doğrulayın — bot erişim kontrolü bunu otomatik yapar ve dönen ham yanıtı gösterir.
Çözüm seçenekleri, artan maliyet sırasıyla
Statik site üretimi (SSG). İçerik derleme zamanında HTML'e gömülür. En düşük maliyet, ama içerik sık değişen sitelerde (fiyat, stok) uygun değil.
Artımlı statik yenileme (ISR) / önceden render (prerendering). Sayfalar periyodik olarak yeniden üretilir veya bir servis (Prerender.io gibi) bot isteklerini yakalayıp önceden render edilmiş HTML'i sunar. İçerik güncelliği ile maliyet arasında orta nokta.
Sunucu tarafı render (SSR). Her istekte sunucu HTML'i tam olarak üretir. En güncel içerik, en yüksek sunucu maliyeti.
Dinamik render (bot algılayıp farklı yanıt verme). User-agent'a göre botlara render edilmiş HTML, kullanıcılara normal SPA sunmak. Google uzun süre bunu kabul etti; ama iki farklı içerik sunma riski taşır ve karmaşıklığı gizli bir teknik borca dönüşür.
En sık yapılan hata: yalnızca Google için düzeltmek
Bir ekip "Google indeksliyor, sorun yok" deyip SSR'ı yalnızca Googlebot user-agent'ı tespit edildiğinde devreye sokabilir. Bu, tam olarak katman karışıklığının bir başka biçimi: bir bot için çalışan çözümü tüm botlar için çalışıyor saymak. Doğru çözüm bot-agnostiktir — hangi user-agent geldiğine bakmadan aynı tam HTML'i sunmak.
Kontrol listesi
- Kaynak görünümü ile render edilmiş DOM arasında içerik farkı var mı
- Ana içerik (fiyat, açıklama, SSS) ham HTML'de mevcut mu
- Çözüm yalnızca Googlebot'a özel değil, tüm botlar için geçerli mi
- AI bot user-agent'ıyla gerçek istek atılarak sonuç doğrulandı mı
Markaların yapay zekâ destekli arama sistemlerindeki görünürlüğünü ölçer ve düzeltir. Ölçüm metodolojisi ham sunucu yanıtına ve tekrarlı çalıştırmaya dayanır; her bulgu kaydedilmiş bir sunucu yanıtına bağlanır.
Sık sorulanlar
Sitemin JS-render sorunu olup olmadığını nasıl anlarım?
Tarayıcıda "Kaynağı görüntüle" (view-source) yapın, JavaScript çalıştırılmadan gelen ham HTML'i görürsünüz. İçerik orada değilse ve yalnızca geliştirici araçlarındaki "Elements" panelinde görünüyorsa, içerik JavaScript ile sonradan ekleniyor demektir.
Sunucu tarafı render (SSR) tek çözüm mü?
En sağlamı evet, ama tek seçenek değil. Statik site üretimi (SSG), artımlı statik yenileme (ISR) ve önceden render etme (prerendering) servisleri de aynı sonucu — botun ham HTML'de tam içeriği görmesini — farklı maliyet/karmaşıklık dengesiyle sağlar.
Googlebot JavaScript çalıştırıyor, o zaman sorun yok mu?
Googlebot çalıştırır ama gecikmeli ve sınırlı bir bütçeyle. Diğer AI botlarının (GPTBot, ClaudeBot, PerplexityBot dahil çoğu) render yeteneği bile yok — Google için "çalışıyor" olması diğer botlar için de çalıştığı anlamına gelmez.