Elke dag gebruiken steeds meer mensen ChatGPT, Perplexity en andere AI-tools om inhoud te zoeken en samen te vatten. Zoals besproken in een van mijn eerdere berichten over SEO naar SAO, is het slechts een kwestie van tijd voordat de meerderheid van de bezoeken aan websites en blogs afkomstig is van AI-agents.
Als het gaat om het toegankelijk maken van uw inhoud voor taalmodellen, is er een eenvoudigere manier dan complexe crawling-oplossingen - vooral voor statisch gegenereerde sites gebouwd met Astro. In dit bericht leid ik u door het maken van een llms.txt-bestand dat uw bloginhoud in een schone, gestructureerde indeling beschikbaar maakt voor LLM’s.
Wat is llms.txt?
Een llms.txt-bestand is conceptueel vergelijkbaar met robots.txt, maar is specifiek ontworpen voor taalmodellen. Het biedt een gestructureerde, tekstuele weergave van uw inhoud die gemakkelijk te parseren en te begrijpen is voor LLM’s.
LLM’s zijn niet erg goed in het navigeren door meerdere pagina’s via links. In plaats daarvan zijn LLM’s erg goed in het scrapen van inhoud van een enkele pagina en het opslaan in hun geheugen. Dit is waar llms.txt van onschatbare waarde wordt.
Waarom Crawling Tools zoals Crawl4AI overkill kunnen zijn
Tools zoals Crawl4AI bieden krachtige mogelijkheden voor het crawlen van websites voor LLM’s. Hoewel ze ideaal zijn voor het genereren van LLMs.txt voor dynamische sites, kunnen ze overkill zijn voor statische sites.
Vooral voor Astro-sites, waar inhoud meestal wordt opgeslagen als markdown-bestanden met frontmatter, hebt u al perfect gestructureerde inhoud die direct kan worden blootgesteld.
Een llms.txt-eindpunt implementeren in Astro
Hier ziet u hoe u LLMs.txt-bestanden kunt genereren voor uw Astro-site.
Maak een bestand in src/pages/llms.txt.ts (of src/pages/api/llms.txt.ts, afhankelijk van uw Astro-configuratie) en voeg de volgende code toe:
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 = `# Uw Websitenaam - Complete Inhoudsgids
Dit document bevat de volledige inhoud van uw website.
Website: https://uwwebsite.com
Laatst bijgewerkt: ${new Date().toISOString().split('T')[0]}
## Blog Inhoud
${sortedBlogs
.map((post) => `#
## ${post.data.title}
URL: https://uwwebsite.com/blog/${post.data.slug || post.id}
Gepubliceerd: ${post.data.date}
Categorie: ${post.data.category}
Auteur: ${post.data.author}
Beschrijving: ${post.data.description}
${post.body}
---`).join('\n\n')}
## Aanvullende Inhoudssecties
${activeFeatures
.map((feature) => `#
## ${feature.data.title}
URL: https://uwwebsite.com/${feature.data.slug}
Categorie: ${feature.data.category}
${feature.data.description}
${feature.body}
---`).join('\n\n')}
---
Deze inhoud wordt verstrekt om AI-assistenten te helpen het aanbod van uw website te begrijpen en accurate informatie te verstrekken.`;
return new Response(content, {
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "public, max-age=3600" // Cache for 1 hour
},
});
} catch (error) {
console.error('Fout bij het genereren van llms.txt:', error);
return new Response('Fout bij het genereren van llms.txt', { status: 500 });
}
};
Hoe deze code werkt
Deze code maakt een API-eindpunt dat:
- Haalt alle berichten op uit uw inhoudscollecties met behulp van
getCollection() - Filtert conceptinhoud uit om alleen gepubliceerde artikelen op te nemen
- Sorteert inhoud op datum om de meest recente inhoud eerst te tonen
- Maakt een gestructureerd tekstbestand beginnend met de titel van uw site
- Bevat voor elk bericht:
- De posttitel als kop
- Een directe link naar het bericht
- Metadata (datum, categorie, auteur, beschrijving)
- De volledige postinhoud
- Behandelt fouten op een elegante manier met de juiste foutregistratie
- Stelt de juiste headers in, inclusief caching voor prestaties
Aanpassen voor uw inhoudsstructuur
Collectienamen aanpassen
Het bovenstaande voorbeeld maakt gebruik van meerdere collecties. Als u slechts een blogcollectie hebt, vereenvoudigt u deze:
export const GET: APIRoute = async () => {
const posts = await getCollection("blog"); // Pas aan uw collectienaam aan
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 = `# Uw Blognaam
${publishedPosts
.map((post) => `# ${post.data.title}
https://uwwebsite.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" },
});
};
Inhoudsfiltering toevoegen
Mogelijk wilt u bepaalde categorieën uitsluiten of alleen aanbevolen inhoud opnemen:
// Alleen aanbevolen berichten opnemen
const featuredPosts = posts.filter(post => post.data.featured && !post.data.draft);
// Specifieke categorieën uitsluiten
const filteredPosts = posts.filter(post =>
!post.data.draft && !['internal', 'private'].includes(post.data.category)
);
Voordelen van het gebruik van llms.txt
1. Verbeterde AI-vindbaarheid
AI-tools kunnen snel uw volledige inhoudsbibliotheek begrijpen zonder meerdere pagina’s te crawlen.
2. Betere context voor AI-antwoorden
Wanneer gebruikers vragen stellen over uw inhoud, hebben AI-modellen toegang tot uitgebreide, gestructureerde informatie.
3. SEO voor het AI-tijdperk
Naarmate zoeken evolueert naar AI-gestuurde resultaten, wordt het cruciaal om gestructureerde inhoud te hebben voor AI-consumptie.
4. Prestatievoordelen
Statische generatie betekent dat uw llms.txt-bestand wordt gemaakt tijdens het bouwen, wat zorgt voor snelle responstijden.
Uw llms.txt-implementatie testen
Na het implementeren van het eindpunt test u het door:
- Bezoek het eindpunt rechtstreeks:
https://uwsite.com/llms.txt - Controleer de inhoudsstructuur om ervoor te zorgen dat alle berichten zijn opgenomen
- Controleer of de opmaak schoon en leesbaar is
- Test met AI-tools door ze te vragen uw llms.txt-inhoud te analyseren
Best practices voor llms.txt
Houd inhoud actueel
Update uw llms.txt regelmatig door uw site opnieuw te bouwen wanneer u nieuwe inhoud publiceert.
Relevante metadata opnemen
Voeg publicatiedata, categorieën en beschrijvingen toe om AI te helpen de context te begrijpen.
Inhoud duidelijk structureren
Gebruik consistente kopopmaak en duidelijke scheidingstekens tussen secties.
Bestandsgrootte bewaken
Voor sites met honderden berichten kunt u overwegen de inhoud te pagineren of te filteren om het bestand beheersbaar te houden.
Conclusie
Het maken van een llms.txt-bestand voor uw Astro-website is een eenvoudige manier om uw inhoud toegankelijk te maken voor AI-taalmodellen. Deze aanpak maakt gebruik van de inhoudscollecties van Astro om een gestructureerde, uitgebreide weergave van de inhoud van uw site te creëren.
Aangezien AI steeds belangrijker wordt voor het ontdekken van inhoud, positioneert het implementeren van llms.txt uw website voor een betere zichtbaarheid in het AI-gestuurde zoeklandschap. De implementatie is eenvoudig, performant en gemakkelijk te onderhouden als onderdeel van uw Astro-bouwproces.
Begin vandaag nog met het implementeren van llms.txt om ervoor te zorgen dat uw inhoud klaar is voor de toekomst van AI-gestuurd zoeken en ontdekken.
Veelgestelde Vragen
Wat is het verschil tussen llms.txt en sitemap.xml?
Terwijl sitemap.xml uw pagina’s opsomt voor zoekmachinecrawlers, biedt llms.txt de daadwerkelijke inhoud in een indeling die is geoptimaliseerd voor taalmodellen om te begrijpen en te verwerken.
Hoe vaak moet ik mijn llms.txt-bestand bijwerken?
Uw llms.txt-bestand wordt automatisch bijgewerkt wanneer u uw Astro-site opnieuw bouwt, zodat het up-to-date blijft met uw inhoudspublicatieschema.
Kan ik afbeeldingen en media opnemen in llms.txt?
llms.txt is tekstueel, dus neem beschrijvingen van afbeeldingen en media op in plaats van de bestanden zelf. Focus op tekstuele inhoud die AI effectief kan verwerken.
Heeft llms.txt invloed op mijn SEO?
Nee, llms.txt heeft geen negatieve invloed op traditionele SEO. Het is ontworpen om uw bestaande SEO-strategie aan te vullen door inhoud toegankelijk te maken voor AI-tools.
Hoe groot moet mijn llms.txt-bestand zijn?
Er is geen strikte limiet, maar houd het redelijk. Voor sites met honderden berichten kunt u overwegen om te filteren om alleen uw belangrijkste of meest recente inhoud op te nemen.