@dsh-gis/dsh-video-studio-skill 0.8.1 → 1.0.2

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 (54) hide show
  1. package/CHANGELOG.md +582 -0
  2. package/README.md +287 -304
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/package.json +11 -10
  5. package/schemas/design.schema.json +722 -0
  6. package/schemas/film.schema.json +171 -15
  7. package/schemas/proposal.schema.json +133 -0
  8. package/skills/video-studio/SKILL.md +1316 -1066
  9. package/skills/video-studio/assets/design_fixture.json +141 -0
  10. package/skills/video-studio/assets/film.json +1 -2
  11. package/skills/video-studio/assets/golden_frames.json +12 -9
  12. package/skills/video-studio/assets/scenes.py +2207 -1190
  13. package/skills/video-studio/assets/voice_loudness.json +16 -0
  14. package/skills/video-studio/references/audio-variation.md +15 -11
  15. package/skills/video-studio/references/audio.md +36 -34
  16. package/skills/video-studio/references/change-impact.md +3 -3
  17. package/skills/video-studio/references/frame-qa.md +2 -2
  18. package/skills/video-studio/references/proposal.md +177 -0
  19. package/skills/video-studio/references/quality-gates.md +2 -2
  20. package/skills/video-studio/references/scene-grammar.md +311 -0
  21. package/skills/video-studio/references/sfx-design.md +1 -1
  22. package/skills/video-studio/references/style-packs.md +107 -168
  23. package/skills/video-studio/references/v08-quality.md +8 -8
  24. package/skills/video-studio/references/web-engine.md +1 -1
  25. package/skills/video-studio/references/word-timeline.md +2 -2
  26. package/skills/video-studio/scripts/designkit.py +2120 -0
  27. package/skills/video-studio/scripts/filmcheck.py +104 -33
  28. package/skills/video-studio/scripts/filmkit.py +153 -78
  29. package/skills/video-studio/scripts/grammar.py +619 -0
  30. package/skills/video-studio/scripts/musicgen.py +2043 -0
  31. package/skills/video-studio/scripts/preflight.py +10 -3
  32. package/skills/video-studio/scripts/previewkit.py +849 -0
  33. package/skills/video-studio/scripts/propose.py +825 -0
  34. package/skills/video-studio/scripts/qa_frames.py +45 -10
  35. package/skills/video-studio/scripts/qavmaf.py +77 -11
  36. package/skills/video-studio/scripts/render.py +505 -142
  37. package/skills/video-studio/scripts/scorekit.py +50 -1748
  38. package/skills/video-studio/scripts/selfcheck.py +851 -115
  39. package/skills/video-studio/scripts/stagewatch.py +21 -5
  40. package/skills/video-studio/scripts/stylekit.py +293 -570
  41. package/skills/video-studio/scripts/voicekit.py +502 -380
  42. package/skills/video-studio/scripts/webengine.py +15 -14
  43. package/tools/audio_similarity.py +57 -30
  44. package/tools/ci_check.py +9 -1
  45. package/tools/estimate.py +14 -8
  46. package/tools/golden_frames.py +56 -11
  47. package/tools/silhouette_qa.py +1263 -0
  48. package/docs/demo-pil-sheet.png +0 -0
  49. package/docs/styles/demo-results.json +0 -76
  50. package/docs/styles/sheet-8-styles.png +0 -0
  51. package/docs/styles/sheet-ai.png +0 -0
  52. package/docs/styles/sheet-craft.png +0 -0
  53. package/docs/styles/sheet-night.png +0 -0
  54. package/skills/video-studio/assets/score_demo.json +0 -307
