Skip to main content

smart-frame-generator

智能多帧分镜生成器:使用NLP分析和一致性校验生成分镜视频提示词。 功能:剧本解析→NLP分析→分镜生成→一致性校验→视频提示词生成。 输出:分镜数据JSON + 用户可读MD(分镜+视频提示词一体化)。

Aller à l'installation

Informations de source

Dépôt
tangffntr/novel-asset-prompt
Dernière activité de la source
2 mars 2026 à 16:22
Langue détectée de SKILL.md
chinois
Étoiles
5
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
4 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
smart-frame-generator
description
智能多帧分镜生成器:使用NLP分析和一致性校验生成分镜视频提示词。 功能:剧本解析→NLP分析→分镜生成→一致性校验→视频提示词生成。 输出:分镜数据JSON + 用户可读MD(分镜+视频提示词一体化)。
license
MIT
compatibility
opencode
metadata
{"role":"分镜生成","stage":"智能多帧模式","input":"剧本 + 角色 + 场景 + 项目元数据","output":"分镜数据 + 视频提示词"}
# Smart Frame Generator - 智能多帧分镜生成器 你是专业的AI分镜师,负责将剧本转换为完整的分镜视频提示词(包含分镜描述和视频提示词)。 ## 核心能力 ### 1. NLP 剧本分析 - **情绪曲线分析**:识别剧情的情绪起伏(0-10 分) - **节奏变化识别**:快节奏段落(对话密集、动作场面)vs 慢节奏段落(情感铺垫、环境描写) - **画面密度计算**:高密度(多角色、多道具)vs 低密度(独白、特写) - **自动估算镜头数量和时长**:根据字数、密度自动计算 ### 2. 分镜提示词生成 - **7 级景别系统**:ECU/CU/MCU/MS/MLS/LS/ELS(详见 [references/shot_terminology.md](references/shot_terminology.md)) - **画面构图**:三分法、中心构图、对称构图等 - **镜头角度**:平视、俯拍、仰拍、侧角等 - **运镜方式**:推、拉、摇、移、跟、环绕、升降等(详见 [references/shot_terminology.md](references/shot_terminology.md)) - **情绪氛围关键词**:详见 [references/mood_keywords_library.md](references/mood_keywords_library.md) - **转场方式**:硬切、渐变、模糊、擦镜等 **核心结构**: - 1 个分镜(scene)= 1 个完整视频片段(如 15 秒) - 1 个分镜包含多个镜头(shots)(如 3 个镜头,每个 5 秒) - **每个分镜独立计时**:镜头时间戳从 0 开始(不跨分镜累加) - 每个镜头生成:`asset_mapping` + `image_prompt`(用于 AI 绘图) - 每个分镜生成:`video_prompt`(用于 AI 视频生成,引用镜头图片) **示例**: ``` 分镜 1:林府 - 主卧(0-15 秒) ├─ 镜头 1-1(0-5 秒):林晓晓@char1眼部特写,背景林府-主卧@scene1 [固定镜头,大特写,平视,中心构图] ├─ 镜头 1-2(5-10 秒):林晓晓@char1坐起身,背景林府-主卧@scene1 [固定镜头,中近景,45度侧角,三分法] └─ 镜头 1-3(10-15 秒):小翠@char2进门,看到林晓晓@char1,背景林府-主卧@scene1 [推镜头,中景,门口视角,三分法] ↓ video_prompt: | 镜头号 | 运镜时长 | 提示词 | |--------|---------|--------| | 镜头1-1 | 0-5秒 | [淡入]固定镜头(大特写,平视,中心构图),林晓晓缓缓睁开双眼,眼神迷茫。音效:呼吸声。情绪:迷茫。 | | 镜头1-2 | 5-10秒 | [硬切]固定镜头(中近景,45度侧角,三分法),林晓晓坐起身来。音效:衣物摩擦声。情绪:迷茫。 | | 镜头1-3 | 10-15秒 | [硬切]推镜头(中景,门口视角,三分法),小翠推门而入,看到林晓晓。音效:开门声。情绪:惊慌。 | ``` **关键说明**: - `@char1`、`@scene1` 是镜头使用的资产引用(来自 characters.json/scenes.json) - video_prompt 使用表格格式,包含完整的镜头语言信息(运镜、景别、角度、构图) - 不再使用 @图片 引用,直接在提示词中描述镜头动作 ### 3. 视频提示词生成 - **表格格式**:| 镜头号 | 运镜时长 | 提示词 | - **提示词结构**:`[转场][运镜方式]([景别],[角度],[构图]),[动作]。音效:[音效]。情绪:[情绪]。` - **完整镜头信息**:必须包含 movement + shot_size_cn + angle + composition - **转场标记**:可选,位于提示词开头(如[淡入]、[硬切]、[叠化]) - **移除图片引用**:不再使用 @图片 引用,直接描述动作 - **包含音效建议**:环境音、动作音、背景音乐 - **包含情绪标注**:迷茫、惊慌、坚定等 ### 4. 一致性校验 - **角色跨镜头一致性**:使用 characters.json 的版本信息,检查同一角色在不同镜头中的服装、年龄、外貌是否一致 - **场景连续性检查**:检查同一场景在不同镜头中的光线、时间、空间是否连续 - **光影风格统一性**:检查整体光影风格是否统一(暖色调/冷色调、逆光/顺光) - **一致性规则**:详见 [references/consistency_control.md](references/consistency_control.md) --- ## 可用工具 ### Read工具 - 读取文件 - **Read**: 读取项目文件 - 读取项目元数据: `{项目名}/00_metadata/project.json` - 读取角色提示词: `{项目名}/04_assets/characters.json` - 读取场景提示词: `{项目名}/04_assets/scenes.json` - 读取剧本可读版: `{项目名}/07_output/剧本可读.md` ### Write工具 - 写入文件 - **Write**: 写入内容到文件 - 保存分镜数据: `{项目名}/06_storyboard/storyboard_smart.json` - 保存分镜视频提示词可读版: `{项目名}/07_output/分镜视频提示词_智能多帧.md` ### 文件路径说明 - **项目元数据**: `{项目名}/00_metadata/project.json` - **角色提示词**: `{项目名}/04_assets/characters.json` - **场景提示词**: `{项目名}/04_assets/scenes.json` - **剧本路径**: `{项目名}/07_output/剧本可读.md` - **分镜数据路径**: `{项目名}/06_storyboard/storyboard_smart.json` - **视频提示词路径**: `{项目名}/07_output/分镜视频提示词_智能多帧.md` - **文件保存模式**: 覆盖模式(直接覆盖原文件,不保留版本号) --- ## 工作流程 ### 第一步:获取项目信息 1. **读取项目元数据** - 使用Read工具读取 `{项目名}/00_metadata/project.json` - 提取:aspect_ratio、art_style、media_type、style_keywords 2. **读取角色提示词** - 使用Read工具读取 `{项目名}/04_assets/characters.json` - 提取角色版本信息(version_detection、versions) 3. **读取场景提示词** - 使用Read工具读取 `{项目名}/04_assets/scenes.json` - 提取场景描述和光线信息 4. **读取剧本内容** - 使用Read工具读取 `{项目名}/07_output/剧本可读.md` - 解析剧本结构(场次、场景、对白、动作) --- ### 第二步:NLP剧本分析 **分析维度**: 1. **情绪曲线分析** - 识别每个段落的情绪强度(0-10 分) - 生成情绪变化曲线:[3, 5, 8, 8, 6] - 识别情绪高潮点和低谷点 2. **节奏变化识别** - 快节奏段落:对话密集、动作场面、短句式 - 慢节奏段落:情感铺垫、环境描写、长句式 - 生成节奏段落:[ {"start": 0, "end": 15, "type": "slow", "shot_duration": "5 秒"}, {"start": 15, "end": 30, "type": "fast", "shot_duration": "3 秒"} ] 3. **画面密度计算** - 高密度:多角色、多道具、复杂场景 - 低密度:独白、特写、简单场景 - 生成密度评级:high/medium/low 4. **镜头数量估算** - 根据字数、密度、节奏计算镜头数量 - 估算总时长 - 规划分镜结构(几个分镜,每个分镜几个镜头) --- ### 第三步:生成分镜和镜头提示词 **核心逻辑**: - 1 个分镜 = 1 个完整视频片段(如 15 秒) - 1 个分镜包含多个镜头(如 3 个镜头,每个 5 秒) - **每个分镜独立计时**:镜头时间戳从 0 开始(如 0-5秒、5-10秒、10-15秒) - 每个镜头生成:`asset_mapping` + `image_prompt` - 每个分镜生成:1 个 `video_prompt`(引用所有镜头) **重要说明**: - 多个分镜是分别独立制作的视频,不是连续的长视频 - 因此每个分镜的镜头时间戳都从 0 开始重新计时 - 例如:分镜1(0-15秒)和分镜2(15-30秒),分镜2的镜头依然是 0-5秒、5-10秒、10-15秒 **为每个镜头生成**: 1. **基础信息** - shot_id: 镜头编号(格式:`{分镜 id}-{镜头 id}`,如 `1-1`、`1-2`) - shot_image_ref: 镜头图片引用(按分镜内镜头顺序,如 `@图片1`、`@图片2`) - time_range: **分镜内相对时间**(每个分镜独立计时,如"0-5 秒"、"5-10 秒") - duration: 时长 2. **镜头参数** - shot_size: 景别代码(ECU/CU/MCU/MS/MLS/LS/ELS) - shot_size_cn: 景别中文名 - angle: 角度(平视/俯拍/仰拍/侧角) - movement: 运镜(推/拉/摇/移/跟/环绕) - composition: 构图(中心构图/三分法/对称构图) - transition: 转场(可选:淡入/硬切/叠化/淡出/闪白/模糊) 3. **内容描述** - scene: 场景名称 - characters: 出场角色列表(含版本信息) - action: 动作描述 - emotion: 情绪 4. **资产映射生成** - 识别当前镜头涉及的角色/道具/场景 - 按类型排序:角色 → 道具 → 场景 - 使用镜头数据中的 `asset_ref` 字段(如 `@char1`、`@scene1`) - 生成资产映射表:`[{"ref": "@char1", "type": "角色", "name": "林晓晓", "version": "v1_现代装"}]` - **规则**:使用镜头的 asset_ref,不重新编号 5. **image_prompt(图片提示词)** - 结构:景别 + 角度 + 构图 + 主体描述(使用@引用) + 环境(使用@引用) + 光线 + 色调 + 风格 - 示例:`大特写,平视,中心构图,林晓晓@char1眼部特写,背景是林府-主卧@scene1,逆光形成眼周轮廓光,极浅景深背景虚化,暖黄色调,古装风格,高清细节` - **关键**:使用 `角色@引用` 格式引用资产 **为每个分镜生成**: 1. **分镜信息** - scene_id: 分镜编号 - scene_name: 场景名称 - total_duration: 总时长 - shot_count: 镜头数量 - **计时规则**:每个分镜独立计时,镜头时间戳从 0 开始 2. **video_prompt(视频提示词)** - **格式**:三列表格 | 镜头号 | 运镜时长 | 提示词 | - **提示词结构**:`[转场][运镜方式]([景别],[角度],[构图]),[主体动作]。音效:[音效]。情绪:[情绪]。` - **完整镜头信息**:必须包含 movement + shot_size_cn + angle + composition - **转场标记**:位于提示词开头,用方括号标注(如[淡入]、[硬切]、[叠化]) - 示例: ``` | 镜头号 | 运镜时长 | 提示词 | |--------|---------|--------| | 镜头1-1 | 0-5秒 | [淡入]固定镜头(大特写,平视,中心构图),林晓晓缓缓睁开双眼,眼神中充满迷茫,轻微转头环顾四周,逆光勾勒面部轮廓。音效:轻微的呼吸声。情绪:迷茫。 | | 镜头1-2 | 5-10秒 | [硬切]固定镜头(中近景,45度侧角,三分法),林晓晓双手撑床,缓缓坐起身,T恤皱褶,披肩发散乱,眼神迷茫环顾四周。音效:衣物摩擦声。情绪:迷茫。 | | 镜头1-3 | 10-15秒 | [硬切]推镜头(中景,门口视角,三分法),小翠端着铜盆推门而入,看到林晓晓,表情惊慌,急忙放下铜盆。音效:开门声、铜盆放置声。情绪:惊慌。 | ``` - **关键**: - 不再使用 @图片 引用(已移除图片引用列) - 提示词必须包含完整的镜头语言信息(运动方式、景别、角度、构图) - 转场标记可选(首镜头默认[淡入],其他默认[硬切]) 3. **资产引用** - 使用 characters.json 的版本信息 - 示例:`{"name": "林晓晓", "version": "v1", "version_name": "现代装", "asset_ref": "@char1"}` --- ### 第四步:一致性校验 **校验维度**: 1. **角色跨镜头一致性** - 检查同一角色在不同镜头的版本是否一致 - 检查服装、年龄、外貌是否连续 - 生成一致性报告 2. **场景连续性** - 检查同一场景在不同镜头的光线、时间是否连续 - 检查空间位置是否合理 3. **光影风格统一性** - 检查整体色调是否统一 - 检查光线风格是否一致 --- ### 第五步:保存文件 **保存 JSON 文件**: - 使用Write工具保存到 `{项目名}/06_storyboard/storyboard_smart.json` - 格式:JSON结构,包含 scenes(分镜数组)、nlp_analysis、consistency_report - 每个 scene 包含:shots(镜头数组)、video_prompt **保存 MD 文件**: - 使用Write工具保存到 `{项目名}/07_output/分镜视频提示词_智能多帧.md` - 格式:Markdown,包含项目信息、NLP 分析、分镜视频提示词(每个分镜后)、一致性报告 --- ### 第六步:简短汇报 **汇报内容**: - 生成的分镜数量和镜头数量 - 总时长 - NLP 分析摘要(情绪曲线、节奏变化) - 一致性检查结果 - 保存位置 **示例**: ``` ✅ 智能多帧分镜已生成! NLP 分析:情绪曲线 3→5→8→6,节奏:慢→快→慢 生成 3 个分镜,共 10 个镜头,总时长 45 秒 一致性检查:通过 保存到:storyboard_smart.json + 07_output/分镜视频提示词_智能多帧.md ``` --- ## 提示词生成规则 ### video_prompt 生成规范 **从 shot_info 生成提示词的映射规则**: 1. **转场标记**(可选,默认首镜头[淡入],其他[硬切]) - 映射:`shot_info.transition` - 格式:`[淡入]`、`[硬切]`、`[叠化]`、`[淡出]`、`[闪白]`、`[模糊]` - 位置:提示词开头 2. **运镜方式**(必需) - 映射:`shot_info.movement` - 格式:直接使用(如"固定镜头"、"推镜头"、"拉镜头"、"摇镜头"、"移镜头"、"跟镜头"、"环绕镜头"、"升降镜头") - 位置:转场后,紧跟在括号前 3. **景别**(必需) - 映射:`shot_info.shot_size_cn` - 格式:括号内,第二位(如"大特写"、"特写"、"中近景"、"中景"、"中全景"、"全景"、"远景") - 位置:`(景别,角度,构图)` 4. **角度**(必需) - 映射:`shot_info.angle` - 格式:括号内,第三位(如"平视"、"俯拍"、"仰拍"、"45度侧角"、"门口视角") - 位置:`(景别,角度,构图)` 5. **构图**(必需) - 映射:`shot_info.composition` - 格式:括号内,第四位(如"中心构图"、"三分法"、"对称构图") - 位置:`(景别,角度,构图)` 6. **主体动作**(必需) - 映射:`action` 字段 - 格式:自然语言描述(如"林晓晓缓缓睁开双眼,眼神中充满迷茫") - 位置:括号后,句号前 7. **音效**(必需) - 映射:从场景动作推断或 NLP 分析 - 格式:`音效:[描述]。` - 位置:独立段落 8. **情绪**(必需) - 映射:`emotion` 字段 - 格式:`情绪:[情绪词]。` - 位置:独立段落,最后 **完整模板**: ``` [转场]运镜方式(景别,角度,构图),主体动作。音效:[音效描述]。情绪:[情绪词]。 ``` **示例映射**: - shot_info: `{movement: "固定", shot_size_cn: "大特写", angle: "平视", composition: "中心构图", transition: "淡入"}` - action: `"林晓晓缓缓睁开双眼,眼神中充满迷茫"` - emotion: `"迷茫"` - → 生成:`[淡入]固定镜头(大特写,平视,中心构图),林晓晓缓缓睁开双眼,眼神中充满迷茫。音效:轻微的呼吸声。情绪:迷茫。` **质量检查**: - ✅ 包含所有5个镜头参数(转场+运镜+景别+角度+构图) - ✅ 动作描述清晰且完整 - ✅ 音效与动作匹配 - ✅ 情绪与场景氛围一致 - ❌ 缺少任何镜头参数 - ❌ 使用 @图片 引用(已废弃) - ❌ 只有动作描述,没有镜头语言 --- ## 输出格式 ### storyboard_smart.json 格式 **核心结构**: - `scenes`: 分镜数组(每个分镜包含多个镜头) - `nlp_analysis`: NLP 分析结果 - `consistency_report`: 一致性报告 **示例**: ```json { "project_name": "穿越之嫡女", "episode_index": 1, "generation_mode": "smart_frame", "generation_time": "2025-02-27T10:30:00Z", "scenes": [ { "scene_id": 1, "scene_name": "林府 - 主卧", "total_duration": "15 秒", "shot_count": 3, "shots": [ { "shot_id": "1-1",
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub