火宝短剧 - 基于AI的一站式短剧生成平台 《一句话生成完整短剧,从剧本到成片全自动化》 Huobao Drama - An AI-Powered End-to-End Short Drama Generator "One Sentence to Complete Drama: Fully Automated...
---
name: extractor
description: 角色、场景和道具提取的规范与方法
---
# 角色、场景与道具提取指南
## 角色提取规范
提取的角色字段(与 `save_dedup_characters` 工具参数一一对应):
- **name**(必填):角色全名
- **role**:角色定位,主角/配角/龙套
- **appearance**:样貌描写(300-500字)——性别、年龄感、五官、体态、气质。**角色的性格特点不要单独输出,要转化为外在气质与神态融入样貌描写**(例如"性格冷峻"应写为"眼神冷峻、表情克制、少有笑意")
- **styling**:妆造——发型、服装、妆面、配饰等
- **description**:背景故事和人物关系(可选补充)
## 场景提取规范
提取的场景字段(与 `save_dedup_scenes` 工具参数一一对应):
- **location**(必填):具体场所名称
- **time**:时间段(如 白天/黄昏/深夜),同地点不同时段视为新场景
- **prompt**:场景描述——空间、陈设、年代质感、关键视觉元素(纯背景,不含人物)
- **lighting**:场景光影——光源、色调、明暗、氛围
## 道具提取规范
**核心原则:宁可少提,不要多提。** 道具是用来生成白底单品图、供视频特写引用的高成本资产,只有剧情关键道具才值得提取。一集通常 **0-3 个**关键道具,超过 3 个时按剧情重要性排序只保留前 3 个。
必须**同时满足**以下两条,缺一不可:
1. **直接推动剧情**:该物品的出现、交接、损坏或发现会引发情节转折(如凶器、信物、关键文件、定情礼物、关键证据)。
2. **值得单独生成图片**:后续分镜会给它特写镜头或反复出现,需要固定外观。
**判定三问**(对每个候选道具自问自答,任一答"否"即放弃):
- ① 删掉它剧情是否依然成立?→ 成立则**不提取**(它只是道具式背景板)
- ② 它只是角色随手使用的日常物品吗(手机、筷子、水杯、香烟、雨伞)?→ 是则**不提取**
- ③ 它是场景陈设的一部分吗(桌椅、灯具、门窗、挂画、餐具)?→ 是则**不提取**(这些属于场景描述)
**不算道具的典型**:随手使用但不影响剧情走向的普通物品;场景陈设与家具;只被提及一次且再无下文的物品;角色的常规穿戴(归入角色妆造)。
如果没有符合条件的道具,**不要强行提取**,调用 `save_dedup_props` 时传空数组即可。
提取的道具字段(与 `save_dedup_props` 工具参数一一对应):
- **name**(必填):道具名
- **type**:类型——日常/武器/交通/装饰/文件等
- **description**:物品外貌——只描写物品本身的物理外观(材质、颜色、形状、大小、新旧程度、磨损痕迹等),不要写剧情用途,不要涉及与角色或其他事物的关联
道具**不需要输出图片提示词**——道具的最终提示词由提示词生成 Agent 在生图前专门生成(白底单品规范)。
## 使用步骤
1. 调用 `read_script_for_extraction` 读取当前集剧本
2. 调用 `read_existing_characters` 查看项目已有角色和当前集已关联角色
3. 调用 `read_existing_scenes` 查看项目已有场景和当前集已关联场景
4. 调用 `read_existing_props` 查看项目已有道具和当前集已关联道具
5. 只提取当前集真实涉及的角色、场景和道具
6. 调用 `save_dedup_characters` 保存角色并自动关联到当前集
7. 调用 `save_dedup_scenes` 保存场景并自动关联到当前集
8. 调用 `save_dedup_props` 保存道具并自动关联到当前集
## 当前集规则
- 目标是补齐"当前集"需要的角色、场景和道具,不是重扫整个项目
- 若已在项目中存在但当前集未关联,仍应复用并关联到当前集
- 去重规则:角色/道具按名称精确匹配,场景按【地点+时间段】精确匹配,命中的优先复用,不要重复创建
- 近名去重:名称带括号定位或别名时按括号前主体比较(如「林小雨(主角)」与「林小雨」视为同一角色/道具,复用已有);read_existing_characters / read_existing_props 返回的 normalized_name 即归一化后的名字,场景的 normalized_location 同理,据此判断即可