@ninkch/dsh-infinite-canvas 0.17.13 → 0.17.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,15 +39,50 @@ B:……
39
39
 
40
40
  ### 粒度
41
41
  - **一段连续的动作节拍 = 一个镜头**;不要把两个不相关的动作塞进一个镜头。
42
- - **单镜头 2–5 秒**(一个镜头拍一个连续动作段落);各镜时长之和 = 目标视频总时长
43
- (如 15 秒 ≈ 4–7 镜)。整个分镜表会组合成**一条多镜头提示词,由视频模型一次性生成整段视频**
42
+ - **单镜头按时长谱系取值**(见下);各镜时长之和 = 目标视频总时长,**按内容写足、不设硬上限**
43
+ (如 15 秒 ≈ 4–7 镜,30 秒 ≈ 8–14 镜)。整个分镜表会组合成**一条多镜头提示词,由视频模型一次性生成整段视频**
44
44
  (镜头间由模型硬切,不需要逐镜生成再拼接)。
45
45
  - 一场通常拆 4–8 镜:建置镜(环境/全景)→ 主体镜(中近景)→ 情绪镜(特写)→ 动作镜(跟移/推拉);
46
46
  镜越短节奏越快,每镜的提示词要越聚焦。
47
47
 
48
+ ### 节奏谱系(时长为情绪与节拍服务,**拒绝均匀分布**)
49
+ | 镜头类型 | 时长 | 用途 |
50
+ |---|---|---|
51
+ | 快速冲突 / 打斗 / 追逐 | **0.3–0.8s** | 快切、追逐、冲突爆发 |
52
+ | 重要反转 / 冲击 / 卡点 | **1–2s** | 反转、关键瞬间 |
53
+ | 普通叙事 / 对话 / 环境交代 | **2–4s** | 日常推进 |
54
+ | 长镜头情绪沉淀 | **≥5s** | 情绪酝酿、氛围、一镜到底 |
55
+
56
+ - **同一场至少制造一次明显的节奏变化**(例:3s 叙事 → 0.6s 快切×2 → 1.5s 反转 → 5s 情绪长镜)——
57
+ 时长全部一样就没有节奏感,画面再精致也不行。
58
+ - **快切镜头的提示词要极短**(一个动作、一句画内信息);信息量大的镜头才配长时长——时长与内容量必须匹配。
59
+ - duration 支持一位小数(0.6、1.5 都合法)。
60
+
61
+ ### 情绪 → 景别(根据情绪选景别)
62
+ | 情绪 | 景别 |
63
+ |---|---|
64
+ | 孤独 / 绝望 / 宏大危机 | 远景 |
65
+ | 对峙 / 动作 / 关系建立 | 全景 |
66
+ | 对话 / 试探 / 信息交换 | 中景 |
67
+ | 震惊 / 怀疑 / 内心动摇 | 近景 |
68
+ | 崩溃 / 嘶吼 / 情绪爆发 | 特写 |
69
+ | 关键细节 / 道具揭示 / 伏笔 | 大特写 |
70
+
71
+ 口诀:**冲突用全景,揭秘转近景,爆发给特写,反转可拉远**;
72
+ 镜头距离的变化本身在讲情绪:拉开距离 → 进入内心 → 强烈冲击 → 重新审视。
73
+
74
+ ### 剧情四阶(场景内部弧线,也是单集结构)
75
+ 1. **冲突出现**:常态被打破;
76
+ 2. **信息升级**:真相推翻旧认知;
77
+ 3. **情绪爆发**:积压矛盾总爆发——这里是全片节奏最快处(快切 + 特写);
78
+ 4. **结局反转**:意料之外,伏笔回收(可拉远收束)。
79
+
48
80
  ### 术语表
49
- - **景别**:大远景 / 远景 / 全景 / 中景 / 中近景 / 近景 / 特写 / 大特写。
81
+ - **景别**:大远景 / 远景 / 全景 / 中景 / 中近景 / 近景 / 特写 / 大特写(极致特写:只拍眼睛、嘴、道具细节)。
50
82
  - **运镜**:固定 / 推 / 拉 / 摇 / 移 / 跟 / 升降 / 环绕;**一镜只用一种运镜**。
