Ga naar inhoud

Content Negotiation voor AI Agents: Waarom Sentry Markdown Serveert in Plaats van HTML

9 min leestijd
Bart Waardenburg

Bart Waardenburg

AI Agent Readiness Expert & Oprichter

David Cramer, medeoprichter en CPO van Sentry, publiceerde onlangs een praktische gids voor het optimaliseren van content voor AI agents . Zijn argument is simpel: "je moet content optimaliseren voor agents, net zoals je dingen optimaliseert voor mensen." Niet met nieuwe protocollen of complexe infrastructuur — met HTTP content negotiation, een standaard die sinds 1999 in de specificatie staat.

De techniek is eenvoudig. Wanneer een verzoek Accept: text/markdown bevat, stuurt de server schone markdown terug in plaats van een volledige HTML-pagina. Navigatie, JavaScript, sidebar-widgets — alles gestript. Alleen de content die de agent daadwerkelijk nodig heeft.

Wat is Content Negotiation?

Content negotiation is een HTTP-mechanisme waarbij een client aan de server vertelt welk formaat de voorkeur heeft, en de server dienovereenkomstig levert. Het is gedefinieerd in RFC 9110 en maakt sinds HTTP/1.1 deel uit van het web. Browsers hebben het altijd al gebruikt — wanneer je browser Accept: text/html stuurt, weet de server dat HTML teruggegeven moet worden.

Het inzicht is dat AI agents hetzelfde mechanisme kunnen gebruiken. Wanneer een agent Accept: text/markdown stuurt, kan de server een gestripte markdown-versie van de pagina teruggeven. Dezelfde URL, dezelfde content, andere representatie. Geen aparte API, geen speciale endpoints, geen nieuwe protocollen nodig.

Agent-verzoek met content negotiation plain
GET /docs/getting-started HTTP/1.1
Host: docs.example.com
Accept: text/markdown, text/html;q=0.9

---

HTTP/1.1 200 OK
Content-Type: text/markdown; charset=utf-8
Vary: Accept

# Getting Started

Install the SDK with your package manager:

```bash
npm install @example/sdk
```

De Drie Optimalisatiegebieden

Cramer identificeert drie gebieden waar contentoptimalisatie het meest uitmaakt voor agents. Dit zijn geen theoretische overwegingen — ze zijn gebaseerd op hoe frontier-modellen daadwerkelijk webcontent verwerken:

Volgorde van Content

Agents lezen sequentieel van boven naar beneden. Als je belangrijkste informatie begraven ligt onder navigatie, breadcrumbs en sidebar-HTML, bereikt de agent het misschien nooit — of verspilt tokens om er te komen.

Contentgrootte

Frontier-modellen lezen vaak alleen het eerste deel van grote pagina's om contextvensters te beheren. Kleinere, gefocuste content betekent dat de agent het volledige beeld krijgt in plaats van een afgekapte versie.

Diepte van Nodes

Diep geneste HTML-structuren — divs die divs wrappen die divs wrappen — voegen tokens toe zonder betekenis toe te voegen. Platte markdown behoudt dezelfde semantiek met een fractie van de markup.

Samen verklaren deze waarom het serveren van HTML aan een agent verspilling is. Een typische documentatiepagina kan 15.000 tokens zijn als HTML, maar slechts 3.000 tokens als markdown. De agent krijgt dezelfde informatie — koppen, alinea's, codeblokken, links — zonder de structurele overhead.

Hoe Sentry Content Negotiation Implementeert

Sentry's aanpak heeft drie lagen, die elk een ander probleem oplossen:

1. Documentatie: Echte Markdown Serveren

Wanneer een agent Sentry's documentatie opvraagt met Accept: text/markdown, stuurt de server de ruwe MDX-bron terug — dezelfde content die de HTML-pagina genereert, maar zonder de gerenderde navigatie, JavaScript-bundels of UI-chrome. De linkhiërarchie wordt herstructureerd zodat agents gerelateerde pagina's kunnen ontdekken via een platte sitemap in plaats van geneste navigatiebomen te crawlen.

Dit is het meest breed toepasbare patroon. Elke site met documentatie, helpartikelen of gestructureerde content kan dezelfde aanpak implementeren: detecteer de Accept-header en stuur een gestripte representatie terug.

2. Beveiligde Pagina's: Doorverwijzen naar Programmatische Alternatieven

Wanneer een agent een beveiligde pagina in de Sentry web-UI bereikt — een dashboard, issue-detail of projectinstellingen — stuurt Sentry niet gewoon een inlogscherm. In plaats daarvan verwijst het de agent door naar programmatische alternatieven: de MCP-server, de CLI-tool of de REST API. De agent wordt gewezen op waar hij wel toegang heeft tot de data, in plaats van vast te lopen op een pagina die hij niet kan bereiken.

3. Bootstrap Discovery: Agents Zichzelf Laten Configureren

