Sorry, you need to enable JavaScript to visit this website.

Automatisation de la Création d'Articles sur Drupal 11 (Intégralement généré par IA)

Soumis par dpalicepeio le
generation auto contenu drupal ai

Objectif

Mise en place, sur Drupal 11, d’un flux de création de contenu (type Article) permettant de générer automatiquement :

  • le Content title (titre),
  • le Summary (résumé),
  • le Body (corps de l’article),
  • la Taxonomy (tags/catégories),
  • et idéalement une image générée par le modèle image d’OpenAI, stockée dans les fichiers Drupal et attachée à l’article avec un nom de fichier parlant.

Le principe consiste à ne saisir qu’un unique prompt “Article prompt” et à laisser ECA orchestrer les appels IA (OpenAI via le module AI), puis remplir automatiquement les champs du nœud.


1) Pré-requis et modules

  • Drupal 11 installé.
  • Modules : AI, AI CKEditor, ECA (et dépendances), plus les sous-modules nécessaires (selon distribution) pour :
    • connecteurs/Providers OpenAI dans AI,
    • actions/conditions ECA (ECA Core + ECA Content + ECA Token + ECA UI, selon besoin).
  • Clé API OpenAI disponible.

2) Configuration du provider OpenAI (module AI)

  1. Ouvrir la configuration du module AI.
  2. Ajouter/configurer un Provider OpenAI :
    • Renseigner la clé API.
    • Choisir les modèles :
      • Texte : modèle de génération (selon disponibilité, ex. modèle “chat” récent).
      • Image : modèle image (ex. génération d’image OpenAI).
    • Définir les paramètres par défaut : langue, température, limites de tokens, etc.
  3. Valider que les appels fonctionnent via un test (si disponible dans l’UI) ou via un essai depuis un champ IA/CKEditor.

3) Préparer le type de contenu “Article”

3.1 Champs recommandés

  • Titre (champ title natif).
  • Summary : activer le Résumé du champ Body ou créer un champ dédié (ex. field_summary).
  • Body (champ body natif).
  • Taxonomie : un champ de référence de termes (ex. field_tags).
  • Image : champ image (ex. field_image), stockage public/privé selon besoin.
  • Article prompt : champ texte long (ex. field_article_prompt) qui contiendra l’unique prompt saisi.
  • Champs techniques (optionnels mais utiles) :
    • field_ai_json (texte long) pour stocker la sortie JSON brute.
    • field_image_prompt (texte long) si séparation souhaitée, sinon dérivé automatiquement.

3.2 Vocabulaire et règles de taxonomie

  • Créer un vocabulaire (ex. Tags ou Thématiques).
  • Définir une convention :
    • tags au singulier,
    • sans accents si souhaité,
    • limite de 5 à 10 tags.

4) Configuration d’AI CKEditor (assistance de rédaction)

AI CKEditor peut servir à affiner du texte, mais l’objectif ici est l’automatisation via ECA. Il reste utile pour :

  • réviser ponctuellement le contenu généré,
  • regénérer un paragraphe sélectionné,
  • appliquer une reformulation.

Activer AI CKEditor sur le profil d’éditeur utilisé pour le Body, si nécessaire.


5) Stratégie de génération : une seule saisie, une sortie structurée

Le point clé : obtenir de l’IA une réponse strictement structurée (JSON) contenant tous les éléments nécessaires. Ensuite ECA :

  • lit le prompt saisi,
  • appelle OpenAI via AI,
  • stocke le JSON brut,
  • parse le JSON,
  • remplit Title, Summary, Body, Taxonomy, et lance la génération d’image,
  • crée le fichier image Drupal et l’associe au champ image du nœud.

6) Création du workflow ECA (orchestration)

6.1 Événement de déclenchement

  • Déclencheur recommandé : à l’enregistrement d’un nœud Article (ou à la création) lorsque field_article_prompt est renseigné.
  • Ajouter une condition de garde pour éviter la boucle :
    • ne lancer la génération que si Body est vide (ou si un champ “Généré par IA” est faux).
    • ou si un champ technique “Status IA” est à “À générer”.