83
+ - **高级运镜(按需选用)**:希区柯克变焦(推拉+变焦的眩晕感)、低角度仰拍(英雄感)、
84
+ 快速摇镜(运动模糊)、FPV 第一人称主观(需要连续运动的环境才成立)、
85
+ 航拍俯冲(要有明确落点,否则画面漂浮)、机械臂跟随(多角度贴视线)。
51
86
 
52
87
  ### visual(首帧画面)公式
53
88
  > 景别 + 主体姿态 + 环境 + 光线 + 构图重心(+ 风格)
@@ -82,13 +117,29 @@ B:……
82
117
 
83
118
  ## 四、视频提示词规范
84
119
 
85
- 公式:**主体动作 + 运镜方式 + 环境变化 + 节奏/时长**
120
+ ### 导演简报六组件(顺序即权重:构图在前,质感在后)
121
+ **场景(环境+光线)→ 主体(身份+细节)→ 动作(一次一个节拍)→ 运镜(机位+镜头+速度)→ 音频(音乐+音效+环境)→ 节奏/风格(时长+情绪+调色)**
122
+
123
+ - **音频指令绝不能省**:视频模型原生生成声音,不写音频指令就会得到随机的环境声——
124
+ 哪怕一句话也要写(音乐情绪、关键音效、环境底噪)。
125
+ - **单拍规则**:一个时间段 = 一个动作节拍;4–7 秒一个节拍,10–15 秒最多 3–4 个节拍;
126
+ 一段里塞两个叙事转折会劣化动作与物理一致性。
127
+ - **时长与内容量匹配**:3 秒只够一个动作,别写"转身、拔枪、开枪"三连;4 秒塞不下三个场景变化。
128
+
129
+ ### 公式:**主体动作 + 运镜方式 + 环境变化 + 节奏/时长**
86
130
 
87
131
  - 单动作、单运镜;**不要写场景切换**(切换交给镜头之间的衔接)。
88
132
  - 与上一镜衔接:从上一镜的**末帧**继续动作(画布支持 last 帧作为视频节点输入)。
89
- - 时长与动作量匹配:3 秒只够一个动作,别写"转身、拔枪、开枪"三连。
90
133
  - 对白/音效单独交给配音(TTS)节点,不要写进视频提示词。
91
134
 
135
+ ### 避坑清单(提示词)
136
+ 1. **引用模糊**:说"参考 @图1"没用——要说参考什么(形象?运镜?动作?节奏?音色?)。
137
+ 2. **指令冲突**:同一段里别同时要"固定镜头"和"环绕镜头"。
138
+ 3. **内容过载**:4–5 秒塞多个场景变化 = 物理不可行,动作会糊。
139
+ 4. **关键词汤**:不要"8k、masterpiece、trending"——用技术性描述(浅景深、35mm、体积光)。
140
+ 5. **不连贯动作**:别写"他跑起来然后停下"——写成有过渡的流畅动作语言。
141
+ 6. **忽视音频**:音效设计大幅提升成片质量。
142
+
92
143
  ## 五、设定集(Series Bible)维护
93
144
 
94
145
  - **风格**:一句话定调(题材 + 年代 + 色调 + 质感)。
@@ -101,6 +152,7 @@ B:……
101
152
  - [ ] 剧本:开场 10 秒有钩子;结尾有悬念;对白口语化;每场有目标/阻碍/转折
102
153
  - [ ] 一致性:人名/地名/道具与设定集逐字一致;角色外观描述未漂移
103
154
  - [ ] 分镜:镜头数 × 时长 ≈ 目标时长;每镜一个动作;相邻镜头轴线与光线连续
104
- - [ ] 提示词:图片含景别/光线/构图;视频单动作单运镜;风格词全片统一
155
+ - [ ] **节奏**:同一场里至少一次明显的时长对比(快切/长镜);景别随情绪推进而不是随机
156
+ - [ ] 提示词:图片含景别/光线/构图;视频单动作单运镜;风格词全片统一;**每条视频提示词都有音频指令**
105
157
  - [ ] 资产:命名含项目 + 集数 + 场次(便于检索与后期对轨)
106
158
  - [ ] 成片:字幕覆盖全部对白;配音与画面同长;转场时长 ≤ 1 秒
@@ -40,15 +40,19 @@ description: 用无限画布(Infinite Canvas)做短剧/视频创作时使用
40
40
  只要 `warnings` 非空:**逐条** `canvas_update_bible` 补全(名称与告警**逐字一致**、描述写实可生成),
