Sorun nedir?
Klasik bir sayfada içerik doğrudan HTML içinde gelir. Modern JavaScript uygulamalarında ise sunucu neredeyse boş bir HTML gönderir; içerik tarayıcıda JavaScript çalıştıktan sonra oluşur.
Arama motoru bu içeriği görebilir — ancak ek bir adım gerekir ve bu adım her zaman garanti değildir.
İki aşamalı indeksleme
1. Tarama → HTML alınır (içerik henüz yok)
2. Kuyruk → Render için sıraya girer ← BEKLEME
3. Render → JavaScript çalıştırılır
4. İndeksleme → Asıl içerik değerlendirilir
İkinci adımdaki bekleme saatler veya günler sürebilir. Sık güncellenen içeriklerde bu gecikme ciddi sorun yaratır.
Tipik belirtiler
- Sayfa indekslenmiş ama içerik boş görünüyor
- İç linkler keşfedilmiyor
- Meta başlık ve açıklama varsayılan değerde kalıyor
- Yeni içerikler geç indeksleniyor
- Sayfa kaynağında (görüntüle → kaynak) metin görünmüyor
Nasıl test edilir?
- Sayfa kaynağını görüntüleyin. Metin orada yoksa JavaScript ile üretiliyordur.
- Search Console URL denetimi → "Taranan sayfayı görüntüle" ile botun gördüğü HTML'i inceleyin.
- JavaScript'i kapatıp siteyi ziyaret edin — ne kaldığına bakın.
- Tarama aracını render açık/kapalı iki kez çalıştırıp farkı karşılaştırın.
Çözüm yaklaşımları
| Yöntem | Açıklama |
|---|---|
| Sunucu tarafı render (SSR) | HTML sunucuda hazırlanır — en güvenli |
| Statik üretim (SSG) | Sayfalar önceden oluşturulur — en hızlı |
| Dinamik render | Bota hazır HTML sunulur — geçici çözüm |
| Hibrit | Kritik içerik sunucuda, gerisi istemcide |
Kritik kurallar
- Bağlantılar gerçek
<a href>olmalı. Tıklama olayıyla yönlendirilen "bağlantılar" takip edilmez. - İçerik tıklama gerektirmemeli. Yalnızca bir butona basıldığında yüklenen içerik görülmeyebilir.
- Meta etiketler doğru zamanda ayarlanmalı.
- Sonsuz kaydırma yerine sayfalama sunun veya her ikisini birlikte uygulayın.
Sık yapılan hata
"Modern framework kullanıyoruz, arama motorları JavaScript'i okuyabiliyor" varsayımıyla hiç test etmemek. Okuyabilir — ama gecikmeli, koşullu ve bazen eksik. Test etmek dakikalar sürer; test etmemek ayların kaybı olabilir.
Neden ayrı bir konu?
JavaScript SEO, ağırlıklı olarak JavaScript ile çalışan sitelerin arama motorları tarafından doğru taranıp indekslenmesini sağlama disiplinidir. Modern siteler içeriği çoğu zaman JavaScript ile üretir; ancak arama motoru botu bu içeriği görmek için önce JavaScript'i çalıştırmak (render etmek) zorundadır. Bu ek adım, içeriğin geç görülmesine veya bazı durumlarda hiç görülmemesine yol açabilir. İşte JavaScript SEO, bu riski yönetir.
Temel sorun
Ham HTML'de içerik yoksa ve yalnızca JavaScript çalıştıktan sonra oluşuyorsa, bot içeriği ancak render aşamasında görebilir. Render, taramadan sonra gelen ve gecikebilen bir adımdır. Ayrıca botun render bütçesi sınırlıdır. Bu yüzden kritik içeriğin ilk HTML yanıtında hazır olması, JavaScript'e bağımlı olmaması en güvenli yaklaşımdır.
Çözüm yaklaşımları
- Sunucu tarafı render (SSR): İçeriği sunucuda üretip hazır HTML sunmak
- Ön render (prerendering): Sayfaları önceden statik HTML'e dönüştürmek
- Bağlantıların gerçek HTML linkleri olması (JavaScript ile üretilen tıklama olayları değil)
Gerçek örnek
Tamamen istemci tarafında render edilen bir site, yeni ürün sayfalarının aramada geç görünmesinden şikâyetçiydi; çünkü bot içeriği ancak render sonrası görebiliyordu. Kritik içerik ve bağlantılar sunucu tarafı render ile ilk yanıtta sunulmaya başlandığında, indeksleme belirgin biçimde hızlandı.
Sık sorulanlar
Google JavaScript'i çalıştırabiliyor mu? Evet, çalıştırabilir; ama bu ek bir adımdır, gecikebilir ve her zaman kusursuz değildir. Kritik içeriği JavaScript'e bağımlı bırakmamak en güvenlisidir.
Nasıl test ederim? Search Console'un URL denetleme aracıyla, botun sayfayı render sonrası nasıl gördüğünü kontrol edebilirsiniz.
Özet
JavaScript SEO, JavaScript ağırlıklı sitelerin doğru taranıp indekslenmesini sağlar. Kritik içeriği ilk HTML yanıtında sunmak (SSR veya ön render) ve gerçek HTML bağlantıları kullanmak, render kaynaklı indeksleme sorunlarını önlemenin anahtarıdır.