# 小说转项目示例

本示例展示如何从小说文本自动创建项目，包括角色、场景和章节的提取。

## 场景描述

用户提供了一段小说文本，想要将其转换为动画项目，自动提取角色、场景和分镜。

## 示例小说文本

```
第一章：魔法学院的新生

艾莉丝是一个18岁的女孩，有着金色的长发和蓝色的眼睛。
今天是她进入魔法学院的第一天，她穿着崭新的学院制服，
心中既兴奋又紧张。

魔法学院坐落在一座古老的城堡中，高耸的塔楼直插云霄，
周围环绕着茂密的森林。清晨的阳光洒在城堡的石墙上，
给这座古老的建筑披上了一层金色的光辉。

艾莉丝走进学院的大门，眼前是一个宽敞的大厅。
高高的天花板上悬挂着巨大的水晶吊灯，墙壁上挂满了
历代校长的肖像画。

"你好，新同学！"一个声音从身后传来。
艾莉丝转过身，看到一个戴着圆框眼镜的男孩正微笑着看着她。
"我叫李明，也是今年的新生。"

李明是一个17岁的男孩，戴着黑框眼镜，穿着整洁的校服。
他的书包里总是装着一本厚厚的魔法书。

第二章：图书馆的秘密

下午，艾莉丝和李明一起来到了学院的图书馆。
这是一个巨大的空间，从地板到天花板都是书架，
装满了各种古老的魔法书籍。昏暗的烛光在书架间跳动，
营造出一种神秘的氛围。

在图书馆的深处，艾莉丝发现了一本发光的书。
这本书的封面镶嵌着蓝色的宝石，散发着柔和的光芒。
当她伸手触碰时，书突然自动打开了。
```

## 执行步骤

### 步骤 1: 调用自动创建工具

```python
result = create_project_from_novel(
    project_name="魔法学院",
    novel_text=novel_text,
    style="anime",
    project_type="video",
    extract_options={
        "max_characters": 10,
        "max_scenes": 15,
        "max_props": 5,
        "split_by": "chapter"
    }
)
```

### 步骤 2: 系统自动提取资产

**提取的角色**：
```python
[
    {
        "name": "艾莉丝",
        "type": "character",
        "description": "18岁女孩，魔法学院新生",
        "visual_features": "金色长发，蓝色眼睛，学院制服",
        "personality": "兴奋，紧张，好奇",
        "importance": "high"
    },
    {
        "name": "李明",
        "type": "character",
        "description": "17岁男孩，魔法学院新生",
        "visual_features": "黑框眼镜，整洁校服",
        "props": ["魔法书"],
        "importance": "high"
    }
]
```

**提取的场景**：
```python
[
    {
        "name": "魔法学院外观",
        "type": "scene",
        "description": "古老城堡，高塔，森林环绕",
        "time": "清晨",
        "lighting": "阳光",
        "atmosphere": "宏伟，神秘",
        "importance": "high"
    },
    {
        "name": "学院大厅",
        "type": "scene",
        "description": "宽敞大厅，水晶吊灯，肖像画",
        "lighting": "明亮",
        "atmosphere": "庄重，华丽",
        "importance": "medium"
    },
    {
        "name": "图书馆",
        "type": "scene",
        "description": "巨大空间，书架林立，古老书籍",
        "time": "下午",
        "lighting": "烛光",
        "atmosphere": "神秘，昏暗",
        "importance": "high"
    }
]
```

**提取的道具**：
```python
[
    {
        "name": "魔法书",
        "type": "prop",
        "description": "厚厚的书籍",
        "owner": "李明",
        "importance": "medium"
    },
    {
        "name": "发光的书",
        "type": "prop",
        "description": "封面镶嵌蓝色宝石，发光",
        "function": "神秘魔法",
        "importance": "high"
    }
]
```

**分割的章节**：
```python
[
    {
        "number": 1,
        "title": "第一章：魔法学院的新生",
        "content": "...",
        "length": 450,
        "scenes": ["魔法学院外观", "学院大厅"],
        "characters": ["艾莉丝", "李明"]
    },
    {
        "number": 2,
        "title": "第二章：图书馆的秘密",
        "content": "...",
        "length": 280,
        "scenes": ["图书馆"],
        "characters": ["艾莉丝", "李明"],
        "props": ["发光的书"]
    }
]
```

### 步骤 3: 返回完整项目结构

