novel-art
Génère une bible artistique pour les mini-séries produites par IA : décors + accessoires narratifs. Principe fondamental : il s'agit de génération IA, pas de tournage réel – pas de repérage, de construction de décors, d'achats. Les environnements et les accessoires sont des actifs qui devront être générés des dizaines de fois tout en restant identiques. Toutes les livrables sont donc axées sur la cohérence :
| Livrable | Problème résolu |
|---|---|
| Points d'ancrage de cohérence (3–5 par décor) | Le public reconnaît le décor, le QC vérifie que les plans générés ne dérivent pas |
| Variantes d'éclairage | L'IA change de période d'éclairage en régénérant, pas en ré-éclairant. Chaque état donne un prompt complet |
| Prompts de plan vide | L'environnement et les personnages sont deux couches d'actifs. Si une référence contient un personnage, la cohérence est ruinée |
Mécanisme de variante (variantOf) | Générer un nouveau décor coûte moins cher, mais une variante réutilise les actifs du décor parent pour plus de cohérence |
| Variantes d'état d'accessoire | Une valise ouverte a une image de référence différente d'une valise fermée – les accessoires ont un arc, pas les décors |
| Référence d'échelle des accessoires | L'IA dessine souvent les accessoires tenus à la main à la taille de meubles. Le prompt doit inclure une phrase d'échelle |
| Accessoire sur fond blanc sans mains | L'accessoire doit pouvoir être incrusté dans n'importe quel plan – les mains qui le tiennent sont la contamination la plus fréquente |
{baseDir} = répertoire de ce fichier. Le script {baseDir}/scripts/novel-art.mjs est zéro dépendance, exécutable directement avec node.
Limites (ce qu'on ne fait pas) : pas de storyboard, pas de scénario, pas de gestion des personnages (c'est le travail de novel-characters), pas de plan d'ensemble (novel-outline). Les accessoires ne concernent que les accessoires narratifs (ceux qui ont un plan rapproché, apparaissent dans plusieurs épisodes, portent l'histoire – en général 3 à 8 objets). Les accessoires de décor (ameublement) sont traités dans les points d'ancrage du décor ; les accessoires jetables (tenus à la main dans un seul plan) sont résolus dans le prompt du plan, ils ne deviennent pas des actifs séparés.
Étape 0 — Déterminer l'entrée
Trois types d'entrée, par ordre de priorité :
- outline.json (produit par novel-outline) – optimal : liste des décors, épisodes d'apparition, points forts narratifs, solutions de réutilisation déjà prêtes
- Texte original du roman – liste des décors à déduire (priorité aux décors principaux, en suivant la limite de
novel-outline: ne pas en abuser) - Liste manuscrite des décors fournie par l'utilisateur
Si un cast.json (produit par novel-characters) est disponible, l'inclure – il servira à vérifier que les prompts ne contiennent pas de noms de personnages.
Étape 1 — Générer le squelette (uniquement si outline.json existe)
node {baseDir}/scripts/novel-art.mjs seed <outline.json> > <workdir>/art.json
Transfert déterministe : id du décor, nom, indicateur de décor principal, épisodes d'apparition, points forts narratifs. Les décors avec solution de réutilisation recevront un seedNote suggérant de les traiter comme des variantes. Ces faits ne doivent pas être redécouverts par le modèle.
Sans outline.json, construire la liste selon references/schema.md.
Étape 2 — Remplir les détails décor par décor + extraire les accessoires narratifs
Chaque décor est traité indépendamment (en parallèle si possible). Chaque tâche reçoit :
{baseDir}/references/scene-pass.mdet{baseDir}/references/schema.md(les lire et les suivre)- Le squelette de ce décor + toutes les informations sur cet espace issues du roman/outline
- Les noms des autres décors dans le même lot (l'ambiance spatiale doit être différenciée, ne pas tous les décrire comme « usé »)
Les trois exigences les plus lourdes sont dans scene-pass.md : les points d'ancrage doivent être dessinables, vérifiables et comparables (« toit de chaume rapiécé » est un point d'ancrage, « atmosphère vétuste » est un adjectif) ; les états d'éclairage doivent être déduits des épisodes (pas une liste exhaustive que personne n'utilisera) ; si une variante est possible, ne pas créer un nouveau décor.
Les accessoires narratifs sont prioritaires à partir de l'outline : depuis la version 1.1.0, outline.json contient des props. seed transfère la table des accessoires (ce qu'ils portent, quels points forts ils soutiennent, dans quels épisodes ils apparaissent) – cette étape ne fait que remplir les champs de conception (échelle, points d'ancrage, variantes d'état, prompt fond blanc). Si l'outline n'a pas de props, les extraire du texte original – c'est alors le travail du modèle : ne retenir que les accessoires avec plan rapproché, apparaissant dans plusieurs épisodes, porteurs de l'histoire, généralement 3 à 8, du même ordre de grandeur que le nombre de personnages principaux. Remplir chacun selon references/prop-pass.md : fonction dramatique, points d'ancrage, variantes d'état, échelle, prompt fond blanc sans mains. Une valise qui suit un personnage doit être ici – la mettre dans les points d'ancrage du décor ou dans la fiche du personnage serait une erreur.
Étape 3 — Validation ⛔ Ne pas sauter
node {baseDir}/scripts/novel-art.mjs validate <art.json> --cast <cast.json>
Les 10 contrôles qualité sont tous dans le code. Pour les décors + communs (6 contrôles) : points d'ancrage 3–5, états d'éclairage ≥1, pas de personnages, prompts entièrement en anglais, pas de noms de personnages (vérifié si --cast est fourni), références de variantes complètes. Pour les accessoires (4 contrôles) : états ≥1, phrase d'échelle incluse dans le prompt, mot négatif interdit les mains, fond blanc pur pour l'image de référence.
Corriger chaque violation une par une, relancer jusqu'à réussite.
Étape 4 — Sortie et rapport
cd <répertoire de sortie>
node {baseDir}/scripts/novel-art.mjs render <nom>-art.json --md > <nom>-art.md
node {baseDir}/scripts/novel-art.mjs render <nom>-art.json --html > art-report.html
L'interface du rapport est en chinois par défaut. Pour une interface en anglais, ajouter --lang en (ou écrire "lang": "en" en haut de art.json, --lang est prioritaire). Par défaut, render cherche les images dans images/<slug>-sheet.png au même niveau que art.json (décors et accessoires). Si les images sont ailleurs, utiliser --images <répertoire> – ce skill ne produit pas ces fichiers ; une fois que le générateur d'images a produit les planches, relancer render pour les intégrer dans le rapport. Le rapport contient : KPI, liste des décors, fiches de décors, liste des accessoires, fiches d'accessoires (tableau de vérification des points d'ancrage / variantes d'état / paquets de prompts avec bouton de copie), panneau des contrôles qualité, export JSON (télécharge art.json tel quel).
Le résumé en une phrase : nombre de décors (principaux / variantes), nombre d'accessoires, nombre total de points d'ancrage, chemin du rapport ; les contrôles non réussis sont explicitement mentionnés.
Ne pas dire « les images sont générées » – cette étape n'existe plus, on livre des prompts.
Arborescence finale :
<répertoire de sortie>/
├── <nom>-art.json
├── <nom>-art.md
├── art-report.html ← ouvrable en double-cliquant
└── images/ ← ce skill n'écrit pas dans ce répertoire
└── <slug>-sheet.png ← le générateur d'images place ici ; `render` les ramassera
Chaîne des trois compétences
novel-outline → outline.json (quoi : structure et épisodes)
novel-characters → cast.json (qui : actifs des personnages)
novel-art → art.json (où + dans les mains : actifs artistiques)
seed utilise la partie décors et accessoires d'outline.json (si l'outline n'a pas de props, les accessoires sont laissés vides ; le modèle les extrait du texte original). --cast utilise cast.json. Chacun des trois JSON possède son propre rapport avec bouton d'export, et les modifications peuvent être réinjectées dans leur propre render/validate.
Limites
- L'interface du rapport est bilingue (français par défaut si
--langn'est pas précisé ; le champlangdeart.jsonpeut aussi le définir) ; les prompts de génération d'images sont toujours en anglais - Ce skill ne génère pas d'images.
image.sheetest une instruction de mise en page pour le générateur en aval, les spécifications sont dansreferences/sheet.md - Aucune limite stricte du nombre de décors – la limite est gérée par la porte des décors principaux de
novel-outline; ici, on gère la qualité de chaque actif - Les accessoires ne concernent que les accessoires narratifs, 3 à 8 de préférence – chaque accessoire supplémentaire ajoute un coût de maintenance de cohérence inter-épisodes
Autotest
node {baseDir}/scripts/selftest.mjs
151 assertions, sans appeler de modèle, sans frais. Les 10 contrôles qualité ont chacun un cas de test de violation. Exécuter ce test après chaque modification du script.
Exemple fourni
{baseDir}/examples/渡口-art.json : configuration complète pour trois décors + deux accessoires narratifs (vieille valise en cuir, encrier usé du bureau de district) de « 渡口 » (Le Bac). Tous les contrôles qualité sont passés (y compris la vérification des noms de personnages avec le cast.json de l'exemple novel-characters). Utilisé comme référence de qualité et comme jeu de test.