Herkese açık bir dokümantasyon sitesini kendi sitemap’i, kendi llms.txt’i ya da onu tek bir giriş
noktasından crawl ederek indeksleyin — oturum açma yok, kimlik bilgisi yok, hedefe hiçbir şey
kurulmuyor.
Bir tane eklemek
Add source → Documentation site
| Alan | Notlar |
|---|---|
| Name | Mount öneki. Değiştirilemez |
| Entry point | Bir sitemap.xml, bir llms.txt, ya da crawl’ın başlayacağı sıradan bir sayfa |
| Entry format | Varsayılan olarak Detect from the document. Algılama reddettiğinde elle ayarlayın — sitemap, llms.txt ya da crawl |
| Index now | Kaynak kaydedilir kaydedilmez bir çalıştırmayı kuyruğa alır |
Giriş noktasını çekmek, üç formattan hangisi olduğunu algılamak ve ne bulunduğunu bildirmek için
Test connection’a basın — bir sitemap’ten bir sayfa sayısı, llms.txt’ten bir link sayısı ya da
bir crawl için başlangıç sayfasının kendisinin sunduğu link sayısı.
Giriş noktası ne olabilir
Contextator, verdiğiniz URL’deki belgeyi okur, uzantısını değil, bu yüzden üçü de herhangi bir yolda çalışır:
sitemap.xml— her<loc>çekilecek bir sayfadır. Başka sitemap’lere işaret eden bir<sitemapindex>,WEB_MAX_DEPTHkadar derine ve en fazlaWEB_MAX_PAGESiç içe sitemap okunacak şekilde otomatik olarak izlenir.llms.txt— bir sitenin LLM tarafından okunabilir bir indeksi için gelişmekte olan konvansiyon. Sayfadaki her Markdown linki çekilecek bir sayfadır.- Tek bir sayfa — bunların dışındaki her şey bir crawl başlatır: o URL’den genişlik öncelikli, onun host’unu paylaşan ve onun yolunun altında kalan linkleri izleyerek.
Algılama, URL’yi değil belgeyi okur. Giriş noktasındaki belge üçünden hiçbirine uymadığında — bir
landing page’e yönlendiren bir sitemap, HTML olarak sunulan bir llms.txt — kaynak tahmin etmek
yerine reddeder ve Entry format alanını adlandırır, çünkü tahmin etmek, bir sayfayı ya da hiçbir
sayfayı indekslemeyen ve yine de başarı bildiren bir kaynak üretir. Bu durumda Entry format’ı elle
ayarlayın: bu, yalnızca algılananın bir göstergesi değil, çalışan bir geçersiz kılmadır.
Beş tavan
Bir crawl, hepsi örnek genelinde ortam değişkeni olan beş sınırla sınırlıdır — kaynak başına geçersiz kılma yoktur:
| Tavan | Değişken | Varsayılan |
|---|---|---|
| Kaynak başına sayfa | WEB_MAX_PAGES |
1000 |
| Giriş noktasından link derinliği | WEB_MAX_DEPTH |
10 |
| İstekler arası gecikme | WEB_REQUEST_DELAY_MS |
500 |
| Toplam crawl zaman bütçesi | WEB_CRAWL_BUDGET_MS |
900000 (15 dakika) |
robots.txt’e uy |
WEB_RESPECT_ROBOTS |
1 (açık) |
Bir tavana çarpmak, senkronizasyonu başarısız kılmak yerine crawl’ı olduğu yerde bitirir — kaynak,
ulaştığı sayfaları indeksler ve çalıştırma hangi sınırın onu durdurduğunu söyler. Beşi de .env
içindeki, ürünle gelen
.env.example’de listelenen,
örnek genelindeki WEB_* değişkenleridir — ulaşılan bir tavan için, değişkenlerden birini
yükseltmeden önce giriş noktasını daraltmak ya da siteyi birden çok kaynağa bölmek daha iyi bir
çözümdür.
WEB_MAX_PAGES indekslenen sayfaları değil, getirilen sayfaları sayar, bilerek: metni yalnızca
script’lerinde olduğu için reddedilen bir sayfa, eskimiş bir sitemap bağlantısından gelen bir 404 ya
da başarısız bir bağlantı yine de birinin web sunucusu tarafından sunulmuştur, bu yüzden burada hiç
kimsenin hesabı olmadığı bir host’u korumak için var olan tek ayara sayılır. Hiç istenmeyen bir URL
hiçbir zaman sayılmaz — bir robots.txt reddi ya da başka bir host’ta duran bir bağlantı, süreçten
hiçbir şey çıkmadan yerel olarak alınan bir karardır.
robots.txt
Varsayılan olarak uyulur (WEB_RESPECT_ROBOTS=1):
- Bir
Crawl-delayyönergesi, hızı yalnızcaWEB_REQUEST_DELAY_MS’in üzerine çıkarabilir — onu düşüremez. robots.txt’in404yanıtı vermesi kısıtlama yok olarak okunur — crawl devam eder.robots.txt’in hiç yüklenememesi — bir5xxya da bir bağlantı hatası — kuralları okunamayan bir siteyi crawl’lamak yerine senkronizasyonu başarısız kılar.
Headless bir tarayıcı yoktur: HTML yanıtında bulunmak yerine içeriği istemci tarafı JavaScript’le render edilen bir sayfa, tıpkı render edilemeyen bir dosyanın başka herhangi bir kaynakta olduğu gibi, adıyla reddedilir.
Bir sayfa neye dönüşür
Çekilen her sayfa, başka herhangi bir kaynaktan gelen bir .html dosyasının geçtiği aynı
HTML→Markdown dönüşümünden geçer — bkz. İçerik Türleri. URL, belgenin yolu
olur: uzantıyı, URL’nin bittiği sonek değil, yanıtın içerik türü belirler, ve bir query string
atılmak yerine yolun içine hash’lenir, bu yüzden yalnızca query string’i farklı iki URL çakışmaz.
Nasıl taze tutulur
Yalnızca bir sitemap.xml kaynağı ucuz bir tazelik kontrolü alır: iki istek, önce robots.txt
sonra sitemap’in kendisi, giriş sayısını ve en yeni <lastmod> tarihini son çalıştırmayla
karşılaştırır. İkisi de değişmediyse hiçbir şey yeniden çekilmez. Hiç <lastmod> taşımayan bir
sitemap’in karşılaştıracak hiçbir şeyi yoktur, bu yüzden aşağıdaki diğer iki biçim gibi her
çalıştırmada baştan sona yeniden çekilir.
llms.txt ve crawl kaynaklarının ucuzca kontrol edilebilecek eşdeğer bir sinyali yoktur, bu
yüzden her zamanlanmış çalıştırma, aynı beş tavan içinde kaynağı baştan sona yeniden çeker. Programın
kendisinin nasıl ayarlandığı için bkz. İndeksleme.
Sık karşılaşılan sorunlar
| Belirti | Neden ve çözüm |
|---|---|
| Kaynak reddediyor ve Entry format’ı adlandırıyor | Algılama, giriş noktasının ne olduğunu söyleyemedi — bir landing page’e yönlendiren bir sitemap, HTML olarak sunulan bir llms.txt. Formatı elle ayarlayın |
| İndeksten bir sayfa eksik | WEB_MAX_PAGES ya da WEB_MAX_DEPTH’in ötesinde kalıyor, robots.txt tarafından dışlandı ya da içeriğini istemci tarafı JavaScript’le render ediyor |
| Çalıştırma bir tavanda durdu | Kaynağın satırı hangisini adlandırır — sayfa, derinlik ya da zaman bütçesi. Ayarı yükseltmeden önce giriş noktasını daraltın ya da siteyi kaynaklara bölün |
Senkronizasyon robots.txt’te başarısız oldu |
Hiç okunamadı (5xx ya da bir bağlantı hatası), bu bir izin olarak sayılmaz. Bir 404 sorun olmazdı |
| Bir sayfa served as …, which is not a page this source can read diyerek reddediliyor | Host, bu kaynağın okumadığı bir içerik türü gönderiyor — bir .md dosyasında application/octet-stream yaygın olanıdır. Yalnızca HTML, Markdown ve düz metin okunur |
| Senkronizasyon başarısız oluyor ve mevcut belgeleri silmeyi reddettiğini söylüyor | Çalıştırma, kaynak zaten belge tutarken hiçbir şey indekslemedi — bir CDN’in kısa süreliğine bir landing page ile yanıtladığı bir sitemap, yeniden adlandırılmış bir llms.txt. Belgeler, kaybolmuş sayılıp silinmek yerine tutulur; giriş noktasını kontrol edin, sonra yeniden senkronize edin |