Un site d’actualité juridique, alimenté en articles longs et techniques, a intégré début 2024 une extension générant automatiquement un résumé de chaque article via un modèle de langage, dans le but d’afficher un chapô synthétique sur les pages de listing du frontend Astro consommant le contenu via WPGraphQL. La question qui s’est posée immédiatement : comment exposer ce résumé généré sans jamais laisser passer un texte non relu vers le public ?
Le risque n’était pas tant que l’IA se trompe factuellement, bien que ce cas se soit présenté à plusieurs reprises sur des points de procédure juridique subtils, mais que le résumé généré soit publié automatiquement sans qu’aucun humain n’ait eu l’occasion de le corriger ou de le rejeter avant qu’il n’atteigne le front.
Architecture du champ de résumé dans le schéma
Le résumé généré a été stocké comme un champ personnalisé distinct du contenu original, jamais fusionné avec l’extrait natif de l’article, et enregistré avec un statut explicite plutôt qu’une simple présence ou absence de valeur :
add_action('acf/init', function () {
acf_add_local_field_group([
'key' => 'group_resume_ia',
'title' => 'Résumé généré par IA',
'fields' => [
['key' => 'field_resume_texte', 'name' => 'resume_ia_texte', 'type' => 'textarea'],
['key' => 'field_resume_statut', 'name' => 'resume_ia_statut', 'type' => 'select',
'choices' => ['en_attente' => 'En attente de relecture', 'valide' => 'Validé', 'rejete' => 'Rejeté']],
],
'location' => [[['param' => 'post_type', 'operator' => '==', 'value' => 'article']]],
]);
});
N’exposer que les résumés validés dans le schéma GraphQL

Le champ exposé via WPGraphQL for ACF ne retourne une valeur que si le statut de relecture est explicitement valide, grâce à un résolveur personnalisé plutôt qu’une exposition brute du champ ACF :
add_action('graphql_register_types', function () {
register_graphql_field('Article', 'resumeIA', [
'type' => 'String',
'resolve' => function ($article) {
$statut = get_field('resume_ia_statut', $article->ID);
if ($statut !== 'valide') {
return null;
}
return get_field('resume_ia_texte', $article->ID);
},
]);
});
Un article dont le résumé reste « en attente de relecture » ou « rejeté » retourne simplement null sur ce champ côté GraphQL. Le front Astro affiche alors l’extrait natif de l’article en repli, sans jamais afficher de résumé généré non validé.
Le flux de relecture humaine
Un tableau de bord interne, accessible aux rédacteurs juridiques, liste tous les articles dont le résumé porte le statut « en attente de relecture », avec le texte généré affiché à côté du contenu original pour comparaison directe :
- Le rédacteur peut corriger le texte généré avant de le valider
- Le rédacteur peut rejeter entièrement le résumé si le modèle a mal interprété le contenu
- Aucun résumé ne change de statut automatiquement, même après une modification de l’article original
Ce dernier point s’est révélé important : une mise à jour de l’article après validation du résumé repasse automatiquement son statut à « en attente de relecture », pour éviter qu’un résumé validé sur une version antérieure du texte reste affiché tel quel après une correction substantielle du contenu source.
Un cas concret d’erreur détectée en relecture
Un résumé généré avait interverti un délai de recours de deux mois avec un délai de six mois mentionné plus loin dans le même article à titre d’exception. Sans relecture obligatoire, cette confusion serait passée directement sur le site public.
Ce que cet article ne traite pas
La question du référencement de ces extraits générés, et de leur éventuel impact sur le classement des pages dans les résultats de recherche, relève d’un sujet distinct qui n’a pas été abordé dans le cadre de cette intégration.
En résumé
Brancher un contenu généré par IA sur un schéma WPGraphQL consommé par un front statique ne pose pas de difficulté technique particulière. La vraie question porte sur la gouvernance du contenu : un statut de relecture explicite, bloquant l’exposition tant qu’aucun humain n’a validé le texte, reste la seule garantie sérieuse contre la publication silencieuse d’une erreur générée automatiquement.