@@ -0,0 +1,141 @@
1
+ {
2
+ "schema": 1,
3
+ "id": "fixture-golden",
4
+ "label": "金帧基准设计",
5
+ "pitch": "验收基准:固定设计,用于像素回归(不是给人看的方案)",
6
+ "structure": {
7
+ "segments": 4,
8
+ "beats": [
9
+ "hook",
10
+ "body",
11
+ "body",
12
+ "outro"
13
+ ],
14
+ "hold_policy": "readable",
15
+ "target_sec": 30.0
16
+ },
17
+ "visual": {
18
+ "palette": {
19
+ "bg": [
20
+ 7,
21
+ 14,
22
+ 26
23
+ ],
24
+ "bg2": [
25
+ 17,
26
+ 33,
27
+ 54
28
+ ],
29
+ "surface": [
30
+ 26,
31
+ 42,
32
+ 64
33
+ ],
34
+ "ink": [
35
+ 230,
36
+ 216,
37
+ 207
38
+ ],
39
+ "muted": [
40
+ 178,
41
+ 157,
42
+ 143
43
+ ],
44
+ "dim": [
45
+ 153,
46
+ 135,
47
+ 122
48
+ ],
49
+ "accent": [
50
+ 230,
51
+ 106,
52
+ 23
53
+ ],
54
+ "accent2": [
55
+ 92,
56
+ 230,
57
+ 216
58
+ ],
59
+ "good": [
60
+ 71,
61
+ 178,
62
+ 98
63
+ ],
64
+ "bad": [
65
+ 178,
66
+ 97,
67
+ 89
68
+ ],
69
+ "rule": [
70
+ 255,
71
+ 255,
72
+ 255
73
+ ]
74
+ },
75
+ "family": "sans",
76
+ "typography": {
77
+ "tracking": 0.0,
78
+ "line_gap": 1.3,
79
+ "number": "dim",
80
+ "ratio": 1.5,
81
+ "align": "left"
82
+ },
83
+ "motif": {
84
+ "kind": "brackets",
85
+ "density": 1.0,
86
+ "detail": {}
87
+ },
88
+ "transition": {
89
+ "kind": "dip",
90
+ "dur": 0.28
91
+ },
92
+ "motion": {
93
+ "ease": "out3",
94
+ "enter": [
95
+ 0.45,
96
+ 0.85
97
+ ],
98
+ "push": 0.04,
99
+ "breathe_hz": 0.85
100
+ },
101
+ "bias": {
102
+ "x": 0,
103
+ "y": 0,
104
+ "inset": 0
105
+ },
106
+ "layout": "left-stack",
107
+ "hud": "chip-left",
108
+ "size": "1920x1080",
109
+ "fps": 30
110
+ },
111
+ "audio": {
112
+ "voice": {
113
+ "mode": "edge_id",
114
+ "id": "zh-CN-YunyangNeural",
115
+ "map": {},
116
+ "jitter": 0.0,
117
+ "max_distinct": 1
118
+ },
119
+ "music": {
120
+ "mode": "params",
121
+ "style": "tech-deep",
122
+ "scale": "minor",
123
+ "bpm": 96.0,
124
+ "key": "Dm",
125
+ "mood": "steady",
126
+ "seed": 7
127
+ },
128
+ "sfx": {
129
+ "enabled": false,
130
+ "density": "none",
131
+ "gain_db": -6
132
+ }
133
+ },
134
+ "pacing": {
135
+ "lead": 0.62,
136
+ "tail": 0.92,
137
+ "min_dur": 3.0,
138
+ "hold": 0.0,
139
+ "item_stagger": 0.3
140
+ }
141
+ }
@@ -1,8 +1,7 @@
1
1
  {
2
- "_comment": "v0.5 模板:style 决定画风+配乐+旁白+节奏。'auto' = 按内容自动选;写死风格 id 可锁定(tech-deep/magazine/paper/vivid/mono/cinema/lo-fi/epic)。删掉 style 字段 = 回到 v0.4 行为(逐样本兼容)。节奏(lead/tail/min_dur/hold)默认由风格给,想覆盖就自己加字段。",
2
+ "_comment": "自测/演示样例剧本(仓库测试夹具,不是给用户抄的模板)。外观由 work/design.json 决定(propose.py --brief 现场生成后 --confirm 冻结);v1.0.1 起 style 字段已废弃。文本仅用于跑通全链与金帧/门禁回归,换题材请自己写 lines[]。",
3
3
  "title": "测试片 demo",
4
4
  "end_text": "完",
5
- "style": "auto",
6
5
  "voice": "zh-CN-YunxiNeural",
7
6
  "rate": "+6%",
8
7
  "pitch": "+0Hz",
@@ -9,6 +9,7 @@
9
9
  "fps": 30,
10
10
  "script": "skills/video-studio/assets/film.json",
11
11
  "scenes": "skills/video-studio/assets/scenes.py",
12
+ "design": "skills/video-studio/assets/design_fixture.json",
12
13
  "font_fp": "05c853d0eb28bcca3125d81c1ce27c9436f66a55",
13
14
  "fonts": [
14
15
  {
@@ -24,7 +25,7 @@
24
25
  "sha1": "5444a8bab4b57604f6420ea4e60194f41459f9f8"
25
26
  }
26
27
  ],
27
- "env_fp": "eb5f0faf631f1f133c7798a5cc77bf8422bf550a",
28
+ "env_fp": "e4bca653965cf664adf46784abe93e8519df8d00",
28
29
  "env": {
29
30
  "python": "3.12.16",
30
31
  "pillow": "13.0.0",
@@ -33,11 +34,13 @@
33
34
  "platform": "Windows 11"
34
35
  },
35
36
  "inputs": {
36
- "script_sha1": "2f375a7298ea861684a2d553cb6617ed4351d3e5",
37
- "scenes_sha1": "7bd09e095a95a064db60fc1fdca7d54b1466d6aa",
38
- "filmkit_sha1": "57b2e4a2645bf365148762e260f6c3c20ea22a58",
39
- "stylekit_sha1": "39adafe99f2b56d23091a7d6c8a863a5cc43b7f4",
40
- "golden_tool_sha1": "d0e28091f2b9ed3edc5a2a33aad225c859e2fab0"
37
+ "script_sha1": "9ad24749d19cf0fcec1b7fa62e906ed78ce5501b",
38
+ "scenes_sha1": "1ff8eaeed66c226a48875580d96d41ff6daad1e3",
39
+ "filmkit_sha1": "aca2f742ee4e7f7f2e99901a151864d8046d1547",
40
+ "stylekit_sha1": "869098c23a1d9e704a0ffacbc58da6c987712817",
41
+ "design_sha1": "f87cc13e4c55040d9de5675933c01aa8220134d1",
42
+ "designkit_sha1": "074b9705ae0f90a8b35162946142f8c28a3a39db",
43
+ "golden_tool_sha1": "da09795aaf3cb92bc9e14f9561bb64027917acbf"
41
44
  },
42
45
  "frames": [
43
46
  {
@@ -45,21 +48,21 @@
45
48
  "scene": "l01",
46
49
  "t_local": 1.2,
47
50
  "label": "hook",
48
- "sha256": "5552f4ec1d0059b026496ebfb43465339c07a5f679ef835ec71f7e8dff3acc08"
51
+ "sha256": "155eaa030a519b7ded1c49664e0007314f2a4dc4eb6ef1e4b69d3b70bae0b367"
49
52
  },
50
53
  {
51
54
  "frame": 270,
52
55
  "scene": "l03",
53
56
  "t_local": 1.6,
54
57
  "label": "body",
55
- "sha256": "ffbf24c62b860298a10e9b64c5cc23d8e44fb11decaa02ca6975a94af95917d7"
58
+ "sha256": "9d205ae43f2632c78446d372d8f3194ecfb7a9634ca42c36943ce31fd6be7981"
56
59
  },
57
60
  {
58
61
  "frame": 369,
59
62
  "scene": "l04",
60
63
  "t_local": 1.5,
61
64
  "label": "outro",
62
- "sha256": "7b20783984d34bc21fde31e50ebd7c6977690b1807a1280a0608ed310eb3e683"
65
+ "sha256": "c3ccdbedc567402728677f9f4d7ccf62bb98930bebf52934b8bb2becb0e9fb4f"
63
66
  }
64
67
  ]
65
68
  }