May 8, 2026 at 10:00 AM
robots.txt untuk AI Crawler: Lebih dari Sekadar Tanda Bintang
Kebanyakan developer menulis userAgent "*" lalu selesai. Tapi AI crawler bukan satu entitas — OpenAI saja punya empat agent berbeda, masing-masing dengan tugasnya sendiri. Tentang memahami siapa yang sebenarnya membaca sitemu, dan bersikap disengaja terhadapnya.

Catatan tentang Siapa yang Sebenarnya Membaca Sitemu
Kebanyakan file robots.txt terlihat seperti ini:
User-agent: *
Allow: /Dua baris. Selesai. Setiap bot mendapat akses ke segalanya.
Dulu itu adalah default yang masuk akal ketika satu-satunya pembaca yang penting adalah Googlebot dan segelintir crawler search lainnya. Sekarang jawabannya kurang presisi.
Sistem AI menjelajahi web untuk alasan yang berbeda-beda — dataset pelatihan, browsing real-time, pengindeksan pencarian, penargetan iklan. Setiap alasan punya user agent tersendiri. Dan setiap user agent bisa dikontrol secara independen.
Kebanyakan site tidak membuat perbedaan itu. Mereka mengizinkan segalanya atau memblokir segalanya, tanpa mengetahui apa yang sebenarnya mereka izinkan atau blokir.
1. Satu Tanda Bintang Tidak Mencakup Segalanya
Wildcard * di robots.txt cocok dengan user agent mana pun yang tidak tercantum secara eksplisit.
Dalam praktiknya, ini biasanya berarti semuanya diizinkan — yang tidak masalah jika kamu tidak peduli dengan perbedaannya. Tapi ada perbedaan antara bot yang menjelajahi sitemu untuk menyertakannya dalam hasil pencarian dan bot yang menjelajahi sitemu untuk menggunakan kontennya sebagai data pelatihan model bahasa.
Keduanya bisa dikontrol. Kontrol ada di level user-agent, bukan di level URL.
User-agent: GPTBot
Disallow: /Satu direktif. Crawler pelatihan OpenAI sekarang diblokir. Browsing real-time ChatGPT masih berfungsi — itu user agent yang berbeda.
Inilah perbedaan yang paling sering dilewatkan developer. Kamu bisa memblokir satu agent OpenAI dan mengizinkan yang lain. Mereka bukan hal yang sama.
2. OpenAI Punya Empat User Agent
Inilah bagian yang paling mengejutkan kebanyakan orang.
"GPTBot", // Crawler data pelatihan — mengindeks sitemu untuk pelatihan model
"ChatGPT-User", // Browsing real-time — ketika user meminta ChatGPT membaca URL
"OAI-SearchBot", // Indeks pencarian — mendukung hasil pencarian ChatGPT
"OAI-AdsBot", // Penargetan iklan — digunakan untuk produk iklanEmpat agent. Empat pekerjaan berbeda. Empat direktif independen di robots.txt.
Developer yang menulis Disallow: / untuk GPTBot sudah memblokir crawler pelatihan OpenAI. Tapi user yang menempel URL ke ChatGPT dan meminta ringkasan halaman — permintaan itu melalui ChatGPT-User, yang masih diizinkan.
Pertanyaan praktisnya adalah: mana dari keempat ini yang sebenarnya ingin kamu kontrol?
Untuk portfolio atau blog, memblokir crawler pelatihan sambil mengizinkan browsing real-time adalah posisi yang masuk akal. Kontennya milikmu. Apakah ia berakhir dalam dataset pelatihan adalah pertanyaan yang berbeda dari apakah ChatGPT bisa membacanya saat diminta.
3. Claude Juga Punya Empat
Anthropic mengikuti pola yang sama.
"ClaudeBot", // Crawling umum dan pelatihan
"Claude-User", // Real-time — ketika user meminta Claude membaca URL
"Claude-SearchBot", // Indeks pencarian — kemampuan web search Claude
"anthropic-ai", // Crawler umum AnthropicKonvensi penamaan berbeda antar perusahaan, tapi strukturnya sama: satu perusahaan, beberapa agent, masing-masing dengan fungsi spesifik.
Ini bukan kebetulan. Ini memberi pemilik site kontrol yang bermakna. Kamu bisa mengizinkan crawler pencarian Anthropic sambil memblokir crawler pelatihannya. Atau izinkan semuanya. Atau blokir semuanya. Granularitasnya ada jika kamu ingin menggunakannya.
4. Yang Lain Perlu Diketahui
Di luar OpenAI dan Anthropic:
"PerplexityBot", // Crawler utama Perplexity
"Perplexity-User", // Browsing real-time di dalam Perplexity
"Google-Extended", // Pelatihan AI Google — terpisah dari Googlebot
"Applebot-Extended",// Apple Intelligence — berbeda dari Applebot standar
"YouBot", // Pencarian AI You.comGoogle-Extended adalah yang paling sering dilewatkan developer. Googlebot dan Google-Extended adalah user agent yang berbeda dengan tujuan yang berbeda. Googlebot mengindeks sitemu untuk hasil pencarian. Google-Extended menjelajahi sitemu untuk pelatihan AI dan produk seperti Gemini.
Kamu bisa opt out dari Google-Extended tanpa memengaruhi ranking pencarianmu di Google. Keduanya dipisahkan secara eksplisit.
Applebot-Extended adalah padanan Apple — diperkenalkan untuk Apple Intelligence. Applebot standar masih menangani reading list Safari dan saran Spotlight. Varian Extended khusus untuk fitur AI.
5. Implementasi di Next.js
Next.js menghasilkan robots.txt via route handler bertipe di src/app/robots.ts.
const AI_AND_SEARCH_AGENTS = [
"Googlebot",
"Bingbot",
"BingPreview",
"Applebot",
"Applebot-Extended",
"GPTBot",
"ChatGPT-User",
"OAI-SearchBot",
"OAI-AdsBot",
"ClaudeBot",
"Claude-User",
"Claude-SearchBot",
"anthropic-ai",
"PerplexityBot",
"Perplexity-User",
"Google-Extended",
"YouBot",
] as const;
export default function robots(): MetadataRoute.Robots {
return {
rules: [
{ userAgent: "*", allow: "/" },
{ userAgent: [...AI_AND_SEARCH_AGENTS], allow: "/" },
],
sitemap: absoluteUrl("/sitemap.xml"),
};
}Tipe MetadataRoute.Robots dari Next.js menangani serialisasi — menghasilkan respons robots.txt yang diformat dengan benar saat build time.
Dua aturan. Keduanya mengizinkan segalanya. Tapi pencantuman eksplisit agent AI penting: ia mendokumentasikan niat, dan membuat perubahan di masa depan menjadi mudah. Memblokir agent tertentu adalah satu baris perubahan, bukan pencarian regex di file teks biasa.
Asersi as const pada array mempertahankan tipe literal — berguna jika nama-nama agent ini direferensikan di tempat lain dalam codebase untuk konsistensi.
6. Mengizinkan vs Memblokir: Pertanyaan Sesungguhnya
Keputusan sebenarnya bukan keputusan teknis.
Memblokir AI crawler sepenuhnya itu mudah. Tapi ada baiknya jelas tentang apa yang kamu blokir:
Crawler pelatihan (GPTBot, ClaudeBot, Google-Extended) — kontenmu mungkin digunakan dalam pelatihan model di masa depan. Memblokir ini berarti opt out dari itu.
Crawler real-time (ChatGPT-User, Claude-User) — ketika user meminta AI membaca URL spesifikmu. Memblokir ini berarti kontenmu tidak bisa dirangkum atau dianalisis saat diminta, bahkan ketika manusia secara eksplisit memintanya.
Crawler pencarian (OAI-SearchBot, Claude-SearchBot) — mendukung hasil pencarian berbasis AI. Memblokir ini berarti sitemu tidak muncul di pencarian bertenaga AI.
Untuk kebanyakan site — terutama portfolio dan blog — jawaban praktisnya adalah: izinkan semuanya. Kontennya publik. Tujuannya adalah ditemukan dan dipahami, oleh manusia maupun sistem AI.
Poin dari pencantuman eksplisit bukan harus memblokir, tapi bersikap disengaja. Mengetahui apa yang dilakukan setiap agent sebelum memutuskan.
7. Memverifikasi Bahwa Bot Adalah Siapa yang Diklaim
Siapa pun bisa mengirim request dengan User-Agent: GPTBot.
User agent string hanyalah teks. Scraper yang ingin melewati direktif Disallow-mu bisa menetapkan user agent-nya ke apa saja — termasuk string yang persis sama dengan crawler yang berperilaku baik.
Perbedaan ini penting: direktif robots.txt hanya bermakna sebesar kesediaan crawler untuk menghormatinya. AI crawler resmi dari OpenAI, Anthropic, dan Google memang menghormati robots.txt — mereka punya kebijakan yang dinyatakan dan reputasi yang dipertaruhkan. Tapi scraper yang menyamar sebagai GPTBot tidak akan menghormatinya.
Mekanisme verifikasi yang sebenarnya adalah reverse DNS lookup.
Ketika request masuk mengklaim sebagai GPTBot, kamu bisa memverifikasinya dengan memeriksa apakah IP address request tersebut resolve kembali ke domain yang dimiliki OpenAI. OpenAI mendokumentasikan pola reverse DNS yang diharapkan (crawl-XXX-XXX-XXX-XXX.gpt.openai.com). Google mendokumentasikan hal yang sama untuk Googlebot. Anthropic mempublikasikan milik mereka untuk ClaudeBot.
# Cara memverifikasi bot yang mengklaim sebagai GPTBot:
# 1. Ambil IP address dari request
# 2. Jalankan: nslookup <IP-address>
# 3. Periksa apakah hostname yang dikembalikan berakhiran .openai.com
# 4. Kemudian: nslookup <hostname-tersebut>
# 5. Konfirmasi bahwa ia resolve kembali ke IP asliPemeriksaan dua langkah ini — forward-confirmed reverse DNS — adalah metode verifikasi standar yang digunakan Googlebot dan diadopsi crawler besar lainnya.
robots.txt mengontrol apa yang dilakukan crawler jujur. Verifikasi adalah cara membedakan yang jujur dari yang hanya mengklaim jujur.
8. robots.txt dan llms.txt Bukan Pekerjaan yang Sama
Kedua file berurusan dengan cara mesin membaca sitemu. Mereka menyelesaikan masalah yang berbeda.
robots.txt mengontrol akses — agent mana yang diizinkan menjelajahi path mana. Ini ditegakkan di level request, sebelum apapun dibaca.
llms.txt mengontrol pemahaman — apa yang ditemukan AI setelah diizinkan masuk. Ini adalah dokumen terkurasi yang memberi tahu model siapa kamu dan apa yang dikandung sitemu.
Site yang hanya punya robots.txt memberikan izin masuk ke AI crawler, lalu membiarkan mereka berkeliaran dan membangun representasi sendiri dari apapun yang mereka temukan.
Site yang hanya punya llms.txt sudah mengorganisir kontennya untuk konsumsi AI, tapi tidak punya kebijakan tentang agent mana yang diizinkan mengaksesnya.
Keduanya bersama membentuk strategi yang koheren: kontrol akses yang disengaja dipasangkan dengan presentasi konten yang disengaja. Yang pertama menjawab "siapa yang boleh masuk." Yang kedua menjawab "inilah yang akan kamu temukan."
Untuk site yang ingin dipahami secara akurat oleh sistem AI — bukan hanya diindeks, tapi benar-benar dipahami — tidak ada satu file yang cukup.
Penutup
File robots.txt adalah sinyal, bukan tembok.
Bot yang berniat menghormatinya akan menghormatinya. Bot yang tidak berniat, tidak akan.
Tapi untuk yang menghormatinya — dan kebanyakan perusahaan AI besar secara eksplisit berkomitmen untuk menghormati robots.txt — sinyalnya penting. Ini adalah pernyataan yang bisa dibaca mesin: inilah yang bersedia saya bagikan, dan dengan siapa.
Menulis * tidak salah. Hanya saja membiarkan pernyataan itu tidak terucapkan.
Memahami apa yang sebenarnya dilakukan setiap user agent mengubah file dua baris menjadi kebijakan yang disengaja. Itu sepadan dengan sepuluh menit yang dibutuhkan untuk melakukannya dengan benar.