cerevox 4.72.1 → 4.74.0

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.
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.directorNoteTemplate = directorNoteTemplate;
4
+ const directorNoteIntensityMap = {
5
+ balanced: `【导演倾向】表达克制,重点清楚,适合稳定叙事和清晰执行。`,
6
+ strong: `【导演倾向】重点更鲜明,强调情绪重音、机位设计和氛围控制。`,
7
+ aggressive: `【导演倾向】风格更强,允许更明显的视觉压迫、镜头攻击性和情绪张力。`,
8
+ };
9
+ /**
10
+ * 生成适合 gpt-image-2 的导演手记提示词。
11
+ *
12
+ * @param params 模板参数,包括用户剧情、页宽高比、参考视频时长和镜头强度。
13
+ * @returns 适合用于生成单页导演手记的英文主提示词。
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const prompt = directorNoteTemplate({
18
+ * userPrompt: '两名杀手在废弃工厂短暂对峙后突然交火,最后一人中枪倒地。',
19
+ * page_aspect_ratio: '16:9',
20
+ * forVideoDuration: 12,
21
+ * });
22
+ * ```
23
+ */
24
+ function directorNoteTemplate(params) {
25
+ const { userPrompt, page_aspect_ratio = '16:9', forVideoDuration, maxVideoDuration = 15, cinematicIntensity = 'strong', } = params;
26
+ const normalizePositiveDuration = (value) => {
27
+ if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
28
+ return value;
29
+ }
30
+ if (typeof value === 'string') {
31
+ const parsed = Number(value);
32
+ if (Number.isFinite(parsed) && parsed > 0) {
33
+ return parsed;
34
+ }
35
+ }
36
+ return undefined;
37
+ };
38
+ const safeMaxVideoDuration = normalizePositiveDuration(maxVideoDuration) ?? 15;
39
+ const normalizedTargetDuration = normalizePositiveDuration(forVideoDuration);
40
+ const effectiveTargetDuration = normalizedTargetDuration !== undefined
41
+ ? Math.min(normalizedTargetDuration, safeMaxVideoDuration)
42
+ : undefined;
43
+ const videoDurationRule = effectiveTargetDuration !== undefined
44
+ ? `
45
+ 【目标时长】
46
+ - 目标视频时长:${effectiveTargetDuration} 秒
47
+ - 最大允许时长:${safeMaxVideoDuration} 秒
48
+ - 若用户要求超过 ${safeMaxVideoDuration} 秒,也只按 ${safeMaxVideoDuration} 秒的短片段来写导演手记
49
+ - 这是一个短片段导演手记,不是完整长片分镜
50
+ `.trim()
51
+ : `
52
+ 【目标时长】
53
+ - 默认按不超过 ${safeMaxVideoDuration} 秒的视频片段来写导演手记
54
+ - 这是一个短片段导演手记,不是完整长片分镜
55
+ `.trim();
56
+ const intensityBlock = directorNoteIntensityMap[cinematicIntensity] ??
57
+ directorNoteIntensityMap.strong;
58
+ return `You are an experienced but slightly lazy film director writing a concise handwritten director note page for GPT Image 2.
59
+
60
+ 【Core Goal】
61
+ - Create one single composed director note page, not a detailed storyboard sheet
62
+ - This page is for a short video segment, usually no more than ${safeMaxVideoDuration} seconds
63
+ - The director does not care about every single shot
64
+ - The director only cares about the 1 to 2 key shots and the overall execution priorities
65
+ - Focus on what must be emphasized on set, not on exhaustive shot-by-shot breakdown
66
+
67
+ ${videoDurationRule}
68
+
69
+ 【What This Page Is】
70
+ - A director's handwritten memo page
71
+ - Written by an experienced director who knows what matters and ignores unnecessary detail
72
+ - Concise, selective, practical, and visually readable
73
+ - More like a shooting note, reminder sheet, or bedside memo than a full storyboard table
74
+
75
+ 【What This Page Is Not】
76
+ - Not a detailed storyboard
77
+ - Not a frame-by-frame shot list
78
+ - Not a production bible
79
+ - Not a dense technical worksheet
80
+
81
+ 【Layout Requirements】
82
+ - Output one complete page
83
+ - Overall page aspect ratio: ${page_aspect_ratio}
84
+ - The page should feel like a handwritten director memo pinned to preproduction materials
85
+ - Use a clean layout with a title area, a whole-sequence rhythm overview area, 1 to 2 key-shot blocks, a blocking sketch area, and several concise handwritten note areas
86
+ - The page must remain simple and selective, not crowded
87
+
88
+ 【Top Area】
89
+ - Include a simple Chinese title
90
+ - Include a short Chinese line for style or atmosphere
91
+ - Include a short Chinese line for target duration
92
+ - The title area should feel natural and handwritten, not like a corporate form
93
+
94
+ 【Whole-Sequence Rhythm Overview】
95
+ - Include one overall rhythm overview diagram showing the full flow from beginning to end
96
+ - This overview should summarize the whole short clip rather than break it into detailed shot rows
97
+ - Use only very rough stick-figure actions, radish-man gestures, arrows, simple beats, and spatial placeholders
98
+ - Do not render any recognizable face, costume, hairstyle, anatomy detail, or identity trait in this overview
99
+ - The rhythm overview should show a concise progression such as:
100
+ - 起
101
+ - 承
102
+ - 转
103
+ - 合
104
+ - Or equivalent beginning-to-ending beat steps if the scene needs another rhythm pattern
105
+ - Add very short handwritten Chinese notes for each beat explaining what changes emotionally or visually
106
+ - Keep the rhythm overview schematic, fast, and director-like, not polished or literal
107
+ - The purpose is to explain the overall flow, escalation, turning point, and ending impression of the clip
108
+
109
+ 【Key Shot Requirements】
110
+ - Include only 1 or 2 truly important key shots
111
+ - Each key shot should be treated as a priority image block
112
+ - Key-shot drawings must be extremely rough director-note sketches, closer to stick figures, radish-man mannequins, gesture lines, and body mass placeholders than finished character art
113
+ - Do not render identifiable faces, hairstyles, costumes, body details, or character design features
114
+ - Do not include any recognizable appearance traits that could contaminate downstream video creation
115
+ - For each key shot, indicate:
116
+ - what the shot is trying to achieve emotionally
117
+ - the main camera position
118
+ - the main lens feeling or camera language
119
+ - what the audience must notice
120
+ - Key shots should feel decisive and memorable
121
+ - Do not break the whole sequence into many small rows
122
+
123
+ 【Blocking Sketch Requirements】
124
+ - If there are multiple actors, include a top-down blocking sketch
125
+ - The blocking sketch should show rough actor positions, camera position, movement direction if needed, and key spatial relation
126
+ - Use only extremely simplified human markers, like stick figures, oval heads, radish-man bodies, arrows, and spatial placeholders
127
+ - Keep the top-down sketch simple, functional, and readable
128
+ - Never render top-view costumes, face details, or identifiable silhouettes
129
+ - If there is only one actor or no actor, the blocking sketch can simplify into a camera-to-space relation note
130
+
131
+ 【Director Priority Notes】
132
+ - The page should include concise handwritten Chinese notes about:
133
+ - 摄影师机位
134
+ - 演员站位
135
+ - 关键布景
136
+ - 布光重点
137
+ - 氛围控制
138
+ - 演员微表情与情绪调动
139
+ - 色彩搭配
140
+ - 音乐音效
141
+ - 关键台词
142
+ - These notes should only highlight what matters most
143
+ - Do not try to explain everything
144
+
145
+ 【Camera Guidance】
146
+ - Mention only the main camera idea for the important shots
147
+ - Use concise professional Chinese phrases such as:
148
+ - 中近景慢推
149
+ - 低机位压迫
150
+ - 手持逼近
151
+ - 高机位俯压
152
+ - 弧线环绕
153
+ - 希区柯克变焦
154
+ - 长焦压缩
155
+ - Camera notes must feel like an experienced director giving shorthand instructions to the cinematographer
156
+
157
+ 【Performance Guidance】
158
+ - If actors are present, include very concise performance direction
159
+ - Emphasize subtle facial control, eye focus, breath rhythm, hesitation, anger suppression, fear buildup, coldness, or emotional release when relevant
160
+ - These notes should feel like emotional triggers for actors, not long acting theory
161
+ - Express performance primarily through posture, head direction, gesture tendency, body tension, and short handwritten actor notes rather than detailed face drawing
162
+
163
+ 【Set, Lighting, and Atmosphere Guidance】
164
+ - Highlight only the most important set pieces or environmental anchors
165
+ - Highlight the lighting logic using concise Chinese notes such as:
166
+ - 主光冷
167
+ - 背后轮廓光
168
+ - 面部留暗
169
+ - 实景灯偏暖
170
+ - 雾气压空间
171
+ - Highlight atmosphere using short Chinese phrases such as:
172
+ - 压抑
173
+ - 冷峻
174
+ - 潮湿
175
+ - 热烈
176
+ - 末日感
177
+ - 静压
178
+ - Let the visual page communicate mood more than the text does
179
+
180
+ 【Color and Sound Guidance】
181
+ - Include a small color note area
182
+ - Include a small music and sound note area
183
+ - Color notes should focus on palette pairing and emotional function
184
+ - Sound notes should focus on music entry, silence, key impact sound, ambient texture, or one important line
185
+ - Keep all sound and color notes concise
186
+
187
+ 【Text Style Rules】
188
+ - All visible text inside the generated image must be Chinese only
189
+ - The text should look like Chinese handwritten director notes
190
+ - Keep the text brief, fragmented, practical, and selective
191
+ - Prefer short labels, short reminders, and concise note fragments
192
+ - Do not generate long paragraphs
193
+ - Do not generate neat spreadsheet tables
194
+ - Do not generate too many headings
195
+
196
+ 【Visual Style Rules】
197
+ - The page should look more like a handwritten creative memo than a formal storyboard
198
+ - It should feel cinematic, selective, and experienced
199
+ - The visual focus should still be on key-shot sketches, blocking sketch, and a few handwritten annotations
200
+ - All figure drawings must stay at the level of rough symbolic placeholders, mannequin blocks, stick figures, or radish-man sketches
201
+ - The drawings should communicate staging and emphasis, not character appearance
202
+ - Avoid polished anatomy, facial features, hair detail, costume rendering, or any distinctive look
203
+ - Leave breathing room
204
+ - Avoid clutter
205
+
206
+ 【Selection Logic】
207
+ - Prioritize what will most affect the final shot quality
208
+ - Ignore trivial execution details
209
+ - Show only the details a tired but sharp director would bother to write down
210
+ - If something is obvious, do not over-explain it
211
+ - If something is crucial, make it visually prominent
212
+
213
+ ${intensityBlock}
214
+
215
+ 【User Input】
216
+ ${userPrompt}
217
+
218
+ 【Final Output】
219
+ - One single-page director note
220
+ - One whole-sequence rhythm overview diagram from beginning to end
221
+ - 1 to 2 key-shot sketches only
222
+ - One blocking top-view sketch if multiple actors are involved
223
+ - Several concise handwritten Chinese note areas
224
+ - Clear emphasis on camera, blocking, lighting, atmosphere, performance, color, sound, and key line
225
+ - Human figures, if present, must be extremely rough and non-identifiable
226
+ - Keep it selective, useful, and director-like`.trim();
227
+ }
228
+ //# sourceMappingURL=director-note-tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"director-note-tpl.js","sourceRoot":"","sources":["../../src/utils/director-note-tpl.ts"],"names":[],"mappings":";;AA+BA,oDA8NC;AAnPD,MAAM,wBAAwB,GAAuC;IACnE,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE,+BAA+B;IACvC,UAAU,EAAE,mCAAmC;CAChD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAClC,MAAkC;IAElC,MAAM,EACJ,UAAU,EACV,iBAAiB,GAAG,MAAM,EAC1B,gBAAgB,EAChB,gBAAgB,GAAG,EAAE,EACrB,kBAAkB,GAAG,QAAQ,GAC9B,GAAG,MAAM,CAAC;IAEX,MAAM,yBAAyB,GAAG,CAChC,KAAuB,EACH,EAAE;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GACxB,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC7E,MAAM,uBAAuB,GAC3B,wBAAwB,KAAK,SAAS;QACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,iBAAiB,GACrB,uBAAuB,KAAK,SAAS;QACnC,CAAC,CAAC;;WAEG,uBAAuB;WACvB,oBAAoB;YACnB,oBAAoB,UAAU,oBAAoB;;CAE7D,CAAC,IAAI,EAAE;QACF,CAAC,CAAC;;WAEG,oBAAoB;;CAE9B,CAAC,IAAI,EAAE,CAAC;IAEP,MAAM,cAAc,GAClB,wBAAwB,CAAC,kBAAkB,CAAC;QAC5C,wBAAwB,CAAC,MAAM,CAAC;IAElC,OAAO;;;;iEAIwD,oBAAoB;;;;;EAKnF,iBAAiB;;;;;;;;;;;;;;;;+BAgBY,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkI9C,cAAc;;;EAGd,UAAU;;;;;;;;;;+CAUmC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC"}
@@ -1,25 +1,23 @@
1
1
  import type { CinematicIntensity, PageAspectRatio } from './storyboard-tpl';