```python
{
    "project": {
        "id": "uuid-xxx",
        "name": "魔法学院",
        "type": "video",
        "style": "anime",
        "created_at": "2026-02-09T10:00:00Z"
    },
    "statistics": {
        "total_characters": 2,
        "total_scenes": 3,
        "total_props": 2,
        "total_chapters": 2,
        "total_words": 730
    }
}
```

### 步骤 4: 向用户展示结果

```
✅ 已从小说创建项目"魔法学院"

📊 提取统计：
- 角色：2 个（艾莉丝、李明）
- 场景：3 个（魔法学院外观、学院大厅、图书馆）
- 道具：2 个（魔法书、发光的书）
- 章节：2 章

🎬 下一步建议：
1. 为主要角色生成图像
2. 为关键场景生成背景
3. 创建分镜画布
4. 开始视频制作
```

## 工作流模式

### 模式 1: 完全自动（推荐）

```python
# 一步完成所有操作
result = create_project_from_novel(
    project_name="魔法学院",
    novel_text=novel_text,
    style="anime"
)
```

**优点**：
- 最快速
- 自动化程度高
- 适合快速原型

**缺点**：
- 控制较少
- 可能需要后续调整

### 模式 2: 分步控制

```python
# 步骤 1: 创建空项目
project = create_project(
    name="魔法学院",
    project_type="video",
    style="anime"
)

# 步骤 2: 提取资产
assets = extract_assets(
    text=novel_text,
    asset_types=["character", "scene", "prop"]
)

# 步骤 3: 人工审核和筛选
selected_assets = review_and_select(assets)

# 步骤 4: 添加到项目
add_assets_to_project(project["id"], selected_assets)

# 步骤 5: 分割章节
chapters = split_text_into_chapters(
    text=novel_text,
    split_by="chapter"
)
```

**优点**：
- 精细控制
- 可以人工审核
- 适合复杂项目

**缺点**：
- 步骤较多
- 耗时较长

## 提取质量优化

### 1. 文本准备

✅ **好的文本**：
```
艾莉丝是一个18岁的女孩，有着金色的长发和蓝色的眼睛。
她穿着魔法学院的制服，性格活泼开朗。

魔法学院坐落在古老的城堡中，周围环绕着茂密的森林。
清晨的阳光洒在城堡的石墙上。
```

❌ **不好的文本**：
```
她很漂亮。
学校很大。
```

**关键点**：
- 包含具体的描述
- 使用形容词和细节
- 清晰的场景描述

### 2. 章节标记

✅ **好的标记**：
```
第一章：魔法学院的新生
...

第二章：图书馆的秘密
...
```

❌ **不好的标记**：
```
1
...

2
...
```

### 3. 角色介绍

✅ **好的介绍**：
```
艾莉丝是一个18岁的女孩，有着金色的长发和蓝色的眼睛。
她穿着魔法学院的制服，性格活泼开朗，喜欢探索未知的事物。
```

❌ **不好的介绍**：
```
艾莉丝是主角。
```

## 常见问题

**Q: 提取的角色不完整怎么办？**
A: 可以使用 `extract_assets` 单独提取，或手动添加缺失的角色。

**Q: 章节分割不准确怎么办？**
A: 尝试不同的 `split_by` 参数（chapter/scene/length），或手动调整。

**Q: 可以处理多长的文本？**
A: 建议 500-50000 字。过短提取不足，过长可能超时。

**Q: 支持英文小说吗？**
A: 支持，但中文效果更好。

## 性能参考

- **文本长度**：1000 字
- **处理时间**：~10 秒
- **提取结果**：5-10 个资产，2-3 个章节
- **Token 消耗**：~5000 tokens

## 后续步骤

创建项目后，可以：

1. **生成角色图像**
   ```python
   for character in result["assets"]["characters"]:
       generate_image(
           prompt=f"{character['name']}，{character['visual_features']}，动漫风格，高质量"
       )
   ```

2. **生成场景背景**
   ```python
   for scene in result["assets"]["scenes"]:
       generate_image(
           prompt=f"{scene['description']}，{scene['atmosphere']}，电影级画质"
       )
   ```

3. **创建分镜画布**
   ```python
   for chapter in result["chapters"]:
       create_workflow_chain(
           workflow_type="storyboard",
           chapter_content=chapter["content"]
       )
   ```

4. **开始视频制作**
   - 为每个分镜生成图像
   - 将图像转换为视频
   - 添加音频和特效
