# 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.

- Kanonik URL: https://algoritmaajans.com/tr/blog/llms-txt-nedir-nasil-hazirlanir
- Dil: tr
- Kategori: Yapay Zeka
- Yayın: 2026-08-17
- Güncelleme: 2026-08-29
- Yayıncı: Algoritma Ajans

---

**`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:

```bash
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](/tr/blog/chatgpt-sitenizi-neden-okumuyor-kontrol-listesi) sırayla eledik.

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

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

```bash
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.

<!-- GORSEL: llms-txt-inline-1 — Sol tarafta yüzlerce satırlık düz XML sitemap, sağ tarafta başlıklara göre gruplanmış kısa markdown llms.txt; ikisi arasında bir süzgeç -->

## 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](/tr/blog/e-ticaret-sitesi-nasil-kurulur) 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](/tr/blog/nap-tutarliligi-nedir) 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:

```html
<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:

```ts
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:

```bash
# 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](/tr/blog/cdn-onbellegi-nasil-temizlenir) 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.

```bash
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.

<!-- GORSEL: llms-txt-inline-2 — Erişim logunda llms.txt satırlarının yanında bot adları; altta 200 dönen bir yanıt kodu -->

## 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](/tr/blog/yapay-zeka-aramalarinda-gorunurluk-geo-rehberi-2026) topladık. Bu katmanı sitenizde bizim kurmamızı isterseniz kapsam [hizmetler sayfasında](/tr/hizmetler) yazılı; içerik üretimini ve yayınını tek yerden yöneten hazır kurulum için [AI Otonom İçerik CRM](/tr/urunler/ai-icerik-crm) sayfasına bakabilirsiniz.
