Digizap

Jouw digitale zakmes.

Jouw IP: 216.73.217.62

Kennisbank

Voeding in de kop: hoe een site haar feeds adverteert

Een feed is een adres dat een site in haar kop aankondigt: één regel HTML met rel=alternate, het feed-type en het adres van de voeding. Die ene regel is het hele adresboek — een feedlezer die een site binnenkomt, leest eerst die kop en weet dan waar te kloppen. Staat de regel er niet, dan resteert alleen raden: gokken op standaardpaden.

Drie content-types dragen feeds: application/rss+xml voor RSS, application/atom+xml voor Atom en application/feed+json voor JSON Feed — de jongste van de drie, een JSON-object met een title en een array items. RSS en Atom zijn XML-formulieren met dezelfde drie stukken: een feed met titel, entries of items als herhaalde blokken, en per entry een datum. RSS gebruikt pubDate, Atom updated en published, JSON Feed date_published en date_modified.

De Feed detectie-tool leest die aankondigingen via onze server en meet élke aangekondigde feed na: komt hij terug, en komt hij terug als feed? Daarna loopt hij vijf standaardpaden apart na — want een feed die staat zonder dat de kop haar noemt, is ook een bevinding.

1. De kop is het adresboek

De aankondiging woont in de head van elke pagina die voedt: rel=alternate met een feed-type, een href naar het adres van de voeding en — optioneel maar behulpzaam — een title die de naam van de feed geeft. Meerdere aankondigingen op één pagina zijn normaal: RSS en Atom naast elkaar, of een taalvariant per feed. Wat er niet staat, bestaat voor een feedlezer niet: de lezer executeert geen JavaScript en raadt niet.

De content-type in de aankondiging is een belofte, geen feit. De tool meet de belofte na: de aangekondigde feed wordt opgehaald en de échte content-type van dat antwoord wordt naast de opgave gelegd. Een opgave die 404 terugkrijgt is een dode verwijzing; een pad dat HTML teruggeeft — vaak de vangnetroute van een single-page-app die op elk onbekend pad de eigen pagina servert — is voor een feedlezer een lege hand, ook als de browser er vrolijk mee is.

2. De drie vormen, gelezen uit het document

RSS is het oudste formulier en blijft het meest geplakte: een channel met items, elk met title, link en pubDate. Atom is de gestroomlijnde jongere broer uit dezelfde RFC-familie: een feed met entries, waar updated de waarheid is en published de geboortedatum. JSON Feed laat de XML vallen: een object met title, home_page_url en items, dat door elke JSON-parser gelezen kan worden — maar dan moet de content-type wél application/feed+json zeggen, want application/json laat feedlezers gissen naar wat het object moet zijn.

De telling van entries is geen schatting: de tool telt de herhaalde blokken zoals ze in het document staan — item voor item, entry voor entry, array-element voor array-element — en meldt de nieuwste datum uit de datavelden van het document. Een feed met nul entries is formeel in orde en inhoudsloos: dat is een meetbaar feit, geen oordeel over de maker.

3. Standaardpaden en de grens van de lijst

Wie geen kop heeft, woont vaak op een standaardpad: /feed, /rss, /feed.xml, /atom.xml en /index.xml zijn de paden die publish software achterlaat en die feedlezers proberen. De Feed detectie probeert die vijf apart op dezelfde origin en meldt wat er terugkwam. Een gevonden feed zonder aankondiging in de kop is een waarschuwing: de voeding bestaat, maar de deur is niet bewegwijzerd — een lezer die alleen de kop leest, vindt haar niet.

De lijst is vast en de grens is eerlijk: een feed op een eigen pad dat niet in de kop staat en niet op de vijf paden staat, blijft buiten beeld. Wat pas door JavaScript in de kop wordt gezet, staat niet in de HTML die onze server krijgt en wordt niet gezien. Een site die serieus voedt, doet het dubbel: aankondigen in de kop én staan op een vindbaar pad — dan vinden beidesoorten lezers haar.

Meet het zelf: Feed detectie

Zie welke feeds een pagina adverteert en welke er echt staan: rel=alternate-opgaven nagemeten op status en content-type, vijf standaardpaden apart geprobeerd, en een URL die zelf een feed is ter plekke ontleed.

Lees verder