journal-illustrator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Journal Illustrator - Illustration automatique des aventures

日志插画生成器 - 冒险内容自动插画生成

Skill pour générer des illustrations basées sur le journal d'une aventure BFRPG. Analyse les entrées du journal et génère des images appropriées pour chaque type d'événement.
一款基于BFRPG冒险日志生成插画的Skill。它会分析日志条目,并为每种事件类型生成合适的图像。

Prérequis

前置条件

Variables d'environnement :
bash
undefined
环境变量 :
bash
undefined

Requis pour la génération d'images

图像生成所需

export FAL_KEY="votre_clé_api_fal"
export FAL_KEY="votre_clé_api_fal"

Optionnel pour l'enrichissement AI des descriptions

AI增强描述可选配置

export ANTHROPIC_API_KEY="votre_clé_anthropic"
undefined
export ANTHROPIC_API_KEY="votre_clé_anthropic"
undefined

Utilisation des Descriptions Enrichies (Recommandé)

使用增强描述(推荐)

Pour de meilleurs résultats, enrichissez d'abord votre journal avec des descriptions détaillées avant de générer les images :
bash
undefined
为获得最佳效果,请在生成图像前先为日志添加详细的增强描述
bash
undefined

1. Enrichir le journal avec des descriptions IA (30-50 mots)

1. 用AI增强日志描述(30-50词)

./sw-adventure enrich "la-crypte-des-ombres"
./sw-adventure enrich "la-crypte-des-ombres"

2. Générer les images (utilise automatiquement les descriptions enrichies)

2. 生成图像(自动使用增强后的描述)

./sw-image journal "la-crypte-des-ombres"

**Avantages de l'enrichissement** :
- ✅ Descriptions détaillées (30-50 mots vs 5-10 mots)
- ✅ Contexte riche : personnages, lieux, atmosphère
- ✅ Images plus fidèles aux événements du jeu
- ✅ Automatique : utilise l'historique récent et la composition du groupe

**Sans enrichissement**, le système utilise le champ `content` (court, générique).
./sw-image journal "la-crypte-des-ombres"

**增强描述的优势** :
- ✅ 详细的描述内容(30-50词 vs 5-10词)
- ✅ 丰富的上下文:人物、场景、氛围
- ✅ 图像与游戏事件更贴合
- ✅ 自动化:使用近期历史记录和团队构成

**不使用增强描述**时,系统会使用`content`字段(简短、通用)。

Utilisation Rapide

快速使用

bash
undefined
bash
undefined

Compiler si nécessaire

如有需要先编译

go build -o sw-image ./cmd/image
go build -o sw-image ./cmd/image

