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)
- Ouvrir la configuration du module AI.
- 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.
- 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)
- Récupérer la valeur de field_article_prompt.
- Appel IA (OpenAI via AI) avec le prompt unique (voir section “Prompt unique” plus bas) et demander une réponse JSON.
- Stocker la réponse brute dans field_ai_json (optionnel mais très utile).
- 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.
- 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)
- À partir du JSON, récupérer :
- un image_prompt (description de l’image à générer),
- un image_filename (nom de fichier parlant).
- Appeler le modèle image via AI/OpenAI avec image_prompt.
- 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).
- 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).
- Se connecter ou s'inscrire pour publier un commentaire