llms.txt Nedir, Nasıl Hazırlanır? Kopyalanabilir Örnekle
Yapay Zeka

llms.txt Nedir, Nasıl Hazırlanır? Kopyalanabilir Örnekle

llms.txt, yapay zeka botlarına sitenizin ne olduğunu ve en önemli sayfalarını markdown formatında anlatan bir dosyadır. Sıfırdan yazma akışı, ajans / e-ticaret / SaaS / yerel işletme iskeletleri, dinamik üretim ve sekiz yaygın hata.

AA
Algoritma Ajans
Yayın ekibi
11 dk okuma

llms.txt, sitenizin kökünde duran ve yapay zeka botlarına "bu site nedir, en önemli sayfaları hangileri" bilgisini markdown formatında veren bir dosyadır. sitemap.xml'in yapay zeka karşılığı gibi düşünebilirsiniz — ama fark şu: sitemap makine için bir URL listesidir, llms.txt ise insanın da okuyabildiği, öncelik sıralı bir içindekiler tablosudur.

Hazırlaması yarım saat sürüyor. Aşağıda sıfırdan yazma akışı, dört sektör için hazır iskelet, dinamik üretim yöntemi ve sekiz yaygın hata var.

Dört dosya, dört farklı iş

Karıştırılıyor, ayıralım:

Dosya Neyi söyler Biçim
robots.txt "Nereyi crawl edebilirsin" Direktif
sitemap.xml "Hangi URL'ler var" XML, düz liste
llms.txt "Bu site nedir, neresi önemli" Markdown, öncelikli
ai.txt "Ne amaçla kullanabilirsin" Direktif

llms.txt, diğerlerinin yerine geçmez. Sitemap'iniz kalmaya devam eder. llms.txt bir anlam ve öncelik katmanıdır: bin sayfanız varsa hangi otuzunun gerçekten önemli olduğunu söyler.

Son satırdaki ai.txt de sık atlanıyor, oysa llms.txt ile birlikte anlam kazanıyor. robots.txt "buraya girebilir misin" sorusunu düzenler; ai.txt "aldığın şeyi ne için kullanabilirsin" sorusunu. İkisi farklı izinlerdir: içeriğinizin bir cevapta kaynak gösterilerek kullanılmasına razı olup model eğitiminde kullanılmasına razı olmayabilirsiniz. Bu sitedeki tercih şu oldu — arama ve cevaplama açık ve kaynak gösterimi bekleniyor, eğitim izne tabi. Crawl'ı robots.txt ile kapatmak bu ayrımı yapmaz; sizi eğitim setinden çıkarmaz, sadece cevaplardan siler.

Neden işe yarıyor

Bir yapay zeka botu sitenize geldiğinde iki problemi var:

Birinci problem: ne olduğunuzu anlamak. Ana sayfanız pazarlama diliyle yazılmış, navigasyonda on beş link var, hero bölümünde slogan var. Bot "bu firma tam olarak ne yapıyor" sorusunu buradan çıkarmakta zorlanıyor.

İkinci problem: neyin önemli olduğunu anlamak. Sitemap'te 400 URL var; gizlilik politikası ile ana hizmet sayfanız aynı ağırlıkta görünüyor.

llms.txt ikisini de tek dosyada çözüyor: bir paragraf net tanım, sonra öncelik sırasına göre gruplanmış bağlantılar.

Dosyanın anatomisi

Yapı basit ve markdown'dır:

# Firma veya Site Adı

> Bir veya iki cümlelik net tanım. Ne yapıyorsunuz, kime,
> hangi coğrafyada. Pazarlama dili değil, tanım dili.

Serbest açıklama paragrafı — varsa özel notlar, dil bilgisi,
markdown ikiz gibi teknik detaylar.

## En Önemli Bölüm

