llms.txt adalah file markdown di root domain (/llms.txt) berisi ringkasan
situs dan daftar tautan halaman penting, dirancang supaya AI agent
(ChatGPT, Claude, Perplexity, dan sejenisnya) bisa memahami struktur konten
tanpa perlu merender HTML penuh. Di Next.js App Router, file ini dibuat
lewat route handler khusus (app/llms.txt/route.ts), bukan file statis di
folder public/.
Apa Itu llms.txt dan Kenapa Berbeda dari Robots.txt?
llms.txt diusulkan Jeremy Howard dari Answer.AI pada September 2024 sebagai
konvensi komunitas untuk membantu large language model memahami isi
website di waktu inferensi. Spesifikasi resminya ada di
llmstxt.org, yang mensyaratkan struktur khusus:
tepat satu H1 berisi nama brand/proyek, diikuti blockquote ringkasan satu
paragraf, lalu daftar tautan yang dikelompokkan per H2 dengan format
- [Judul](URL): deskripsi singkat.
| Aspek | llms.txt | robots.txt | sitemap.xml |
|---|---|---|---|
| Fungsi utama | Peta konten ringkas untuk dipahami AI agent | Aturan akses crawler (boleh/tidak boleh) | Daftar lengkap URL untuk diindeks |
| Format | Markdown | Teks plain dengan directive | XML |
| Status standar | Konvensi komunitas (belum resmi) | Standar lama, disepakati luas | Standar lama, disepakati luas |
| Dipakai oleh | AI agent/LLM saat inferensi | Semua jenis web crawler | Mesin pencari tradisional |
Kenapa Ketiganya Tetap Saling Melengkapi?
robots.txt menentukan boleh-tidaknya crawler mengakses path tertentu (termasuk mengizinkan crawler AI seperti GPTBot atau ClaudeBot secara eksplisit, dibahas di panduan sitemap dan robots.txt Next.js), sitemap.xml mendaftar semua URL untuk mesin pencari, sementara llms.txt menambahkan lapisan ringkasan yang lebih mudah dicerna model bahasa dibanding harus mem-parsing HTML lengkap tiap halaman. Ketiganya bukan pengganti satu sama lain.
Bagaimana Cara Membuat llms.txt di Next.js App Router?
Next.js App Router tidak punya file convention bawaan untuk llms.txt
(berbeda dari sitemap.ts/robots.ts yang memang disediakan framework),
jadi cara paling praktis adalah route handler biasa yang mengembalikan
Response bertipe teks di path /llms.txt:
// app/llms.txt/route.ts
export const dynamic = "force-static";
export function GET() {
const content = `# Nama Situs
> Satu paragraf ringkasan situs ini, ditulis jujur dan langsung ke inti.
## Halaman Utama
- [Beranda](https://contoh-domain.com/): Ringkasan singkat isi beranda.
- [Blog](https://contoh-domain.com/blog): Kumpulan artikel yang dipublikasikan.
`;
return new Response(content, {
headers: {
"Content-Type": "text/plain; charset=utf-8",
},
});
}Buat folder app/llms.txt/route.ts (nama foldernya sudah mengandung
ekstensi .txt, Next.js App Router memperlakukannya sebagai path literal),
lalu ekspor fungsi GET. export const dynamic = "force-static" membuat
Next.js membangun responsnya sekali saat build sebagai output statis,
bukan dieksekusi ulang di setiap request, masuk akal karena isinya tidak
bergantung pada data request masuk.
Bagaimana Mengisi Daftar Tautan dari Konten Nyata, Bukan Ditulis Manual?
Untuk situs dengan koleksi konten (blog, portofolio), pola yang tahan lama
adalah memetakan data konten yang sudah ada menjadi baris tautan, sama
seperti pendekatan sitemap.ts. Situs ini sendiri memakainya persis
begitu: fungsi pembaca artikel yang sama dipakai untuk merender halaman
blog di-.map() menjadi baris - [judul](url): deskripsi di dalam
route handler /llms.txt, sehingga daftar tautan otomatis mengikuti
artikel yang benar-benar sudah dipublikasikan tanpa perlu diedit manual
setiap kali ada artikel baru.
Apakah Perlu llms-full.txt Juga?
llms-full.txt adalah pelengkap opsional mengikuti konvensi yang sama:
kalau /llms.txt cuma berisi ringkasan dan tautan satu baris per halaman,
/llms-full.txt berisi isi lengkap seluruh konten (frontmatter dibuang,
markdown mentah digabung satu file), untuk agent atau pipeline LLM yang
ingin membaca seluruh teks situs tanpa merender HTML halaman satu per
satu. Polanya sama seperti llms.txt: route handler dengan dynamic = "force-static", hanya isinya lebih panjang karena menggabungkan konten
penuh, bukan cuma ringkasan.
Ringkasan
- llms.txt adalah konvensi komunitas (bukan standar resmi) yang diusulkan Jeremy Howard/Answer.AI 2024, dengan spesifikasi format di llmstxt.org: satu H1, satu blockquote ringkasan, lalu daftar tautan per H2.
- Di Next.js App Router, dibuat lewat route handler
app/llms.txt/route.tsdenganexport const dynamic = "force-static", bukan file convention bawaan seperti sitemap.ts/robots.ts. - Daftar tautan sebaiknya di-map dari data konten yang sudah ada (sama seperti pola sitemap.xml), bukan ditulis manual supaya tidak basi.
- llms.txt melengkapi, bukan menggantikan, robots.txt dan sitemap.xml yang tetap jadi sinyal utama untuk crawler tradisional.
- Butuh bantuan implementasi teknis GEO/AEO seperti ini di situs sendiri? Lihat layanan SEO teknis dan web development yang ditawarkan.