Voir les prompts qui seraient générés (sans générer d'images)

查看将生成的提示词(不实际生成图像)

./sw-image journal "la-crypte-des-ombres" --dry-run
./sw-image journal "la-crypte-des-ombres" --dry-run

Générer toutes les illustrations

生成所有插画

./sw-image journal "la-crypte-des-ombres"
./sw-image journal "la-crypte-des-ombres"

Reprendre depuis un ID spécifique (utile pour éviter les régénérations)

从指定ID开始生成(避免重复生成)

./sw-image journal "la-crypte-des-ombres" --start-id=60
./sw-image journal "la-crypte-des-ombres" --start-id=60

Limiter le nombre d'images

限制生成图像数量

./sw-image journal "la-crypte-des-ombres" --max=5
./sw-image journal "la-crypte-des-ombres" --max=5

Filtrer par type d'événement

按事件类型过滤

./sw-image journal "la-crypte-des-ombres" --types=combat,discovery
undefined
./sw-image journal "la-crypte-des-ombres" --types=combat,discovery
undefined

Types d'Événements Illustrables

可生成插画的事件类型

TypeDescriptionStyleTaille
combat
Scènes de combat et bataillesEpiclandscape_16_9
exploration
Exploration de lieuxPaintedlandscape_16_9
discovery
Découvertes et révélationsDark Fantasylandscape_4_3
loot
Trésors trouvésPaintedsquare_hd
session
Résumés de fin de sessionEpiclandscape_16_9
类型描述风格尺寸
combat
战斗场景与战役Epiclandscape_16_9
exploration
场景探索Paintedlandscape_16_9
discovery
发现与揭秘Dark Fantasylandscape_4_3
loot
发现的宝藏Paintedsquare_hd
session
会话总结Epiclandscape_16_9

Options

选项

bash
--types=<types>     # Types à illustrer (combat,exploration,discovery,loot,session)
--start-id=<n>      # ID de départ pour reprendre depuis une entrée spécifique (optionnel)
--max=<n>           # Nombre maximum d'images à générer
--parallel=<n>      # Niveau de parallélisme (1-8, défaut: 4)
--model=<model>     # Modèle fal.ai (schnell, banana, pulid) défaut: schnell
--consistency       # Utiliser la cohérence de personnage (défaut: true avec pulid)
--dry-run           # Afficher les prompts sans générer d'images
bash
--types=<types>     # 要生成插画的类型(combat,exploration,discovery,loot,session)
--start-id=<n>      # 从指定条目ID开始生成(可选)
--max=<n>           # 最大生成图像数量
--parallel=<n>      # 并行生成级别(1-8,默认:4)
--model=<model>     # fal.ai模型(schnell, banana, pulid)默认:schnell
--consistency       # 使用人物一致性(默认:与pulid模型配合启用)
--dry-run           # 显示提示词但不生成图像

Modèles Disponibles

可用模型

ModèleVitesseCoût/imageCohérence de personnage
schnell
~3s~$0.003Non
banana
~5s~$0.039Non
pulid
~4s~$0.003-0.04Oui (requiert images de référence)
模型速度单图成本人物一致性
schnell
~3秒~$0.003
banana
~5秒~$0.039
pulid
~4秒~$0.003-0.04是(需要参考图像)

Exemples d'Utilisation

使用示例

Prévisualiser les illustrations

预览插画提示词

bash
./sw-image journal "la-crypte-des-ombres" --dry-run
Affiche tous les prompts qui seraient utilisés, avec le style et la taille de chaque image.
bash
./sw-image journal "la-crypte-des-ombres" --dry-run
显示所有将使用的提示词,以及每张图像的风格和尺寸。

Illustrer uniquement les combats

仅生成战斗场景插画

bash
./sw-image journal "la-crypte-des-ombres" --types=combat
bash
./sw-image journal "la-crypte-des-ombres" --types=combat

Générer les 10 premières illustrations

生成前10张插画

bash
./sw-image journal "la-crypte-des-ombres" --max=10
bash
./sw-image journal "la-crypte-des-ombres" --max=10

Génération plus rapide (8 images en parallèle)

更快生成(8张图像并行)

bash
./sw-image journal "la-crypte-des-ombres" --parallel=8
bash
./sw-image journal "la-crypte-des-ombres" --parallel=8

Reprendre depuis un ID spécifique

从指定ID继续生成

bash
undefined
bash
undefined

Première génération jusqu'à l'ID 59

首次生成到ID 59

./sw-image journal "la-crypte-des-ombres" --max=15
./sw-image journal "la-crypte-des-ombres" --max=15

Reprendre depuis l'ID 60 pour éviter les régénérations

从ID 60开始继续,避免重复生成

./sw-image journal "la-crypte-des-ombres" --start-id=60

Utile après une nouvelle session pour illustrer uniquement les nouvelles entrées du journal.
./sw-image journal "la-crypte-des-ombres" --start-id=60

适用于新会话后,仅为新增日志条目生成插画。

Sortie

输出

Les images sont sauvegardées dans le répertoire de l'aventure :
data/adventures/la-crypte-des-ombres/images/
├── image_1703001234567890123.png  # Combat contre les squelettes
├── image_1703001234567890124.png  # Exploration du mausolée
├── image_1703001234567890125.png  # Découverte du parchemin
└── ...
图像将保存到冒险目录下:
data/adventures/la-crypte-des-ombres/images/
├── image_1703001234567890123.png  # 与骷髅战斗
├── image_1703001234567890124.png  # 探索陵墓
├── image_1703001234567890125.png  # 发现卷轴
└── ...

Comparaison : Avec vs Sans Enrichissement

对比:使用增强描述 vs 不使用

Exemple : Entrée de type "combat"

示例:“战斗”类型条目

Sans enrichissement (champ
content
)
:
Content: "Combat contre 3 gobelins"

Prompt généré:
"Epic fantasy battle scene: Combat contre 3 gobelins. Dynamic action, dramatic
lighting, cinematic fantasy art, heroic pose"
Avec enrichissement (champ
description
)
:
Description EN: "Aldric and Lyra battle three goblins in a torch-lit stone
corridor, steel clashing against crude blades as shadows dance on moss-covered
walls"

Prompt généré:
"Epic fantasy battle scene: Aldric and Lyra battle three goblins in a torch-lit
stone corridor, steel clashing against crude blades as shadows dance on moss-
covered walls. Dynamic action, dramatic lighting, cinematic fantasy art,
heroic pose"
Résultat : L'image enrichie montrera les personnages nommés (Aldric, Lyra), l'environnement spécifique (couloir de pierre, torches, mousse), et l'atmosphère exacte du combat !
不使用增强描述(
content
字段)
:
Content: "与3个哥布林战斗"

生成的提示词:
"Epic fantasy battle scene: Combat contre 3 gobelins. Dynamic action, dramatic
lighting, cinematic fantasy art, heroic pose"
使用增强描述(
description
字段)
:
英文描述: "Aldric and Lyra battle three goblins in a torch-lit stone
corridor, steel clashing against crude blades as shadows dance on moss-covered
walls"

生成的提示词:
"Epic fantasy battle scene: Aldric and Lyra battle three goblins in a torch-lit
stone corridor, steel clashing against crude blades as shadows dance on moss-
covered walls. Dynamic action, dramatic lighting, cinematic fantasy art,
heroic pose"
结果:增强后的图像会显示指定的人物(Aldric、Lyra)、具体环境(石质走廊、火把、苔藓墙),以及战斗的真实氛围!

Cohérence de Personnage (Character Consistency)

人物一致性(Character Consistency)

Le journal illustrator supporte la cohérence des personnages via FLUX PuLID :
日志插画生成器支持通过FLUX PuLID实现人物一致性:

Prérequis

前置条件

  1. Apparences des personnages définies via
    sw-character appearance
  2. Images de référence définies via
    sw-character set-reference
  1. 通过
    sw-character appearance
    定义人物外观
  2. 通过
    sw-character set-reference
    设置参考图像

Utilisation

使用方法

bash
undefined
bash
undefined

Configuration de l'apparence d'un personnage

配置人物外观

./sw-character appearance "Aldric"
--age=34
--build=muscular
--armor="plate armor"
--weapon=longsword
./sw-character appearance "Aldric"
--age=34
--build=muscular
--armor="plate armor"
--weapon=longsword

Définir l'image de référence (portrait frontal recommandé)

设置参考图像(推荐正面肖像)

./sw-character set-reference "Aldric" path/to/aldric_portrait.png
./sw-character set-reference "Aldric" path/to/aldric_portrait.png

Génération standard (sans cohérence)

标准生成(无一致性)

./sw-image journal "adventure" --model=schnell
./sw-image journal "adventure" --model=schnell

Avec cohérence de personnage (requiert images de référence)

启用人物一致性(需要参考图像)

./sw-image journal "adventure" --model=pulid --consistency
undefined
./sw-image journal "adventure" --model=pulid --consistency
undefined

Comment Ça Marche

工作原理

  1. Charge les personnages du groupe d'aventure
  2. Identifie le personnage principal par entrée du journal (mention du nom ou défaut au leader)
  3. Utilise l'image de référence du personnage avec FLUX PuLID
  4. Injecte des descriptions courtes de personnages au lieu de répéter le texte complet
  1. 加载冒险团队的人物信息
  2. 识别每条日志条目中的主要人物(提及姓名或默认团队领袖)
  3. 使用人物参考图像配合FLUX PuLID
  4. 注入简短的人物描述,而非重复完整文本

Exemple de Différence de Prompt

提示词差异示例

Sans cohérence :
Epic fantasy battle scene: Aldric the human fighter (34 years old, muscular build,
black hair, bearded, wearing plate armor) and Lyra the elf magic-user (young,
slender, long silver hair) battle three goblins...
Avec cohérence :
Epic fantasy battle scene featuring Aldric (human fighter, plate armor, longsword),
Lyra (elf magic-user, staff): The heroes battle three goblins in a torch-lit corridor...
L'image de référence garantit que le visage d'Aldric correspond à travers toutes les images.
无一致性 :
Epic fantasy battle scene: Aldric the human fighter (34 years old, muscular build,
black hair, bearded, wearing plate armor) and Lyra the elf magic-user (young,
slender, long silver hair) battle three goblins...
有人物一致性 :
Epic fantasy battle scene featuring Aldric (human fighter, plate armor, longsword),
Lyra (elf magic-user, staff): The heroes battle three goblins in a torch-lit corridor...
参考图像确保Aldric的面容在所有图像中保持一致。

Avantages

提示词适配

  • ✅ Visages cohérents des personnages à travers toutes les images du journal
  • ✅ Réduction des prompts (pas besoin de répéter les descriptions complètes)
  • ✅ Coût similaire à schnell (~$0.003-0.04/image)
  • ✅ Fallback automatique si l'image de référence est manquante
生成器会根据事件类型自动调整提示词:

Adaptation des Prompts

战斗

Le générateur adapte automatiquement les prompts selon le type d'événement :
  • 前缀:"Epic fantasy battle scene"
  • 风格:Epic(电影感、戏剧化光影、英雄姿态)
  • 附加内容:"dynamic action, dramatic lighting"

Combat

探索

  • Préfixe : "Epic fantasy battle scene"
  • Style : Epic (cinematic, dramatic lighting, heroic pose)
  • Ajouts : "dynamic action, dramatic lighting"
  • 前缀:"Fantasy adventurers exploring"
  • 风格:Painted(油画风格、丰富色彩)
  • 附加内容:"atmospheric, mysterious"

Exploration

发现

  • Préfixe : "Fantasy adventurers exploring"
  • Style : Painted (oil painting, rich colors)
  • Ajouts : "atmospheric, mysterious"
  • 前缀:"Moment of discovery in a dungeon"
  • 风格:Dark Fantasy(阴郁光影、阴影)
  • 附加内容:"revealing light, magical glow"

Discovery

宝藏

  • Préfixe : "Moment of discovery in a dungeon"
  • Style : Dark Fantasy (moody lighting, shadows)
  • Ajouts : "revealing light, magical glow"
  • 前缀:"Fantasy treasure"
  • 风格:Painted
  • 附加内容:"glittering gold, magical items"

Loot

会话(结束)

  • Préfixe : "Fantasy treasure"
  • Style : Painted
  • Ajouts : "glittering gold, magical items"
  • 自动检测胜利/失败
  • 相应调整氛围
  • 胜利:"triumphant heroes, celebration"
  • 失败:"somber scene, aftermath of battle"

Session (fin)

成本

  • Détecte automatiquement victoire/défaite
  • Ajuste l'ambiance en conséquence
  • Victoire : "triumphant heroes, celebration"
  • Défaite : "somber scene, aftermath of battle"
使用fal.ai的FLUX.1 [schnell]模型:
  • 单图约$0.003
  • 22条日志条目 = ~$0.07
  • 每美元约可生成300张图像

Coûts

性能

Avec FLUX.1 [schnell] via fal.ai :
  • ~$0.003 par image
  • 22 entrées de journal = ~$0.07
  • ~300 images par dollar
借助并行生成技术:
  • 串行生成:22张图像 × 3秒 = ~66秒
  • 4并行:22张图像 / 4 × 3秒 = ~17秒
  • 8并行:22张图像 / 8 × 3秒 = ~9秒

Performance

推荐工作流

选项A:使用AI增强描述(推荐)

Grâce à la génération parallèle :
  • Séquentiel : 22 images × 3 sec = ~66 secondes
  • Parallèle (4) : 22 images / 4 × 3 sec = ~17 secondes
  • Parallèle (8) : 22 images / 8 × 3 sec = ~9 secondes
  1. 增强日志:生成详细描述
    bash
    ./sw-adventure enrich "mon-aventure" --dry-run  # 预览
    ./sw-adventure enrich "mon-aventure"             # 执行增强
  2. 先执行Dry-run:检查增强后的提示词
    bash
    ./sw-image journal "mon-aventure" --dry-run
  3. 有限测试:生成少量图像验证效果
    bash
    ./sw-image journal "mon-aventure" --max=3
  4. 完整生成:若满意则生成全部图像
    bash
    ./sw-image journal "mon-aventure"

Workflow Recommandé

选项B:不使用增强描述(快速,但精度较低)

Option A : Avec enrichissement AI (recommandé)

  1. Enrichir le journal : Générer des descriptions détaillées
    bash
    ./sw-adventure enrich "mon-aventure" --dry-run  # Prévisualiser
    ./sw-adventure enrich "mon-aventure"             # Enrichir
  2. Dry-run d'abord : Vérifier les prompts enrichis
    bash
    ./sw-image journal "mon-aventure" --dry-run
  3. Test limité : Générer quelques images pour valider
    bash
    ./sw-image journal "mon-aventure" --max=3
  4. Génération complète : Si satisfait, générer tout
    bash
    ./sw-image journal "mon-aventure"
  1. 先执行Dry-run:检查提示词
    bash
    ./sw-image journal "mon-aventure" --dry-run
  2. 完整生成:使用
    content
    字段(简短内容)
    bash
    ./sw-image journal "mon-aventure"

Option B : Sans enrichissement (rapide, mais moins précis)

与Adventure Manager集成

  1. Dry-run d'abord : Vérifier les prompts
    bash
    ./sw-image journal "mon-aventure" --dry-run
  2. Génération complète : Utilise le champ
    content
    (court)
    bash
    ./sw-image journal "mon-aventure"
游戏会话结束后,使用该Skill创建可视化总结:
bash
undefined

Intégration avec Adventure Manager

结束会话

Après une session de jeu, utilisez cette skill pour créer un résumé visuel :
bash
undefined
./sw-adventure end-session "Mon Aventure" "Victoire contre le boss !"

Terminer la session

为日志生成插画

./sw-adventure end-session "Mon Aventure" "Victoire contre le boss !"
./sw-image journal "mon-aventure" --types=combat,discovery
undefined

Illustrer le journal

使用方

./sw-image journal "mon-aventure" --types=combat,discovery
undefined
该Skill被以下Agent使用:
Agent用途
dungeon-master
自动为冒险日志生成插画
类型 : 独立Skill,可通过
/journal-illustrator
直接调用
依赖 : 使用
adventure-manager
(读取日志)和
image-generator
(生成图像)

Utilisé par

Ce skill est utilisé par les agents suivants :
AgentUsage
dungeon-master
Illustration automatique des journaux d'aventure
Type : Skill autonome, peut être invoqué directement via
/journal-illustrator
Dépendances : Utilise
adventure-manager
(lecture du journal) et
image-generator
(génération d'images)