Voor Sentry's CLI-tools en integraties kunnen agents een markdown-document ophalen dat het doel, de mogelijkheden en de snelstartinstructies van de tool beschrijft. Dit laat een agent zichzelf bootstrappen — begrijpen wat een tool doet en hoe het te gebruiken — zonder HTML-documentatiepagina's te parsen.

Dit is hetzelfde principe achter llms.txt — het bieden van een gecureerd, machine-leesbaar startpunt. Content negotiation is de transportlaag; de gecureerde content is de waardelaag.

Wie Doet Dit Al?

Sentry staat niet alleen. Content negotiation voor agents wordt een patroon in het hele developer tools-ecosysteem:

Sentry

Volledige content negotiation over docs, beveiligde pagina's en tool-bootstrapping. De meest uitgebreide implementatie tot nu toe.

Vercel

Bouwde AEO-tracking specifiek voor coding agents en beveelt content negotiation aan in hun State of AEO-rapport.

Cloudflare

Biedt markdown-transformatie en content negotiation als ingebouwde functie in hun betaalde pakketten. Een platformbreed commitment op agent-verkeer.

Coding Agents

Claude Code, Cursor, Windsurf en Bun sturen al Accept-headers die markdown prefereren bij het ophalen van documentatiepagina's.

Het patroon tekent zich af aan beide kanten: contentaanbieders beginnen markdown te serveren, en AI agents beginnen erom te vragen. Vroege adopters hebben een samengesteld voordeel — agents die betere resultaten krijgen van je content zullen vaker terugkomen.

Hoe Content Negotiation te Implementeren

De implementatie is eenvoudiger dan je misschien denkt. Hier is een praktische aanpak:

Stap 1: Agent-Verzoeken Detecteren

Controleer de Accept-header op text/markdown. De meeste webframeworks maken dit eenvoudig:

Plug-gebaseerde content negotiation (Elixir/Phoenix) elixir
defmodule MyAppWeb.Plugs.ContentNegotiation do
  import Plug.Conn

  def init(opts), do: opts

  def call(conn, _opts) do
    accepts = get_req_header(conn, "accept")

    if Enum.any?(accepts, &String.contains?(&1, "text/markdown")) do
      assign(conn, :prefer_markdown, true)
    else
      assign(conn, :prefer_markdown, false)
    end
  end
end
Express middleware (Node.js) javascript
function contentNegotiation(req, res, next) {
  req.prefersMarkdown = req.accepts(['text/markdown', 'text/html'])
    === 'text/markdown';
  next();
}

app.get('/docs/:slug', contentNegotiation, (req, res) => {
  if (req.prefersMarkdown) {
    res.type('text/markdown').send(getMarkdownContent(req.params.slug));
  } else {
    res.render('docs', { slug: req.params.slug });
  }
});

Stap 2: Schone Markdown Serveren

Strip alles wat geen content is: navigatie, headers, footers, JavaScript, trackingpixels, cookiebanners. Wat overblijft moet dezelfde content zijn die op de gerenderde pagina verschijnt, maar als schone markdown met een correcte koppenstructuur.

  • Wel opnemen: koppen, alinea's, codeblokken, links, lijsten, afbeeldingen met alt-tekst, tabellen
  • Niet opnemen: navigatie-HTML, script-tags, style-blokken, trackingpixels, UI-framework markup
  • Wel instellen: Content-Type: text/markdown en Vary: Accept headers

De Vary: Accept header is belangrijk — het vertelt caches en CDN's dat de response varieert op basis van de Accept-header, waardoor een gecachte markdown-response niet aan browsers wordt geserveerd.

Stap 3: Belangrijke Informatie Vooraan Plaatsen

Omdat agents sequentieel lezen en lange content kunnen afkappen, zet de belangrijkste informatie vooraan:

  • Begin met een duidelijke titel en samenvatting van één alinea
  • Zet installatie-/snelstartinstructies bovenaan
  • Verplaats vereisten, achtergrondcontext en changelog naar onderaan
  • Gebruik beschrijvende koppen die logisch zijn zonder de onderliggende content te lezen

Voorbij Developer Docs

Content negotiation begon bij developerdocumentatie, maar het patroon is toepasbaar op elke content-rijke website. Denk aan:

Websitetype Wat als Markdown Serveren Agent Use Case
Developer docs API-referenties, handleidingen, tutorials Coding agents die SDK-gebruiksvoorbeelden ophalen
E-commerce Productspecificaties, vergelijkingen, reviews Shopping agents die producten vergelijken voor gebruikers
SaaS helpcenters Supportartikelen, FAQ's, installatiehandleidingen Klantenservice-agents die vragen beantwoorden
Nieuws/media Artikelcontent, gestructureerde data Research agents die informatie verzamelen
Overheid/juridisch Regelgeving, formulieren, procedures Compliance agents die vereisten controleren

