@gitruck/cli 1.0.3 → 1.0.5

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.
@@ -1,119 +1,119 @@
1
- # 文生图 Prompt 模板(框架版)
2
-
3
- **铁律**:
4
- - **不**在 Prompt 里要求生图模型渲染中文字。汉字由**阶段二的 H5 工作台**贴字(用户用浏览器交互完成),图里**只留"气息性的软留白"**——不必做硬留白约束。
5
- - 总是输出**英文主版 + 中文辅版**两套。
6
- - 三种尺寸(16:9 / 4:3 / 3:4)**各出一套**,构图差异显式化:
7
- - **16:9**:横版,主体居中,两侧有气息的空间
8
- - **4:3**:横版饱满,主体可以顶到三边,对角留气口
9
- - **3:4**:竖版,主体在中段,上下舒展,便于"上下分飞"排字
10
- - 每套 Prompt 各占一段,不要三尺寸塞一个段落。
11
- - 每套都塞满"风格锚点 + 色板 + 材质"三件套,不要只写主体。
12
-
13
- **风格注入槽位**:框架对审美零预设,风格三件套里的「风格」与「材质」是两个注入槽位,值由**栏目封面风格资产**供给;无资产时用中性默认值。
14
-
15
- | 槽位 | 含义 | 中性默认值 | 栏目资产供值示例(示例、非默认) |
16
- |---|---|---|---|
17
- | 【风格锚点 A】 | 画风定调串 | cinematic illustration, clean composition | anime illustration style, 2D cel-shaded |
18
- | 【材质串 T】 | 质感/印刷肌理串 | subtle film grain | film grain, paper texture, halftone dots |
19
-
20
- ---
21
-
22
- ## 英文主版骨架(Midjourney / SD / Flux / Nano Banana)
23
-
24
- ```
25
- [主体 S 描写], [容器意象 C 融合描写], [情绪氛围 M],
26
- 【风格锚点 A】,
27
- [光线 L], [镜头 Cam], [色板 P],
28
- 【材质串 T】,
29
- composition: [留字位描述 R],
30
- negative: photorealistic face, 3D render, glossy skin, ugly anatomy, watermark, text, chinese characters, blurry
31
- --ar [比例] --style raw --stylize 250
32
- ```
33
-
34
- (负面提示里与画风相斥的项目也随栏目资产调整,如写实系栏目不排除 photorealistic。)
35
-
36
- ### 槽位填法
37
-
38
- | 槽位 | 填法 | 范例 |
39
- |---|---|---|
40
- | S | 角色外形 + 表情 + 姿态;或抽象意象描写 | a solitary young woman with silver hair, downcast eyes, wearing a dark coat / a lone astronaut silhouette |
41
- | C | 容器意象的视觉化,叠在主体身上/周围 | overlaid with translucent neural network patterns glitching / surrounded by colliding light particles forming a supernova |
42
- | M | 情绪形容 | quiet despair yet faint hope, suffocating tenderness, cold clinical detachment |
43
- | L | 光线 | rim light from behind, single hard light from upper left, god rays through dust |
44
- | Cam | 镜头 | close-up portrait, medium shot, wide cinematic shot, dutch angle |
45
- | P | 色板(由栏目风格资产的色板表供英译) | 见下「色板英译」 |
46
- | R | 留字位 | 软建议而非硬约束。例如 "edges with softer visual weight for typography overlay" / "central subject with breathing room on sides" |
47
- | 比例 | --ar 参数 | `--ar 16:9` / `--ar 4:3` / `--ar 3:4` |
48
-
49
- ### 色板英译
50
-
51
- 色板英译由**栏目风格资产的色板表自带**(每个色板代号配一条英文描述串);无资产时用中性描述(如 muted cool palette with a single warm accent)。格式示例:
52
-
53
- ```
54
- | 代号 | 英文描述 |
55
- |---|---|
56
- | P-x | steel blue and bone white, single warm amber accent |
57
- ```
58
-
59
- ### 完整范例(16:9,"过拟合"主题)——某栏目实例(风格锚点/色板为该栏目资产值)
60
-
61
- ```
62
- a lone young woman gazing away, her silhouette gradually dissolving into
63
- translucent glitching neural network lines, looping patterns repeating
64
- over her shoulders and hair, quiet despair with a distant trace of
65
- awakening, anime illustration style, 2D cel-shaded with thick line
66
- art, rim light from behind suggesting hidden warmth, medium close-up
67
- slightly off-center, steel blue and bone white palette with a single
68
- amber accent, film grain, paper texture, halftone noise on background,
69
- composition: subject centered with breathing room on both sides,
70
- edges with softer visual weight so typography can overlay later,
71
- negative: photorealistic face, 3D render, glossy skin, ugly anatomy,
72
- watermark, text, chinese characters, blurry, extra fingers, deformed hand
73
- --ar 16:9 --style raw --stylize 250
74
- ```
75
-
76
- ---
77
-
78
- ## 中文辅版骨架(即梦 / 可灵 / 通义万相 / 文心)
79
-
80
- 中文模型对自然语言段落式 Prompt 响应更好,不要生搬英文结构。
81
-
82
- ```
83
- 【画面主体】一位/一件/一个……,[外形 + 神态 + 姿势]。
84
- 【容器意象】画面中融合 [容器的视觉化描述],与主体叠压 / 环绕 / 映射在背景。
85
- 【情绪氛围】整体气氛 [情绪形容]。
86
- 【风格】[风格锚点 A 的中文表述],不要真人写真,不要 3D 渲染(排除项随栏目画风调整)。
87
- 【光线】[光线描述]。
88
- 【镜头】[镜头角度与景别]。
89
- 【色彩】主色 [主色],辅色 [辅色],点缀 [强调色](取值由栏目色板表供给)。
90
- 【质感】[材质串 T 的中文表述]。
91
- 【构图】主体 [位置];[明确留白区域],该区域绝对不要出现任何元素。
92
- 【排除】不要文字,不要中文字符,不要水印,不要 3D 光泽皮肤,不要多余手指。
93
- 【比例】[16:9 / 4:3 / 3:4]。
94
- ```
95
-
96
- ---
97
-
98
- ## 模型差异化调参
99
-
100
- | 平台 | 独有参数 / 注意事项 |
101
- |---|---|
102
- | Midjourney v7 | 加 `--style raw --stylize 150~400`;需要一致风格时加 `--sref <URL>` 引用一张基准图 |
103
- | Flux.1 (dev/pro) | 去掉 `--ar` 用 `aspect ratio: 16:9` 自然语言;风格锚点要更具体 |
104
- | Stable Diffusion XL | 用 `(keyword:1.3)` 给权重;负面提示单独输入 |
105
- | Nano Banana | 接受长段描述,可直接贴中文辅版;支持参考图输入 |
106
- | 即梦 / 可灵 | 参考图 + 中文辅版效果最佳,英文 Prompt 表现弱 |
107
- | 通义万相 | 对"不要 XX"这类排除描述响应很好,用中文辅版 |
108
-
109
- ---
110
-
111
- ## 常见 Prompt 失败与补救
112
-
113
- | 症状 | 补救 |
114
- |---|---|
115
- | 模型硬要画中文字,全是乱码 | 负面提示加 `text, chinese characters, letters, signs`,主提示加 `no text, empty space for text overlay` |
116
- | 脸的质感偏离栏目画风(如插画系被画成真人磨皮) | 主提示前置栏目的【风格锚点 A】并显式排除对立画风(如 `NOT photorealistic`);负面加对立项(如 `3D render, photograph, realistic skin`) |
117
- | 主体被容器意象吞掉,看不清 | 调整描述比例:"subject clearly visible, container motif as translucent overlay at 30% opacity" |
118
- | 太满没留字位 | 显式写 "composition: LEFT THIRD completely empty, solid color, no elements";可先用构图图参考(scribble / sketch)约束 |
119
- | 色板没出效果 | 把色板 HEX 值写进 Prompt:`dominant colors #XXXXXX and #XXXXXX`;或附参考色板图。精确色 token 由栏目风格资产自带,写进 Prompt 用 HEX |
1
+ # 文生图 Prompt 模板(框架版)
2
+
3
+ **铁律**:
4
+ - **不**在 Prompt 里要求生图模型渲染中文字。汉字由**阶段二的 H5 工作台**贴字(用户用浏览器交互完成),图里**只留"气息性的软留白"**——不必做硬留白约束。
5
+ - 总是输出**英文主版 + 中文辅版**两套。
6
+ - 三种尺寸(16:9 / 4:3 / 3:4)**各出一套**,构图差异显式化:
7
+ - **16:9**:横版,主体居中,两侧有气息的空间
8
+ - **4:3**:横版饱满,主体可以顶到三边,对角留气口
9
+ - **3:4**:竖版,主体在中段,上下舒展,便于"上下分飞"排字
10
+ - 每套 Prompt 各占一段,不要三尺寸塞一个段落。
11
+ - 每套都塞满"风格锚点 + 色板 + 材质"三件套,不要只写主体。
12
+
13
+ **风格注入槽位**:框架对审美零预设,风格三件套里的「风格」与「材质」是两个注入槽位,值由**栏目封面风格资产**供给;无资产时用中性默认值。
14
+
15
+ | 槽位 | 含义 | 中性默认值 | 栏目资产供值示例(示例、非默认) |
16
+ |---|---|---|---|
17
+ | 【风格锚点 A】 | 画风定调串 | cinematic illustration, clean composition | anime illustration style, 2D cel-shaded |
18
+ | 【材质串 T】 | 质感/印刷肌理串 | subtle film grain | film grain, paper texture, halftone dots |
19
+
20
+ ---
21
+
22
+ ## 英文主版骨架(Midjourney / SD / Flux / Nano Banana)
23
+
24
+ ```
25
+ [主体 S 描写], [容器意象 C 融合描写], [情绪氛围 M],
26
+ 【风格锚点 A】,
27
+ [光线 L], [镜头 Cam], [色板 P],
28
+ 【材质串 T】,
29
+ composition: [留字位描述 R],
30
+ negative: photorealistic face, 3D render, glossy skin, ugly anatomy, watermark, text, chinese characters, blurry
31
+ --ar [比例] --style raw --stylize 250
32
+ ```
33
+
34
+ (负面提示里与画风相斥的项目也随栏目资产调整,如写实系栏目不排除 photorealistic。)
35
+
36
+ ### 槽位填法
37
+
38
+ | 槽位 | 填法 | 范例 |
39
+ |---|---|---|
40
+ | S | 角色外形 + 表情 + 姿态;或抽象意象描写 | a solitary young woman with silver hair, downcast eyes, wearing a dark coat / a lone astronaut silhouette |
41
+ | C | 容器意象的视觉化,叠在主体身上/周围 | overlaid with translucent neural network patterns glitching / surrounded by colliding light particles forming a supernova |
42
+ | M | 情绪形容 | quiet despair yet faint hope, suffocating tenderness, cold clinical detachment |
43
+ | L | 光线 | rim light from behind, single hard light from upper left, god rays through dust |
44
+ | Cam | 镜头 | close-up portrait, medium shot, wide cinematic shot, dutch angle |
45
+ | P | 色板(由栏目风格资产的色板表供英译) | 见下「色板英译」 |
46
+ | R | 留字位 | 软建议而非硬约束。例如 "edges with softer visual weight for typography overlay" / "central subject with breathing room on sides" |
47
+ | 比例 | --ar 参数 | `--ar 16:9` / `--ar 4:3` / `--ar 3:4` |
48
+
49
+ ### 色板英译
50
+
51
+ 色板英译由**栏目风格资产的色板表自带**(每个色板代号配一条英文描述串);无资产时用中性描述(如 muted cool palette with a single warm accent)。格式示例:
52
+
53
+ ```
54
+ | 代号 | 英文描述 |
55
+ |---|---|
56
+ | P-x | steel blue and bone white, single warm amber accent |
57
+ ```
58
+
59
+ ### 完整范例(16:9,"过拟合"主题)——某栏目实例(风格锚点/色板为该栏目资产值)
60
+
61
+ ```
62
+ a lone young woman gazing away, her silhouette gradually dissolving into
63
+ translucent glitching neural network lines, looping patterns repeating
64
+ over her shoulders and hair, quiet despair with a distant trace of
65
+ awakening, anime illustration style, 2D cel-shaded with thick line
66
+ art, rim light from behind suggesting hidden warmth, medium close-up
67
+ slightly off-center, steel blue and bone white palette with a single
68
+ amber accent, film grain, paper texture, halftone noise on background,
69
+ composition: subject centered with breathing room on both sides,
70
+ edges with softer visual weight so typography can overlay later,
71
+ negative: photorealistic face, 3D render, glossy skin, ugly anatomy,
72
+ watermark, text, chinese characters, blurry, extra fingers, deformed hand
73
+ --ar 16:9 --style raw --stylize 250
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 中文辅版骨架(即梦 / 可灵 / 通义万相 / 文心)
79
+
80
+ 中文模型对自然语言段落式 Prompt 响应更好,不要生搬英文结构。
81
+
82
+ ```
83
+ 【画面主体】一位/一件/一个……,[外形 + 神态 + 姿势]。
84
+ 【容器意象】画面中融合 [容器的视觉化描述],与主体叠压 / 环绕 / 映射在背景。
85
+ 【情绪氛围】整体气氛 [情绪形容]。
86
+ 【风格】[风格锚点 A 的中文表述],不要真人写真,不要 3D 渲染(排除项随栏目画风调整)。
87
+ 【光线】[光线描述]。
88
+ 【镜头】[镜头角度与景别]。
89
+ 【色彩】主色 [主色],辅色 [辅色],点缀 [强调色](取值由栏目色板表供给)。
90
+ 【质感】[材质串 T 的中文表述]。
91
+ 【构图】主体 [位置];[明确留白区域],该区域绝对不要出现任何元素。
92
+ 【排除】不要文字,不要中文字符,不要水印,不要 3D 光泽皮肤,不要多余手指。
93
+ 【比例】[16:9 / 4:3 / 3:4]。
94
+ ```
95
+
96
+ ---
97
+
98
+ ## 模型差异化调参
99
+
100
+ | 平台 | 独有参数 / 注意事项 |
101
+ |---|---|
102
+ | Midjourney v7 | 加 `--style raw --stylize 150~400`;需要一致风格时加 `--sref <URL>` 引用一张基准图 |
103
+ | Flux.1 (dev/pro) | 去掉 `--ar` 用 `aspect ratio: 16:9` 自然语言;风格锚点要更具体 |
104
+ | Stable Diffusion XL | 用 `(keyword:1.3)` 给权重;负面提示单独输入 |
105
+ | Nano Banana | 接受长段描述,可直接贴中文辅版;支持参考图输入 |
106
+ | 即梦 / 可灵 | 参考图 + 中文辅版效果最佳,英文 Prompt 表现弱 |
107
+ | 通义万相 | 对"不要 XX"这类排除描述响应很好,用中文辅版 |
108
+
109
+ ---
110
+
111
+ ## 常见 Prompt 失败与补救
112
+
113
+ | 症状 | 补救 |
114
+ |---|---|
115
+ | 模型硬要画中文字,全是乱码 | 负面提示加 `text, chinese characters, letters, signs`,主提示加 `no text, empty space for text overlay` |
116
+ | 脸的质感偏离栏目画风(如插画系被画成真人磨皮) | 主提示前置栏目的【风格锚点 A】并显式排除对立画风(如 `NOT photorealistic`);负面加对立项(如 `3D render, photograph, realistic skin`) |
117
+ | 主体被容器意象吞掉,看不清 | 调整描述比例:"subject clearly visible, container motif as translucent overlay at 30% opacity" |
118
+ | 太满没留字位 | 显式写 "composition: LEFT THIRD completely empty, solid color, no elements";可先用构图图参考(scribble / sketch)约束 |
119
+ | 色板没出效果 | 把色板 HEX 值写进 Prompt:`dominant colors #XXXXXX and #XXXXXX`;或附参考色板图。精确色 token 由栏目风格资产自带,写进 Prompt 用 HEX |
@@ -1,99 +1,99 @@
1
- # 工作台实例化指南(workbench-guide)
2
-
3
- `assets/workbench-template.html` 是**中性活范本**:一份完整可运行的排字工作台(拖拽 / 方向键 / 数值 / 滚轮微调、逐尺寸与一键导出),实例化 = 逐替换位换成当期值。本文是替换位总表 + 工程注意 + 合规检查。
4
-
5
- ## 0. 分工提醒
6
-
7
- 模板的 **JS 引擎层不要动**:拖拽 / 方向键 / 滚轮 / 图层选中 / 舞台缩放(负 margin 占位)/ 导出(html2canvas)都是通用基建。要动的只有**数据与样式**:占位符、常量、DEFAULTS、CSS 变量与字体、图层组。
8
-
9
- ## 1. 替换位总表
10
-
11
- | 替换位 | 位置 | 说明 |
12
- |---|---|---|
13
- | `__BG_16_9__` / `__BG_4_3__` / `__BG_3_4__` | 各 `.cover` 的 `<img class="bg">` | 唯一的显式占位符:换成 `data:image/jpeg;base64,<压缩后>` |
14
- | `<title>` / `<h1>` / `.sub` / 3 个 `.pill` | 头部 | 当期 T1、英文副题、布局名 / 色板名 / 操作提示 |
15
- | `T1_KEYS` 常量 | script 顶部 | **T1 字数驱动的总开关**,见 §2 |
16
- | `#t1-text` 的 `value` 与 `maxlength`、`state.t1Text` | 右栏 + script | T1 初值**两处**必须一致 |
17
- | 各 `.cover` 内的 `char*` div 组 | 三个 cover | 数量与 `T1_KEYS` 一致、initial 文本逐字填 |
18
- | `t2 / t5 / t4` 初始文案 | cover 内 div **与** DEFAULTS `text` 双处 | 副标题(≤12 字钩子)/ 装饰英文 / 品牌戳(用户没给就 `visible:false` 且不编内容) |
19
- | `DEFAULTS` 整块 | script | 三尺寸 × 全图层默认坐标:从 layout-recipes 选配方起步,再按实际画面气口微调 |
20
- | `:root` 色板变量 | CSS | 见 §3 |
21
- | `.t1` 字体 / 描边 / 发光 | CSS **与** `applyT1Style()` | 发光 rgba **两处**(CSS 初值 + JS 滑杆模板串)必须同色 |
22
- | `#t1-color` 选项 / 发光滑杆 label 与默认值 | 右栏 | 按栏目色板给 2~3 档字色;发光名跟色板叫(银辉 / 琥珀 / …) |
23
- | 装饰件默认开关 | 右栏 checkbox + `applyInner/applyCorner` | 当期装饰件决策的落点 |
24
- | 尺寸 tab 的 `.desc` | 左栏 | 标注当期布局(如「左人右字」「上下分飞」) |
25
-
26
- ## 2. T1 字数驱动(防「四字机器」回潮)
27
-
28
- 模板 T1 图层数由 `T1_KEYS` 常量驱动。当期 T1 为 N 字时,改四处并保持一致:
29
- 1. `T1_KEYS = ['char1', …, 'charN']`;
30
- 2. 每个 `.cover` 内放 N 个 `char*` div(initial 逐字填);
31
- 3. `#t1-text` 的 `maxlength="N"` 与 `value`;
32
- 4. `DEFAULTS` 三尺寸各含 N 条 `char*` 坐标。
33
-
34
- `applyT1Text / renderCharBlocks / applyT1SizeAll` 都吃 `T1_KEYS`,不用改。`#t1-size-all` 滑杆的 min/max 按字号量级调(4 字大字 280~800;5 字竖排 150~700)。
35
-
36
- ## 3. 色板 CSS 变量(变量名固定、换值即换装)
37
-
38
- | 变量 | 语义 | 用途 |
39
- |---|---|---|
40
- | `--midnight` | 最深底色 | 画布底、T1 描边、色块 |
41
- | `--indigo` | 次深色 | 氛围渐变 |
42
- | `--amber` | **强调色**(语义槽位,不必是琥珀) | UI 强调、选中框、导出钮、T5/装饰可用 |
43
- | `--amber-soft` | 强调色柔化档 | hover、副文本 |
44
- | `--bone` | 浅色字底 | T1 默认字色、浅 UI 文本 |
45
-
46
- 值从**栏目封面风格资产的色板表**取;无资产用模板自带中性值。UI chrome 与画布共用这套变量——换值后整个工作台会跟着栏目气质走,这是特性不是 bug。
47
-
48
- ## 4. 附加文字图层(品牌戳 / 拟声词 / 任意)
49
-
50
- 图层机制对非 T1 图层是通用的(`applyLayers` 按 `ls.type !== 't1'` 走 text/visible 同步)。加一个图层四步:
51
- 1. `DEFAULTS` 三尺寸各加条目 `{type:'<自定义>', pos, text, left, top, size, visible}`;
52
- 2. 每个 `.cover` 加 `<div class="layer-text <类名>" data-layer-key="<key>">初值</div>`;
53
- 3. `SUB_KEYS` / `SUB_LABELS` 登记(右栏出微调 block);
54
- 4. CSS 加 `.<类名>` 样式(字体 / 颜色 / z-index;旋转等静态变换写在类里,不影响拖拽)。
55
-
56
- 已验证先例:品牌戳(手写体、可拖)、拟声词(手写体 + 静态旋转 + 强调色,「全画面唯一与强调色同源的字」这类点睛用法)。
57
-
58
- ## 5. 逐尺寸样式覆写(浅底反转墨色技法)
59
-
60
- 某一尺寸的背景局部是浅色(如竖版下段渐变成纸面)时,可把该尺寸的文字整体反转为深色:
61
-
62
- ```css
63
- /* 覆写 .t1 必须 !important —— applyT1Style() 会写内联样式 */
64
- .cover[data-size="3_4"] .t1 { color: #16233A !important; -webkit-text-stroke: 0 transparent !important; text-shadow: 0 2px 12px rgba(20,30,50,0.18) !important; }
65
- /* t2/t5/t4 无内联色,普通级联即可 */
66
- .cover[data-size="3_4"] .t2 { color: rgba(30,58,95,0.92); text-shadow: none; }
67
- ```
68
-
69
- 交付时必须告知用户:**该尺寸不受全局字色 / 发光滑杆影响**,是当期审美决策。
70
-
71
- ## 6. 装饰件片段
72
-
73
- - **薄内框**(装裱感):`.inner-frame { position:absolute; inset:50px; border:2px solid <色>; pointer-events:none; z-index:5; }` + 右栏开关 + `applyInner()`(模板已带,默认关)。浅底尺寸配 §5 覆写深色框。
74
- - **四角断线框**:模板已带(`.corner` ×4 + 开关,默认关)。
75
- - 胶带 / 撕痕 / REC 取景框等:按当期气质现写(绝对定位 + `pointer-events:none` + `z-index:5`,加进每个 `.cover`);**装饰件是显式决策**——用或不用都要说理由。
76
-
77
- ## 7. 背景图归位与压缩
78
-
79
- - **归位按宽高比**:`w/h ≥ 1.55 → 16:9`;`≥ 1.15 → 4:3`;否则 `3:4`。同档有多张时显式选择并告知备选(用户可用左栏「上传当前尺寸的背景图」随时换)。归不上任何档就问,别硬塞。
80
- - **压缩参数**(JPEG、渐进式):16:9 长边 ≤1280 / q82;4:3 ≤1600 / q78;3:4 ≤1400 / q78。纹理极密的图压不动属正常,别为体积牺牲画质到 q70 以下。
81
- - **体积红线**:整份 HTML **>1MB 必须回头降参**(浏览器打开明显变慢);>600KB 提示一句即可。
82
- - **纪律**:从**原路径**读用户图,压缩产物直接 base64 进 HTML;压缩脚本落**系统 temp、用完即删**;不留任何中间图片副本。
83
-
84
- ## 8. 工程注意(踩过的坑)
85
-
86
- - **缩放占位**:画布用 `transform: scale` 只缩视觉不缩布局,模板已用「`transform-origin: top left` + 负 margin」把占位收缩到缩放后尺寸——**别改回直接设小宽高**(会让外框阴影只包住左上角)。
87
- - **导出**:html2canvas 对发光 text-shadow 的还原略弱于屏显,用户觉得弱就把发光滑杆 +10~15% 再导;一键导出首次会触发浏览器「允许下载多个文件」授权,交付时提示。
88
- - **布局状态在内存**:刷新页面回默认坐标——交付时提醒「调好就导出,导出前别刷新」。
89
- - **字体**:模板经字体服务引入(含手写体),首次打开需联网;断网回退系统字体、不阻塞。
90
-
91
- ## 9. 实例化后合规检查(交付前必过)
92
-
93
- - [ ] 占位符零残留(全文检索 `__BG_` 无命中);
94
- - [ ] `T1_KEYS` 长度 = 各 cover 的 char div 数 = `maxlength` = DEFAULTS char 条目数;
95
- - [ ] T1 初值两处一致(`#t1-text` value 与 `state.t1Text`);
96
- - [ ] DEFAULTS 三尺寸齐、每尺寸含全部图层条目;
97
- - [ ] 发光 rgba 在 CSS 与 `applyT1Style()` 两处同色;
98
- - [ ] 默认坐标避开用户分发平台的安全区(如 B 站横版底部 1/10 进度条灰化区、右上 1/8 角标区);
99
- - [ ] 能验就在浏览器验一遍:控制台零报错、三尺寸切换正常、图层可拖。
1
+ # 工作台实例化指南(workbench-guide)
2
+
3
+ `assets/workbench-template.html` 是**中性活范本**:一份完整可运行的排字工作台(拖拽 / 方向键 / 数值 / 滚轮微调、逐尺寸与一键导出),实例化 = 逐替换位换成当期值。本文是替换位总表 + 工程注意 + 合规检查。
4
+
5
+ ## 0. 分工提醒
6
+
7
+ 模板的 **JS 引擎层不要动**:拖拽 / 方向键 / 滚轮 / 图层选中 / 舞台缩放(负 margin 占位)/ 导出(html2canvas)都是通用基建。要动的只有**数据与样式**:占位符、常量、DEFAULTS、CSS 变量与字体、图层组。
8
+
9
+ ## 1. 替换位总表
10
+
11
+ | 替换位 | 位置 | 说明 |
12
+ |---|---|---|
13
+ | `__BG_16_9__` / `__BG_4_3__` / `__BG_3_4__` | 各 `.cover` 的 `<img class="bg">` | 唯一的显式占位符:换成 `data:image/jpeg;base64,<压缩后>` |
14
+ | `<title>` / `<h1>` / `.sub` / 3 个 `.pill` | 头部 | 当期 T1、英文副题、布局名 / 色板名 / 操作提示 |
15
+ | `T1_KEYS` 常量 | script 顶部 | **T1 字数驱动的总开关**,见 §2 |
16
+ | `#t1-text` 的 `value` 与 `maxlength`、`state.t1Text` | 右栏 + script | T1 初值**两处**必须一致 |
17
+ | 各 `.cover` 内的 `char*` div 组 | 三个 cover | 数量与 `T1_KEYS` 一致、initial 文本逐字填 |
18
+ | `t2 / t5 / t4` 初始文案 | cover 内 div **与** DEFAULTS `text` 双处 | 副标题(≤12 字钩子)/ 装饰英文 / 品牌戳(用户没给就 `visible:false` 且不编内容) |
19
+ | `DEFAULTS` 整块 | script | 三尺寸 × 全图层默认坐标:从 layout-recipes 选配方起步,再按实际画面气口微调 |
20
+ | `:root` 色板变量 | CSS | 见 §3 |
21
+ | `.t1` 字体 / 描边 / 发光 | CSS **与** `applyT1Style()` | 发光 rgba **两处**(CSS 初值 + JS 滑杆模板串)必须同色 |
22
+ | `#t1-color` 选项 / 发光滑杆 label 与默认值 | 右栏 | 按栏目色板给 2~3 档字色;发光名跟色板叫(银辉 / 琥珀 / …) |
23
+ | 装饰件默认开关 | 右栏 checkbox + `applyInner/applyCorner` | 当期装饰件决策的落点 |
24
+ | 尺寸 tab 的 `.desc` | 左栏 | 标注当期布局(如「左人右字」「上下分飞」) |
25
+
26
+ ## 2. T1 字数驱动(防「四字机器」回潮)
27
+
28
+ 模板 T1 图层数由 `T1_KEYS` 常量驱动。当期 T1 为 N 字时,改四处并保持一致:
29
+ 1. `T1_KEYS = ['char1', …, 'charN']`;
30
+ 2. 每个 `.cover` 内放 N 个 `char*` div(initial 逐字填);
31
+ 3. `#t1-text` 的 `maxlength="N"` 与 `value`;
32
+ 4. `DEFAULTS` 三尺寸各含 N 条 `char*` 坐标。
33
+
34
+ `applyT1Text / renderCharBlocks / applyT1SizeAll` 都吃 `T1_KEYS`,不用改。`#t1-size-all` 滑杆的 min/max 按字号量级调(4 字大字 280~800;5 字竖排 150~700)。
35
+
36
+ ## 3. 色板 CSS 变量(变量名固定、换值即换装)
37
+
38
+ | 变量 | 语义 | 用途 |
39
+ |---|---|---|
40
+ | `--midnight` | 最深底色 | 画布底、T1 描边、色块 |
41
+ | `--indigo` | 次深色 | 氛围渐变 |
42
+ | `--amber` | **强调色**(语义槽位,不必是琥珀) | UI 强调、选中框、导出钮、T5/装饰可用 |
43
+ | `--amber-soft` | 强调色柔化档 | hover、副文本 |
44
+ | `--bone` | 浅色字底 | T1 默认字色、浅 UI 文本 |
45
+
46
+ 值从**栏目封面风格资产的色板表**取;无资产用模板自带中性值。UI chrome 与画布共用这套变量——换值后整个工作台会跟着栏目气质走,这是特性不是 bug。
47
+
48
+ ## 4. 附加文字图层(品牌戳 / 拟声词 / 任意)
49
+
50
+ 图层机制对非 T1 图层是通用的(`applyLayers` 按 `ls.type !== 't1'` 走 text/visible 同步)。加一个图层四步:
51
+ 1. `DEFAULTS` 三尺寸各加条目 `{type:'<自定义>', pos, text, left, top, size, visible}`;
52
+ 2. 每个 `.cover` 加 `<div class="layer-text <类名>" data-layer-key="<key>">初值</div>`;
53
+ 3. `SUB_KEYS` / `SUB_LABELS` 登记(右栏出微调 block);
54
+ 4. CSS 加 `.<类名>` 样式(字体 / 颜色 / z-index;旋转等静态变换写在类里,不影响拖拽)。
55
+
56
+ 已验证先例:品牌戳(手写体、可拖)、拟声词(手写体 + 静态旋转 + 强调色,「全画面唯一与强调色同源的字」这类点睛用法)。
57
+
58
+ ## 5. 逐尺寸样式覆写(浅底反转墨色技法)
59
+
60
+ 某一尺寸的背景局部是浅色(如竖版下段渐变成纸面)时,可把该尺寸的文字整体反转为深色:
61
+
62
+ ```css
63
+ /* 覆写 .t1 必须 !important —— applyT1Style() 会写内联样式 */
64
+ .cover[data-size="3_4"] .t1 { color: #16233A !important; -webkit-text-stroke: 0 transparent !important; text-shadow: 0 2px 12px rgba(20,30,50,0.18) !important; }
65
+ /* t2/t5/t4 无内联色,普通级联即可 */
66
+ .cover[data-size="3_4"] .t2 { color: rgba(30,58,95,0.92); text-shadow: none; }
67
+ ```
68
+
69
+ 交付时必须告知用户:**该尺寸不受全局字色 / 发光滑杆影响**,是当期审美决策。
70
+
71
+ ## 6. 装饰件片段
72
+
73
+ - **薄内框**(装裱感):`.inner-frame { position:absolute; inset:50px; border:2px solid <色>; pointer-events:none; z-index:5; }` + 右栏开关 + `applyInner()`(模板已带,默认关)。浅底尺寸配 §5 覆写深色框。
74
+ - **四角断线框**:模板已带(`.corner` ×4 + 开关,默认关)。
75
+ - 胶带 / 撕痕 / REC 取景框等:按当期气质现写(绝对定位 + `pointer-events:none` + `z-index:5`,加进每个 `.cover`);**装饰件是显式决策**——用或不用都要说理由。
76
+
77
+ ## 7. 背景图归位与压缩
78
+
79
+ - **归位按宽高比**:`w/h ≥ 1.55 → 16:9`;`≥ 1.15 → 4:3`;否则 `3:4`。同档有多张时显式选择并告知备选(用户可用左栏「上传当前尺寸的背景图」随时换)。归不上任何档就问,别硬塞。
80
+ - **压缩参数**(JPEG、渐进式):16:9 长边 ≤1280 / q82;4:3 ≤1600 / q78;3:4 ≤1400 / q78。纹理极密的图压不动属正常,别为体积牺牲画质到 q70 以下。
81
+ - **体积红线**:整份 HTML **>1MB 必须回头降参**(浏览器打开明显变慢);>600KB 提示一句即可。
82
+ - **纪律**:从**原路径**读用户图,压缩产物直接 base64 进 HTML;压缩脚本落**系统 temp、用完即删**;不留任何中间图片副本。
83
+
84
+ ## 8. 工程注意(踩过的坑)
85
+
86
+ - **缩放占位**:画布用 `transform: scale` 只缩视觉不缩布局,模板已用「`transform-origin: top left` + 负 margin」把占位收缩到缩放后尺寸——**别改回直接设小宽高**(会让外框阴影只包住左上角)。
87
+ - **导出**:html2canvas 对发光 text-shadow 的还原略弱于屏显,用户觉得弱就把发光滑杆 +10~15% 再导;一键导出首次会触发浏览器「允许下载多个文件」授权,交付时提示。
88
+ - **布局状态在内存**:刷新页面回默认坐标——交付时提醒「调好就导出,导出前别刷新」。
89
+ - **字体**:模板经字体服务引入(含手写体),首次打开需联网;断网回退系统字体、不阻塞。
90
+
91
+ ## 9. 实例化后合规检查(交付前必过)
92
+
93
+ - [ ] 占位符零残留(全文检索 `__BG_` 无命中);
94
+ - [ ] `T1_KEYS` 长度 = 各 cover 的 char div 数 = `maxlength` = DEFAULTS char 条目数;
95
+ - [ ] T1 初值两处一致(`#t1-text` value 与 `state.t1Text`);
96
+ - [ ] DEFAULTS 三尺寸齐、每尺寸含全部图层条目;
97
+ - [ ] 发光 rgba 在 CSS 与 `applyT1Style()` 两处同色;
98
+ - [ ] 默认坐标避开用户分发平台的安全区(如 B 站横版底部 1/10 进度条灰化区、右上 1/8 角标区);
99
+ - [ ] 能验就在浏览器验一遍:控制台零报错、三尺寸切换正常、图层可拖。
@@ -1,76 +1,76 @@
1
- ---
2
- name: gtrk-music-visualizer
3
- description: 音乐可视化成片——把一首歌通过同合云出成一条频谱可视化视频(可选背景/封面 + 模板/配色样式)。当用户想「把这首歌做成可视化视频 / 音乐可视化 / 频谱视频 / 歌曲配画面出片 / music visualizer / 给歌配个动态封面视频」时使用本 skill。凡涉及把一段音频做成频谱可视化成片,优先用本 skill 驱动 gtrk CLI 的 `music-visualizer` 命令,不要手搓 ffmpeg。
4
- ---
5
-
6
- # 音乐可视化(gtrk-music-visualizer)
7
-
8
- 把用户的一首歌,用 `gtrk` CLI 跑通「**主音频上传(+可选背景/封面各自上传)** → 云端出频谱可视化成片 → 拉回本地」,再把产物目录回给用户。**CLI 是手、你是脑。**
9
-
10
- > **本 skill 已含你需要的全部信息**(参数、取值、执行、排错),照它做即可。具体模板 id 与参数细节以云端 API 文档为准(本地不冻结模板列表)。
11
-
12
- ## 前置:CLI 装没装 + 体检
13
-
14
- 先跑 `gtrk doctor`:
15
- - **`gtrk` 找不到 / command not found** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试。
16
- - 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(一次性配 Key,交互式、需真终端,你别替他跑)。
17
- - 全绿就往下走。
18
-
19
- ## 一条命令
20
-
21
- > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
22
- > 成片等一切产物只落产物目录(缺省 = 音频同目录)或**用户显式指定的 `--out`**;
23
- > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
24
- > 临时文件一律放系统 temp 且**用完即删**(含中断 / 失败路径)。违者后果 = 用户系统盘被静默吃满(真机事故,非假设)。
25
-
26
- ```
27
- gtrk music-visualizer <音频> --template <模板id> [可选样式/文件] [--json]
28
- ```
29
-
30
- - `<音频>`:本地音频文件(mp3/wav/m4a/aac/flac/ogg/wma 等)。按其时长计费。
31
- - `--template <id>`:**必填**。可视化模板 id(如 `aurora`)。取值以云端 API 文档 / 服务端模板列表为准;用户没指定就问他要,或让他去文档挑一个。传错服务端会报错并列出可选集。
32
-
33
- ### 可选辅助文件(各自独立上传)
34
- - `--background <图或视频>`:背景素材,接受图片或视频。
35
- - `--cover <图>`:封面图,**仅接受图片**。
36
-
37
- ### 可选样式参数
38
- - `--track <曲名>` / `--artist <歌手>`:叠加到画面的文字。
39
- - `--resolution <WxH>`:输出分辨率,如 `1080x1920`(竖屏)、`1920x1080`(横屏)。缺省走服务端默认 1920x1080。
40
- - `--fps <30-60>`:帧率,缺省 30。
41
- - `--c1 <hex>`:频谱主色,十六进制如 `#ff0066`。缺省白色。
42
- - `--c2 <hex>`:频谱**第二色**——**给了它才是双色渐变**,不给就是 `--c1` 单色。想要炫一点的渐变频谱就配上 `--c2`。
43
- - `--blur <0-40>`:背景模糊强度,缺省 16。
44
-
45
- ### 通用
46
- - `--out <dir>`:产物目录(缺省 = 音频同目录下带时间戳的子目录)。
47
- - `--param k=v` / `--params-json '{...}'`:透传任意云端参数(覆盖优先级最高)。
48
- - `--json`:机读模式,stdout 只出结果 JSON。
49
- - `--reupload`:强制重新上传,忽略缓存。
50
-
51
- ## 常见用法
52
-
53
- - 最简:`gtrk music-visualizer ./song.mp3 --template aurora`
54
- - 竖屏 + 双色渐变 + 叠字:`gtrk music-visualizer ./song.mp3 --template aurora --resolution 1080x1920 --c1 #ff0066 --c2 #6600ff --track 夜曲 --artist 周杰伦`
55
- - 带自定义背景 + 封面:`gtrk music-visualizer ./song.mp3 --template aurora --background ./bg.jpg --cover ./cover.png`
56
-
57
- ## 配色引导(你帮用户想清楚)
58
-
59
- - 用户只说「配色炫一点 / 渐变」→ 给 `--c1` + `--c2` 两个色(双色渐变)。
60
- - 用户说「纯色 / 简洁」→ 只给 `--c1`。
61
- - 拿不准具体 hex:给常见搭配建议(如霓虹粉紫 `#ff0066`→`#6600ff`、青蓝 `#00e5ff`→`#0066ff`),或让用户给个大概色系你转 hex。
62
- - hex 必须是 `#RRGGBB` 或 `#RGB`;写错命令会在提交前报错。
63
-
64
- ## 读产物
65
-
66
- 完成后产物目录里有:
67
- - `<音频名>-visualizer.mp4`:成片。
68
- - `result.json`:`ok`/`files`/`taskId`;`ok=false` 时看 `errors`,可凭 `task.json` 的 `taskId` 稍后恢复,别急着重跑(重跑会重新计费)。
69
-
70
- ## 排错
71
-
72
- - **缺 `--template`**:必填,问用户要模板 id 或让他查云端 API 文档的模板列表。
73
- - **模板 id 报错**:服务端会列出可选集,照着改。
74
- - **`--cover` 报「仅接受图片」**:封面只能是图片;视频素材放 `--background`。
75
- - **样式参数报错**:`--fps` 30-60、`--blur` 0-40、`--resolution` 必须 `宽x高`、`--c1/--c2` 必须十六进制——按报错提示改。
76
- - **产物下载失败(ok=false)**:网络波动或链接过期;凭 `taskId` 恢复,不整条重跑。
1
+ ---
2
+ name: gtrk-music-visualizer
3
+ description: 音乐可视化成片——把一首歌通过同合云出成一条频谱可视化视频(可选背景/封面 + 模板/配色样式)。当用户想「把这首歌做成可视化视频 / 音乐可视化 / 频谱视频 / 歌曲配画面出片 / music visualizer / 给歌配个动态封面视频」时使用本 skill。凡涉及把一段音频做成频谱可视化成片,优先用本 skill 驱动 gtrk CLI 的 `music-visualizer` 命令,不要手搓 ffmpeg。
4
+ ---
5
+
6
+ # 音乐可视化(gtrk-music-visualizer)
7
+
8
+ 把用户的一首歌,用 `gtrk` CLI 跑通「**主音频上传(+可选背景/封面各自上传)** → 云端出频谱可视化成片 → 拉回本地」,再把产物目录回给用户。**CLI 是手、你是脑。**
9
+
10
+ > **本 skill 已含你需要的全部信息**(参数、取值、执行、排错),照它做即可。具体模板 id 与参数细节以云端 API 文档为准(本地不冻结模板列表)。
11
+
12
+ ## 前置:CLI 装没装 + 体检
13
+
14
+ 先跑 `gtrk doctor`:
15
+ - **`gtrk` 找不到 / command not found** → 让用户装 `npm i -g @gitruck/cli@latest`(需先有 Node.js),再重试。
16
+ - 报「缺 API Key」→ 让用户先跑一次 `gtrk init`(一次性配 Key,交互式、需真终端,你别替他跑)。
17
+ - 全绿就往下走。
18
+
19
+ ## 一条命令
20
+
21
+ > **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**:
22
+ > 成片等一切产物只落产物目录(缺省 = 音频同目录)或**用户显式指定的 `--out`**;
23
+ > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本;
24
+ > 临时文件一律放系统 temp 且**用完即删**(含中断 / 失败路径)。违者后果 = 用户系统盘被静默吃满(真机事故,非假设)。
25
+
26
+ ```
27
+ gtrk music-visualizer <音频> --template <模板id> [可选样式/文件] [--json]
28
+ ```
29
+
30
+ - `<音频>`:本地音频文件(mp3/wav/m4a/aac/flac/ogg/wma 等)。按其时长计费。
31
+ - `--template <id>`:**必填**。可视化模板 id(如 `aurora`)。取值以云端 API 文档 / 服务端模板列表为准;用户没指定就问他要,或让他去文档挑一个。传错服务端会报错并列出可选集。
32
+
33
+ ### 可选辅助文件(各自独立上传)
34
+ - `--background <图或视频>`:背景素材,接受图片或视频。
35
+ - `--cover <图>`:封面图,**仅接受图片**。
36
+
37
+ ### 可选样式参数
38
+ - `--track <曲名>` / `--artist <歌手>`:叠加到画面的文字。
39
+ - `--resolution <WxH>`:输出分辨率,如 `1080x1920`(竖屏)、`1920x1080`(横屏)。缺省走服务端默认 1920x1080。
40
+ - `--fps <30-60>`:帧率,缺省 30。
41
+ - `--c1 <hex>`:频谱主色,十六进制如 `#ff0066`。缺省白色。
42
+ - `--c2 <hex>`:频谱**第二色**——**给了它才是双色渐变**,不给就是 `--c1` 单色。想要炫一点的渐变频谱就配上 `--c2`。
43
+ - `--blur <0-40>`:背景模糊强度,缺省 16。
44
+
45
+ ### 通用
46
+ - `--out <dir>`:产物目录(缺省 = 音频同目录下带时间戳的子目录)。
47
+ - `--param k=v` / `--params-json '{...}'`:透传任意云端参数(覆盖优先级最高)。
48
+ - `--json`:机读模式,stdout 只出结果 JSON。
49
+ - `--reupload`:强制重新上传,忽略缓存。
50
+
51
+ ## 常见用法
52
+
53
+ - 最简:`gtrk music-visualizer ./song.mp3 --template aurora`
54
+ - 竖屏 + 双色渐变 + 叠字:`gtrk music-visualizer ./song.mp3 --template aurora --resolution 1080x1920 --c1 #ff0066 --c2 #6600ff --track 夜曲 --artist 周杰伦`
55
+ - 带自定义背景 + 封面:`gtrk music-visualizer ./song.mp3 --template aurora --background ./bg.jpg --cover ./cover.png`
56
+
57
+ ## 配色引导(你帮用户想清楚)
58
+
59
+ - 用户只说「配色炫一点 / 渐变」→ 给 `--c1` + `--c2` 两个色(双色渐变)。
60
+ - 用户说「纯色 / 简洁」→ 只给 `--c1`。
61
+ - 拿不准具体 hex:给常见搭配建议(如霓虹粉紫 `#ff0066`→`#6600ff`、青蓝 `#00e5ff`→`#0066ff`),或让用户给个大概色系你转 hex。
62
+ - hex 必须是 `#RRGGBB` 或 `#RGB`;写错命令会在提交前报错。
63
+
64
+ ## 读产物
65
+
66
+ 完成后产物目录里有:
67
+ - `<音频名>-visualizer.mp4`:成片。
68
+ - `result.json`:`ok`/`files`/`taskId`;`ok=false` 时看 `errors`,可凭 `task.json` 的 `taskId` 稍后恢复,别急着重跑(重跑会重新计费)。
69
+
70
+ ## 排错
71
+
72
+ - **缺 `--template`**:必填,问用户要模板 id 或让他查云端 API 文档的模板列表。
73
+ - **模板 id 报错**:服务端会列出可选集,照着改。
74
+ - **`--cover` 报「仅接受图片」**:封面只能是图片;视频素材放 `--background`。
75
+ - **样式参数报错**:`--fps` 30-60、`--blur` 0-40、`--resolution` 必须 `宽x高`、`--c1/--c2` 必须十六进制——按报错提示改。
76
+ - **产物下载失败(ok=false)**:网络波动或链接过期;凭 `taskId` 恢复,不整条重跑。