6.2 Actions ECA (texte)

  1. Récupérer la valeur de field_article_prompt.
  2. Appel IA (OpenAI via AI) avec le prompt unique (voir section “Prompt unique” plus bas) et demander une réponse JSON.
  3. Stocker la réponse brute dans field_ai_json (optionnel mais très utile).
  4. Extraire les propriétés JSON et affecter :
    • Title → champ title,
    • Summary → résumé (ou field_summary),
    • Body → body (format texte : choisir le format, ex. “Full HTML”),
    • Taxonomy → liste de termes.
  5. Gestion taxonomie :
    • Pour chaque terme proposé : vérifier l’existence dans le vocabulaire.
    • Si absent : créer le terme.
    • Puis renseigner le champ de référence.

6.3 Actions ECA (image)

  1. À partir du JSON, récupérer :
    • un image_prompt (description de l’image à générer),
    • un image_filename (nom de fichier parlant).
  2. Appeler le modèle image via AI/OpenAI avec image_prompt.
  3. Récupérer le binaire (ou l’URL temporaire selon mode de réponse) et créer un fichier géré Drupal :
    • nom : utiliser image_filename + extension,
    • répertoire : ex. public: (ou une arborescence par date).
  4. Attacher le fichier au champ image field_image du nœud (avec alt text si disponible dans le JSON).

Remarque : selon les capacités exactes exposées par les sous-modules AI/ECA installés, l’étape “parse JSON” et la création de fichier peuvent exiger :

  • des actions ECA spécifiques (Token/JSON),
  • un module complémentaire fournissant des actions “Data manipulation”/“JSON decode”,
  • ou, en alternative, l’emploi d’un format de réponse plus simple (délimiteurs) si le JSON strict est difficile à parser.

7) Prompt unique à saisir dans “Article prompt”

Coller le prompt ci-dessous dans le champ Article prompt. Le texte saisi par la suite remplace uniquement la section “SUJET/BRIEF”.

Prompt (unique) :

Générer un article en français à partir du brief ci-dessous. La réponse doit être exclusivement un JSON valide (sans texte avant ou après), encodé en UTF-8, respectant strictement le schéma suivant et rien d’autre.

Contraintes générales :
- Ton : clair, professionnel, pédagogique.
- Éviter le jargon inutile, définir les termes techniques.
- Produire du HTML simple et propre dans body_html (p, h2, h3, ul, ol, li, strong, em, a). Ne pas inclure de balises image, vidéo, audio, iframe, script, style.
- Longueur body_html : 900 à 1400 mots.
- Inclure 4 à 6 sections (h2) et, si utile, des sous-sections (h3).
- Ajouter une mini FAQ (2 à 4 questions) en fin d’article.
- Ajouter 3 à 6 liens internes “fictifs” au format /ressources/... (sans nom de domaine) intégrés naturellement dans le texte.
 

Taxonomie :
- Proposer 6 à 10 tags pertinents (tableau de chaînes).
- Tags courts (1 à 3 mots), sans #, sans phrases.
 

Image :
- Proposer un prompt d’image cohérent avec l’article, adapté à une illustration d’en-tête (format paysage).
- Proposer un nom de fichier explicite en minuscules, sans accents, avec des tirets, se terminant par .png (ex: guide-drupal-11-contenu-ia.png).
- Proposer un texte alternatif (alt) concis (max 120 caractères).
 

Schéma JSON obligatoire :
{ "title": "string", "summary": "string (max 320 caractères)", "body_html": "string (HTML simple)", "taxonomy_tags": ["string", "string"], "image": { "prompt": "string", "filename": "string se terminant par .png", "alt": "string" } }

SUJET/BRIEF :
[Coller ici le sujet, le public cible, l’objectif, les points à couvrir, et les contraintes éventuelles]


8) Résultat attendu dans Drupal

  • Saisie : uniquement le champ Article prompt (le brief inclus).
  • À l’enregistrement :
    • le titre est renseigné,
    • le résumé est renseigné,
    • le body HTML est renseigné,
    • les tags sont créés/assignés,
    • une image est générée, enregistrée dans les fichiers Drupal avec un nom parlant, puis associée au champ image.

9) Recommandations de robustesse

  • Validation JSON : si possible, ajouter une étape ECA de validation (ou condition) avant de remplir les champs.
  • Relance contrôlée : stocker un statut (ex. “Génération réussie/échouée”) pour éviter les appels répétés.
  • Logs : conserver field_ai_json pour debug et traçabilité.
  • Sécurité : limiter l’accès à la génération IA à certains rôles, et surveiller les coûts API.
  • Qualité : prévoir une relecture éditoriale (AI CKEditor peut aider à retoucher localement).