Files
skills/story-to-scenes/SKILL.md
T
hmo 04db423416 Initial commit: skills library
- 70 skills with code and documentation
- Add .gitignore (ignore __pycache__, output/, temp/, venv/)
- Clean up test intermediates and caches
2026-04-26 19:27:40 +08:00

449 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: story-to-scenes
description: 长文本拆镜批量生图引擎。将故事、课程、连环画脚本智能拆分场景,批量生成风格统一、角色一致的配图。支持绘本插画和漫画两种创作模式。当用户提到「拆镜生图」「故事配图」「批量场景图」「连环画生成」「绘本生成」「知识漫画」「教育漫画」时使用此技能。
---
# Story To Scenes
长文本拆镜批量生图引擎,用于将故事、教学课程、连环画脚本等长文本智能拆分成场景,并批量生成风格统一、角色一致的配图。
支持两种创作模式:
- **绘本/插画模式**:每个场景独立单图,适合绘本、故事配图、课程插图
- **漫画创作模式**:画风×色调×版面组合系统,适合知识漫画、教育漫画、连环画
## 核心流程
```
输入长文本 → 角色提取 → 生成角色胚子图 → 确认锁定
智能拆镜 → 场景清单 → 确认调整
风格胚子图(第一张场景)→ 确认锁定
场景胚子图(复用场景,可选)→ 确认锁定
批量生成场景图(引用胚子)→ 输出图集
```
## 铁律
1. **单图原则**:每个场景/角色生成独立单图,禁止多格拼接、分镜框、边框组合
2. **先人后景**:必须先生成并锁定角色胚子,再进行场景生图
3. **确认才锁定**:角色胚子、风格胚子必须用户确认后才算锁定
4. **引用生成**:场景中出现已锁定角色时,必须引用其胚子图
5. **提示词记录**:每张图的完整提示词必须记录,方便复用和微调
6. **进度持久化**:生成过程实时保存进度,支持断点续传
## 详细步骤
### Step 1: 项目初始化
收集项目基本信息:
```yaml
project_name: "" # 项目名称(必填)
style_preset: "" # 预设风格或自定义描述
aspect_ratio: "3:4" # 尺寸:3:4 / 16:9 / 1:1
source_text: "" # 原文内容或文件路径
mode: "illustration" # 创作模式:illustration(绘本插画)/ comic(漫画)
```
漫画模式额外参数(当 mode 为 comic 时):
```yaml
art_style: "ligne-claire" # 画风:ligne-claire / manga / realistic / ink-brush / chalk
tone: "neutral" # 色调:neutral / warm / dramatic / romantic / energetic / vintage / action
layout: "standard" # 版面:standard / cinematic / dense / splash / mixed / webtoon
```
创建项目目录:
```
assets/generated/{项目名}/
├── characters/ # 角色胚子图
├── locations/ # 场景胚子图
├── scenes/ # 场景配图
├── characters.md # 角色索引
├── progress.json # 生成进度
└── gallery.md # 完整图集索引
```
### Step 2: 文本解析与角色提取
1. 自动识别文本类型:故事/课程/脚本/连环画
2. 按语义分割场景(非机械按段落切)
3. 提取所有人物/动物/生物,生成角色清单表
输出角色清单表格式:
| 角色名 | 类型 | 外貌特征 | 性格标签 | 出场场景 |
|--------|------|----------|----------|----------|
| 示例 | 人物/动物 | 详细外貌描述 | 性格关键词 | 1,2,3 |
**交互点**:展示清单,让用户补充/修正角色描述,确认后进入下一步。
### Step 3: 生成角色胚子图
为每个角色生成标准立绘:
- **构图要求**:正面或四分之三侧面,干净纯色背景
- **画面要求**:单图,突出角色本体特征,禁止多角度拼接
- **命名规范**`{项目名}_char_{角色名}.png`
- **存储位置**`assets/generated/{项目名}/characters/`
生图提示词结构:
```
[风格关键词], single character portrait of [角色描述],
[姿态], clean solid [背景色] background,
full body shot, character design sheet style,
--no multiple views, turnaround, collage, grid, panels, border
```
**交互点**:逐个展示角色胚子图,用户确认"OK"后锁定,不满意则重新生成。
将确认的角色信息写入 `characters.md`
```markdown
# 角色索引
## {角色名}
- **胚子图**characters/{角色名}.png
- **外貌描述**{详细外貌}
- **出场场景**{场景序号列表}
```
### Step 4: 智能拆镜
根据文本语义划分场景,生成场景清单表:
| 序号 | 场景名称 | 画面描述 | 出场角色 | 镜头类型 | 情绪氛围 |
|------|----------|----------|----------|----------|----------|
| 01 | 场景名 | 具体画面内容 | 角色列表 | 远景/中景/特写 | 情绪关键词 |
**镜头类型说明**
- **远景**:交代环境,角色较小
- **中景**:角色半身或全身,主体突出
- **特写**:面部表情或关键物品细节
**交互点**:展示拆镜表,让用户调整场景划分、镜头选择,确认后进入下一步。
### Step 5: 生成风格胚子图
用第一个场景生成**风格定调图**
1. 根据用户选择的风格预设(或自定义描述)构建提示词
2. 生成第一张场景图
3. 展示给用户确认
**交互点**
- 确认OK → 提取风格关键词,记录到 `progress.json`,全程复用
- 不满意 → 调整风格描述,重新生成
### Step 6: 场景胚子图(可选)
识别文本中**反复出现的重要场景**,如:
- 主角的家
- 重要地标建筑
- 反复出现的场所
为这些场景单独生成环境图:
- **构图要求**:无人物,纯场景环境
- **存储位置**`assets/generated/{项目名}/locations/`
- **命名规范**`{场景名}.png`
**交互点**:展示场景胚子图,确认或跳过。
### Step 7: 批量生成场景图
逐场景生成配图,提供两种角色一致性方案,根据场景复杂度选择。
#### 方案A:图生图串行替换(默认)
适用场景:角色外观需要高度还原、角色数量 ≤ 3 的场景。
##### 单角色场景
直接基于该角色胚子图做图生图:
```bash
python image_to_image.py "characters/角色A.png" "场景描述,保持角色形象..." -o "scenes/scene_xx.png"
```
##### 多角色场景(串行替换规则)
当场景包含多个角色时,必须**串行轮流替换**,逐步锁定每个角色:
```
步骤1:基于角色A胚子图 + 场景描述 → 生成 role1.png(角色A锁定,其他角色可能不一致)
步骤2:基于角色B胚子图 + role1.png → 生成 role2.png(角色A+B锁定)
步骤3:基于角色C胚子图 + role2.png → 生成 role3.png(角色A+B+C锁定)
...依此类推,直到所有角色都替换完成
最终输出:role{n}.png 作为该场景的最终图
```
**执行示例**3角色场景):
```bash
# 第1轮:锁定孙悟空
python image_to_image.py "characters/孙悟空.png" "场景描述,孙悟空xxx,唐僧xxx,猪八戒xxx..." -o "scenes/scene_xx_role1.png"
# 第2轮:基于role1锁定唐僧
python image_to_image.py "characters/唐僧.png" "保持场景和其他角色,替换唐僧形象与参考图一致" --ref "scenes/scene_xx_role1.png" -o "scenes/scene_xx_role2.png"
# 第3轮:基于role2锁定猪八戒
python image_to_image.py "characters/猪八戒.png" "保持场景和其他角色,替换猪八戒形象与参考图一致" --ref "scenes/scene_xx_role2.png" -o "scenes/scene_xx_role3.png"
# 最终重命名
mv "scenes/scene_xx_role3.png" "scenes/scene_xx_场景名.png"
# 清理中间文件
rm "scenes/scene_xx_role1.png" "scenes/scene_xx_role2.png"
```
**角色替换顺序**:按重要性或画面占比从大到小排序
#### 方案B:角色参考表 + --ref 引用
适用场景:角色数量较多(≥ 3)、画风偏漫画/扁平、不需要照片级还原的项目。
核心思路:在提示词中嵌入角色外貌描述关键词,同时用 `--ref` 引用角色胚子图作为视觉锚点,一次性生成完整场景。
```bash
# 直接引用角色胚子图,一次性生成
python text_to_image.py "[风格关键词], [场景描述], [角色A外貌关键词] doing xxx, [角色B外貌关键词] doing xxx, [镜头构图], [情绪氛围]" \
--ref "characters/角色A.png" --ref "characters/角色B.png" \
-o "scenes/scene_xx_场景名.png"
```
**使用要点**
- 角色胚子图必须已锁定,作为 `--ref` 视觉参考
- 提示词中仍需包含角色外貌关键词(发型、服装、配色等),不能只靠 `--ref`
- 一致性由"文字描述 + 视觉参考"双重约束保证
- 若角色还原度不够,回退到方案A串行替换
**两种方案对比**
| 维度 | 方案A:串行替换 | 方案B:参考表引用 |
|------|----------------|------------------|
| 一致性精度 | 高(逐角色锁定) | 中(依赖描述+参考) |
| 生成速度 | 慢(N个角色需N轮) | 快(一次生成) |
| 适合角色数 | 1-3个 | 不限 |
| 适合画风 | 所有 | 漫画/扁平/插画 |
| 适合模式 | 绘本插画 | 漫画创作 |
#### 提示词规范
提示词结构:
```
[风格关键词], [场景描述],
[角色A描述], [角色B描述],
[镜头构图], [情绪氛围],
--no multiple panels, comic layout, grid, collage, split frame, border, manga panels, text, caption, title, subtitle, watermark, signature, letters, words, writing
```
**铁律**
- 禁止输出任何文字、标题、水印、签名
- 排除词必须包含 `text, caption, title, subtitle, watermark, signature, letters, words, writing`
**命名规范**`scene_{序号}_{场景名}.png`
**存储位置**`assets/generated/{项目名}/scenes/`
**进度追踪**
- 每生成一张,更新 `progress.json`
- 失败自动重试(最多3次)
### Step 8: 输出整理
生成完成后,创建图集索引文档 `gallery.md`
```markdown
# {项目名} 场景图集
## 项目信息
- **风格**{风格描述}
- **尺寸**{尺寸}
- **场景数**{总数}
- **生成日期**{日期}
## 角色一览
| 角色 | 胚子图 |
|------|--------|
| {角色名} | ![[characters/{角色名}.png]] |
## 场景图集
### Scene 01{场景名}
![[scenes/scene_01_{场景名}.png]]
> {场景描述}
<details>
<summary>提示词</summary>
{完整提示词}
</details>
```
## 特殊操作命令
| 命令 | 说明 |
|------|------|
| `重新生成 {角色名}` | 重新生成指定角色胚子图 |
| `重新生成 scene_{序号}` | 重新生成指定场景图 |
| `从 scene_{序号} 继续` | 断点续传,从指定场景继续 |
| `更换风格` | 重新选择风格,需重新生成风格胚子 |
| `导出图集` | 生成最终索引文档 |
## 预设风格(绘本/插画模式)
可选择以下预设风格,或提供自定义风格描述:
### 日系治愈绘本
```
soft watercolor illustration, warm pastel colors, gentle lighting,
Studio Ghibli inspired, dreamy atmosphere, delicate linework
```
### 国风水墨淡彩
```
traditional Chinese ink wash painting, subtle watercolor tints,
elegant brushwork, Song dynasty aesthetic, zen atmosphere
```
### 欧美儿童插画
```
vibrant children's book illustration, bold colors, expressive characters,
playful style, Pixar-inspired, warm and inviting
```
### 赛博朋克
```
cyberpunk aesthetic, neon lights, dark atmosphere,
high contrast, futuristic cityscape, Blade Runner inspired
```
### 扁平矢量风
```
flat vector illustration, clean geometric shapes,
modern minimalist, limited color palette, graphic design style
```
### 水彩手绘风
```
traditional watercolor painting, visible brush strokes,
organic textures, artistic imperfections, soft edges
```
---
## 漫画创作模式
`mode: comic` 时激活此模式。通过**画风 × 色调 × 版面**三维组合,灵活定义漫画视觉风格。
### 画风系统(Art Style
5 种画风,决定线条和渲染方式:
| 画风 | 代号 | 说明 | 提示词片段 |
|------|------|------|-----------|
| 欧漫清线 | `ligne-claire` | 均匀线条、平涂色块,欧洲漫画传统(丁丁历险记、Logicomix) | `ligne-claire style, uniform line weight, flat colors, European comic tradition` |
| 日漫风格 | `manga` | 大眼睛、漫画夸张表情、速度线等日漫约定 | `manga style, large expressive eyes, dynamic poses, Japanese comic conventions` |
| 写实数绘 | `realistic` | 数字绘画质感、写实比例、精细光影 | `realistic digital painting, detailed shading, cinematic lighting, sophisticated rendering` |
| 国风水墨 | `ink-brush` | 中国毛笔笔触、水墨晕染效果 | `Chinese ink brush style, ink wash effects, traditional brushwork, xuan paper texture` |
| 粉笔手绘 | `chalk` | 黑板粉笔美学、手绘质感、温暖感 | `chalkboard aesthetic, chalk drawing style, hand-drawn warmth, textured background` |
### 色调系统(Tone
7 种色调,决定画面情绪氛围:
| 色调 | 代号 | 说明 | 提示词片段 |
|------|------|------|-----------|
| 理性中立 | `neutral` | 均衡配色、理性教育感、不偏暖不偏冷 | `balanced neutral palette, clean educational tone, even lighting` |
| 温暖怀旧 | `warm` | 暖色调为主、怀旧温馨、个人叙事感 | `warm golden tones, nostalgic atmosphere, soft amber lighting, comforting mood` |
| 戏剧张力 | `dramatic` | 高对比度、强烈明暗、视觉冲击 | `high contrast, dramatic chiaroscuro, intense shadows, powerful visual impact` |
| 浪漫唯美 | `romantic` | 柔和色调、装饰性元素、梦幻感 | `soft pastel tones, decorative flourishes, dreamy romantic atmosphere` |
| 活力动感 | `energetic` | 明亮鲜艳、动态构图、充满活力 | `bright vivid colors, dynamic composition, energetic mood, high saturation` |
| 复古年代 | `vintage` | 历史质感、做旧效果、年代真实感 | `vintage color grading, aged paper texture, period-authentic palette, sepia undertones` |
| 战斗动作 | `action` | 速度线、冲击特效、战斗视觉 | `speed lines, impact effects, dynamic action poses, motion blur, combat intensity` |
### 版面系统(Layout
6 种版面,决定分镜排布方式:
| 版面 | 代号 | 每页格数 | 适用场景 |
|------|------|----------|----------|
| 标准叙事 | `standard` | 4-6 格 | 对话驱动、日常叙事、平稳推进 |
| 电影宽幅 | `cinematic` | 2-4 格 | 戏剧性时刻、场景建立、氛围渲染 |
| 密集信息 | `dense` | 6-9 格 | 技术讲解、时间线展示、知识密集段 |
| 大跨页 | `splash` | 1-2 大格 | 关键时刻、重大揭示、高潮场景 |
| 混合编排 | `mixed` | 3-7 不等 | 复杂叙事、情绪起伏、节奏变化 |
| 条漫竖排 | `webtoon` | 3-5 竖格 | 教程讲解、移动端阅读、轻量叙事 |
**版面选择建议**
- 知识讲解为主 → `dense``webtoon`
- 故事叙事为主 → `standard``mixed`
- 强调视觉冲击 → `cinematic``splash`
### 预设组合(Preset
3 种常用组合,快速定调:
| 预设名 | 画风 + 色调 | 特殊规则 | 适合题材 |
|--------|------------|----------|----------|
| `ohmsha` | 日漫 + 理性中立 | 用视觉隐喻替代"说教头";通过道具/机关揭示概念;禁止纯对话页 | 技术教程、编程入门、科普知识 |
| `wuxia` | 国风水墨 + 战斗动作 | 气效果渲染(内力、剑气);战斗场景需动态构图;环境需要意境氛围 | 武侠故事、中国历史、玄幻题材 |
| `shoujo` | 日漫 + 浪漫唯美 | 眼睛需精细刻画高光;背景加花瓣/光斑装饰元素;情感节拍需要特写 | 恋爱故事、青春校园、人物传记 |
**使用方式**:在项目初始化时指定 `style_preset: "ohmsha"` 即自动应用对应的画风、色调和特殊规则。
### 漫画模式下的风格胚子构建
当使用漫画模式时,Step 5 风格胚子图的提示词需组合三维参数:
```
[画风提示词片段], [色调提示词片段],
[场景描述], [角色描述],
[版面对应的构图指导],
--no multiple panels, text, caption, watermark, signature, letters, words, writing
```
**示例**ohmsha 预设 + standard 版面):
```
manga style, large expressive eyes, Japanese comic conventions,
balanced neutral palette, clean educational tone, even lighting,
a young programmer sitting at desk discovering a bug in code,
surprised expression, computer screen glowing,
medium shot, 4-6 panel narrative flow,
--no text, caption, watermark, signature, letters, words, writing
```
---
## 文件结构
生成项目的完整目录结构:
```
assets/generated/{项目名}/
├── characters/ # 角色胚子图
│ ├── {角色A}.png
│ └── {角色B}.png
├── locations/ # 场景胚子图(可选)
│ └── {场景名}.png
├── scenes/ # 场景配图
│ ├── scene_01_{场景名}.png
│ ├── scene_02_{场景名}.png
│ └── ...
├── characters.md # 角色索引表
├── progress.json # 生成进度
└── gallery.md # 完整图集索引
```
## 依赖技能
- `image-service`:实际生图执行
- `obsidian-markdown`:生成索引文档(可选)
## References
- `references/prompt_templates.md`:提示词模板库
- `references/style_presets.md`:风格预设详情
## Assets
- `assets/templates/gallery_template.md`:图集索引模板
- `assets/templates/characters_template.md`:角色索引模板