Trente-deux commentaires en attente de modération un lundi matin, dont la moitié relève d’une évidence : promotion déguisée, propos hors sujet, spam manifeste. Le temps passé à trier ce lot avant d’arriver aux commentaires qui méritent réellement une lecture attentive a motivé la mise en place d’une première passe automatisée, confiée à un modèle de langage via un webhook.
Le principe retenu volontairement simple : le modèle ne décide jamais seul de la publication d’un commentaire, il propose un score qui aide le modérateur à prioriser son temps de lecture.
Pourquoi un webhook plutôt qu’un appel synchrone
Un premier essai, avec un appel synchrone déclenché directement au moment de la soumission du commentaire via comment_post, ralentissait la confirmation affichée au visiteur : le temps de réponse du modèle de langage, parfois de plusieurs secondes, s’ajoutait au temps de traitement normal du formulaire.
L’architecture retenue sépare les deux étapes. Le commentaire est enregistré normalement, avec le statut 0 (en attente) s’il ne correspond pas déjà aux critères d’approbation automatique de WordPress. Un service externe reçoit ensuite le contenu via un webhook sortant, interroge le modèle de langage, puis renvoie sa réponse par un second webhook entrant, traité par une route REST dédiée.
Enregistrer la demande d’analyse

add_action( 'comment_post', function ( $comment_id, $approved ) {
if ( 1 === $approved ) {
return;
}
$commentaire = get_comment( $comment_id );
wp_remote_post( 'https://service-moderation.exemple.test/analyser', array(
'timeout' => 3,
'blocking' => false,
'body' => wp_json_encode( array(
'comment_id' => $comment_id,
'contenu' => $commentaire->comment_content,
'callback' => rest_url( 'moderation-ia/v1/resultat' ),
) ),
) );
}, 10, 2 );
Le paramètre blocking à false évite d’attendre la réponse du service externe : la requête part, et le traitement WordPress continue immédiatement sans dépendre de sa durée.
Recevoir le résultat par une route REST
Le service externe rappelle WordPress une fois l’analyse terminée, sur une route enregistrée via register_rest_route :
add_action( 'rest_api_init', function () {
register_rest_route( 'moderation-ia/v1', '/resultat', array(
'methods' => 'POST',
'callback' => 'traiter_resultat_moderation',
'permission_callback' => 'verifier_signature_webhook',
) );
} );
function traiter_resultat_moderation( WP_REST_Request $request ) {
$comment_id = (int) $request->get_param( 'comment_id' );
$score = (float) $request->get_param( 'score_risque' );
update_comment_meta( $comment_id, '_score_risque_ia', $score );
if ( $score < 0.2 ) {
wp_set_comment_status( $comment_id, 'approve' );
}
return new WP_REST_Response( array( 'traite' => true ), 200 );
}
Vérifier la provenance du webhook entrant
Une route REST ouverte qui modifie le statut d’un commentaire est une cible évidente pour un abus. La fonction verifier_signature_webhook compare une signature transmise dans l’en-tête de la requête à une valeur calculée à partir d’un secret partagé, avant d’accepter tout traitement.
Ce que révèle le score de risque
Après plusieurs semaines d’utilisation, le score de risque s’est révélé fiable sur les cas évidents mais peu discriminant sur les commentaires ambigus, ceux qui mélangent une critique légitime et un ton agressif. Le seuil d’approbation automatique a volontairement été fixé bas, à 0,2 sur une échelle de 0 à 1, pour ne laisser passer sans relecture que les cas les plus manifestement sans risque.
- Les commentaires ambigus restent systématiquement en attente humaine
- Le score s’affiche dans la liste de modération comme une simple indication
- Aucun commentaire n’est jamais rejeté automatiquement, seulement approuvé ou laissé en attente
Automatiser le rejet d’un commentaire fait courir un risque disproportionné par rapport au temps gagné : mieux vaut n’automatiser que l’approbation des cas les plus sûrs.
En résumé
Le découplage par webhook permet d’introduire une analyse par modèle de langage sans dégrader le temps de réponse perçu par le visiteur. La prudence sur les décisions automatisées, limitées à l’approbation des cas les moins ambigus, s’est révélée le choix le plus solide sur la durée.