@ninkch/dsh-artcraft 0.3.2 → 0.3.4

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.
Files changed (26) hide show
  1. package/NOTICE.md +4 -69
  2. package/apps/catalog.json +14 -14
  3. package/index.js +1 -1
  4. package/package.json +1 -1
  5. package/skills/README.md +2 -1
  6. package/skills/artcraft-director-lens/SKILL.md +79 -0
  7. package/skills/artcraft-director-lens/references/director-styles/01_spielberg.md +81 -0
  8. package/skills/artcraft-director-lens/references/director-styles/02_hitchcock.md +81 -0
  9. package/skills/artcraft-director-lens/references/director-styles/03_kubrick.md +81 -0
  10. package/skills/artcraft-director-lens/references/director-styles/04_kurosawa.md +81 -0
  11. package/skills/artcraft-director-lens/references/director-styles/05_scorsese.md +81 -0
  12. package/skills/artcraft-director-lens/references/director-styles/06_fellini.md +81 -0
  13. package/skills/artcraft-director-lens/references/director-styles/07_bergman.md +81 -0
  14. package/skills/artcraft-director-lens/references/director-styles/08_tarkovsky.md +81 -0
  15. package/skills/artcraft-director-lens/references/director-styles/09_wong_kar_wai.md +81 -0
  16. package/skills/artcraft-director-lens/references/director-styles/10_nolan.md +81 -0
  17. package/skills/artcraft-director-lens/references/director-styles/11_villeneuve.md +81 -0
  18. package/skills/artcraft-director-lens/references/director-styles/12_fincher.md +81 -0
  19. package/skills/artcraft-director-lens/references/director-styles/13_refn.md +81 -0
  20. package/skills/artcraft-director-lens/references/director-styles/14_bi_gan.md +81 -0
  21. package/skills/artcraft-director-lens/references/director-styles/15_zhang_yimou.md +81 -0
  22. package/skills/artcraft-director-lens/references/director-styles/16_hou_hsiao_hsien.md +81 -0
  23. package/skills/artcraft-director-lens/references/director-styles/17_park_chan_wook.md +81 -0
  24. package/skills/artcraft-director-lens/references/director-styles/18_malick.md +81 -0
  25. package/skills/artcraft-director-lens/references/director-styles/19_michael_mann.md +81 -0
  26. package/skills/artcraft-director-lens/references/director-styles/20_coen_brothers.md +81 -0
package/NOTICE.md CHANGED
@@ -1,72 +1,7 @@
1
1
  # Third-party notices
2
2
 
3
- ## ArtCraft (PhotoCraft / FilmCraft / EffectCraft — getartcraft.com)
3
+ - **ArtCraft family apps** (getartcraft.com, built by the ArtCraft team): this plugin ships none
4
+ of their code — it drives the apps through their public automation surfaces (headless CLI +
5
+ JSON control channel). The apps' own license terms apply to the apps themselves.
4
6
 
5
- The ArtCraft applications that this plugin drives are distributed by the ArtCraft team under the
6
- **ArtCraft License (WIP)** — a "fair source" license. The text below is reproduced **verbatim** as
7
- published by the project (~ Brandon Thomas). This plugin contains **no ArtCraft code**; it only
8
- drives the apps' public automation surfaces (headless CLI + JSON control channel).
9
-
10
- ---
11
-
12
- ## ArtCraft License (WIP)
13
-
14
- (Warning: This isn't a real lawyery license full of legitimate legalese yet, but we'll take care of that ASAP.)
15
-
16
- ArtCraft is a form of "fair source" software. It's like free beer in that we give you the code, but there are a few small limitations on what you can do with it.
17
-
18
- First, what you can do with ArtCraft:
19
-
20
- You do not have to pay us to use ArtCraft. It's free.
21
-
22
- You can back up, copy, modify, compile, and use the code for your own private personal purposes.
23
-
24
- You can do anything you want with the media you create with ArtCraft. Generated assets are yours.
25
-
26
- What you can't do with ArtCraft:
27
-
28
- You cannot sell the ArtCraft software commercially (eg. as your own software).
29
-
30
- You cannot use the ArtCraft code to develop a competing business or product (eg. selling AI image and video tools).
31
-
32
- You cannot fork ArtCraft and remove ArtCraft community, donation links, or paid model services. We intend to make money to improve ArtCraft for everyone.
33
-
34
- You cannot use the ArtCraft name, logo, or mascot characters to promote your business without permission.
35
-
36
- This license means you can see what we're doing and not be at risk of having the rug pulled out from under you (eg. if our founders die, if our business collapses, if zombies or space aliens invade). It also gives you a really great way to customize the software or lend a hand in reporting (or even fixing) bugs.
37
-
38
- Our desire is to support artists, designers, and filmmakers. We want to help you build your own creative studios and businesses. We want to give you creative software you can use forever.
39
-
40
- ArtCraft is free. We do offer models available through us where you can pay us and support our development, but we also offer the ability for you to use other providers - and we'll keep adding more options so you have maximum flexibility.
41
-
42
- ### Our Promise
43
-
44
- All development and business plans will be communicated openly with the community.
45
-
46
- Except for minor test scripts or a few small places where we might need to use licensed 3rd party code, all of our engineering efforts will live in a single publicly available monorepo. You can see everything we do and even benefit from using it for personal use. We plan on building a lot more than what you see today, and you'll get all of it.
47
-
48
- We will not "rug pull" our users. If our business shuts down, gets acquired, or otherwise changes, the tools we create will always continue to function in the same way.
49
-
50
- If the business ends and our founders quit working in this space, we'll make it so the software transitions to an OSI-approved open source license. (We don't intend to quit!)
51
-
52
- ### Why not OSI Open Source?
53
-
54
- Philosophical answer: The OSI is an industry body led by hyperscalers. They poach from open source all the time, yet hyperscaler systems and code (AWS, GCP, YouTube, etc.) remain closed source. The tiniest nuggets are open, but the vast machinery surrounding it - systems, user behaviors, funnels, at-scale moneymakers - is totally closed.
55
-
56
- Practical answer: OSI licenses make it exceptionally challenging to grow big things commercially. And many of the licenses leave room for hyperscalers to reach in and cherry-pick pieces for themselves that they can better commercialize than the original authors.
57
-
58
- Then there's completely open source software that doesn't even attempt to be a business.
59
-
60
- We love software like Blender, but (1) developing ArtCraft is our full-time job, (2) we want to build something at scale that is much bigger than what you presently see, and (3) this will eventually become much more capital intensive than just writing code - we want to train novel models that work directly in conjunction with the user interface.
61
-
62
- If and when we do get to scale, we intend to keep every bit of our work in the open, including the models. Available for use, inspection, learning, fitting onto consumer GPU hardware, and more.
63
-
64
- Not having a way to make money is unfortunately what killed Stability.ai. Stability.ai walked so that others could eventually run. (Black Forest Labs, et al.) We're not egotistical enough to count ourselves in that party yet, but we believe in the original Stability.ai ethos and that their model can work with a few tweaks.
65
-
66
- We want to build big and incredible tools the world hasn't seen before. We want to keep them free and entirely source available. You don't have to pay us, but if you do, all of your investment goes right back into the engineering and the tools. We're writing code you can clone and keep.
67
-
68
- ### Inspiration
69
-
70
- We took inspiration for this from Fair Source, Fair Code, the Defold License, and Hacker News discussions. The folks at Obsidian have some pretty good thoughts on this as well.
71
-
72
- ~ Brandon Thomas
7
+ This repository itself is **Apache-2.0** — see [LICENSE](LICENSE).
package/apps/catalog.json CHANGED
@@ -325,21 +325,21 @@
325
325
  }