41
41
  再生成参考图;**绝不忽略、绝不跳过、绝不只补一部分**。设定集更新后告警会自动重算
42
42
  (几秒内随文档同步刷新),以最新一次 `canvas_node_status` 为准。
43
- 9. **分镜容量铁律:一个分镜节点 = 一个 10–15s 的完整场景视频,是剧本的一小部分。**
44
- - 一个分镜节点只吃**一个场景**的剧本:各镜 2–5s、时长之和 **≤ 15s(上限)**;
45
- - **长剧本必须按场景拆分**为多个场景剧本节点(命名「第X节-场Y剧本」…),
43
+ 9. **分镜粒度规则:一个分镜节点 = 一个完整场景视频(时长按内容需要,不设硬上限)。**
44
+ - 一个分镜节点只吃**一个场景**的剧本:**各镜按节奏谱系取值、支持一位小数、拒绝均匀分布**
45
+ (普通叙事 2–4s / 快切冲突 0.3–0.8s / 关键反转 1–2s / 情绪长镜 ≥5s;谱系与情绪景别表见 `canvas-craft`);
46
+ - **时长不设硬上限、系统也绝不自动压缩镜头**:各视频厂商单次上限不同且会变化
47
+ (如万相 3.0 支持 30s,可灵只支持 5/10s)——按内容写足,**超限时视频接口会明确报错**,
48
+ 依据报错再决定拆分或调整,不要预先为某个猜的上限砍戏;
49
+ - **长剧本仍必须按场景拆分**为多个场景剧本节点(命名「第X节-场Y剧本」…),
46
50
  每个场景剧本作为**各自分镜表**的源端——**绝不把长剧本整根连线给一个分镜表**;
47
51
  - 全集剧本(若有)只作总纲存档,**不作为分镜源端**;
48
- - 体量感:一个 10–15s 场景 ≈ 剧本 60–150 字(含该场全部对白);分镜表 `shots` 上限 24 镜,
52
+ - 体量感:一个 10–30s 场景 ≈ 剧本 150–400 字(含该场全部对白);分镜表 `shots` 上限 24 镜,
49
53
  超长剧本会被截断且触发生成告警(warnings 会出现"剧本较长…请按场景拆分");
50
54
  - **镜头数量不固定**:分镜表镜头数默认「自动(按内容节拍)」——一个连续动作段落 = 一镜,
51
- 3–10 镜都正常,绝不凑数、绝不用固定数量;全部镜头时长之和 ≤ 15s(超限客户端会自动压缩最长镜);
55
+ 3–10 镜都正常,绝不凑数、绝不用固定数量;
52
56
  - 拆分操作:全集剧本已生成后,按场景把对应片段 `canvas_write_node(target:'output')`
53
57
  写入各场景剧本节点(这是**分配已有内容**,不是代写)。
54
58
  10. **汇报固定要素**:项目名 + 项目 id + 节点名/id + 成稿摘要(若已生成);有错误如实说明。
@@ -84,7 +88,7 @@ description: 用无限画布(Infinite Canvas)做短剧/视频创作时使用
84
88
  - 新项目:`canvas_create_project({ name, scriptText: 本集创作提示词, nodeName: '第X节剧本' })`
85
89
  - 已有项目:`canvas_write_node({ projectId, text: 提示词, target: 'idea', name: '第X节剧本' })`
86
90
  - 触发生成:`canvas_run_node({ projectId, nodeId })` → `canvas_node_status` 轮询直到 done/error
87
- - 生成契约(自动注入,无需复述):整集 **4–10 场、每场 10–15 秒成片**;**每场以「【场N】场景名(地点·时间)」单独一行开头**
91
+ - 生成契约(自动注入,无需复述):整集 **4–10 场、每场 10–30 秒成片(按内容写足,时长不设硬上限)**;**每场以「【场N】场景名(地点·时间)」单独一行开头**
88
92
  ——这是"铺开到场景"自动拆分的解析标记,格式不可变;对白逐行「角色:台词」;结尾附人物/场景/道具清单;
89
93
  - **【铁律】不要把成稿直接填进 output**——生成是节点的工作(用户在画布上看得到过程与结果)。
90
94
  仅当用户明确说"你直接把剧本写出来、不用节点生成"时,才允许 `target:'output'` 直接写成稿。
