eternityspring/shuohao-skills — novel-art

Génère des bibles artistiques (décors + accessoires narratifs) pour les mini-séries produites par IA : intention du décor, points d'ancrage de cohérence, variantes d'éclairage, prompts de plan vide ; fonction dramatique des accessoires, variantes d'état, références d'échelle, prompts fond blanc sans mains. Produit art.json + Markdown + un rapport de révision monopage (avec export JSON).

Qu'est-ce que shuohao-skills — novel-art ?

**novel-art** est une compétence conçue pour les agents IA spécialisés dans la génération de contenus vidéo (mini-séries, court-métrages). Son rôle est de produire une bible artistique complète – décors et accessoires narratifs – pour garantir la cohérence visuelle entre les épisodes générés par IA. Au cœur de son fonctionnement : chaque décor est décomposé en 3 à 5 points d'ancrage visuels (ex. « toit de chaume rapiécé ») qui servent de référence au modèle de génération, avec des variantes d'éclairage déduites du scénario (et non une liste exhaustive inutile). Les accessoires (3 à 8 objets ayant un arc narratif) sont décrits avec leurs variantes d'état, une notion d'échelle (pour éviter que l'IA ne les dessine trop grands) et un prompt sur fond blanc sans main pour faciliter le détourage et l'intégration dans d'autres plans. Le flux de travail est entièrement scripté, sans dépendance externe ni clé API : un script `novel-art.mjs` en Node.js (zéro dépendance) exécute les étapes de seed (extraction des infos depuis un éventuel `outline.json`), de validation (10 contrôles qualité automatisés, dont l'absence de personnages dans les prompts, la présence de tous les champs obligatoires, les prompts en anglais) et de rendu (Markdown, rapport HTML avec boutons de copie et export JSON). Le skill s'intègre en aval de `novel-outline` et `novel-characters`, et en amont des générateurs d'images – il ne génère aucune image, seulement les prompts. Les cas de test (151 assertions) incluent des exemples complets (ex. `examples/渡口-art.json`) et des tests unitaires qui vérifient chaque règle qualité. La sortie standard comprend un fichier `art.json` (données structurées), un fichier `art.md` (documentation lisible) et un rapport HTML autonome avec toutes les fonctionnalités de visualisation.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eternityspring/shuohao-skills/tree/HEAD/skills/novel-art

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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 :

LivrableProblè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'éclairageL'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 videL'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'accessoireUne 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 accessoiresL'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 mainsL'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é :

  1. 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
  2. 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)
  3. 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.md et {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 --lang n'est pas précisé ; le champ lang de art.json peut 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.sheet est une instruction de mise en page pour le générateur en aval, les spécifications sont dans references/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.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés