· kaynak dev.to (home feed)
İki haftalık nginx logları, yapay zeka agentlarının Markdown sayfalarını gerçekte nasıl çektiğini gösteriyor
GoodBarber'dan iki haftalık nginx logları, yapay zeka corpus crawler'larının .md URL'lerini çektiğini, buna karşılık Accept: text/markdown başlığını yalnızca birkaç agent'a yönelik aracın kullandığını ortaya koyuyor — Markdown sunmayı düşünen yayıncılar için pratik bir sinyal.

Uygulama oluşturma platformu GoodBarber, bir site yapay zeka sistemlerine sayfalarının Markdown sürümlerini sunduğunda gerçekte ne olduğuna dair iki haftalık nginx log verisini yayımladı. Şirketin kurucu ortağının dev.to'daki mühendislik yazısına göre, on bir dildeki ana bilgisayarda barındırılan pazarlama sitesinin herkese açık her sayfasının 4 Eylül'den beri bir Markdown ikizi var; buna content negotiation yoluyla ya da URL'nin sonuna .md ekleyerek ulaşmak mümkün. Özel loglar, 18 Eylül'e kadar her iki yoldan gelen her isteği kaydetti ve yazar hepsini okudu.
Markdown ikizi nasıl sunuluyor
Site, nginx arkasında tam sayfa önbelleğiyle Django çalıştırıyor. İçeriği çoğaltmak yerine Markdown, önbelleğin zaten tuttuğu HTML'den üretiliyor; bunu, Django yığınında en sona yerleştirildiği için giden yanıtları ilk gören bir middleware yapıyor. Dönüştürme, her ayrı HTML için bir kez, o HTML'nin parmak izine (fingerprint) göre anahtarlanarak yapılıyor; böylece çıktı önbellek isabetlerinde ve ıskalarında aynı kalıyor.
Buna iki yol ulaşıyor. Accept: text/markdown göndermek — Markdown'u tercih eden q-değerleriyle — aynı URL'de Markdown'u döndürüyor ve Vary: Accept başlığı ekliyor. Bir yola .md eklemek canonical URL'yi çözümlüyor ve isteği aynı middleware'e iletiyor; böylece iki yolun ayrışması mümkün değil. Uygun her sayfa ikizini bir alternate link öğesi ve bir Link başlığıyla bildiriyor; Markdown ise YAML front matter, bir canonical bağlantı ve bir noindex robots etiketi taşıyor. Yayına girmeden önce ekip, üç sayfayı özellik açık ve kapalıyken yedi istemci türü olarak çekti ve yirmi bir yanıtı bayt bayt karşılaştırdı: özdeştiler, istek başına ek maliyet kabaca sekiz mikrosaniyediydi. Aynı pipeline her gece on bir dilde llms.txt ve llms-full.txt dosyalarını yeniden üretiyor; fiyatların sayfayla eşleşmesi için para birimi ülkeye göre sabitleniyor. Yazarın belirttiğine göre Cloudflare, Zapier ve Vercel bunu zaten yapıyor; buradaki katkı ölçümün kendisi.
İki kapı, iki topluluk
.md yolu yaklaşık 80.000 istek gördü; neredeyse hepsi GET'ti, kabaca 5.800 adresten ve 26.000 ayrı ana bilgisayar-yol çiftinden geldi; %93,8'i 200 ile sunuldu ve iki hafta boyunca sunucu hatası yaşanmadı. Bu trafiğin yarıdan biraz fazlası kendini yapay zeka crawler'ı olarak tanımlayanlardı; onları Baidu, Bing ve Apple izledi.
Başlık yolu yaklaşık 22.500 istek gördü; üçte ikisi GET, üçte biri HEAD'ti ama yalnızca %52,7'si 200 aldı. Yaklaşık 10.500 istek yönlendirmeydi; bunların çoğunu (8.500) eksik sondaki eğik çizgiler caused — middleware'in hiç görmediği, router düzeyinde bir 301; bunu büyük ölçüde, sayfaları önce HEAD sonra GET ile isteyen ShapBot tetikledi.
.md yolundaki adı geçen crawler'lar arasında Amazonbot referanssız (referer) yaklaşık 13.000 doğrulanmış istek yaptı, Meta-ExternalAgent ise yaklaşık 10.000. GPTBot yaklaşık 5.800 doğrulanmış istek yaptı ve her biri sitenin kendisinden gelen bir referans taşıyordu — %98,9 olasılıkla, neredeyse her zaman aynı istemcinin önceki on dakika içinde çektiği HTML ikiziydi. OpenAI'nin crawler'ı fiilen alternate link'i takip ediyor. Bing yaklaşık 6.800 doğrulanmış istek yaptı; bunların %91,7'si sitenin iç arama sayfalarına yönelikti. Gerçek Googlebot sıfır .md URL'si istedi ve Googlebot olduğunu iddia eden her istek Google'ın yayımladığı IP aralıklarının dışından geldi.
Hangi agent'lar negotiate ediyor
Accept: text/markdown gönderenler bambaşka bir topluluk. Agent'lar için tasarlanmış iki yanıt motoru olan ShapBot ve ExaSearchBot, negotiate edilen isteklerin %80'ini oluşturuyor — yaklaşık 12.000 ve 4.700 sayfa isteği; başlığı sırasıyla isteklerin %98,3'ünde ve %93,5'inde gönderiyorlar. Claude Code gruptaki tek kodlama agent'ı: yaklaşık 1.400 istek, %99,1'inde başlık var. Büyük tüketici asistanları ve crawler'ları neredeyse hiç katılmıyor. ClaudeBot, ChatGPT-User, GPTBot ve PerplexityBot her biri kabaca 5.800 ile 24.000 arasında sayfa isteği yaptı ve başlığı bunların %0,0 ile %0,1'inde gönderdi. Bu, Checkly'nin Şubat ölçümüyle örtüşüyor; o ölçümde Claude Code, Cursor ve OpenCode başlığı gönderirken Codex, Gemini CLI, Copilot ve Windsurf göndermiyordu.
Sayım yöntemi ve sınırları
İstekler, işletmecilerin yayımladığı IP aralıklarıyla — OpenAI, Google, Bing, Meta ve diğerleri — eşleştirildi; Baidu, Yandex ve PetalBot ters DNS ile doğrulandı. Anthropic hiçbir aralık yayımlamadığından ClaudeBot rakamları user-agent beyanına dayanıyor; bu bir kanıt değil, bir gösterge. Negotiate edilen bir istekte Markdown alındığı, yanıt boyutunun aynı yolun .md ikiziyle karşılaştırılmasıyla belirlendi. Site, ne sunacağına karar vermek için user agent'ları hiç incelemiyor; bu, bir Next.js middleware'i GPTBot'u bu yolla tespit etmeye çalıştığında John Mueller'ın eleştirdiği user-agent sniffing'den kaçınıyor; Search Engine Journal'ın aktardığı gibi itirazı sniffing'e yönelikti, content negotiation'a değil.
Neden önemli
Markdown sunmayı tartan yayıncılar için bu, satıcı iddiaları değil saha verisi. Her iki kapının da gerektiğini gösteriyor: corpus crawler'ları çoğunlukla referanssız olarak .md URL'leri üzerinden gelirken, agent'lara yönelik yanıt motorları ve tek bir kodlama agent'ı content negotiation kullanıyor — büyük tüketici asistanları ise, en azından bu sitede, hiçbirini kullanmıyor. Alternate link'i bildirmek önemli, çünkü GPTBot bunu izlenebilir biçimde takip ediyor. Yazarın önceki dört aylık sayımı da aynı derecede net: hiçbir asistan kendi başına llms.txt üzerinden gelmedi; oysa asistanlar ve crawler'ları normal sayfalara 1,6 milyon istek yaptı. Tek başına bir index dosyası kimseye ulaşmıyor; asıl önemli olan sayfaların kendisi ve bunların nasıl çekildiği.
- #markdown
- #ai-agents
- #web-crawlers
- #content-negotiation
- #nginx
İlgili yazılar
- MCP üzerinde OAuth kimin çağırdığını kanıtlar, her bir tool çağrısının ne yapabileceğini değil
- Meta'nın el tipi yapay zekâ cihazı Muse Charm, yakındaki Charm'leri tanıyacak ve onlarla etkileşime girecek
- Avustralya, OpenAI modelinin Medicare sistemlerine sızmasını soruşturacak; Başbakan hukuki sonuçlara işaret etti