Editorial Intelligence
Wat het is
Editorial Intelligence is een Drupal-module die extern nieuws voor een site curateert in plaats van een onbewerkte feed toe te voegen. Het bevraagt bronnen op kandidaatartikelen, scoort elk ervan op basis van embeddinggelijkenis met de eigen content van de site, en toont alleen de relevante: in een zijbalk, in een blok met gerelateerde berichtgeving bij een artikel, en, in combinatie met de module Species External Entity, in een widget per soort op een soortpagina.
Het behandelt externe berichtgeving als een gecureerde nieuwsredactie, niet als een ongefilterde feed: niets verschijnt voordat het is gescoord en relevant is bevonden. Editorial Intelligence is vandaag live op Biodiversa.
In één oogopslag
- Modules
editorial_intelligence, de engine: opslag, embeddings en scoring;editorial_intelligence_feedseneditorial_intelligence_manual, twee uitwisselbare invoeradapters- Drupal core
- 10 of 11
- Vereist
- De bijgedragen
external_entities-module enkey;editorial_intelligence_feedsvereist ook Feeds - Embeddings
- Een zelfgehoste Ollama-server waarop
nomic-embed-textdraait, geconfigureerd via de Drupal AI-module - Werkt met
species_ext, voor een widget per soort en een soorten-corpus om tegen te scoren- Status
- Werkend. In productie op Biodiversa.
Wat bezoekers en redacteuren zien
Bezoekers zien gecureerde berichtgeving waar een site ook een blok plaatst: een lijst in de zijbalk, een blok met gerelateerde berichtgeving bij een artikel, of, op een biodiversiteitssite, een widget met nieuws over de soort op de pagina.
Redacteuren werken een toetsenbordgestuurde beoordelingswachtrij af: een item dat boven een drempelwaarde scoort, wordt automatisch gepubliceerd, een item dat daaronder scoort, wordt verwijderd, en alles daartussen wacht op een persoon die het goedkeurt of afwijst.
Wat het toevoegt aan een Drupal-site
Entiteitsopslag
Elke kandidaat wordt opgeslagen als een externe entiteit (editorial_news), niet als een node, dus de engine voegt niets toe aan de node-tabel van Drupal.
Corpora
Scoring werkt met benoemde corpora in plaats van één globale feed. Meegeleverde corpora zijn news_article, de eigen content van de site, en species, voor sites die species_ext draaien. Elke kandidaat houdt het corpus bij waartegen hij is gescoord, zodat meerdere corpora naast elkaar kunnen bestaan zonder elkaar te overschrijven, en het toevoegen van een nieuwe kost twee Drush-aanroepen, geen nieuwe code.
Weergavecomponenten
De blokplugin EditorialNewsRelatedBlock is herbruikbaar per corpus. Hij wordt geleverd met drie plaatsingen volgens hetzelfde patroon:
- Redactioneel nieuws: zijbalk, een sitebrede lijst, geconfigureerd op tag en een resultaatslimiet
- Redactioneel nieuws: gerelateerd, geplaatst op een artikel, gematcht op contenttype en corpus, met een optie
include_queuedom ook niet-goedgekeurde kandidaten te tonen - Redactioneel nieuws: over deze soort, geplaatst op een soortpagina, gematcht tegen het species-corpus, met eigen instellingen voor minimummatch en scoring
Invoerbronnen
De engine weet niet waar een kandidaat vandaan komt. Elke manier waarop een kandidaat kan binnenkomen is een zuster-submodule: editorial_intelligence_feeds pollt RSS- en Atom-feeds via Drupal Feeds, en editorial_intelligence_manual laat een redacteur een URL plakken, de Open Graph-metadata ervan bekijken en deze handmatig toevoegen. Een nieuwe bron is een derde submodule van dezelfde vorm, geen wijziging aan de engine.
Drush-commando's
Ingestie en scoring: ei:seed-sources, ei:add-source, ei:embed-onsite, ei:rescore-all (de optie --rerank hergebruikt opgeslagen embeddings in plaats van Ollama opnieuw aan te roepen), ei:apply-thresholds. Soorten en taxonomie: ei:embed-taxa, ei:embed-siblings. AI-bijschriften: ei:generate-taglines, ei:explain-matches. Diagnostiek: ei:diag, ei:purge.
Databronnen en licenties
- RSS- en Atom-feeds: worden volgens een nachtelijk schema opgevraagd via de submodule
editorial_intelligence_feeds - Wikipedia: samenvattingen worden ingebed voor de taxonomieketen bij het scoren van het soortencorpus
- GBIF: levende zustersoorten van een soort, opgehaald via de GBIF-taxonsleutel, voor het soortencorpus
- Ollama: een zelfgehoste server die het embeddingmodel levert dat elke kandidaat scoort
- Claude Haiku (Anthropic), optioneel: een kort bijschrift over waarom een goedgekeurde kandidaat ertoe doet; standaard wordt een lokaal model gebruikt, Claude is een productieoptie, en een van beide wordt geconfigureerd als provider voor de Drupal AI-module in plaats van in code te worden vastgelegd
Bij herscoren worden standaard opgeslagen embeddings hergebruikt, dus het bijstellen van een drempelwaarde of het toevoegen van een corpus roept het embeddingmodel niet opnieuw aan.
Ontwerpbeslissingen
- Curatie, geen aggregatie. Elke kandidaat wordt gescoord, gerangschikt en alleen getoond waar die relevant is, in plaats van alles te publiceren wat een bron aanlevert.
- Eén engine, meerdere corpora. Eén enkele embeddingstabel bedient een willekeurig aantal benoemde corpora, waarbij elke kandidaat wordt getagd met het corpus waartegen die is gescoord, dus scoren tegen een nieuw inhoudstype is grotendeels configuratie zodra een eerste corpus bestaat.
- Een relevantiepoort per plaatsing. Een blok kan alleen door de redactie goedgekeurde items tonen, of de score direct vertrouwen; de keuze wordt per plaatsing gemaakt, niet sitebreed.
- Ingestie blijft gescheiden van scoring. De engine slaat alleen op, scoort en toont; elke manier waarop een kandidaat kan binnenkomen, via polling of handmatig geplakt, is een submodule op hetzelfde niveau waar de engine niets van weet.
Start een project.
Vertel ons wat uw site al publiceert, en waar externe berichtgeving moet verschijnen.