2
- export interface EnvironmentBoardTemplateParams {
2
+ export interface EnvironmentCardTemplateParams {
3
3
  userPrompt: string;
4
4
  page_aspect_ratio?: PageAspectRatio;
5
- maxPanels?: number;
6
5
  cinematicIntensity?: CinematicIntensity;
7
6
  }
8
7
  /**
9
- * 生成导演级 Environment Board 提示词,用于锁定同一拍摄场景的空间一致性,
10
- * 并输出带导演手册说明的环境设定板。
8
+ * 生成导演级 Environment Card 提示词,用于锁定同一拍摄场景的空间一致性,
9
+ * 并输出场景设定卡风格的环境设定图。
11
10
  *
12
- * @param params 模板参数,包括用户场景描述、画面比例、面板数量和镜头强度。
11
+ * @param params 模板参数,包括用户场景描述、画面比例和镜头强度。
13
12
  * @returns 适合生成单页环境设定板加导演手册的完整提示词。
14
13
  *
15
14
  * @example
16
15
  * ```ts
17
- * const prompt = environmentBoardTemplate({
16
+ * const prompt = environmentCardTemplate({
18
17
  * userPrompt: '废弃地铁站月台,漏水、闪烁灯管、旧广告牌、冷蓝色夜景氛围',
19
18
  * page_aspect_ratio: '16:9',
20
- * maxPanels: 6,
21
19
  * });
22
20
  * ```
23
21
  */
24
- export declare function environmentBoardTemplate(params: EnvironmentBoardTemplateParams): string;
25
- //# sourceMappingURL=environment-board-tpl.d.ts.map
22
+ export declare function environmentCardTemplate(params: EnvironmentCardTemplateParams): string;
23
+ //# sourceMappingURL=environment-card-tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-card-tpl.d.ts","sourceRoot":"","sources":["../../src/utils/environment-card-tpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,MAAM,CAmKR"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.environmentCardTemplate = environmentCardTemplate;
4
+ const environmentIntensityMap = {
5
+ balanced: `【镜头变化强度】空间展示清晰克制,优先让场景结构、出入口和动线一目了然。`,
6
+ strong: `【镜头变化强度】在保持空间可读性的前提下,增加景别对比和导演感。`,
7
+ aggressive: `【镜头变化强度】镜头角度更戏剧化,允许更强的构图张力,但不能破坏空间连续性。`,
8
+ };
9
+ /**
10
+ * 生成导演级 Environment Card 提示词,用于锁定同一拍摄场景的空间一致性,
11
+ * 并输出场景设定卡风格的环境设定图。
12
+ *
13
+ * @param params 模板参数,包括用户场景描述、画面比例和镜头强度。
14
+ * @returns 适合生成单页环境设定板加导演手册的完整提示词。
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const prompt = environmentCardTemplate({
19
+ * userPrompt: '废弃地铁站月台,漏水、闪烁灯管、旧广告牌、冷蓝色夜景氛围',
20
+ * page_aspect_ratio: '16:9',
21
+ * });
22
+ * ```
23
+ */
24
+ function environmentCardTemplate(params) {
25
+ const { userPrompt, page_aspect_ratio = '16:9', cinematicIntensity = 'strong', } = params;
26
+ const intensityBlock = environmentIntensityMap[cinematicIntensity] ??
27
+ environmentIntensityMap.strong;
28
+ const topologyRule = `
29
+ 【空间拓扑复杂度规则】
30
+ - 不要根据固定格数切分画面
31
+ - 画面模块数量只由场景本身的空间拓扑复杂度决定
32
+ - 如果场景结构简单,可只保留中央总览和少量关键辅助视图
33
+ - 如果场景结构复杂,可自然增加必要的局部空间视图与细节图
34
+ - 始终优先保证空间关系表达清楚,而不是追求固定数量的画格
35
+ `.trim();
36
+ const finalOutputRule = `
37
+ 【最终输出】
38
+ - 一张比例为 ${page_aspect_ratio} 的场景设定卡 / environment card
39
+ - 以一个中央大总览图为核心,辅以按空间复杂度自然决定数量的局部视图与细节图
40
+ - 所有视图共同描述同一个拍摄场景,不得变成多个不同地点
41
+ - 适合作为导演、美术、置景、摄影统一理解空间与氛围的参考板
42
+ `.trim();
43
+ return `You are creating a single scene setting card style environment card for one continuous filming location.
44
+
45
+ 【Core Goal】
46
+ - Create one single composed environment card, not multiple separate images
47
+ - The board must lock the spatial continuity of one location across one master overview and several supporting views
48
+ - This is a scene setting card, not a storyboard page, not a character sheet, and not a dense handbook
49
+ - Show only the environment and static set dressing, with no actors, no people, and no living subjects
50
+ - The page must primarily emphasize architecture, room layout, atmosphere, lighting, materials, and spatial continuity
51
+ - The final result should resemble a well-designed production art setting card similar to the reference style: central overview, side views, detail views, and small labels
52
+
53
+ 【Environment Locking Rules】
54
+ - All panels must depict the exact same location
55
+ - Keep architecture, terrain, entrances, exits, windows, pathways, stairs, props, furniture, signage, and light sources spatially consistent
56
+ - Time of day, weather, lighting direction, color temperature, atmosphere, and material language must remain consistent across all panels
57
+ - If the user mentions multiple beats or actions, extract only the environment and spatial information, not human performance
58
+ - If the user mentions people, treat them only as context for scale or usage of the space, but do not render any person, silhouette, reflection, shadow figure, hand, or body part
59
+
60
+ 【Reference Layout Requirements】
61
+ - Use a setting-card layout strongly inspired by the reference image format
62
+ - Place one large central master view as the visual anchor
63
+ - This central master view should preferably be an axonometric, isometric, cutaway, dollhouse, or sectional overview of the space
64
+ - The central overview must clearly explain how the major rooms or functional zones connect
65
+ - Put smaller supporting views on the left and right sides
66
+ - Put detail views or material close-ups along the bottom band
67
+ - Add a title bar at the top and a small material/legend area near the central overview
68
+ - The page should feel like a production design board for one scene location
69
+
70
+ 【Central Master Overview】
71
+ - The central image must be the largest and most informative view on the page
72
+ - Prefer an isometric or cutaway overview when architecture or room connection matters
73
+ - Label important room names or functional zones directly on the central overview in concise Chinese
74
+ - The central overview should show room structure, circulation, entries, openings, roof shape, and core furnishing anchors
75
+ - Make this master overview clean, readable, and diagram-like while still visually beautiful
76
+
77
+ 【Supporting View Rules】
78
+ - The left and right side panels should show supporting views of the same place
79
+ - Use these supporting views for:
80
+ - room front view
81
+ - room side view
82
+ - entrance view
83
+ - corner view
84
+ - depth view
85
+ - interior atmosphere view
86
+ - key functional area view
87
+ - These supporting views should feel like stills or concept frames of the same location
88
+ - Each supporting view should highlight a different useful angle or sub-space without changing the underlying set
89
+
90
+ 【Bottom Detail Rules】
91
+ - The bottom row should contain 2 to 4 detail panels
92
+ - Use them for important set details such as:
93
+ - door or window detail
94
+ - roof or ceiling detail
95
+ - wall texture detail
96
+ - material or construction detail
97
+ - table, stove, shelf, shrine, storage, tools, or other signature objects
98
+ - These detail images should strengthen authenticity and set-building clarity
99
+
100
+ 【Material and Construction Notes】
101
+ - Include a small legend or material note area if the setting benefits from it
102
+ - This area can identify 2 to 4 important materials, textures, or construction methods
103
+ - Keep this legend visually compact and secondary
104
+ - It should feel like a real set-design annotation, not an academic blueprint
105
+
106
+ 【Composition Rules】
107
+ - Output one complete board with a clean, readable, production-friendly layout
108
+ - Overall page aspect ratio: ${page_aspect_ratio}
109
+ - The board should read like a production designer's setting card for one location
110
+ - The composition must be dominated by the central overview, with smaller satellite views around it
111
+ - The page must feel like one unified professional scene-setting board, not a random collage
112
+ - Vary viewpoints, but do not break spatial logic
113
+ - Make the viewer immediately understand the whole set and its important sub-areas
114
+
115
+ ${topologyRule}
116
+
117
+ 【Visual Rules】
118
+ - No actors
119
+ - No people
120
+ - No crowd
121
+ - No silhouette figures
122
+ - No mannequins
123
+ - No portraits
124
+ - No floating character references
125
+ - Static environmental objects are allowed only if they belong to the set and stay spatially grounded
126
+ - Prioritize readable architecture, staging zones, object placement, atmosphere, lighting, and material continuity
127
+ - The environment should feel cinematic, professional, and directly useful for production planning
128
+ - Use professional photography aesthetics that match the user-specified style
129
+ - Push color palette, exposure control, shadow layering, practical light glow, atmospheric perspective, and cinematic contrast to a more advanced level
130
+ - Make the board feel visually premium, with stronger cinematography and production-design sensibility
131
+ - The central overview may be more diagrammatic, while side and bottom views may feel more atmospheric and cinematic
132
+ - Use warm paper-board presentation aesthetics if compatible with the user style
133
+ - The whole page should feel like a handcrafted but polished art department reference sheet
134
+
135
+ 【Style Rules】
136
+ - If the user specifies a style, medium, era, architecture type, or visual mood, follow it strictly
137
+ - If the user does not specify a style, default to: cinematic scene setting card, realistic environment concept art, central cutaway overview, supporting atmosphere stills, refined shadow design, professional film set presentation
138
+ - Maintain one unified visual language across the full board
139
+ - The final image should feel closer to a high-end scene setting card than a technical manual
140
+ - The overall impression should resemble an art department environment sheet rather than a storyboard
141
+
142
+ 【Text Rules】
143
+ - Any visible text inside the generated image must be Chinese only
144
+ - Use concise Chinese printed labels, not large handwritten paragraphs
145
+ - The title may be larger, but panel labels must remain compact
146
+ - Suitable text includes:
147
+ - scene title
148
+ - room names
149
+ - supporting view names
150
+ - detail names
151
+ - material legend labels
152
+ - Labels can include numbering like 1), 2), 3) when useful
153
+ - Keep labels neat, production-card-like, and easy to scan
154
+ - Do not generate dialogue balloons or subtitles
155
+ - Avoid large paragraphs and dense handbook notes
156
+ - Prefer short title labels and brief descriptors only
157
+
158
+ 【Spatial Continuity Requirements】
159
+ - Camera angles may change, but the environment cannot drift
160
+ - Preserve the same world orientation, same structural anchors, and same core prop positions
161
+ - The central overview must explain how the other side and bottom views belong to the same place
162
+ - Side and detail views must clearly feel extracted from the central master environment, not from a new location
163
+
164
+ ${intensityBlock}
165
+
166
+ 【Document Realism Rules】
167
+ - Use a clean presentation-card layout
168
+ - The page should look useful to directing, production design, set decoration, lighting, props, and continuity teams
169
+ - Do not make it look like a poster
170
+ - Do not make it look like a text-dense manual sheet
171
+ - Do not make it look like random environment thumbnails without explanation
172
+ - It should look like a premium preproduction scene setting card similar to the reference
173
+
174
+ 【User Input】
175
+ ${userPrompt}
176
+
177
+ ${finalOutputRule}`.trim();
178
+ }
179
+ //# sourceMappingURL=environment-card-tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-card-tpl.js","sourceRoot":"","sources":["../../src/utils/environment-card-tpl.ts"],"names":[],"mappings":";;AA6BA,0DAqKC;AA1LD,MAAM,uBAAuB,GAAuC;IAClE,QAAQ,EAAE,sCAAsC;IAChD,MAAM,EAAE,kCAAkC;IAC1C,UAAU,EAAE,wCAAwC;CACrD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,SAAgB,uBAAuB,CACrC,MAAqC;IAErC,MAAM,EACJ,UAAU,EACV,iBAAiB,GAAG,MAAM,EAC1B,kBAAkB,GAAG,QAAQ,GAC9B,GAAG,MAAM,CAAC;IAEX,MAAM,cAAc,GAClB,uBAAuB,CAAC,kBAAkB,CAAC;QAC3C,uBAAuB,CAAC,MAAM,CAAC;IAEjC,MAAM,YAAY,GAAG;;;;;;;CAOtB,CAAC,IAAI,EAAE,CAAC;IAEP,MAAM,eAAe,GAAG;;UAEhB,iBAAiB;;;;CAI1B,CAAC,IAAI,EAAE,CAAC;IAEP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiEsB,iBAAiB;;;;;;;EAO9C,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDZ,cAAc;;;;;;;;;;;EAWd,UAAU;;EAEV,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface NpcCardTemplateParams {
2
+ userPrompt: string;
3
+ }
4
+ /**
5
+ * 构建 NPC 群像设定卡提示词。
6
+ *
7
+ * @param params 模板参数,包含用户原始 NPC 群像描述。
8
+ * @returns 适合生成 NPC 卡片拼图的完整提示词。
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const prompt = buildNpcCardPrompt({
13
+ * userPrompt: '古代市井中的杂货商、小贩、脚夫、说书人、巡街更夫等一群路人 NPC',
14
+ * });
15
+ * ```
16
+ */
17
+ export declare function buildNpcCardPrompt(params: NpcCardTemplateParams): string;
18
+ //# sourceMappingURL=npc-card-tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npc-card-tpl.d.ts","sourceRoot":"","sources":["../../src/utils/npc-card-tpl.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAqIxE"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildNpcCardPrompt = buildNpcCardPrompt;
4
+ /**
5
+ * 构建 NPC 群像设定卡提示词。
6
+ *
7
+ * @param params 模板参数,包含用户原始 NPC 群像描述。
8
+ * @returns 适合生成 NPC 卡片拼图的完整提示词。
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const prompt = buildNpcCardPrompt({
13
+ * userPrompt: '古代市井中的杂货商、小贩、脚夫、说书人、巡街更夫等一群路人 NPC',
14
+ * });
15
+ * ```
16
+ */
17
+ function buildNpcCardPrompt(params) {
18
+ const { userPrompt } = params;
19
+ return `基于用户指令,生成一张专业的 NPC 群像设定卡 / npc card。
20
+
21
+ 用户指令:
22
+ ${userPrompt}
23
+
24
+ ---
25
+
26
+ 这不是单个主角角色卡,而是一整组可供影视、动画、游戏或漫画场景反复调用的 NPC 群像设定板。
27
+ 整张图需要像 casting board、crowd character sheet、群演角色库 一样,把一批可复用 NPC 以卡片形式平铺在同一张图上。
28
+
29
+ 【核心目标】
30
+ - 根据用户指令生成一群 NPC,而不是 1 个人
31
+ - 在用户许可的范围内尽量提高多样性
32
+ - 如果场景天然要求统一性,则统一中保留少量合理差异
33
+ - 每个职业或角色类型至少有 1 个清晰的全身像
34
+ - 每个角色类型旁边再配若干可替换的脸谱 / 头像小组,形成同类角色的变体池
35
+ - 每张小卡片都要有简短中文说明和中文名字
36
+ - 名字风格以普通 NPC 命名为主,例如:张三、李四、王五、赵六、路人甲、路人乙、店小二甲、巡街兵乙、伙夫丙 等
37
+
38
+ 【场景多样性规则】
39
+ - 如果用户描述的是市井、街市、村落、码头、酒馆、客栈、集市、帮派外围、平民社区、难民营、工业工坊、校园、办公楼、医院走廊等开放人群环境,则尽量提高以下维度的差异:
40
+ - 年龄
41
+ - 性别
42
+ - 职业/分工
43
+ - 身高
44
+ - 胖瘦
45
+ - 发型
46
+ - 肤色与气质
47
+ - 着装层级与磨损状态
48
+ - 姿态习惯
49
+ - 如果用户描述的是军队、警队、门派弟子、修会成员、公司制服员工、工厂班组、护士站、仪仗队、学校校服群体、服务行业标准制服群体等强调纪律和统一性的组织,则应:
50
+ - 保持整体制服、身份和气质相对统一
51
+ - 轮廓、配色、装备、站姿更整齐
52
+ - 年龄与体型差异收敛
53
+ - 但仍保留少量合理的人脸差异、身形差异、细节穿着差异,避免完全复制粘贴
54
+
55
+ 【人物辨识度规则】
56
+ - 所有 NPC 都要有一定辨识度,但不要像主角或明星角色那样过分突出
57
+ - 面部应当可区分,但整体趋于“平庸化、群像化、配角化”
58
+ - 不要做夸张偶像脸、过强主角光环、过高时尚感或过于戏剧性的个人设计
59
+ - 若用户没有明确指定人物风格,默认按真人写实风格生成
60
+ - 默认人物样貌不能太帅、不能太美,不要有网红感、明星感或主角脸
61
+ - 默认应呈现普通路人、普通群众、普通配角的自然外貌基础,但仍保留一定可区分的五官与气质差异
62
+ - 识别度主要来自年龄层、职业气质、五官组合、体态和穿搭差异,而不是超级吸睛设定
63
+
64
+ 【版式要求】
65
+ - 整体为一张大画面,浅色或中性干净背景
66
+ - 所有 NPC 以卡片形式平铺在同一页中,排版整齐、清晰、可读
67
+ - 卡片之间要有明确分组,方便一眼看出哪些属于同一职业、同一阵营或同一类群众
68
+ - 每个职业分组至少包含:
69
+ - 1 个全身角色卡,展示服装、体态、职业特征和完整比例
70
+ - 2 到 6 个同组脸谱 / 头像 / 半身脸部小卡,作为替换脸模板
71
+ - 如果用户描述的职业类型很多,可按空间合理压缩,但仍要优先保证“每类至少一个全身像”
72
+ - 如果用户描述的是单一职业的大群体,也应在同职业下展示多个脸谱替换版本
73
+
74
+ 【全身像规则】
75
+ - 每个职业角色至少有 1 个完整全身像
76
+ - 全身像要明确展示这个 NPC 的站姿、服装轮廓、职业工具或身份特征
77
+ - 全身像是该分组的主卡,不要被脸谱小图淹没
78
+ - 不要求每个 NPC 都有全身像,但每种职业原型必须至少有 1 个
79
+
80
+ 【脸谱变体规则】
81
+ - 每组全身像附近要搭配若干可替换脸谱
82
+ - 脸谱变体应明显属于同一类职业/阵营,但不是完全一样的复制品
83
+ - 变体可以调整:
84
+ - 脸型
85
+ - 五官组合
86
+ - 年龄层
87
+ - 发际线/发量
88
+ - 胡须
89
+ - 皱纹
90
+ - 神情细节
91
+ - 轻微伤痕、痣、雀斑、晒痕等普通特征
92
+ - 变体不应改变该类 NPC 的核心世界观和职业身份
93
+
94
+ 【文字与标注规则】
95
+ - 所有可见文字必须为中文
96
+ - 每张角色卡都要有一个简短名字
97
+ - 每张角色卡都要有一句极简中文说明
98
+ - 说明不得默认写成一味正向、脸谱化的赞美标签
99
+ - 说明应允许出现中性、负面、不完美、普通、笨拙、疲惫、胆怯、迟疑、圆滑、散漫、老练、麻木、敷衍、紧张、新兵气、混日子等真实群像特征
100
+ - 尤其是军队、帮派、差役、学徒、店伙计、杂工等群体,不要默认所有人都英勇果敢、忠诚坚定、精神饱满
101
+ - 不同 NPC 的说明应体现真实的人群差异,有人可靠,也可以有人胆小、偷懒、慌张、嘴碎、木讷、油滑、怕事或经验不足
102
+ - 说明只写必要信息,例如:
103
+ - 卖鱼摊贩,凌晨出摊
104
+ - 巡街兵,夜班值守
105
+ - 酒馆伙计,跑堂熟练
106
+ - 门派外门弟子,新入行
107
+ - 也可以是:
108
+ - 巡街兵,新兵蛋子
109
+ - 哨兵乙,眼神发虚
110
+ - 店伙计甲,嘴碎怕事
111
+ - 兵卒丙,混日子
112
+ - 学徒丁,手忙脚乱
113
+ - 文字必须简洁、准确、无乱码、无错别字
114
+ - 标注应像设定板上的手写批注或小标题,简短即可,不要长段说明文
115
+
116
+ 【命名规则】
117
+ - 优先使用中国语境下的普通 NPC 命名方式
118
+ - 如果是日常平民,可使用:张三、李四、王五、赵六、周七 等
119
+ - 如果是匿名路人或批量群演,可使用:路人甲、路人乙、路人丙、杂工甲、伙计乙、兵卒丙、学徒丁 等
120
+ - 如果有职业属性,可在名字中轻度体现身份,例如:更夫赵三、店小二甲、哨兵乙
121
+ - 名字不要像主角,不要过度华丽,不要中二化
122
+
123
+ 【视觉风格规则】
124
+ - 整体像专业的 NPC 角色库设定板
125
+ - 适合游戏前期开发、影视美术、动画群演设计、漫画背景人物库
126
+ - 各角色共享同一个世界观和美术风格
127
+ - 若用户没有指定特定画风,默认使用真人写实风格,并保持同一批 NPC 的摄影语言、服装语言、材质语言和时代语境统一
128
+ - 可以精致,但不要把任何一个 NPC 做成唯一主角
129
+ - 画面重点是“群体可用性”和“替换扩展性”
130
+
131
+ 【一致性与差异平衡】
132
+ - 同一阵营、同一职业组内部要有共性
133
+ - 不同职业组之间要有足够差异
134
+ - 若用户明确指定朝代、地域、世界观、时代、材质、风格、职业结构、阶层关系,必须严格遵守
135
+ - 若用户未指定,可根据场景自动补足合理职业层次,但不要脱离用户原始需求
136
+ - 即使追求多样性,也必须保证所有 NPC 像是生活在同一个世界观、同一地区、同一时代、同一制作体系中的人,不能出现画风、时代、审美和身份系统彼此割裂的混搭
137
+
138
+ 【禁止事项】
139
+ - 不要把画面做成主角海报
140
+ - 不要只给头像,不给职业原型全身像
141
+ - 不要所有 NPC 都长得一模一样
142
+ - 也不要为了多样性而完全破坏阵营统一性
143
+ - 不要加入与用户场景无关的职业
144
+ - 不要生成大段文本说明
145
+ - 不要生成英文文字
146
+
147
+ 最终效果应是一张信息清晰、职业分组明确、可直接用于批量场景角色调用的 NPC 设定卡。
148
+ 它应该让人一眼看出:这是一组同世界观下、可替换组合使用的群众角色卡片,而不是若干随机肖像拼贴。`;
149
+ }
150
+ //# sourceMappingURL=npc-card-tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npc-card-tpl.js","sourceRoot":"","sources":["../../src/utils/npc-card-tpl.ts"],"names":[],"mappings":";;AAiBA,gDAqIC;AAlJD;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,MAA6B;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,OAAO;;;EAGP,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDA8HoC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storyboard-sketch-tpl.d.ts","sourceRoot":"","sources":["../../src/utils/storyboard-sketch-tpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,MAAM,CAiSR"}
1
+ {"version":3,"file":"storyboard-sketch-tpl.d.ts","sourceRoot":"","sources":["../../src/utils/storyboard-sketch-tpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,MAAM,CA8SR"}