Naarmate AI agents zich uitbreiden voorbij coderen naar browsen, winkelen en onderzoekstaken, heeft elke website met waardevolle content er baat bij. De vraag is niet of agents je content zullen consumeren — het is of ze dat efficiënt of verspillend zullen doen.

Hoe Dit Past in AI Agent Readiness

Content negotiation is één onderdeel van een bredere agent readiness-strategie. Het werkt het beste in combinatie met de andere signalen waar agents naar zoeken:

llms.txt

Biedt een gecureerd startpunt — welke pagina's het belangrijkst zijn. Content negotiation biedt het leveringsmechanisme — hoe die pagina's geserveerd worden. Samen geven ze agents een snel pad naar je beste content.

Gestructureerde Data

JSON-LD en Schema.org geven agents semantische context over je content — wat het is, wie het schreef, wanneer het is bijgewerkt. Markdown geeft ze de daadwerkelijke tekst. Beide zijn nodig.

robots.txt & Crawler-toegang

Agents hebben toestemming nodig om je content überhaupt te bereiken. Een open robots.txt gecombineerd met content negotiation betekent dat agents je content kunnen bereiken en efficiënt consumeren.

Agent-protocollen

WebMCP, MCP en A2A laten agents acties ondernemen. Content negotiation laat ze lezen. Je hebt beide nodig.

De Conclusie

David Cramer's post snijdt door de ruis rond AI agent-optimalisatie. Je hebt geen nieuwe protocollen of complexe infrastructuur nodig. Je hebt content negotiation nodig — een 25 jaar oude HTTP-standaard — toegepast op een nieuw publiek.

De implementatie is simpel: detecteer Accept: text/markdown, stuur schone markdown terug, zet je belangrijkste content vooraan. Voor beveiligde pagina's, verwijs agents door naar API's en CLI's in plaats van inlogschermen. Voor discovery, bied een gecureerd startpunt via llms.txt .

De bedrijven die vandaag bouwen voor agents — Sentry, Vercel, Cloudflare — gebruiken geen exotische nieuwe technologie. Ze gebruiken standaarden die al bestaan. De kloof is niet technisch. Het is bewustzijn. En die kloof sluit snel.

Bronnen

Klaar om te checken?

SCAN JE WEBSITE

Ontvang je AI-agentgereedheidscore met bruikbare aanbevelingen over 5 categorieën.

  • Gratis directe scan met lettercijfer
  • 5 categorieën, 47 checkpoints
  • Codevoorbeelden bij elke aanbeveling

GERELATEERDE ARTIKELEN

Lees verder over AI-agentgereedheid en weboptimalisatie.

Cloudflare /crawl-Endpoint: Eén API-Call om Elke Website te Crawlen
9 min leestijd

Cloudflare /crawl-Endpoint: Eén API-Call om Elke Website te Crawlen

Cloudflare lanceerde een /crawl-endpoint dat hele websites crawlt met één API-call — met als output HTML, Markdown of AI-geëxtraheerde JSON. We ontleden wat dit betekent voor AI agent readiness: waarom je robots.txt, sitemap, semantische HTML en server-side rendering nu belangrijker zijn dan ooit.

ai-agents seo getting-started
AI-Crawlers Negeren llms.txt — Maar AI-Agents Niet
9 min leestijd

AI-Crawlers Negeren llms.txt — Maar AI-Agents Niet

Dries Buytaerts data toont dat nul AI-crawlers llms.txt gebruiken. Maar hij mat het verkeerde. Crawlers scrapen voor trainingsdata — agents voltooien taken. We ontleden waarom het onderscheid crawler vs agent ertoe doet, welke coding agents llms.txt en content negotiation al gebruiken, en wat je vandaag moet implementeren.

ai-agents seo getting-started
Anthropic's AI Exposure Index: Wat Echte Gebruiksdata Betekent voor je Website
12 min leestijd

Anthropic's AI Exposure Index: Wat Echte Gebruiksdata Betekent voor je Website

Anthropic's nieuwe 'observed exposure'-metriek onthult een kloof van 61 punten tussen theoretische AI-capaciteit en daadwerkelijk gebruik. We ontleden de data — van 75% taakdekking voor programmeurs tot 14% wervingsvertraging voor jonge werknemers — en leggen uit waarom deze adoptiekloof een aftelling is voor AI-agentgereedheid van websites.

ai-agents seo getting-started

ONTDEK MEER

De meeste websites scoren onder de 45. Ontdek waar jij staat.

RANGLIJST
BEKIJK HOE ANDEREN SCOREN

RANGLIJST

Bekijk AI-gereedheidsscores van gescande websites.
VERGELIJKEN
VERGELIJKEN

VERGELIJKEN

Vergelijk twee websites zij-aan-zij over alle 5 categorieën en 47 checkpoints.
OVER ONS
HOE WIJ METEN

OVER ONS

Lees meer over onze scoringsmethodologie met 5 categorieën.