326
326
  ],
327
327
  "capabilityStats": {
328
- "note": "2026-10-21 实测(家族全量更新后:photocraft 0.11.1 / vectorcraft 0.14.0 / filmcraft 0.10.0 / lightcraft 0.10.0 / pdfcraft 0.10.1 / effectcraft 0.13.0 / designcraft 0.10.0 / wordcraft 0.9.0 / deckcraft 0.9.0 / gridcraft 0.9.0 / cadcraft 0.10.0 / soundcraft 0.10.0 / figcraft 0.8.0)。JSON 注册表入口(filmcraft / effectcraft / photocraft / gridcraft / wordcraft / figcraft 用 commands --json)为精确条目数,其余为 id 扫描值(近似)。用 artcraft_cli 跑 commands 可随时复核。",
328
+ "note": "2026-10-29 实测(家族全量更新后:photocraft 0.17.0 / vectorcraft 0.18.0 / filmcraft 0.14.0 / lightcraft 0.15.0 / pdfcraft 0.15.0 / effectcraft 0.18.0 / designcraft 0.14.0 / wordcraft 0.12.0 / deckcraft 0.12.0 / gridcraft 0.13.0 / cadcraft 0.14.0 / soundcraft 0.14.0 / figcraft 0.12.1)。JSON 注册表入口(filmcraft / effectcraft / photocraft / gridcraft / wordcraft / figcraft 用 commands --json)为精确条目数,其余为 id 扫描值(近似)。用 artcraft_cli 跑 commands 可随时复核。",
329
329
  "apps": {
330
- "photocraft": { "commands": 918, "topFamilies": ["filter 62(gallery 47 / blur 11 / stylize 9 / distort 9 / render 9)", "image.adjustments 9", "layer 26", "edit 31", "select 19", "paint 12", "brush 13", "gradient 12", "type 9", "shape 9", "path 9", "pattern 10", "file.automate 18", "channel 18", "actions 14", "swatches 9", "history 3", "slice 6", "jobs 2", "plugin 5"] },
331
- "vectorcraft": { "commands": 401, "topFamilies": ["object 71", "perspective 24", "select 18", "text 10", "variable 9", "brush 9", "library 9", "print 9", "pdf.preset 5", "flattener 6", "swatch 15", "document 12", "layer 11", "path 11", "symbol 10", "dataset 10", "shaper 4"] },
332
- "filmcraft": { "commands": 701, "topFamilies": ["graphics 82", "clip 57", "file 57", "timeline 56", "sequence 45", "project 40", "edit 39", "multicam 35", "markers 32", "trim 24", "captions 22", "mixer 20", "export 19", "effects 16", "transcript 14", "masks 12", "essentialSound 9", "lumetri 7", "tts 7", "lut 4"] },
333
- "lightcraft": { "commands": 227, "developControls": 122, "topFamilies": ["print 17(打印版式模板:cell/layout/template)", "slideshow.export", "library 20", "faces 17", "denoise 16", "develop 16(122 个控制 / 14 分区)", "photo 14", "mask 12", "keyword 12", "preset 9", "crop 6", "stack 6"] },
334
- "pdfcraft": { "commands": 77, "topFamilies": ["edit 13", "page 10", "measure 7", "a11y 5", "export 4", "ocr 3", "form 3", "comment 3", "protect 2", "sign 2", "create 1(新建 PDF)", "text_edit 1"] },
335
- "effectcraft": { "commands": 731, "effects": 307, "topFamilies": ["layer 121", "view 78", "file 61", "keys 36", "comp 31", "edit 27", "track 22", "essential 22", "renderQueue 20", "effect 19", "camera 19", "prop 18(0.13.0 起属性读写统一走 prop.get/set,effect.setParam 已移除)", "mask 17", "time 17", "roto 14", "text 13", "puppet 10", "face 5(0.13 新增)", "learn 5(0.13 新增)"], "exportFormats": ["H264", "Hevc", "Av1", "ProRes", "Uncompressed", "WebM", "PngSequence", "JpegSequence", "TiffSequence", "ExrSequence", "Gif", "Wav", "Aiff"], "expressions": true, "scripting": true },
336
- "designcraft": { "commands": 309, "topFamilies": ["object 22", "style 17", "file 15", "transform 10", "data 10", "type 10", "toc 3(目录)", "footnote 4(脚注)", "xref 3(交叉引用)", "index 3(索引)", "preflight.run(印前检查)", "condition 5(条件样式)", "flex 5", "layout 7", "book 7", "article 6"] },
337
- "wordcraft": { "commands": 633, "topFamilies": ["para 28", "format 25", "file 18", "review 16", "caret 7", "edit 10", "outline 8", "layout 7", "fields 6", "arrange 9", "draw 9", "canvas 4", "chart 3", "shape 6", "equation 15", "insert 15", "table 14", "styles 11", "references 10"] },
338
- "deckcraft": { "commands": 209, "topFamilies": ["format 32", "shape 19", "slide 15", "file 13", "animation 10", "text 10", "picture 9", "comment 7", "review 7", "table 5", "chart 3", "design 5", "transition 4", "handout 1", "master 2"] },
339
- "gridcraft": { "commands": 341, "topFamilies": ["home 12", "pivot 11", "insert 10", "data 10", "cell 2", "range 1", "table 3", "object 2", "link 1", "draw 4", "arrange 3", "review 2", "formulas 5", "chart 3", "window 1"] },
340
- "cadcraft": { "commands": 139, "topFamilies": ["table 11", "arc 10", "zoom 9", "dimstyle 7", "blocks 6", "grip 6", "layout 6", "layerstate 5", "vports 5", "circle 5", "dimtedit 5", "compare 2", "quickcalc 1"] },
341
- "soundcraft": { "commands": 480, "topFamilies": ["view 96", "edit 93", "track 65", "event 35", "options 35", "clip 31", "mix 29", "setup 20", "file 17", "transport 13", "session 11(含 audio_health)", "automation 10", "midi 6(0.10 新增)", "video 3(0.10 新增)", "audiosuite 1"] },
342
- "figcraft": { "commands": 569, "topFamilies": ["text 52", "view 48", "vector 40", "object 27", "tool 21", "select 21", "component 21", "collab 20", "file 20", "proto 20", "library 18", "variable 18", "edit 15", "comment 14", "plugin 11", "style 10"] }
330
+ "photocraft": { "commands": 945, "topFamilies": ["filter 62(gallery 47 / blur 11 / stylize 9 / distort 9 / render 9)", "image.adjustments 9", "layer 26", "edit 31", "select 19", "paint 12", "brush 13", "gradient 12", "type 9", "shape 9", "path 9", "pattern 10", "file.automate 18", "channel 18", "actions 14", "swatches 9", "slice 6", "select.refineEdge(0.15 参数化选择与遮罩)"] },
331
+ "vectorcraft": { "commands": 412, "topFamilies": ["object 71", "perspective 24", "select 18", "text 10", "variable 9", "brush 9", "library 9", "print 9", "pdf.preset 5", "flattener 6", "swatch 15", "document 12", "layer 11", "path 11", "symbol 10", "dataset 10", "shaper 4"] },
332
+ "filmcraft": { "commands": 710, "topFamilies": ["graphics 82", "clip 57", "file 57", "timeline 56", "sequence 45", "project 40", "edit 39", "multicam 35", "markers 32", "trim 24", "captions 22", "mixer 20", "export 19", "effects 16", "transcript 14", "masks 12", "essentialSound 9", "lumetri 7", "tts 7", "lut 4"] },
333
+ "lightcraft": { "commands": 229, "developControls": 122, "topFamilies": ["print 17(打印版式模板:cell/layout/template)", "slideshow.export", "library 20", "faces 17", "denoise 16", "develop 16(122 个控制 / 14 分区)", "photo 14", "mask 12", "keyword 12", "preset 9", "crop 6", "stack 6"] },
334
+ "pdfcraft": { "commands": 80, "topFamilies": ["edit 13", "page 10", "measure 7", "a11y 5", "export 4", "ocr 3", "form 3", "comment 3", "protect 2", "sign 2", "create 1(新建 PDF)", "text_edit 1"] },
335
+ "effectcraft": { "commands": 735, "effects": 307, "topFamilies": ["layer 121", "view 78", "file 61", "keys 36", "comp 31", "edit 27", "track 22", "essential 22", "renderQueue 20", "effect 19", "camera 19", "prop 18(0.13.0 起属性读写统一走 prop.get/set,effect.setParam 已移除)", "mask 17", "time 17", "roto 14", "text 13", "puppet 10", "face 5(0.13 新增)", "learn 5(0.13 新增)"], "exportFormats": ["H264", "Hevc", "Av1", "ProRes", "Uncompressed", "WebM", "PngSequence", "JpegSequence", "TiffSequence", "ExrSequence", "Gif", "Wav", "Aiff"], "expressions": true, "scripting": true },
336
+ "designcraft": { "commands": 321, "topFamilies": ["object 22", "style 17", "file 15", "transform 10", "data 10", "type 10", "toc 3(目录)", "footnote 4(脚注)", "xref 3(交叉引用)", "index 3(索引)", "preflight.run(印前检查)", "condition 5(条件样式)", "flex 5", "layout 7", "book 7", "article 6"] },
337
+ "wordcraft": { "commands": 648, "topFamilies": ["para 28", "format 25", "file 18", "review 16", "caret 7", "edit 10", "outline 8", "layout 7", "fields 6", "arrange 9", "draw 9", "canvas 4", "chart 3", "shape 6", "equation 15", "insert 15", "table 14", "styles 11", "references 10"] },
338
+ "deckcraft": { "commands": 210, "topFamilies": ["format 32", "shape 19", "slide 15", "file 13", "animation 10", "text 10", "picture 9", "comment 7", "review 7", "table 5", "chart 3", "design 5", "transition 4", "handout 1", "master 2"] },
339
+ "gridcraft": { "commands": 355, "topFamilies": ["home 12", "pivot 11", "insert 10", "data 10", "cell 2", "range 1", "table 3", "object 2", "link 1", "draw 4", "arrange 3", "review 2", "formulas 5", "chart 3", "window 1"] },
340
+ "cadcraft": { "commands": 146, "topFamilies": ["table 11", "arc 10", "zoom 9", "dimstyle 7", "blocks 6", "grip 6", "layout 6", "layerstate 5", "vports 5", "circle 5", "dimtedit 5", "compare 2", "quickcalc 1"] },
341
+ "soundcraft": { "commands": 482, "topFamilies": ["view 96", "edit 93", "track 65", "event 35", "options 35", "clip 31", "mix 29", "setup 20", "file 17", "transport 13", "session 11(含 audio_health)", "automation 10", "midi 6(0.10 新增)", "video 3(0.10 新增)", "audiosuite 1"] },
342
+ "figcraft": { "commands": 615, "topFamilies": ["text 52", "view 48", "vector 40", "object 27", "tool 21", "select 21", "component 21", "collab 20", "file 20", "proto 20", "library 18", "variable 18", "edit 15", "comment 14", "plugin 11", "style 10"] }
343
343
  }
344
344
  }
