Tüm yazılara dön

GEO: Siteniz Yapay Zekâ Cevaplarında Görünüyor mu? 21 Botluk Erişim Matrisi, llms.txt ve Log Analizi

7 Kasım 20265 dk okuma
GEOSEOPythonYapay Zekâ

Klasik SEO'da soru belliydi: Google sayfanızı tarayabiliyor, dizine ekleyebiliyor ve sıralayabiliyor mu? Artık bunun yanına ikinci bir soru eklendi: biri ChatGPT'ye, Claude'a ya da Perplexity'ye sektörünüzle ilgili bir şey sorduğunda, cevapta kaynak olarak siz görünüyor musunuz? Buna GEO (Generative Engine Optimization) deniyor. Geliştirdiğim SEO + GEO platformu Yankı'da bu sorunun önce teknik tarafını ölçülebilir hâle getirmeye çalıştım. İçerik kalitesi önemli ama bot sitenize hiç giremiyorsa içeriğin ne kadar iyi olduğunun bir anlamı yok.

Tek bir "AI botu" yok: üç farklı sınıf

İlk fark ettiğim şey, "yapay zekâ botlarını engelleyelim mi?" sorusunun yanlış sorulduğuydu. Sağlayıcıların resmi dokümanlarına baktığınızda botlar üç ayrı işe yarıyor ve ben de katalogu bu üç sınıfa ayırdım:

  • Arama/cevap botları (OAI-SearchBot, Claude-SearchBot, PerplexityBot, Bingbot...): AI arama motorlarının dizin botları. Bunları engellerseniz site cevaplarda kaynak olarak görünmüyor.
  • Kullanıcı isteğiyle getirenler (ChatGPT-User, Claude-User, Perplexity-User...): biri soru sorduğunda sayfayı o an çeken botlar. Otomatik tarama yapmıyorlar ve bazı sağlayıcılar bu botların robots.txt'ye her zaman uymayabileceğini açıkça söylüyor.
  • Eğitim botları ve kontrol belirteçleri (GPTBot, ClaudeBot, CCBot, Google-Extended...): model eğitimi için içerik topluyorlar. Bunları engellemek arama görünürlüğünüzü etkilemiyor.

Bu ayrım pratikte çok şey değiştiriyor. "AI'ın içeriğimle eğitilmesini istemiyorum ama ChatGPT aramasında görünmek istiyorum" tamamen tutarlı bir tercih: eğitim botlarını kapatıp arama botlarını açık tutarsınız. Sorun, birçok sitenin bunu tek bir Disallow bloğuyla toptan yapması ve farkında olmadan arama görünürlüğünü de kapatması.

Katalog 21 bottan oluşuyor ve sürümlü tutuluyor: liste değişince CATALOG_VERSION artıyor, eski sürümle hesaplanmış bir sonuç ekranda bunu belirtiyor. Kaynakların her biri sağlayıcının kendi bot sayfası, çünkü bu alanda blog yazılarından derlenmiş listeler çok çabuk eskiyor.

robots.txt erişim matrisi: göründüğü kadar basit değil

Her bot için robots.txt'yi gerçek ayrıştırma kurallarıyla değerlendirip bir matris çıkarıyorum: hangi bot, ana sayfaya ve önemli yollara girebiliyor mu? Burada iki ince nokta var.

Birincisi geri düşme (fallback) davranışı. Örneğin Applebot, robots.txt'de kendine ait bir grup yoksa * grubuna değil önce Googlebot grubuna uyuyor. Bunu modellemezseniz "Apple'a açık" dediğiniz bir site aslında kapalı olabiliyor. Katalogda her bot için bu ilişki bir alan olarak tutuluyor. Kullandığım robots.txt kütüphanesi de burada bir tuzak içeriyordu: grup adını bot adının önekiyle de eşleştiriyor, yani Applebot grubunu Applebot-Extended için de geçerli sayıyor. RFC 9309'a göre grup seçimi tam ürün adıyla yapılmalı. Bu yüzden önce tam adlı grubu, yoksa katalogdaki yedek grubu, o da yoksa * grubunu kendim seçiyorum.

İkincisi kontrol belirteçleri. Google-Extended ve Applebot-Extended ayrı birer tarayıcı değil, sadece robots.txt'de kullanılan izin adları. Siteye hiç gelmiyorlar, User-Agent'ta da görünmüyorlar. Matriste değerlendiriliyorlar ama log analizinde aranmıyorlar. Aksi hâlde "Google-Extended sitenize hiç gelmemiş" gibi anlamsız bir uyarı üretirdik.