- [Sayfa adı](https://site.com/sayfa): Kısa açıklama
- [Başka sayfa](https://site.com/sayfa2): Kısa açıklama

## İkinci Bölüm

- [Sayfa](https://site.com/x): Açıklama

## Optional

- [Az önemli sayfa](https://site.com/y)

Dört kural:

1. Başlık gruplaması öncelik sinyalidir. Üstteki ## bölümleri daha önemli sayılır. Sıralamayı iş önceliğinize göre yapın — hizmetleriniz üstte, yasal metinler altta.

2. ## Optional özel anlamlıdır. Bu başlık altındaki her şey "gerekirse bakılır" olarak okunur. Gizlilik politikası, kullanım şartları, arşiv sayfaları buraya.

3. Her bağlantıya açıklama ekleyin. İki nokta üst üste sonrası kısa açıklama. Bot bağlantıya gitmeden ne olduğunu anlar.

4. Sadece kanonik URL'ler. Yönlendirilen, noindex olan, taslak sayfalar girmemeli.

Sıfırdan yazma akışı: yedi adım

Dosyayı boş sayfaya bakarak yazmaya çalışmayın. Sıra şu:

Adım 0 — Kapı açık mı, önce ona bakın

robots.txt yapay zeka botlarını blokluyorsa llms.txt yazmanın hiçbir anlamı yok; bot dosyayı da okuyamaz. Beş saniyelik kontrol:

curl -s https://siteniz.com/robots.txt | grep -iE "gptbot|claudebot|perplexity|oai-searchbot"

Çıkan satırlarda Disallow: / görüyorsanız önce oraya bakın. Blok dışında botu geri çeviren daha sinsi sebepler de var; hepsini ChatGPT sitenizi neden okumuyor listesinde sırayla eledik.

Adım 1 — Sayfa envanterini çıkarın

Sitemap'inizden başlayın, çünkü zaten kanonik adresleri içeriyor:

curl -s https://siteniz.com/sitemap.xml \
  | grep -oE '<loc>[^<]+' | sed 's/<loc>//' > sayfalar.txt
wc -l sayfalar.txt

Bu liste llms.txt değil, ham maddedir. Sonraki adımda büyük kısmını atacaksınız.

Adım 2 — Üçe ayırın

Her sayfaya tek bir soru sorun: "Bu sayfa bu hafta silinse müşteri kaybeder miyim?"

  • Çekirdek — Cevap "evet". Hizmet, ürün, fiyat, iletişim sayfaları. Bunlar üste.
  • Destekleyici — Cevap "hayır ama güven kaybederim". Blog, vaka çalışmaları, hakkımızda, dokümantasyon. Ortaya.
  • Opsiyonel — Cevap "hiçbir şey olmaz". Yasal metinler, etiket arşivleri, sayfalama adresleri. ## Optional altına ya da hiç.

Otuz ile kırk bağlantıda durun. Bu bir sınır değil, bir disiplin: listeye her eklediğiniz sayfa diğerlerinin ağırlığını düşürüyor.

Adım 3 — Tanım cümlesini yazın

En zor kısım burası ve en çok değeri de burası taşıyor. Formül:

[Ne yapıyorsunuz] + [kime] + [hangi coğrafyada] + [sizi ayıran şey]

Yanlış: "Sektörün öncü çözüm ortağı olarak müşteri odaklı yaklaşımımızla dijital dönüşümünüze eşlik ediyoruz."

Doğru: "Türkiye merkezli, KOBİ'lere sektörel yazılım, yapay zeka destekli SEO ve web tasarımı hizmeti veren teknoloji ajansı. İçerikler Türkçe ve İngilizce yayınlanır."

İkinci cümleden bir model kaç bilgi çıkarır: ülke, müşteri profili, üç hizmet kalemi, iki dil. Birinci cümleden sıfır. Cümleyi yazdıktan sonra kendinize sorun: bu cümleyi rakibinizin sitesine koysanız yine doğru olur mu? Oluyorsa cümle boş demektir.

Adım 4 — Bölümleri kurun ve sıralayın

Bölüm adları serbesttir ama iki şey önemli: adlar kendi başına anlaşılır olsun ("Çözümler" yerine "Sektörel Yazılımlar") ve sıra iş önceliğinizi yansıtsın. En çok para kazandıran şey en üstte.

Adım 5 — Her bağlantıya açıklama yazın

Altı ila on iki kelime yeterli. Açıklama sayfanın başlığını tekrar etmemeli, ona bir şey eklemeli.

Zayıf: - [Hizmetler](https://siteniz.com/tr/hizmetler): Hizmetlerimiz İyi: - [Hizmetler](https://siteniz.com/tr/hizmetler): Yazılım geliştirme, SEO, web tasarımı ve yapay zeka danışmanlığı

Adım 6 — Yayınlayın

İki yol var: public/llms.txt altına statik dosya koymak ya da bir route handler ile içerikten üretmek. İkisi de kökten, yani siteniz.com/llms.txt adresinden sunulmalı. Alt klasöre koyarsanız kimse bulamaz.

Adım 7 — Doğrulayın ve takvime bağlayın

Aşağıdaki doğrulama bölümündeki üç komutu çalıştırın. Statik dosya kullanıyorsanız takviminize üç ayda bir tekrarlayan bir hatırlatma koyun; dinamik üretiyorsanız buna gerek yok.

Sektörel iskeletler

Yapı aynı, sıra farklı. Dört tipik durum için başlangıç iskeletleri:

Ajans / hizmet işletmesi. Satın alma kararı "bu iş kime yaptırılır" sorusuyla veriliyor, o yüzden yetkinlik ve kanıt üstte:

# [Ajans Adı]
> [Şehir] merkezli, [müşteri profili] için [üç hizmet] sunan ajans.

## Hizmetler
## Referanslar ve Vaka Çalışmaları
## Ekip ve Yaklaşım
## Blog
## İletişim
## Optional

E-ticaret. Model ürün, fiyat ve teslimat koşullarını arıyor. Kategori sayfaları tek tek ürünlerden daha değerli, çünkü bir kategori sayfası yüzlerce ürünü temsil eder:

# [Mağaza Adı]
> [Ürün kategorisi] satan, [coğrafya] kargo yapan online mağaza.

## Kategoriler
## Kargo, Teslimat ve İade Koşulları
## Beden / Ölçü / Kullanım Rehberleri
## Sık Sorulan Sorular
## Optional

Kargo ve iade koşullarının bu kadar üstte olması tuhaf gelebilir; ama üretken motorlara sorulan e-ticaret sorularının büyük kısmı tam olarak bunlar. Bu bilginin hem sayfada hem yapısal veride tutarlı durması gerekiyor — kurulum sırasının tamamını e-ticaret sitesi nasıl kurulur yazısında topladık.

SaaS / yazılım ürünü. En değerli varlık dokümantasyondur; geliştirici sorularında kaynak gösterilmenin yolu buradan geçer:

# [Ürün Adı]
> [Kime] yönelik [ne yapan] yazılım. [Platform / entegrasyon bilgisi].

## Dokümantasyon
## API Referansı
## Fiyatlandırma
## Değişiklik Günlüğü
## Entegrasyonlar
## Optional

Yerel işletme. Belirleyici sinyal konum ve çalışma saatidir. Buradaki bilgilerin Google İşletme Profili'ndekiyle birebir aynı olması şart; en küçük çelişki bile güven puanını düşürüyor. Nedenini ve nasıl denetleneceğini NAP tutarlılığı yazısında anlattık:

# [İşletme Adı]
> [İlçe, il] konumunda [hizmet] veren [işletme türü]. [Çalışma saatleri].

## Hizmetler ve Fiyatlar
## Konum, Ulaşım ve Çalışma Saatleri
## Randevu ve İletişim
## Sık Sorulan Sorular
## Optional

Tam örnek

Bu sitenin llms.txt dosyasının yapısı:

# Algoritma Ajans

> Her sektör için özel yazılım geliştirme, yapay zeka destekli SEO,
> web tasarımı ve yapay zeka entegrasyon eğitimleri sunan teknoloji
> ajansı. Türkiye merkezli. İçerikler Türkçe ve İngilizce yayınlanır.

Bu dosya yapay zeka arama motorları ve dil modelleri için hazırlanmıştır.
Her sayfanın markdown sürümü, URL sonuna .md eklenerek alınabilir.

## Hizmetler

- [Hizmetler](https://algoritmaajans.com/tr/hizmetler): Yazılım geliştirme, SEO, web tasarımı, yapay zeka danışmanlığı
- [Yapay Zeka Eğitimleri](https://algoritmaajans.com/tr/egitim): Günlük işler için yapay zeka ve Vibe Coding eğitim paketleri
- [Hakkımızda](https://algoritmaajans.com/tr/hakkimizda): Ajans, ekip ve çalışma yaklaşımı
- [İletişim](https://algoritmaajans.com/tr/iletisim): Teklif ve proje başvurusu

## Ürünler

- [Tüm Ürünler](https://algoritmaajans.com/tr/urunler): Kullanıma hazır yazılım çözümleri
- [AI Otonom İçerik CRM](https://algoritmaajans.com/tr/urunler/ai-icerik-crm)
- [Akıllı Randevu Sistemi](https://algoritmaajans.com/tr/urunler/akilli-randevu-sistemi)
- [Online Eğitim Yazılımı](https://algoritmaajans.com/tr/urunler/online-egitim-yazilimi)
- [Haber Portalı Yazılımı](https://algoritmaajans.com/tr/urunler/haber-portali-yazilimi)

## Blog

- [Yazı başlığı](https://algoritmaajans.com/tr/blog/slug): Yazının özeti

## Optional

- [Gizlilik Politikası](https://algoritmaajans.com/tr/gizlilik)
- [Kullanım Şartları](https://algoritmaajans.com/tr/kullanim-sartlari)
- [İngilizce sürüm](https://algoritmaajans.com/en)

Dikkat edin: hizmetler ve ürünler üstte, blog ortada, yasal metinler Optional altında. Bu sıralama tesadüfi değil — iş önceliğini yansıtıyor.

llms-full.txt: tam metin sürümü

İkinci bir dosya daha var: llms-full.txt. İçeriğin tamamını tek dosyada düz metin olarak sunar. Bot sayfa sayfa gezinmek zorunda kalmaz.

Mantık şu: bir botun blog yazınızı okuması için normalde HTML indirip navigasyonu, footer'ı, script'leri ayıklaması gerekir. llms-full.txt ile hepsi tek istekte, temiz metin olarak gelir.

Bu sitede ölçtüğümüz fark çarpıcı — aynı yazı:

Biçim Boyut
HTML 139 KB
Markdown 8,5 KB

Yaklaşık on altı kat. Bot tarafında bu doğrudan token maliyeti demek.

Ne zaman gerekli? İçerik sayınız yönetilebilir seviyedeyse (yüzlerce değil, onlarca yazı) llms-full.txt mantıklı. Binlerce sayfalık sitede dosya çok büyür; o durumda sadece llms.txt ve sayfa başına markdown ikiz daha uygun.

Pratik bir eşik verelim: dosya birkaç megabaytı geçiyorsa faydası tersine dönmeye başlar. Kabaca yüz orta uzunlukta yazı bu sınırın altında kalır. Üstüne çıkıyorsanız iki seçenek var — ya yalnızca en değerli içerikleri dahil edin ya da llms-full.txt'i tamamen bırakıp sayfa başına markdown ikizle devam edin.

Markdown ikizle birlikte çalışır

Üçüncü parça, sayfa başına markdown ikizdir: aynı içeriğin navigasyonsuz, script'siz, düz metin sürümü. Bu sitede URL sonuna .md eklendiğinde o sürüm dönüyor.

Üçünün iş bölümü şöyle: llms.txt hangi sayfalar önemli der, markdown ikiz o sayfanın temiz metnini verir, llms-full.txt ise hepsini tek istekte sunar. Bir botun ihtiyacı duruma göre değişir; üçünü birden sunmak seçeneği ona bırakır.

İkizi kurduysanız keşif sinyalini HTML head içine de bırakın, yoksa bulunması tesadüfe kalır:

<link rel="alternate" type="text/markdown" href="/tr/blog/ornek-yazi.md">

Bir de markdown uç noktasına X-Robots-Tag: noindex başlığı verin. Amaç klasik arama motorlarının aynı içeriği ikinci bir adreste bulup duplicate saymasını engellemek; yapay zeka botları bu başlıktan etkilenmez.

Dinamik üretim

Statik bir dosya elle yazılabilir, ama her yeni yazıda güncellemeyi kimse hatırlamaz. Doğru yaklaşım içerikten üretmek.

Next.js App Router'da llms.txt bir route handler olarak kurulur — src/app/llms.txt/route.ts dosyası. Klasör adında nokta olması sorun değil, Next bunu düz metin bir segment olarak ele alır. Bu sürümde route handler imzası ve önbellek seçenekleri alışık olduğunuzdan farklı olabilir; kodu yazmadan önce node_modules/next/dist/docs/ altındaki ilgili rehbere bakın.

Mantık şöyle işler: veritabanından yayınlanmış içerikleri çekersiniz, markdown satırlarına dönüştürürsünüz, Content-Type: text/plain başlığıyla dönersiniz. Bir de önbellek süresi verirsiniz ki her istekte veritabanına gitmesin.

Bu sitede revalidate değeri 3600 saniye — yani saatte bir tazeleniyor. Yeni yazı yayınlandığında en fazla bir saat içinde llms.txt içinde görünür.

Beş noktaya dikkat:

Sadece yayınlanmış ve indekslenebilir içerik. Taslak veya noindex işaretli sayfalar girmemeli. Sorguya published: true ve isNoindex: false koşullarını birlikte koyun.

Açıklamaları kısaltın. Özetin ilk 150–160 karakteri yeterli. Fazlası dosyayı gereksiz büyütür.

Satır sonlarını temizleyin. Özet alanında kalmış bir satır başı, markdown liste yapısını bozar ve o satırdan sonrası bozuk görünür. Metni dosyaya yazmadan önce boşluklara indirgeyin.

Tek dil seçin veya ayırın. Karışık dilli tek dosya botu şaşırtır. Ya birincil dili kullanın ya da dil başına ayrı bölüm açın.

Sıralamayı deterministik yapın. Sorguya açık bir orderBy vermezseniz dosya her üretimde farklı sırada gelebilir; bu hem önbellek hem karşılaştırma açısından zorluk çıkarır.

İskelet kabaca şuna benzer — sabit bölümler elle, değişken bölümler veritabanından:

const SABIT = `# Algoritma Ajans

> Türkiye merkezli, KOBİ'lere sektörel yazılım, yapay zeka destekli SEO ve
> web tasarımı hizmeti veren teknoloji ajansı.

## Hizmetler

- [Hizmetler](https://algoritmaajans.com/tr/hizmetler): Yazılım, SEO, tasarım, yapay zeka danışmanlığı
- [İletişim](https://algoritmaajans.com/tr/iletisim): Teklif ve proje başvurusu
`;

const yazilar = await prisma.post.findMany({
  where: { published: true, isNoindex: false, language: "tr" },
  select: { slug: true, title: true, excerpt: true },
  orderBy: { createdAt: "desc" },   // deterministik sıra
});

const blog = yazilar
  .map((y) => {
    const ozet = (y.excerpt ?? "").replace(/\s+/g, " ").slice(0, 160);
    return `- [${y.title}](https://algoritmaajans.com/tr/blog/${y.slug}): ${ozet}`;
  })
  .join("\n");

replace(/\s+/g, " ") satırı gereksiz görünüyor ama değil: özet alanında kalmış tek bir satır başı, o satırdan sonrasını liste dışına düşürür ve dosyanın yarısı bozuk görünür.

Önce ve sonra: tipik bir düzeltme

Sahada en sık gördüğümüz llms.txt şuna benziyor:

# Sitemiz

> Hoş geldiniz! Kaliteli hizmet anlayışımızla yanınızdayız.

## Sayfalar
- [Ana Sayfa](/)
- [Hakkımızda](/hakkimizda)
- [Blog](/blog)
- [Gizlilik](/gizlilik)
- [KVKK](/kvkk)
- [Çerez Politikası](/cerez)

Bu dosyanın altı satırında dört ayrı hata var: tanım cümlesi hiçbir bilgi taşımıyor, başlık gruplaması yok (dolayısıyla öncelik sinyali de yok), URL'ler göreli, ve altı bağlantının yarısı yasal metin — yani listede en çok yer kaplayan şey en az önemli olan.

Aynı işletme için düzeltilmiş hali:

# Örnek Mimarlık

> İzmir merkezli, konut ve ofis projelerinde iç mimari tasarım ve
> uygulama yapan stüdyo. Projeler Ege bölgesinde yürütülür.

## Hizmetler
- [İç Mimari Tasarım](https://ornek.com/tr/hizmetler/ic-mimari): Konut ve ofis için tasarım, çizim ve uygulama
- [Proje Yönetimi](https://ornek.com/tr/hizmetler/proje-yonetimi): Şantiye takibi, taşeron koordinasyonu, teslim

## Projeler
- [Tamamlanan Projeler](https://ornek.com/tr/projeler): Fotoğraf, metrekare ve süre bilgisiyle referans listesi

## İletişim
- [İletişim](https://ornek.com/tr/iletisim): Adres, telefon, randevu formu

## Optional
- [Gizlilik Politikası](https://ornek.com/tr/gizlilik)
- [KVKK Aydınlatma Metni](https://ornek.com/tr/kvkk)

İkinci dosya birincisinden uzun değil, ama bir modele şunları söylüyor: şehir, uzmanlık alanı, çalışma coğrafyası, iki hizmet kalemi ve neyin ikincil olduğu. Uzunluk değişmedi; bilgi yoğunluğu değişti.

Yaygın sekiz hata

1. Sitemap'i markdown'a çevirmek. llms.txt 400 URL'lik bir liste değil. Otuz–kırk gerçekten önemli sayfa yeter. Amaç öncelik vermek; her şeyi listelerseniz hiçbir şeye öncelik vermemiş olursunuz.

2. Pazarlama diliyle yazmak. "Sektörün öncü çözüm ortağı olarak müşteri odaklı yaklaşımımızla" cümlesi bota hiçbir şey söylemiyor. "Türkiye merkezli, KOBİ'lere özel yazılım ve SEO hizmeti veren ajans" söylüyor.

3. Açıklama yazmamak. Sadece başlık ve URL listelemek bilgi değerini yarıya düşürür.

4. Güncellememek. Altı ay önceki dosya, silinmiş sayfalara link veriyorsa güven kaybı yaratır. Dinamik üretim bu sorunu tamamen çözer.

5. robots.txt hâlâ kapalıyken llms.txt yazmak. En sık görülen çelişki. Bot siteye giremiyorsa llms.txt dosyasını da okuyamaz. Önce robots.txt içindeki AI bot bloklarını kaldırın.

6. Dosyayı text/html olarak sunmak. Dosyayı bir sayfa bileşeni olarak yazarsanız çıktı HTML olur; bot markdown beklerken <!DOCTYPE html> bulur. Alt satırdaki curl -sI kontrolü bunu ilk denemede yakalar.

7. Göreli URL kullanmak. - [Hizmetler](/tr/hizmetler) satırı sizin için çalışır, bot için çalışmaz — dosyayı bağlamsız okuyan bir istemci o adresi çözemez. Her bağlantı https:// ile başlayan tam adres olmalı.

8. Dosyayı reklam alanına çevirmek. Sayfada olmayan iddialar ("Türkiye'nin bir numaralı ajansı"), uydurma rakamlar ya da modele talimat vermeye çalışan gizli satırlar — üçü de ters teper. llms.txt bir açılış sayfası değil, bir dizin. Abartı, dosyanın tamamının güvenilirliğini düşürür.

Doğrulama

Yayınladıktan sonra dört kontrol:

# 1 — Erişilebilir mi ve doğru content-type ile mi dönüyor?
curl -sI https://sitesiniz.com/llms.txt | grep -iE "^HTTP|content-type"
# Beklenen: 200 ve text/plain

# 2 — İçerik doğru mu?
curl -s https://sitesiniz.com/llms.txt | head -30

# 3 — Bağlantılar çalışıyor mu? (404 dönen varsa listeler)
curl -s https://sitesiniz.com/llms.txt \
  | grep -oE 'https://[^)]+' \
  | while read u; do
      code=$(curl -s -o /dev/null -w '%{http_code}' "$u")
      [ "$code" != "200" ] && echo "$code  $u"
    done

# 4 — Kaç bağlantı var ve dosya ne kadar büyük?
curl -s https://sitesiniz.com/llms.txt | grep -c '^- \['
curl -s https://sitesiniz.com/llms.txt | wc -c

Üçüncü kontrol önemli — kırık bağlantı içeren bir llms.txt, hiç olmamasından kötüdür. Dördüncüsü ise disiplin kontrolü: bağlantı sayısı kırkı aştıysa listeyi yeniden gözden geçirin.

Bir de görünmez bir tuzak var: CDN önbelleği. Dosyayı güncellersiniz, sunucu doğru içeriği verir, ama dışarıdan bakınca eski hali görünür. Bizim başımıza sitemap'te geldi; sebebini ve çözümünü CDN önbelleği yazısında anlattık. llms.txt için makul bir önbellek süresi bir saattir.

Ne zaman güncellenmeli

Statik dosya kullanıyorsanız asıl risk unutmaktır. Neyin dosyayı bayatlattığını bilirseniz hatırlamak kolaylaşır:

Ne oldu llms.txt güncellensin mi
Yeni hizmet ya da ürün sayfası açıldı Evet, aynı gün
Sayfanın slug'ı değişti Evet — eski satır artık 301'e gidiyor
Bir sayfa kapatıldı Evet, satırı silin
Yeni blog yazısı yayınlandı Blog bölümü varsa evet
Yazının içeriği güncellendi Hayır, açıklama hâlâ doğruysa
Tasarım ya da menü değişti Hayır
Şirket tanımı, hizmet kapsamı değişti Evet, tanım paragrafını yeniden yazın

Tablodaki ilk üç satır dinamik üretimde kendiliğinden çözülür; statik dosyada çözülmez. Bu, dinamik üretimi tercih etmenin en somut sebebi.

Ne kadar sürede etki eder

Dürüst cevap: ölçülebilir bir "şu kadar günde şu olur" yok. Dosyanın okunup okunmadığını görmenin tek doğrudan yolu sunucu logudur.

sudo grep "llms.txt" /var/log/nginx/access.log | tail -20

Bu satırlarda GPTBot, ClaudeBot ya da PerplexityBot görüyorsanız dosya işlevini görüyor demektir. Hiç kayıt yoksa sorun dosyada değil, keşif katmanının başka bir yerindedir.

Standart durumu

Dürüst olmak gerekirse: llms.txt henüz resmi bir standart değil. Hiçbir yapay zeka sağlayıcısı "bu dosyayı okuyoruz ve şu şekilde kullanıyoruz" diye belgelemiş değil.

O halde neden yapmalı? Üç sebep:

Maliyeti çok düşük. Yarım saatlik iş, dinamik kurulursa bakım maliyeti sıfır.

Riski yok. Yanlış giden bir şey olmuyor; klasik SEO'ya etkisi nötr.

Yön belli. Botların temiz, yapılandırılmış içerik tercih ettiği gözlemlenen bir gerçek. Markdown ikiz ve llms.txt aynı mantığın parçası.

Bu, "kesin işe yarıyor" iddiası değil. "Bedeli düşük, olası getirisi yüksek, o yüzden yapılır" hesabı. Bir yıl sonra standart oturduğunda hazır olmak, o zaman başlamaktan iyidir.

llms.txt tek başına da bir işe yarar ama asıl değerini keşif katmanının diğer parçalarıyla birlikte üretir. Üç katmanlı yapının tamamını — keşif, bot ve insan katmanları — ölçümleriyle birlikte GEO rehberinde topladık. Bu katmanı sitenizde bizim kurmamızı isterseniz kapsam hizmetler sayfasında yazılı; içerik üretimini ve yayınını tek yerden yöneten hazır kurulum için AI Otonom İçerik CRM sayfasına bakabilirsiniz.

Etiketler
llms.txtllms-full.txtai.txtllms.txt örneğisektörel llms.txtmarkdown ikizGEOyapay zeka botuAI crawlerNext.js route handler

Sıkça sorulan sorular

sitemap.xml makine için düz bir URL listesidir ve tüm sayfaları eşit ağırlıkta gösterir. llms.txt ise markdown formatında, insanın da okuyabildiği, öncelik sıralı bir içindekiler tablosudur: bir paragrafta sitenin ne olduğunu söyler, sonra başlıklar altında en önemli sayfaları listeler. Biri diğerinin yerine geçmez.

robots.txt 'buraya girebilir misin', ai.txt ise 'aldığın şeyi ne için kullanabilirsin' sorusunu düzenler. Bunlar farklı izinlerdir: içeriğinizin bir cevapta kaynak gösterilerek kullanılmasına razı olup model eğitiminde kullanılmasına razı olmayabilirsiniz. llms.txt ise izin dosyası değildir; ne olduğunuzu ve hangi sayfaların önemli olduğunu anlatan bir dizindir. Crawl'ı robots.txt ile kapatmak bu ayrımı yapmaz — sizi eğitim setinden çıkarmaz, sadece cevaplardan siler.

Otuz-kırk gerçekten önemli sayfa yeterli. llms.txt bir sitemap kopyası değil; amacı öncelik vermek. 400 URL listelerseniz hiçbir şeye öncelik vermemiş olursunuz. Karar kuralı basit: her sayfaya 'bu sayfa bu hafta silinse müşteri kaybeder miyim?' diye sorun. Cevap 'evet' ise üste, 'hayır ama güven kaybederim' ise ortaya, 'hiçbir şey olmaz' ise Optional başlığı altına.

Evet, yapı aynı kalır ama sıra değişir. Ajansta yetkinlik ve referans üstte olur; e-ticarette kategoriler ve kargo/iade koşulları üstte olur çünkü üretken motorlara sorulan e-ticaret sorularının çoğu tam olarak bunlardır; SaaS'ta dokümantasyon ve API referansı en değerli varlıktır; yerel işletmede konum ve çalışma saati belirleyicidir ve bu bilgilerin Google İşletme Profili'ndekiyle birebir aynı olması gerekir.

Hayır. İçerik sayınız onlarca seviyesindeyse mantıklı, çünkü tüm içerik tek istekte temiz metin olarak gelir. Pratik eşik şu: dosya birkaç megabaytı geçiyorsa faydası tersine döner. Binlerce sayfalık sitede llms.txt ile birlikte sayfa başına markdown ikiz daha uygun bir yaklaşım.

Dinamik üretim daha iyi. Elle yazılan dosyayı her yeni içerikte güncellemeyi kimse hatırlamaz ve altı ay sonra silinmiş sayfalara link veren bir dosya güven kaybı yaratır. Next.js App Router'da src/app/llms.txt/route.ts olarak bir route handler kurulur ve içerikten üretilir. Sorguya published ve isNoindex koşullarını, çıktıya deterministik bir sıralamayı ve özet metinlerinde satır sonlarını temizleyen bir düzeltmeyi eklemeyi unutmayın.

+90 551 847 1997