Hoe genereer je een llms.txt-bestand voor je Astro-website - Complete handleiding

Andre Smith
Hoe genereer je een llms.txt-bestand voor je Astro-website - Complete handleiding

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:

  1. Haalt alle berichten op uit uw inhoudscollecties met behulp van getCollection()
  2. Filtert conceptinhoud uit om alleen gepubliceerde artikelen op te nemen
  3. Sorteert inhoud op datum om de meest recente inhoud eerst te tonen
  4. Maakt een gestructureerd tekstbestand beginnend met de titel van uw site
  5. Bevat voor elk bericht:
    • De posttitel als kop
    • Een directe link naar het bericht
    • Metadata (datum, categorie, auteur, beschrijving)
    • De volledige postinhoud
  6. Behandelt fouten op een elegante manier met de juiste foutregistratie
  7. 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:

  1. Bezoek het eindpunt rechtstreeks: https://uwsite.com/llms.txt
  2. Controleer de inhoudsstructuur om ervoor te zorgen dat alle berichten zijn opgenomen
  3. Controleer of de opmaak schoon en leesbaar is
  4. 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.

Andre Smith

Andre Smith

Author

User
User
User
Join 2,147,483+ users

Ontdek meer inzichten

Verken onze blog voor meer productiviteitstips, technologische inzichten en softwareoplossingen.

Try ScreenApp Free

Start recording in 60 seconds • No credit card required