Setiap hari semakin banyak orang menggunakan ChatGPT, Perplexity, dan alat AI lainnya untuk mencari dan meringkas konten. Seperti yang dibahas di salah satu postingan saya sebelumnya tentang SEO ke SAO, hanya masalah waktu sampai sebagian besar kunjungan ke situs web dan blog berasal dari agen AI.
Dalam hal membuat konten Anda dapat diakses oleh model bahasa, ada cara yang lebih sederhana daripada solusi perayapan yang kompleks - terutama untuk situs yang dibuat secara statis dengan Astro. Dalam postingan ini, saya akan memandu Anda membuat file llms.txt yang mengekspos konten blog Anda ke LLM dalam format yang bersih dan terstruktur.
Apa itu llms.txt?
File llms.txt secara konseptual mirip dengan robots.txt tetapi dirancang khusus untuk model bahasa. Ini menyediakan representasi berbasis teks dan terstruktur dari konten Anda yang mudah diuraikan dan dipahami oleh LLM.
LLM tidak terlalu baik dalam menavigasi melalui banyak halaman melalui tautan. Sebaliknya, LLM sangat baik dalam mengambil konten dari satu halaman dan menyimpannya ke dalam memori mereka. Di sinilah llms.txt menjadi sangat berharga.
Mengapa Alat Perayapan Seperti Crawl4AI Mungkin Berlebihan
Alat seperti Crawl4AI menawarkan kemampuan perayapan situs web yang kuat untuk LLM. Meskipun ideal untuk menghasilkan LLMs.txt untuk situs dinamis, mereka bisa berlebihan untuk situs statis.
Khususnya untuk situs Astro, di mana konten biasanya disimpan sebagai file markdown dengan frontmatter, Anda sudah memiliki konten yang terstruktur sempurna yang siap untuk diekspos secara langsung.
Mengimplementasikan Endpoint llms.txt di Astro
Berikut cara Anda dapat menghasilkan file LLMs.txt untuk situs Astro Anda.
Buat file di src/pages/llms.txt.ts (atau src/pages/api/llms.txt.ts tergantung pada konfigurasi Astro Anda) dan tambahkan kode berikut:
import { getCollection } from "astro:content";
import type { APIRoute } from "astro";
export const GET: APIRoute = async () => {
try {
// Fetch all content collections
const [blogs, features, transcriptions, alternatives, help] = await Promise.all([
getCollection("blog"),
getCollection("features"),
getCollection("transcription"),
getCollection("alternatives"),
getCollection("help")
]);
// Sort blogs by date (newest first)
const sortedBlogs = blogs
.filter(post => !post.data.draft)
.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
// Filter non-draft content
const activeFeatures = features.filter(item => !item.data.draft);
const activeTranscriptions = transcriptions.filter(item => !item.data.draft);
const activeAlternatives = alternatives.filter(item => !item.data.draft);
const content = `# Nama Situs Web Anda - Panduan Konten Lengkap
Dokumen ini berisi konten lengkap dari situs web Anda.
Situs web: https://yourwebsite.com
Terakhir Diperbarui: ${new Date().toISOString().split('T')[0]}
## Konten Blog
${sortedBlogs
.map((post) => `#
## ${post.data.title}
URL: https://yourwebsite.com/blog/${post.data.slug || post.id}
Diterbitkan: ${post.data.date}
Kategori: ${post.data.category}
Penulis: ${post.data.author}
Deskripsi: ${post.data.description}
${post.body}
---`).join('\n\n')}
## Bagian Konten Tambahan
${activeFeatures
.map((feature) => `#
## ${feature.data.title}
URL: https://yourwebsite.com/${feature.data.slug}
Kategori: ${feature.data.category}
${feature.data.description}
${feature.body}
---`).join('\n\n')}
---
Konten ini disediakan untuk membantu asisten AI memahami penawaran situs web Anda dan memberikan informasi yang akurat.`;
return new Response(content, {
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "public, max-age=3600" // Cache selama 1 jam
},
});
} catch (error) {
console.error('Error generating llms.txt:', error);
return new Response('Error generating llms.txt', { status: 500 });
}
};
Bagaimana Kode Ini Bekerja
Kode ini membuat endpoint API yang:
- Mengambil semua postingan dari koleksi konten Anda menggunakan
getCollection() - Menyaring konten draf untuk hanya menyertakan artikel yang diterbitkan
- Mengurutkan konten berdasarkan tanggal untuk menampilkan konten terbaru terlebih dahulu
- Membuat file teks terstruktur yang dimulai dengan judul situs Anda
- Menyertakan untuk setiap postingan:
- Judul postingan sebagai judul
- Tautan langsung ke postingan
- Metadata (tanggal, kategori, penulis, deskripsi)
- Konten postingan lengkap
- Menangani kesalahan dengan baik dengan pencatatan kesalahan yang tepat
- Mengatur header yang sesuai termasuk caching untuk kinerja
Menyesuaikan untuk Struktur Konten Anda
Menyesuaikan Nama Koleksi
Contoh di atas menggunakan beberapa koleksi. Jika Anda hanya memiliki koleksi blog, sederhanakan:
export const GET: APIRoute = async () => {
const posts = await getCollection("blog"); // Sesuaikan dengan nama koleksi Anda
const publishedPosts = posts
.filter(post => !post.data.draft)
.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
const content = `# Nama Blog Anda
${publishedPosts
.map((post) => `# ${post.data.title}
https://yourwebsite.com/blog/${post.data.slug || post.id}
${post.data.description}
${post.body}
`).join('\n\n')}`;
return new Response(content, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
};
Menambahkan Pemfilteran Konten
Anda mungkin ingin mengecualikan kategori tertentu atau hanya menyertakan konten unggulan:
// Hanya sertakan postingan unggulan
const featuredPosts = posts.filter(post => post.data.featured && !post.data.draft);
// Kecualikan kategori tertentu
const filteredPosts = posts.filter(post =>
!post.data.draft && !['internal', 'private'].includes(post.data.category)
);
Manfaat Menggunakan llms.txt
1. Peningkatan Kemampuan Penemuan AI
Alat AI dapat dengan cepat memahami seluruh pustaka konten Anda tanpa merayapi banyak halaman.
2. Konteks yang Lebih Baik untuk Respons AI
Saat pengguna mengajukan pertanyaan terkait konten Anda, model AI memiliki akses ke informasi komprehensif dan terstruktur.
3. SEO untuk Era AI
Saat pencarian berkembang menuju hasil yang didukung AI, memiliki konten terstruktur untuk konsumsi AI menjadi sangat penting.
4. Manfaat Kinerja
Pembuatan statis berarti file llms.txt Anda dibuat pada saat pembuatan, memberikan waktu respons yang cepat.
Menguji Implementasi llms.txt Anda
Setelah mengimplementasikan endpoint, uji dengan:
- Kunjungi endpoint secara langsung:
https://yoursite.com/llms.txt - Periksa struktur konten untuk memastikan semua postingan disertakan
- Verifikasi pemformatan bersih dan mudah dibaca
- Uji dengan alat AI dengan meminta mereka menganalisis konten llms.txt Anda
Praktik Terbaik untuk llms.txt
Jaga Konten Tetap Segar
Perbarui llms.txt Anda secara teratur dengan membangun kembali situs Anda saat Anda menerbitkan konten baru.
Sertakan Metadata yang Relevan
Tambahkan tanggal publikasi, kategori, dan deskripsi untuk membantu AI memahami konteks.
Struktur Konten dengan Jelas
Gunakan format judul yang konsisten dan pemisah yang jelas antar bagian.
Pantau Ukuran File
Untuk situs dengan ratusan postingan, pertimbangkan untuk membuat halaman atau memfilter konten agar file tetap mudah dikelola.
Kesimpulan
Membuat file llms.txt untuk situs web Astro Anda adalah cara mudah untuk membuat konten Anda dapat diakses oleh model bahasa AI. Pendekatan ini memanfaatkan koleksi konten Astro untuk membuat tampilan konten situs Anda yang terstruktur dan komprehensif.
Karena AI menjadi semakin penting untuk penemuan konten, mengimplementasikan llms.txt memposisikan situs web Anda untuk visibilitas yang lebih baik dalam lanskap pencarian yang didukung AI. Implementasinya sederhana, berkinerja baik, dan mudah dipelihara sebagai bagian dari proses pembuatan Astro Anda.
Mulai implementasikan llms.txt hari ini untuk memastikan konten Anda siap untuk masa depan pencarian dan penemuan yang didukung AI.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara llms.txt dan sitemap.xml?
Meskipun sitemap.xml mencantumkan halaman Anda untuk perayap mesin pencari, llms.txt menyediakan konten aktual dalam format yang dioptimalkan agar model bahasa memahami dan memproses.
Seberapa sering saya harus memperbarui file llms.txt saya?
File llms.txt Anda diperbarui secara otomatis saat Anda membangun kembali situs Astro Anda, sehingga tetap terkini dengan jadwal penerbitan konten Anda.
Dapatkah saya menyertakan gambar dan media di llms.txt?
llms.txt berbasis teks, jadi sertakan deskripsi gambar dan media daripada file itu sendiri. Fokus pada konten tekstual yang dapat diproses AI secara efektif.
Apakah llms.txt akan memengaruhi SEO saya?
Tidak, llms.txt tidak akan berdampak negatif pada SEO tradisional. Ini dirancang untuk melengkapi strategi SEO Anda yang ada dengan membuat konten dapat diakses oleh alat AI.
Seberapa besar seharusnya file llms.txt saya?
Tidak ada batasan yang ketat, tetapi buatlah tetap wajar. Untuk situs dengan ratusan postingan, pertimbangkan untuk memfilter untuk hanya menyertakan konten Anda yang paling penting atau terbaru.