llms.txt: var mı ve gerçekten llms.txt mi?

/llms.txt, sitenin AI modelleri için özetlenmiş bir haritası olarak önerilen bir biçim: tek bir H1 başlık, > ile kısa bir özet, ardından H2 başlıklı link listeleri. Denetim dosyanın varlığına, biçimine (H1 yok/ilk satırda değil/birden fazla, özet yok, bölüm yok, link yok) ve boyutuna bakıyor. Özet dosyanın bir bağlam penceresine sığması gerektiği için büyük dosyalar uyarı alıyor.

En çok işe yarayan kontrol ise beklemediğim bir yerden çıktı: yumuşak 404. Birçok site var olmayan bir yol için 404 yerine 200 ile ana sayfanın HTML'ini döndürüyor. Naif bir kontrol "llms.txt var" der. Yankı içerik tipine ve ilk baytlara bakıp bunu not_text olarak işaretliyor. Dosyanın içeriği de dış veri olarak ele alınıyor: sadece ayrıştırılıyor ve ekranda gösterilecek kısa parçalar şablon kaçışıyla basılıyor.

Botlar gerçekten geliyor mu? Sunucu logu analizi

robots.txt niyeti gösteriyor, loglar ise gerçeği. Kullanıcı Apache/nginx erişim logunu yüklüyor ve Yankı her botun gün bazında kaç istek yaptığını, hangi durum kodlarını aldığını ve en çok hangi yolları istediğini çıkarıyor. "PerplexityBot geliyor ama yarısı 403 alıyor" gibi bir bulgu, genelde bir WAF ya da CDN kuralının sessizce AI botlarını kestiğini gösteriyor. Bu yüzden CDN/WAF sezgisi de aynı ekranda.

Log dosyaları büyük ve güvenilmez girdiler olduğu için analiz akış hâlinde yapılıyor: dosya bellekte ya da diskte tutulmuyor, parça parça işleniyor. Biçim uzantıya göre değil ilk baytlara göre belirleniyor. gzip (çok üyeli dosyalar dahil) açılıyor ama açılmış boyut bir sınırda kesiliyor, yani sıkıştırma bombasına karşı korumalı. Bilinen diğer arşiv biçimleri reddediliyor. Bozuk ya da aşırı uzun satırlar sayılıp atlanıyor, işlem durmuyor.

KVKK tarafında da net bir kural koydum: IP adresi, kullanıcı adı, referer ve bot dışı istekler hiç saklanmıyor. Sadece bot × gün × durum sınıfı sayıları ve bot başına en çok istenen yollar (sorgu dizesi atılarak) tutuluyor. Bir de dürüst bir sınır var: User-Agent taklit edilebilir ve şu an ters DNS ya da IP aralığı doğrulaması yapılmıyor. Bu ekranda açıkça yazıyor. Bir aracın neyi bilmediğini söylemesi, bildiğini abartmasından daha değerli.

Tarayıcının kendisi de kurallara uymalı

Başkalarının sitesini denetleyen bir aracın kendisi kötü bir bot olmamalı. Yankı'nın tarayıcısı robots.txt'ye ve Crawl-delay'e uyuyor. robots.txt Yankı'ya izin vermiyorsa llms.txt bile istenmiyor, sonuç blocked olarak görünüyor. Ağ katmanında da kullanıcının girdiği bir adresin sunucunun iç ağına ya da bulut metadata servisine yönlendirilmesini (SSRF) engelleyen bir istemci var: IP sabitleme, yönlendirmeleri elle izleme, özel adres bloklarını reddetme ve sınırlı gzip açma.

Sonuç

GEO'nun içerik tarafı hâlâ çok tartışmalı, ama teknik tarafı ölçülebilir: doğru botlara açık mısınız, llms.txt'niz gerçekten llms.txt mi, botlar gelince ne cevap alıyorlar? Yankı'da bunları sınıflara ayrılmış ve sürümlü bir bot katalogu, gerçek kurallarla çalışan bir robots matrisi ve gizliliği koruyan bir log analizi ile cevaplamaya çalıştım. Teknik SEO denetiminin 51 kuralı ve çok kiracılı mimarisi proje sayfasında.

İlgili Proje

Bu yazının anlattığı projeyi detaylıca incele.

Projeyi İncele