345
345
  }
package/index.js CHANGED
@@ -55,7 +55,7 @@ import crypto from 'node:crypto';
55
55
  import { fileURLToPath } from 'node:url';
56
56
 
57
57
  const NAME = 'artcraft';
58
- const VERSION = '0.3.2';
58
+ const VERSION = '0.3.4';
59
59
  const HERE = path.dirname(fileURLToPath(import.meta.url));
60
60
 
61
61
  const BINS = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ninkch/dsh-artcraft",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "type": "module",
5
5
  "description": "Drive the open-source ArtCraft studio suite (13 family apps: PhotoCraft, VectorCraft, FilmCraft, LightCraft, PdfCraft, EffectCraft, DesignCraft, WordCraft, DeckCraft, GridCraft, CADCraft, SoundCraft, FigCraft) from DeepSeek Harness: agent tools, a same-origin HTTP API, a bundled craft skill pack, and plugins-page status with self-update.",
6
6
  "keywords": [
package/skills/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ArtCraft craft skill pack (bundled with @ninkch/dsh-artcraft)
2
2
 
3
- Eleven skills ship inside this plugin. They are registered through the plugin's own skill
3
+ Twelve skills ship inside this plugin. They are registered through the plugin's own skill
4
4
  provider (`@ninkch/dsh-artcraft/skills`) and load on demand — you never install them separately.
5
5
 
6
6
  Skill bodies are written in Chinese (the maintainer's language and the language of the rest of the
@@ -20,6 +20,7 @@ so you know which skill to open.
20
20
  | `artcraft-film-study` | Shot-by-shot film study: 8-step method, shot-table schema, emotion-score criteria, traceable conclusions, report template | Analysing an existing film (review/research) |
21
21
  | `artcraft-batch-pipeline` | Batch and pipeline work: headless batch formats, HTTP job queue, in-app queues, proxies and cache, media health/relink, incremental and resumable runs, retries, QC hook-up | Dozens/hundreds of files, a whole season |
22
22
  | `artcraft-multicam` | Multicam: build sources, align, grid browsing, `selectCamera*` vs `cutToCamera*`, live switching, audio-follows-video, cross-camera matching, switching rhythm | Interviews, concerts, live cuts |
23
+ | `artcraft-director-lens` | 20 director lenses (Spielberg…Wong Kar-wai, Zhang Yimou, Bi Gan…): each maps a director's working method to ArtCraft parameters — ASL targets, transition bias, light ratio, palette→mixer channels, sound rules, QC hooks. | "Cut/grade this like <director>", style bible references a lens |
23
24
 
24
25
  ## Reference files (loaded with a skill)
25
26
 
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: artcraft-director-lens
3
+ description: 导演透镜——把 20 位知名导演的工作方式(王家卫、张艺谋、诺兰、芬奇、毕赣、希区柯克、库布里克、黑泽明、王家卫、朴赞郁…)翻译成 ArtCraft 家族的可执行参数。当用户点名某位导演、要求"XX 风格"、项目美学圣经引用某个透镜,或需要为段落选择风格参照时加载。每次只挂一个透镜;透镜参数(镜长/转场偏好/光比/色板/颗粒)映射到 FilmCraft 时间线与 Lumetri、LightCraft develop、SoundCraft 混音、EffectCraft 机位。
4
+ ---
5
+
6
+ # 导演透镜(Director Lenses)
7
+
8
+ **一次只用一个透镜。** 混用两位导演 = 风格不连贯。透镜优先级:**导演透镜 > 题材手册 > 项目基调 > 技能默认**——用户点名导演时,透镜覆盖其余一切风格默认值;用户点了两位,选更贴合本场戏剧核心的那位,一句话说明理由,并写明另一位会改掉什么。
9
+
10
+ ## 一、路由:点名导演 → 读哪个文件
11
+
12
+ `references/director-styles/` 下 20 个模块,按导演加载(**一次只读一个**,不要全读):
13
+
14
+ | 导演 | 文件 | 导演 | 文件 |
15
+ |---|---|---|---|
16
+ | 斯皮尔伯格 Spielberg | `01_spielberg.md` | 毕赣 Bi Gan | `14_bi_gan.md` |
17
+ | 希区柯克 Hitchcock | `02_hitchcock.md` | 张艺谋 Zhang Yimou | `15_zhang_yimou.md` |
18
+ | 库布里克 Kubrick | `03_kubrick.md` | 侯孝贤 Hou Hsiao-hsien | `16_hou_hsiao_hsien.md` |
19
+ | 黑泽明 Kurosawa | `04_kurosawa.md` | 朴赞郁 Park Chan-wook | `17_park_chan_wook.md` |
20
+ | 斯科塞斯 Scorsese | `05_scorsese.md` | 马力克 Malick | `18_malick.md` |
21
+ | 费里尼 Fellini | `06_fellini.md` | 迈克尔·曼 Michael Mann | `19_michael_mann.md` |
22
+ | 伯格曼 Bergman | `07_bergman.md` | 科恩兄弟 Coen Brothers | `20_coen_brothers.md` |
23
+ | 塔可夫斯基 Tarkovsky | `08_tarkovsky.md` | 两两对比选型 | `example_comparisons.md` |
24
+ | 王家卫 Wong Kar-wai | `09_wong_kar_wai.md` | 模块格式说明 | `README.md` |
25
+ | 诺兰 Nolan | `10_nolan.md` | 维伦纽瓦 Villeneuve | `11_villeneuve.md` |
26
+ | 芬奇 Fincher | `12_fincher.md` | 雷弗恩 Refn | `13_refn.md` |
27
+
28
+ **没有的导演不要默默替换**:一句话说明没有该模块,指出最近似模块与差异轴(如"王家卫:同为氛围但叙事碎片化"),然后按用户自己的参考临时拼一个透镜,**标注 ad-hoc**。静默替换比没有更糟。
29
+
30
+ 每个模块的结构:**风格参数 YAML**(机器可读)→ 反例对比("这不是什么")→ 叙事/镜头/光影/剪辑/声音/表演方法 → 可迁移拍摄清单 → **ArtCraft 落点**(参数到家族命令的映射)。
31
+
32
+ ## 二、风格参数 → ArtCraft 命令映射总表
33
+
34
+ 读到任何透镜的 YAML 后,按下表落到命令。**逐参数落,不要只落影调**——透镜只到分镜不到调色,出片就"不像"。
35
+
36
+ | YAML 参数 | ArtCraft 落点 |
37
+ |---|---|
38
+ | `editing.avg_shot_length_s`(如 "1.5-4") | **FilmCraft 时间线**:单镜目标时长 → `timeline.place` + `timeline.trim`;段落密度按 `artcraft-edit-rhythm` 的节奏档位 |
39
+ | `editing.transition_bias` | `sequence.applyVideoTransition {effect}`(偏好列表内的转场);批量 `trim.applyDefaultTransition` |
40
+ | `editing.coverage_style` | 分镜设计约束(写入分镜表,不落单条命令) |
41
+ | `lighting.key_ratio`(如 "6:1-10:1") | **LightCraft `light.contrast`** 目标区间 + `grading.shadows/highlights` 分离;FilmCraft `lumetri.setSection wheels` |
42
+ | `lighting.motivation`(如 practical) | 光源动机 → LightCraft 分区调色方向 + EffectCraft 光效层 |
43
+ | `lighting.signature` | 原文光线配方 → LightCraft `develop.set` 逐项 |
44
+ | `palette.dominant/accent` | LightCraft **`mixer.<色>.*`** 定点修色(通道映射:green/magenta/red/orange(暖金)/aqua(青)/blue/purple/yellow)+ `grading.*` 偏色 |
45
+ | `palette.saturation/contrast` | `color.saturation` + `light.contrast` 档位 |
46
+ | 质感词(颗粒/胶片) | LightCraft `grain.amount/size/roughness` |
47
+ | `camera.prefer/avoid` + `lens_kit_mm` | EffectCraft `camera.orbit/pan/dolly`、`view.3d.*` 机位;2D 素材 `layer.*`+`keys.easyEase*` |
48
+ | `aspect_bias` | FilmCraft `file.newSequence {width,height}` / `sequence.settings` |
49
+ | `sound.music/ambience/dialogue` | FilmCraft `essentialSound.setType` + `set`;SoundCraft `mix.*` |
50
+ | `negative_prompt_adds` | **`artcraft_qc` 复核项**:逐项确认画面/声音里"不应出现"的东西确实没出现 |
51
+ | `performance.register` | 剪辑选择导向(反应镜头停留时长、切点松紧) |
52
+
53
+ ## 三、把透镜做成"锁"(与 artcraft-style-bible 衔接)
54
+
55
+ 透镜定稿后必须**固化为可复用资产**,否则第三集就开始漂:
56
+
57
+ | 锁什么 | 固化机制 |
58
+ |---|---|
59
+ | 影调参数 | LightCraft `preset.create` / FilmCraft `presets.save` + `lut.export`(.cube 归档) |
60
+ | 跨镜匹配 | `lumetri.applyMatch {referenceTime}` 到参考镜头 |
61
+ | 图形/字幕风格 | FilmCraft `graphics.template.export`(.fcgt)/ EffectCraft `essential.*` |
62
+ | 界面与图文资产 | FigCraft `variable.createCollection` + `style.bind` + `component.*` |
63
+ | 声音链 | FilmCraft `essentialSound.savePreset`;SoundCraft `session.save_template` |
64
+ | 复用 | 下一集 `preset.apply` / `graphics.template.apply` → 全片一致性 |
65
+
66
+ 一致性核对走 `artcraft-style-bible` 的跨集检查表。
67
+
68
+ ## 四、使用示例(王家卫透镜剪一段)
69
+
70
+ 1. 用户:"这段按王家卫的感觉剪。"
71
+ 2. 读 `references/director-styles/09_wong_kar_wai.md` 的风格参数:ASL 1.5–4s、跳接/硬切偏好、实用光 8:1 光比、霓虹绿×钨丝琥珀、一次慢动作长挂。
72
+ 3. 落地:`timeline.place` 后按 1.5–4s 分配镜长;唯一慢动作段 `timeline.rateStretch`;`sequence.applyVideoTransition` 只在段落头用一次叠化(或全程硬切);LightCraft `light.contrast` 拉到光比 8:1 档、`mixer.green/magenta` 定点霓虹色;`essentialSound.generateDucking` 让音乐避让旁白;`artcraft_qc` 复核示波器不越界。
73
+ 4. 交付前过 `artcraft-style-bible` 跨集检查表。
74
+
75
+ ## 五、边界
76
+
77
+ - 透镜教的是**方法与参数档位**,不复刻任何真实影片的具体镜头、台词、角色或情节。
78
+ - 透镜服务叙事:说不出"这场戏观众该感到什么"就先回 `artcraft-shot-language` 的判断层。
79
+ - 用户没点名导演时,不要主动挂透镜——让题材与基调定默认(见 `artcraft-edit-rhythm` 的节奏档位表)。
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: artcraft-lens-spielberg
3
+ description: >-
4
+ 导演透镜(ArtCraft 适配版):史蒂文·斯皮尔伯格导演风格 Skill。把该导演的工作方式翻译成 ArtCraft 可执行参数——FilmCraft 时间线与转场、LightCraft 影调分区、SoundCraft 声音规则、EffectCraft 机位。当用户点名该导演、要求该风格,或项目美学圣经引用该透镜时加载。
5
+ ---
6
+
7
+ # 史蒂文·斯皮尔伯格导演风格 Skill(ArtCraft 适配版)
8
+
9
+ ## 风格参数 / Style parameters
10
+
11
+ ```yaml
12
+ style_id: spielberg
13
+ lens_kit_mm: [21, 35, 50, 135] # 21/35 撑三层纵深与空间可读;50 是普通人的中性焦段;135 从远处切反应,机位不动而情绪跳变
14
+ camera:
15
+ prefer: ["slow dolly-in to close-up", "walking-pace tracking follow", "crane down into eye level", "motivated pan connecting person to threat", "rack focus across three planes"]
16
+ avoid: ["dutch angle", "unmotivated handheld", "orbit around subject", "snap zoom", "whip pan"]
17
+ motion_budget: medium
18
+ height: "成人对话眼平;奇观与威胁段落降到 1.0-1.3m 的孩子视线高度,机位锁定"
19
+ shot_size_bias: ["medium close-up reaction", "wide with three-plane depth", "medium two-shot", "insert on the carried object", "extreme wide for scale"]
20
+ composition: ["three-plane deep staging", "silhouette against a bright named source", "doorway frame-within-frame", "subject in lower third under a large event", "clear exit visible in every wide"]
21
+ lighting:
22
+ key_quality: mixed
23
+ key_ratio: "3:1 温暖段;8:1 威胁段"
24
+ motivation: practical
25
+ signature: "薄雾中一束看得见的硬光柱,加发梢逆光轮廓"
26
+ palette:
27
+ dominant: 琥珀、钨丝暖黄、灰蓝绿
28
+ accent: 单一高饱和红或纯白光点
29
+ saturation: mid
30
+ contrast: mid
31
+ editing:
32
+ avg_shot_length_s: "3-7 动作段;5-9 情绪段"
33
+ transition_bias: ["hard cut", "match cut", "dissolve"]
34
+ coverage_style: "完整经典覆盖:主镜 + 反打 + 反应 + 插入,切点落在反应而非揭示"
35
+ sound:
36
+ music: 单人物动机旋律,比情绪转折早 1-2 秒进入
37
+ ambience: 威胁先由声音抵达,画面滞后 3-8 秒
38
+ dialogue: 家庭群戏可重叠,每场保留一句完全听清
39
+ silence_use: 揭示前 1.5-3 秒近乎全静音,只留一个环境元素
40
+ performance:
41
+ register: 高可读性,观众 1 秒内能命名情绪;用肌肉指令而非形容词导戏
42
+ blocking: 人物朝向或背离他想要的东西移动;摄影机守住空间地图
43
+ aspect_bias: "1.85:1 / 16:9"
44
+ ai_video:
45
+ clip_duration_s: "4-8"
46
+ prompt_bias: 每条 clip 只装一次看、一个摄影机行为、一个环境反应;反应镜头单独成条,先生成反应再生成揭示。
47
+ risk: 惊奇脸会退化成呆滞空瞪。对策是把表情写成可执行动作(眉毛抬起、嘴唇分开约 1 厘米、屏住呼吸),并在同一条里写清引发它的光变化。
48
+ negative_prompt_adds: ["dutch angle", "handheld shake", "camera orbit", "slow motion", "extra background crowd", "modern screens or phones", "text or watermark", "flat even lighting"]
49
+ ```
50
+
51
+ ## ArtCraft 落点(本插件适配)
52
+
53
+ ### 剪辑(FilmCraft)
54
+ - 单镜均长目标 **"3-7 动作段;5-9 情绪段"s**(conventional(5–12s 档))→ `timeline.place` 铺轨后按分配修长:`timeline.trim {mode:"ripple"}`、`timeline.rateStretch` 微调
55
+ - 转场偏好:**["hard cut", "match cut", "dissolve"]** → `sequence.applyVideoTransition {effect}` / `sequence.setTransition {duration, align}`
56
+ - 覆盖方式:"完整经典覆盖:主镜 + 反打 + 反应 + 插入,切点落在反应而非揭示"
57
+ - 音画切点:对白/音乐切点参考 SoundCraft `event.beat_detective` 的节拍位置
58
+
59
+ ### 影调(LightCraft / FilmCraft Lumetri)
60
+ - 光比目标 **"3:1 温暖段;8:1 威胁段"** → LightCraft `light.contrast` + `grading.shadows/highlights` 分离
61
+ - 主色:琥珀、钨丝暖黄、灰蓝绿 → `mixer.{}.*` 定点 + `grading.*` 方向
62
+ - 点缀:单一高饱和红或纯白光点
63
+ - 饱和/对比:mid / mid
64
+ - 光线签名:"薄雾中一束看得见的硬光柱,加发梢逆光轮廓"
65
+ - 落点命令:`develop.set control=<id> value=<v>` 逐项;定稿 `preset.create` 固化,整批 `preset.apply`;FilmCraft 侧 `lumetri.setLook` + `presets.save`
66
+
67
+ ### 声音(SoundCraft / FilmCraft)
68
+ - 音乐:单人物动机旋律,比情绪转折早 1-2 秒进入
69
+ - 环境:威胁先由声音抵达,画面滞后 3-8 秒
70
+ - 对白:家庭群戏可重叠,每场保留一句完全听清
71
+ - 静默:揭示前 1.5-3 秒近乎全静音,只留一个环境元素
72
+ - 落点命令:`essentialSound.setType` + `essentialSound.generateDucking`(避让对白)+ `essentialSound.autoMatch {target:-14}`;SoundCraft `mix.insert` 挂处理链
73
+
74
+ ### 机位与运动(EffectCraft)
75
+ - 优先:["slow dolly-in to close-up", "walking-pace tracking follow", "crane down into eye level", "motivated pan connecting person to threat", "rack focus across three planes"]
76
+ - 避免:["dutch angle", "unmotivated handheld", "orbit around subject", "snap zoom", "whip pan"]
77
+ - 运动预算:medium
78
+ - 落点命令:`camera.orbit/pan/dolly` + `view.3d.*` 机位;2D 素材用 `layer.*` + `keys.easyEase*` 缓动
79
+
80
+ ### 质检挂钩(artcraft_qc / 人工复核)
81
+ - 逐镜抽帧复核 + `scopes.read` 示波器核对影调是否落在本透镜的光比与色相档位
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: artcraft-lens-hitchcock
3
+ description: >-
4
+ 导演透镜(ArtCraft 适配版):阿尔弗雷德·希区柯克导演风格 Skill。把该导演的工作方式翻译成 ArtCraft 可执行参数——FilmCraft 时间线与转场、LightCraft 影调分区、SoundCraft 声音规则、EffectCraft 机位。当用户点名该导演、要求该风格,或项目美学圣经引用该透镜时加载。
5
+ ---
6
+
7
+ # 阿尔弗雷德·希区柯克导演风格 Skill(ArtCraft 适配版)
8
+
9
+ ## 风格参数 / Style parameters
10
+
11
+ ```yaml
12
+ style_id: hitchcock
13
+ lens_kit_mm: [28, 50, 100, 135] # 28 一次性交代房间地图;50 是客观中性眼;100/135 做"凝视的选择性"压缩,把远处的危险拉到观众鼻子底下
14
+ camera:
15
+ prefer: ["locked frame held past comfort", "slow dolly-in on a detail", "point-of-view pan following an eyeline", "high overhead on a stairwell or floor plan", "creep-in behind foreground obstruction"]
16
+ avoid: ["handheld", "camera orbit", "whip pan", "crash zoom", "constant reframing"]
17
+ motion_budget: low
18
+ height: "眼平为主;命运节拍升到 3-6 米俯拍,威胁节拍降到 0.3-0.6 米"
19
+ shot_size_bias: ["extreme close-up on the object", "close-up reaction", "point-of-view medium", "obstructed medium two-shot", "one wide as the room map"]
20
+ composition: ["foreground obstruction 20-35% of frame", "frame within frame via door/stair/window", "geometric shadow cast across the wall", "negative space where the threat will enter", "eyeline axis shared across three shots"]
21
+ lighting:
22
+ key_quality: hard
23
+ key_ratio: "4:1"
24
+ motivation: practical
25
+ signature: "日常照度不降,阴影是可辨认的几何形状(百叶、扶手、门缝),不是氛围雾"
26
+ palette:
27
+ dominant: 中性冷灰、米白、家具木色
28
+ accent: 正红、深绿、金属金——只在信息转折时出现
29
+ saturation: mid
30
+ contrast: high
31
+ editing:
32
+ avg_shot_length_s: "4-9 基线;0.4-1.5 仅在暴力瞬间"
33
+ transition_bias: ["hard cut", "match cut", "dissolve"]
34
+ coverage_style: "看-所见-反应三镜结构占段落一半以上;交叉剪辑保持危险线:角色线 = 1:3"
35
+ sound:
36
+ music: 短、重复、音程尖锐的动机,在观众已知危险之后进入
37
+ ambience: 每段选一个"时钟"(滴水、脚步、门锁、电话铃)负责时间流逝
38
+ dialogue: 反派降低语速、增加停顿;主角越解释越可疑
39
+ silence_use: 最紧的 3-5 秒抽掉音乐只留时钟,用一个非音乐硬声落点
40
+ performance:
41
+ register: 隐藏与泄露同时进行——手先泄露,脸后泄露
42
+ blocking: 角色走向他不该走向的地方;观众已知的危险停在画外或前景遮挡后
43
+ aspect_bias: "1.85:1;单人主观段落可收到 1.66:1 以压缩两侧逃逸空间"
44
+ ai_video:
45
+ clip_duration_s: "3-6 用于延迟节拍;1-2 用于碎片化插入"
46
+ prompt_bias: 一条 clip 只做一件事——要么是"角色靠近",要么是"危险移动",绝不同时。把观众已知的危险放在前景遮挡或画面边缘,让它几乎不动。
47
+ risk: 模型倾向于把静止的威胁"补上动作",等待感立刻变成动作戏。对策是在提示词里显式写 the threat does not move,并把 clip 缩到 4 秒以内。
48
+ negative_prompt_adds: ["handheld shake", "camera orbit", "jump scare motion", "blood or gore", "sudden lighting change", "extra people entering frame", "text or watermark", "lens flare"]
49
+ ```
50
+
51
+ ## ArtCraft 落点(本插件适配)
52
+
53
+ ### 剪辑(FilmCraft)
54
+ - 单镜均长目标 **"4-9 基线;0.4-1.5 仅在暴力瞬间"s**(conventional(5–12s 档))→ `timeline.place` 铺轨后按分配修长:`timeline.trim {mode:"ripple"}`、`timeline.rateStretch` 微调
55
+ - 转场偏好:**["hard cut", "match cut", "dissolve"]** → `sequence.applyVideoTransition {effect}` / `sequence.setTransition {duration, align}`
56
+ - 覆盖方式:"看-所见-反应三镜结构占段落一半以上;交叉剪辑保持危险线:角色线 = 1:3"
57
+ - 音画切点:对白/音乐切点参考 SoundCraft `event.beat_detective` 的节拍位置
58
+
59
+ ### 影调(LightCraft / FilmCraft Lumetri)
60
+ - 光比目标 **"4:1"** → LightCraft `light.contrast` + `grading.shadows/highlights` 分离
61
+ - 主色:中性冷灰、米白、家具木色 → `mixer.{}.*` 定点 + `grading.*` 方向
62
+ - 点缀:正红、深绿、金属金——只在信息转折时出现
63
+ - 饱和/对比:mid / high
64
+ - 光线签名:"日常照度不降,阴影是可辨认的几何形状(百叶、扶手、门缝),不是氛围雾"
65
+ - 落点命令:`develop.set control=<id> value=<v>` 逐项;定稿 `preset.create` 固化,整批 `preset.apply`;FilmCraft 侧 `lumetri.setLook` + `presets.save`
66
+
67
+ ### 声音(SoundCraft / FilmCraft)
68
+ - 音乐:短、重复、音程尖锐的动机,在观众已知危险之后进入
69
+ - 环境:每段选一个"时钟"(滴水、脚步、门锁、电话铃)负责时间流逝
70
+ - 对白:反派降低语速、增加停顿;主角越解释越可疑
71
+ - 静默:最紧的 3-5 秒抽掉音乐只留时钟,用一个非音乐硬声落点
72
+ - 落点命令:`essentialSound.setType` + `essentialSound.generateDucking`(避让对白)+ `essentialSound.autoMatch {target:-14}`;SoundCraft `mix.insert` 挂处理链
73
+
74
+ ### 机位与运动(EffectCraft)
75
+ - 优先:["locked frame held past comfort", "slow dolly-in on a detail", "point-of-view pan following an eyeline", "high overhead on a stairwell or floor plan", "creep-in behind foreground obstruction"]
76
+ - 避免:["handheld", "camera orbit", "whip pan", "crash zoom", "constant reframing"]
77
+ - 运动预算:low
78
+ - 落点命令:`camera.orbit/pan/dolly` + `view.3d.*` 机位;2D 素材用 `layer.*` + `keys.easyEase*` 缓动
79
+
80
+ ### 质检挂钩(artcraft_qc / 人工复核)
81
+ - 逐镜抽帧复核 + `scopes.read` 示波器核对影调是否落在本透镜的光比与色相档位
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: artcraft-lens-kubrick
3
+ description: >-
4
+ 导演透镜(ArtCraft 适配版):斯坦利·库布里克导演风格 Skill。把该导演的工作方式翻译成 ArtCraft 可执行参数——FilmCraft 时间线与转场、LightCraft 影调分区、SoundCraft 声音规则、EffectCraft 机位。当用户点名该导演、要求该风格,或项目美学圣经引用该透镜时加载。
5
+ ---
6
+
7
+ # 斯坦利·库布里克导演风格 Skill(ArtCraft 适配版)
8
+
9
+ ## 风格参数 / Style parameters
10
+
11
+ ```yaml
12
+ style_id: kubrick
13
+ lens_kit_mm: [18, 25, 35] # 18/25 制造单点透视与轻微脸部变形,让走廊两壁在画面里收拢;35 只在需要一个"正常"参照镜头时使用,用量不超过全段 20%
14
+ camera:
15
+ prefer: ["locked symmetrical frame", "constant-speed dolly-in along the vanishing axis", "constant-speed dolly-out on the same axis", "low tracking follow at 0.5-0.8m", "overhead perpendicular insert"]
16
+ avoid: ["handheld", "camera orbit", "whip pan", "any acceleration or deceleration in a move", "reframing mid-shot"]
17
+ motion_budget: low
18
+ height: "锁定在层高的一半(2.8-3.2m 层高对应 1.4-1.6m),天花与地面的收拢楔形才上下对称;或 0.5-0.8m 低位跟随。一场戏内高度不变"
19
+ shot_size_bias: ["symmetrical wide with strong vanishing point", "frontal medium on the centre axis", "overhead insert of floor pattern or object", "long-held frontal close-up", "extreme wide of the empty space"]
20
+ composition: ["one-point perspective, vanishing point at frame centre", "bilateral symmetry or exact mirroring", "subject riding the centre axis", "corridor/room as a compressing funnel", "flat frontal planes stacked in depth"]
21
+ lighting:
22
+ key_quality: hard
23
+ key_ratio: "2:1,压迫最强处可到 1.5:1"
24
+ motivation: stylized
25
+ signature: "画面内可见且对称排布的硬光阵列;短硬阴影方向互相抵消,没有一块可藏身的暗部"
26
+ palette:
27
+ dominant: 冷白、灰、纯黑
28
+ accent: 血红、金、单一饱和色块(一个空间一个色)
29
+ saturation: mid
30
+ contrast: mid
31
+ editing:
32
+ avg_shot_length_s: "12-40,极少低于 6"
33
+ transition_bias: ["hard cut", "match cut"]
34
+ coverage_style: "覆盖极简:一个构图撑完一个节拍;同一构图在段落内回来 2-3 次形成结构性重复"
35
+ sound:
36
+ music: 结构装置——一段乐曲覆盖整个段落,独立于画面情绪起伏
37
+ ambience: 机械与身体对立:通风、伺服、硬表面上的脚步回声、呼吸
38
+ dialogue: 语速比自然慢约 30%,停顿加长,礼貌到不自然
39
+ silence_use: 长镜头后 1/3 抽掉音乐,只留呼吸,直到切点
40
+ performance:
41
+ register: 刻意僵硬、过度精确、内部自洽;允许直视镜头把观众推回分析距离
42
+ blocking: 人物沿中轴前进或后退;侧向移动一律被构图纠正回对称
43
+ aspect_bias: "1.85:1 / 1.66:1;避免 2.39:1,它会削弱建筑的垂直压迫"
44
+ ai_video:
45
+ clip_duration_s: "8-12(推轨需要行程;短于 6 秒看不出匀速);12-40 秒的长凝视用同参数分段续接拼出来"
46
+ prompt_bias: 把"匀速"和"不重新构图"写成硬约束;一条 clip 只有一个直线运动,且运动方向必须与消失点轴线重合。
47
+ risk: 模型会自动给推轨加缓入缓出,并在人物移动时重新构图,对称立刻塌。对策是显式写 constant speed, no ease-in or ease-out, no reframing,并把对称与消失点写进关键帧而不是只写进运动提示词。
48
+ negative_prompt_adds: ["handheld shake", "camera orbit", "ease-in ease-out camera move", "reframing", "warm fill light", "shallow depth of field", "soft focus or bokeh", "text or watermark"]
49
+ ```
50
+
51
+ ## ArtCraft 落点(本插件适配)
52
+
53
+ ### 剪辑(FilmCraft)
54
+ - 单镜均长目标 **"12-40,极少低于 6"s**(observational / 长镜(8–15s 档))→ `timeline.place` 铺轨后按分配修长:`timeline.trim {mode:"ripple"}`、`timeline.rateStretch` 微调
55
+ - 转场偏好:**["hard cut", "match cut"]** → `sequence.applyVideoTransition {effect}` / `sequence.setTransition {duration, align}`
56
+ - 覆盖方式:"覆盖极简:一个构图撑完一个节拍;同一构图在段落内回来 2-3 次形成结构性重复"
57
+ - 音画切点:对白/音乐切点参考 SoundCraft `event.beat_detective` 的节拍位置
58
+
59
+ ### 影调(LightCraft / FilmCraft Lumetri)
60
+ - 光比目标 **"2:1,压迫最强处可到 1.5:1"** → LightCraft `light.contrast` + `grading.shadows/highlights` 分离
61
+ - 主色:冷白、灰、纯黑 → `mixer.{}.*` 定点 + `grading.*` 方向
62
+ - 点缀:血红、金、单一饱和色块(一个空间一个色)
63
+ - 饱和/对比:mid / mid
64
+ - 光线签名:"画面内可见且对称排布的硬光阵列;短硬阴影方向互相抵消,没有一块可藏身的暗部"
65
+ - 落点命令:`develop.set control=<id> value=<v>` 逐项;定稿 `preset.create` 固化,整批 `preset.apply`;FilmCraft 侧 `lumetri.setLook` + `presets.save`
66
+
67
+ ### 声音(SoundCraft / FilmCraft)
68
+ - 音乐:结构装置——一段乐曲覆盖整个段落,独立于画面情绪起伏
69
+ - 环境:机械与身体对立:通风、伺服、硬表面上的脚步回声、呼吸
70
+ - 对白:语速比自然慢约 30%,停顿加长,礼貌到不自然
71
+ - 静默:长镜头后 1/3 抽掉音乐,只留呼吸,直到切点
72
+ - 落点命令:`essentialSound.setType` + `essentialSound.generateDucking`(避让对白)+ `essentialSound.autoMatch {target:-14}`;SoundCraft `mix.insert` 挂处理链
73
+
74
+ ### 机位与运动(EffectCraft)
75
+ - 优先:["locked symmetrical frame", "constant-speed dolly-in along the vanishing axis", "constant-speed dolly-out on the same axis", "low tracking follow at 0.5-0.8m", "overhead perpendicular insert"]
76
+ - 避免:["handheld", "camera orbit", "whip pan", "any acceleration or deceleration in a move", "reframing mid-shot"]
77
+ - 运动预算:low
78
+ - 落点命令:`camera.orbit/pan/dolly` + `view.3d.*` 机位;2D 素材用 `layer.*` + `keys.easyEase*` 缓动
79
+
80
+ ### 质检挂钩(artcraft_qc / 人工复核)
81
+ - 逐镜抽帧复核 + `scopes.read` 示波器核对影调是否落在本透镜的光比与色相档位
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: artcraft-lens-kurosawa
3
+ description: >-
4
+ 导演透镜(ArtCraft 适配版):黑泽明导演风格 Skill。把该导演的工作方式翻译成 ArtCraft 可执行参数——FilmCraft 时间线与转场、LightCraft 影调分区、SoundCraft 声音规则、EffectCraft 机位。当用户点名该导演、要求该风格,或项目美学圣经引用该透镜时加载。
5
+ ---
6
+
7
+ # 黑泽明导演风格 Skill(ArtCraft 适配版)
8
+
9
+ ## 风格参数 / Style parameters
10
+
11
+ ```yaml
12
+ style_id: kurosawa
13
+ lens_kit_mm: [50, 100, 250] # 50 交代空间关系;100 拍身体与阵型;250 把人群压成一堵墙,并让正面冲来的人几乎看不出在推进
14
+ camera:
15
+ prefer: ["lateral tracking across a formation", "long-lens locked hold on the waiting group", "pan sweeping the line", "single decisive push down the depth axis", "multi-camera simultaneous coverage at 50/100/250mm"]
16
+ avoid: ["camera orbit", "handheld shake as default", "crash zoom", "slow-motion hero move", "close following in tight spaces"]
17
+ motion_budget: medium
18
+ height: "眼平或略低;泥地段落降到 0.6-0.9m 让泥水进入前景"
19
+ shot_size_bias: ["extreme wide with figures under 1/6 frame height", "long-lens compressed group band", "close-up on a wet exhausted face", "insert of feet in mud", "medium of the body in stance"]
20
+ composition: ["lateral bands stacked by long-lens compression", "triangular or wedge formation pointing at the conflict", "high ground versus low ground as class information", "weather layer between camera and subject", "figure isolated against an open sky or field"]
21
+ lighting:
22
+ key_quality: hard
23
+ key_ratio: "6:1 或更高"
24
+ motivation: naturalistic
25
+ signature: "逆光让雨丝、尘埃与呼出的白气变成亮线;去色后画面仍靠明暗分区成立"
26
+ palette:
27
+ dominant: 土黄、泥褐、湿布墨黑、雨天灰白
28
+ accent: 正红、靛蓝、旗帜金——贴在织物与盔甲上,不打在空气里
29
+ saturation: mid
30
+ contrast: high
31
+ editing:
32
+ avg_shot_length_s: "8-20 等待段;2-5 战斗段"
33
+ transition_bias: ["hard cut", "wipe", "match cut"]
34
+ coverage_style: "多机位同拍同一动作,剪辑在焦段压缩度之间切换而非在角度之间切换;屏幕运动方向全段不变"
35
+ sound:
36
+ music: 打击乐与管乐的重复动机,在集体行动开始的那一刻进入
37
+ ambience: 自然声承担叙事——暴雨掩盖脚步、风吹散号令、泥水声标记体力耗尽
38
+ dialogue: 号令短促可被风削弱;重要信息用身体动作复述一次
39
+ silence_use: 决战结束后音乐先停,只剩雨或风,持续 5 秒以上再切场
40
+ performance:
41
+ register: 高度身体化,允许大幅度戏剧能量;疲惫(湿透、发抖、喘)是主要表演材料
42
+ blocking: 阵型有顶点且顶点指向冲突方向;高地与泥地的分配就是阶级分配
43
+ aspect_bias: "2.35:1(横向运动与群像);单人段落可用 1.37:1" # 9:16 交付时的构图改写见「镜头语言」末条
44
+ ai_video:
45
+ clip_duration_s: "3-6 战斗;6-10 等待"
46
+ prompt_bias: 先写天气对身体的作用(湿透的布、被吹动的头发、泥中的脚),再写动作;镜头运动只写"横移"或"锁定",不要写复合运动。
47
+ risk: 模型会把雨做成一层不影响人物的粒子,人物依然干燥挺拔,史诗感立刻塌成壁纸。对策是在提示词里点名织物状态(soaked cloth clinging to the back)与步态改变(feet sinking, gait heavy),并把湿度写进关键帧而不是只写进视频提示词。
48
+ negative_prompt_adds: ["dry clothing in rain", "clean faces", "slow motion", "camera orbit", "shallow depth of field", "zippers or nylon", "text or watermark", "flat frontal fill light"]
49
+ ```
50
+
51
+ ## ArtCraft 落点(本插件适配)
52
+
53
+ ### 剪辑(FilmCraft)
54
+ - 单镜均长目标 **"8-20 等待段;2-5 战斗段"s**(observational / 长镜(8–15s 档))→ `timeline.place` 铺轨后按分配修长:`timeline.trim {mode:"ripple"}`、`timeline.rateStretch` 微调
55
+ - 转场偏好:**["hard cut", "wipe", "match cut"]** → `sequence.applyVideoTransition {effect}` / `sequence.setTransition {duration, align}`
56
+ - 覆盖方式:"多机位同拍同一动作,剪辑在焦段压缩度之间切换而非在角度之间切换;屏幕运动方向全段不变"
57
+ - 音画切点:对白/音乐切点参考 SoundCraft `event.beat_detective` 的节拍位置
58
+
59
+ ### 影调(LightCraft / FilmCraft Lumetri)
60
+ - 光比目标 **"6:1 或更高"** → LightCraft `light.contrast` + `grading.shadows/highlights` 分离
61
+ - 主色:土黄、泥褐、湿布墨黑、雨天灰白 → `mixer.{}.*` 定点 + `grading.*` 方向
62
+ - 点缀:正红、靛蓝、旗帜金——贴在织物与盔甲上,不打在空气里
63
+ - 饱和/对比:mid / high
64
+ - 光线签名:"逆光让雨丝、尘埃与呼出的白气变成亮线;去色后画面仍靠明暗分区成立"
65
+ - 落点命令:`develop.set control=<id> value=<v>` 逐项;定稿 `preset.create` 固化,整批 `preset.apply`;FilmCraft 侧 `lumetri.setLook` + `presets.save`
66
+
67
+ ### 声音(SoundCraft / FilmCraft)
68
+ - 音乐:打击乐与管乐的重复动机,在集体行动开始的那一刻进入
69
+ - 环境:自然声承担叙事——暴雨掩盖脚步、风吹散号令、泥水声标记体力耗尽
70
+ - 对白:号令短促可被风削弱;重要信息用身体动作复述一次
71
+ - 静默:决战结束后音乐先停,只剩雨或风,持续 5 秒以上再切场
72
+ - 落点命令:`essentialSound.setType` + `essentialSound.generateDucking`(避让对白)+ `essentialSound.autoMatch {target:-14}`;SoundCraft `mix.insert` 挂处理链
73
+
74
+ ### 机位与运动(EffectCraft)
75
+ - 优先:["lateral tracking across a formation", "long-lens locked hold on the waiting group", "pan sweeping the line", "single decisive push down the depth axis", "multi-camera simultaneous coverage at 50/100/250mm"]
76
+ - 避免:["camera orbit", "handheld shake as default", "crash zoom", "slow-motion hero move", "close following in tight spaces"]
77
+ - 运动预算:medium
78
+ - 落点命令:`camera.orbit/pan/dolly` + `view.3d.*` 机位;2D 素材用 `layer.*` + `keys.easyEase*` 缓动
79
+
80
+ ### 质检挂钩(artcraft_qc / 人工复核)
81
+ - 逐镜抽帧复核 + `scopes.read` 示波器核对影调是否落在本透镜的光比与色相档位