@@ -104,7 +108,7 @@ description: 用无限画布(Infinite Canvas)做短剧/视频创作时使用
104
108
  - `canvas_run_node({ 分镜表 })` → `canvas_node_status` 读 `shots`(镜头清单以此为准,绝不编造镜头表);
105
109
  - `canvas_create_node({ projectId, type: 'video-gen', name: '第X节-场Y视频', connectFrom: 分镜表节点id, duration: 各镜时长之和 })`
106
110
  (不传 connectFrom 且项目里有已拆解镜头的分镜表时会自动连线;prompt 留空);
107
- - **【禁止逐镜建节点】**一段 10–15 秒的视频**不需要逐镜的图片节点或"镜头图→镜头视频"链路**:
111
+ - **【禁止逐镜建节点】**一段 10–30 秒的场景视频**不需要逐镜的图片节点或"镜头图→镜头视频"链路**:
108
112
  多镜头一致性靠角色/场景/道具**参考图资产**(@引用自动挂载)保证,视频模型在一次调用里完成全部镜头。
109
113
  最多为**开场首帧或 1–2 个关键镜头**补定帧图(接同一视频节点的 frame/ref 端口)。
110
114
  一旦发现自己在批量创建"第X节-场Y-镜Z"这类镜头图片/视频节点 = 走错路,**立即停止**并回到本条。
@@ -136,7 +140,12 @@ description: 用无限画布(Infinite Canvas)做短剧/视频创作时使用
136
140
  5. **生成角色/场景/道具参考图**:为设定集里的每个条目
137
141
  `canvas_create_node({ projectId, type: 'image-gen', name: '角色-张山 多视图', prompt: '按设定集写外观关键词' })`
138
142
  → `canvas_run_node({ projectId, nodeId })` 触发(画布用它配置的图片接口)
139
- - 需要补连任意两节点时用 `canvas_connect({ projectId, fromNode, toNode })`(端口类型必须匹配)
143
+ - 需要补连任意两节点时用 `canvas_connect({ projectId, fromNode, toNode })`(端口类型必须匹配;
144
+ 连分镜表时系统按语义自动选口:剧本/文本 → `script`,分镜表 → `prev`,不用手写端口)
145
+ - **布局乱了/节点重叠**:`canvas_relayout({ projectId })` 一键重排——横向数据流决定列
146
+ (文本→分镜表→视频),竖向关系(承接 `prev` / 首帧 `frame`)留在同列,同行 = 一个横向连通组
147
+ (如「场N文本 ↔ 场N分镜表」对齐),行间保留间距、绝不重叠。新建节点已做碰撞检测;
148
+ 存量节点乱了一律用这个工具重排,不要手工挪。
140
149
  6. `canvas_open({ projectId })` —— 让用户看到画布结果
141
150
 
142
151
  ## 三、@引用与资产命名(跨集一致性的核心手法)
@@ -0,0 +1,21 @@
1
+ # 帮助与反馈静态资源
2
+
3
+ 画布界面里的「帮助与反馈」弹窗(工具栏按钮 / 设置面板一行入口)会加载这里的文件。
4
+
5
+ ## 微信二维码
6
+
7
+ - 当前文件:`wechat.png`(**个人微信二维码**——永久有效;群二维码 7 天过期,难维护,所以用个人码 + 手动拉群)
8
+ - 换图:直接替换本目录的 `wechat.png`(同名即可;若换扩展名,请同步改 `client.js` 里的 `SUPPORT_QR_URL`)
9
+ - 建议正方形、400×400 以上,且**不带多余文字**(弹窗里已有说明文案,图上再印字会重复)
10
+ - **改完需重启 DSH**(静态资源路由在插件启动时注册)
11
+ - 文件缺失时弹窗显示占位提示,不会报错
12
+
13
+ 访问方式(插件自身路由,白名单 `assets/` 目录 + 拒绝路径穿越):
14
+
15
+ ```
16
+ /infinite-canvas/api/plugin-asset?rel=assets/support/wechat.png
17
+ ```
18
+
19
+ ## GitHub 地址
20
+
21
+ 仓库与 Issue 地址写在 `client.js` 顶部的 `SUPPORT_GITHUB` / `SUPPORT_ISSUES` 常量里,改地址只需改这两行。
Binary file