# Un plugin de légendes automatiques par IA pour la médiathèque WordPress

> Recette d'une extension qui propose légende et texte alternatif à chaque import dans la médiathèque, avec validation manuelle avant publication.

- Auteur : Clément Hadrot
- Publié le : 2023-04-02
- Mis à jour le : 2023-04-02
- Catégorie : IA &amp; MCP
- URL : https://wpmoderne.dev.wordpress-developpement.fr/ia-mcp/plugin-legendes-automatiques-ia-mediatheque-wordpress/

## L’essentiel

- Proposition automatique dès l'import, jamais de publication directe
- Un appel API de vision par image importée
- La validation manuelle reste une étape obligatoire

Un client gérant un site immobilier importe entre 30 et 50 photos par bien mis en vente, sans jamais renseigner le texte alternatif requis pour l'accessibilité. Plutôt que de former son équipe à une tâche perçue comme fastidieuse, nous avons construit une extension qui propose automatiquement une légende et un texte alternatif dès l'import, à valider en un clic.

Le principe reste volontairement simple : aucune publication directe du texte généré, un humain valide ou corrige systématiquement avant que le champ ne soit réellement enregistré sur l'image.

## Étape 1 : intercepter l'import dans la médiathèque

Le hook `add_attachment` se déclenche dès qu'un fichier est ajouté à la médiathèque, qu'il s'agisse d'un import direct ou d'un ajout via l'éditeur de contenu. On y récupère le chemin du fichier pour le transmettre à l'API de vision.

```
add_action( 'add_attachment', function ( $attachment_id ) {
    if ( ! wp_attachment_is_image( $attachment_id ) ) {
        return;
    }
    $file_url = wp_get_attachment_url( $attachment_id );
    // planifier l'appel API en tâche asynchrone
    wp_schedule_single_event( time(), 'generer_legende_ia', array( $attachment_id, $file_url ) );
} );
```

L'appel est délibérément planifié en tâche asynchrone plutôt qu'exécuté en direct : l'import d'une image ne doit jamais attendre la réponse d'une API externe, sous peine de ralentir l'expérience de l'utilisateur qui vient d'ajouter son fichier.

## Étape 2 : appeler l'API de vision

La tâche planifiée envoie l'URL de l'image à l'API GPT-4 avec capacités de vision, avec un prompt demandant deux sorties distinctes, une légende descriptive courte et un texte alternatif factuel, sans interprétation ni ton commercial.

```
add_action( 'generer_legende_ia', function ( $attachment_id, $file_url ) {
    $response = wp_remote_post( 'https://api.openai.com/v1/chat/completions', array(
        'headers' => array(
            'Authorization' => 'Bearer ' . get_option( 'mon_plugin_openai_key' ),
            'Content-Type'  => 'application/json',
        ),
        'body' => wp_json_encode( array(
            'model'    => 'gpt-4-vision-preview',
            'messages' => array( array(
                'role'    => 'user',
                'content' => array(
                    array( 'type' => 'text', 'text' => 'Décris factuellement cette photo de bien immobilier en une légende courte et un texte alternatif accessible.' ),
                    array( 'type' => 'image_url', 'image_url' => array( 'url' => $file_url ) ),
                ),
            ) ),
        ) ),
        'timeout' => 30,
    ) );
    // stocker la proposition en attente de validation, pas encore dans les champs finaux
    update_post_meta( $attachment_id, '_legende_ia_proposee', wp_remote_retrieve_body( $response ) );
}, 10, 2 );
```

> L'essentiel à retenir : Proposition automatique dès l'import, jamais de publication directe ; Un appel API de vision par image importée ; La validation manuelle reste une étape obligatoire

## Étape 3 : la validation manuelle dans l'écran médiathèque

Plutôt que d'écrire directement dans les champs légende et texte alternatif de l'image, l'extension stocke la proposition dans une méta séparée et affiche, sur l'écran de détail de l'image, un encart distinctif avec la suggestion et deux boutons, valider ou modifier. Ce n'est qu'au clic sur « valider » que le texte est réellement copié dans `wp_update_post()` pour la légende et dans le champ `_wp_attachment_image_alt` pour le texte alternatif.

- Aucune image ne se retrouve avec un texte alternatif généré sans validation
- L'équipe garde la main sur la terminologie propre au secteur immobilier
- Les propositions non validées restent visibles pour traitement ultérieur

## Ce que la validation manuelle a corrigé

Sur les 200 premières images traitées, l'équipe a modifié la proposition de l'IA dans 18 % des cas, principalement pour préciser un type de bien (« maison de ville » plutôt que « maison »), corriger une orientation de pièce mal identifiée, ou retirer une mention de prix que le modèle avait cru lire sur une affiche visible dans la photo.

> Une légende générée par IA est un brouillon utile, jamais un texte publiable sans un regard qui connaît le métier.

## En résumé

Automatiser la proposition de légendes et de textes alternatifs fait gagner un temps réel sur un travail répétitif et souvent négligé, à condition de ne jamais court-circuiter la validation humaine. L'architecture en trois étapes, import asynchrone, appel API de vision, validation explicite avant écriture définitive, garantit qu'aucun texte halluciné ne se retrouve publié sans contrôle sur un site professionnel.
