create-dwy 0.16.1 → 0.17.1

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 (105) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/bin/index.js +23 -19
  3. package/package.json +1 -1
  4. package/src/cli-help.js +44 -0
  5. package/src/sync-all.js +303 -59
  6. package/src/sync-global-skills.js +167 -0
  7. package/src/sync.js +21 -11
  8. package/templates/ai-tools/CHANGELOG.md +134 -0
  9. package/templates/ai-tools/VERSION +1 -1
  10. package/templates/ai-tools/rules/Android/dwy-android-core.md +65 -1
  11. package/templates/ai-tools/rules/Python/dwy-python-core.md +47 -0
  12. package/templates/ai-tools/rules/Vue/dwy-vue-core.md +55 -0
  13. package/templates/ai-tools/rules/iOS/dwy-swift-core.md +46 -0
  14. package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-oss-commercial-license.md +128 -0
  15. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/SKILL.md +65 -0
  16. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/assets/appstore-submission.yaml +43 -0
  17. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/references/api-workflow.md +17 -0
  18. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/references/in-app-purchase-review.md +16 -0
  19. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/references/screenshot-workflow.md +16 -0
  20. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/scripts/appstore_config.sh +140 -0
  21. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/SKILL.md +11 -8
  22. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/android.md +2 -1
  23. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/backend-deploy.md +2 -1
  24. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/changelog.md +24 -4
  25. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/frontend-deploy.md +2 -1
  26. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/generic-release.md +2 -1
  27. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/git-tag.md +82 -0
  28. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/harmony.md +2 -1
  29. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/ios.md +3 -2
  30. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/monitor-notify.md +2 -2
  31. package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-semver/SKILL.md +1 -1
  32. package/templates/ai-tools/skills//345/237/272/347/241/200/345/272/223/dwy-eapi/references/tasks-integration-guide.md +2 -2
  33. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/README.md +57 -0
  34. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/SKILL.md +147 -0
  35. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/references/api.md +43 -0
  36. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/references/config.example.yaml +33 -0
  37. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/scripts/global_config.py +89 -0
  38. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/scripts/setup_config.py +175 -0
  39. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/scripts/synthesize.py +339 -0
  40. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/SKILL.md +127 -0
  41. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/assets/cover-style-master-v1.png +0 -0
  42. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/references/platform-copy-examples.md +37 -0
  43. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/references/platform-posting-times.md +193 -0
  44. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0005-ideation/SKILL.md +42 -0
  45. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0005-ideation/templates/topic-backlog.template.md +50 -0
  46. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0005-ideation/templates//351/200/211/351/242/230/346/261/240.template.md +16 -0
  47. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0010-product/SKILL.md +106 -0
  48. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0010-product/templates/channel-profile.template.md +52 -0
  49. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0010-product/templates//344/272/247/345/223/201/345/215/241.template.md +132 -0
  50. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0030-facts/SKILL.md +60 -0
  51. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0030-facts/scripts/build_facts_html.py +430 -0
  52. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0030-facts/scripts/generate_html.py +1287 -0
  53. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0030-facts/scripts/generate_report.py +189 -0
  54. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0030-facts/templates//344/272/213/345/256/236/350/265/204/346/226/231/345/272/223.template.md +55 -0
  55. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/SKILL.md +36 -0
  56. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/templates/README.md +10 -0
  57. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/templates//344/272/213/345/256/236.template.md +82 -0
  58. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/templates//345/215/225/351/233/206/346/226/207/346/241/243.template.md +175 -0
  59. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/templates//350/204/232/346/234/254.template.md +69 -0
  60. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0040-script/templates//351/252/250/346/236/266-v1.1.md +174 -0
  61. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0050-design/SKILL.md +55 -0
  62. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0060-assets/SKILL.md +29 -0
  63. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package/SKILL.md +42 -0
  64. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package/scripts/validate_shots.py +207 -0
  65. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package/shots.schema.json +186 -0
  66. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package//344/272/272/345/256/241/345/214/205.template.md +1 -0
  67. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package//344/272/272/345/256/241/350/257/264/346/230/216.md +15 -0
  68. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0070-package//346/210/220/347/211/207/345/214/205.template.md +49 -0
  69. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-0080-factory/SKILL.md +58 -0
  70. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-comic-kit/SKILL.md +424 -0
  71. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-comic-kit/evals.md +41 -0
  72. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-flow/CONTRACT.md +123 -0
  73. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-flow/SKILL.md +81 -0
  74. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-flow//346/211/247/350/241/214/346/270/205/345/215/225.template.md +60 -0
  75. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/SKILL.md +78 -0
  76. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/agents/openai.yaml +4 -0
  77. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/assets/knowledge-town-paper-film-v1.json +80 -0
  78. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/assets/remotion/AudioTracks.tsx +20 -0
  79. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/assets/remotion/CaptionLayer.tsx +18 -0
  80. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/assets/remotion/CueTimeline.ts +24 -0
  81. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/assets/remotion/KnowledgeTownComposition.tsx +21 -0
  82. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/references/cinematic-direction.md +73 -0
  83. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/references/sticker-asset-production.md +30 -0
  84. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/references/style-guide.md +43 -0
  85. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/scripts/build_cue_timeline.py +75 -0
  86. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/scripts/validate_cue_timeline.py +68 -0
  87. package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/uc-media-knowledge-town/scripts/validate_style_preset.py +22 -0
  88. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/SKILL.md +0 -511
  89. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/references/checks-data.md +0 -126
  90. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/references/checks-network.md +0 -88
  91. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/references/checks-runtime.md +0 -195
  92. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/references/security-doc-search.md +0 -179
  93. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_base.sh +0 -39
  94. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_capacity.sh +0 -278
  95. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_db.sh +0 -147
  96. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_docker.sh +0 -230
  97. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_env.sh +0 -64
  98. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_https.sh +0 -60
  99. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_logs.sh +0 -209
  100. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_nginx.sh +0 -100
  101. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_resilience.sh +0 -157
  102. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_secrets.sh +0 -265
  103. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_services.sh +0 -94
  104. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/check_ssh.sh +0 -56
  105. package/templates/ai-tools/skills/unitcircle/uc-deploy-audit/scripts/run_all.sh +0 -105
@@ -0,0 +1,186 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://my-channel.local/schemas/media-package-shots-v1.json",
4
+ "title": "media package shots.json",
5
+ "description": "0070 成片施工图(机读)。0080/配音/渲染只认本结构。version 必须为 1。",
6
+ "type": "object",
7
+ "required": ["version", "fps", "width", "height", "chapters", "shots"],
8
+ "additionalProperties": true,
9
+ "properties": {
10
+ "version": {
11
+ "type": "integer",
12
+ "const": 1,
13
+ "description": "Schema 主版本。不兼容变更时递增。"
14
+ },
15
+ "fps": { "type": "number", "exclusiveMinimum": 0 },
16
+ "width": { "type": "integer", "minimum": 1 },
17
+ "height": { "type": "integer", "minimum": 1 },
18
+ "visual_style": { "type": "string" },
19
+ "playback_rule": {
20
+ "type": "string",
21
+ "description": "如 progressive_reveal"
22
+ },
23
+ "asset_root": {
24
+ "type": "string",
25
+ "description": "素材根相对 episode 或 work_dir,如 media/assets 或 制作/assets"
26
+ },
27
+ "cue_timeline_file": {
28
+ "type": "string",
29
+ "description": "可选。知识小城等精确对轨风格的机读真源,如 media/0070-package/cue-timeline.json。"
30
+ },
31
+ "voiceover": {
32
+ "type": "object",
33
+ "description": "可选。场景级旁白的文件与时码状态;真实音频生成后必须更新 timing_status。",
34
+ "properties": {
35
+ "file": {"type": "string"},
36
+ "timing_status": {"type": "string", "enum": ["estimated", "aligned_to_audio"]}
37
+ },
38
+ "additionalProperties": true
39
+ },
40
+ "total_duration_sec": { "type": "number", "minimum": 0 },
41
+ "total_duration_frames": { "type": "integer", "minimum": 0 },
42
+ "source": {
43
+ "type": "object",
44
+ "description": "上游追溯",
45
+ "properties": {
46
+ "script_dir": { "type": "string" },
47
+ "assets_dir": { "type": "string" },
48
+ "vo_file": { "type": "string" },
49
+ "storyboard_file": { "type": "string" },
50
+ "elements_file": { "type": "string" }
51
+ },
52
+ "additionalProperties": true
53
+ },
54
+ "chapters": {
55
+ "type": "array",
56
+ "minItems": 1,
57
+ "items": {
58
+ "type": "object",
59
+ "required": ["chapter_id", "letter", "title", "shot_ids"],
60
+ "additionalProperties": true,
61
+ "properties": {
62
+ "chapter_id": { "type": "string", "minLength": 1 },
63
+ "letter": { "type": "string", "minLength": 1 },
64
+ "title": { "type": "string" },
65
+ "target_sec": { "type": "number", "minimum": 0 },
66
+ "shot_ids": {
67
+ "type": "array",
68
+ "minItems": 1,
69
+ "items": { "type": "string", "minLength": 1 }
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "shots": {
75
+ "type": "array",
76
+ "minItems": 1,
77
+ "items": { "$ref": "#/$defs/shot" }
78
+ }
79
+ },
80
+ "$defs": {
81
+ "shot": {
82
+ "type": "object",
83
+ "required": [
84
+ "shot_id",
85
+ "chapter_id",
86
+ "order",
87
+ "vo_text",
88
+ "duration_sec",
89
+ "duration_frames"
90
+ ],
91
+ "additionalProperties": true,
92
+ "properties": {
93
+ "shot_id": {
94
+ "type": "string",
95
+ "pattern": "^[A-Z][0-9]{2}$",
96
+ "description": "全局唯一镜号,如 A00、B01、P03"
97
+ },
98
+ "chapter_id": { "type": "string", "minLength": 1 },
99
+ "chapter_letter": { "type": "string" },
100
+ "order": { "type": "integer", "minimum": 0 },
101
+ "vo_text": {
102
+ "type": "string",
103
+ "minLength": 1,
104
+ "description": "本镜口播全文;配音唯一念白源"
105
+ },
106
+ "duration_sec": { "type": "number", "exclusiveMinimum": 0 },
107
+ "duration_frames": {
108
+ "type": "integer",
109
+ "exclusiveMinimum": 0,
110
+ "description": "应 ≈ round(duration_sec * fps)"
111
+ },
112
+ "fps": { "type": "number", "exclusiveMinimum": 0 },
113
+ "main_visual": { "type": "string" },
114
+ "visual_delta": { "type": "string" },
115
+ "reveal": {
116
+ "type": "string",
117
+ "description": "如 add | hold | replace"
118
+ },
119
+ "builds_on": {
120
+ "type": ["string", "null"],
121
+ "description": "上一镜 shot_id;章首可为 null"
122
+ },
123
+ "motion": {
124
+ "type": "object",
125
+ "properties": {
126
+ "preset": {
127
+ "type": "string",
128
+ "enum": [
129
+ "hold",
130
+ "fade_up",
131
+ "scale_in",
132
+ "draw_on",
133
+ "highlight_pulse",
134
+ "slide_in",
135
+ "crossfade"
136
+ ]
137
+ },
138
+ "target": { "type": "string" },
139
+ "window": {
140
+ "type": "object",
141
+ "properties": {
142
+ "start": { "type": "number", "minimum": 0, "maximum": 1 },
143
+ "end": { "type": "number", "minimum": 0, "maximum": 1 }
144
+ },
145
+ "additionalProperties": true
146
+ },
147
+ "hold_after_sec": { "type": "number", "minimum": 0 }
148
+ },
149
+ "additionalProperties": true
150
+ },
151
+ "on_screen_text": {
152
+ "type": "array",
153
+ "items": { "type": "string" }
154
+ },
155
+ "assets": {
156
+ "type": "array",
157
+ "items": {
158
+ "type": "object",
159
+ "required": ["role", "path"],
160
+ "additionalProperties": true,
161
+ "properties": {
162
+ "role": {
163
+ "type": "string",
164
+ "description": "bg | content | sticker | logo | main | …"
165
+ },
166
+ "path": { "type": "string", "minLength": 1 },
167
+ "enter_order": { "type": "integer", "minimum": 0 },
168
+ "type_only": { "type": "boolean" }
169
+ }
170
+ }
171
+ },
172
+ "sfx": {
173
+ "type": "array",
174
+ "items": { "type": "string" }
175
+ },
176
+ "cue_ids": {
177
+ "type": "array",
178
+ "description": "可选。对应 cue-timeline.json 的 cueId;Remotion 用此建立镜头与字幕/音频映射。",
179
+ "items": {"type": "string", "minLength": 1}
180
+ },
181
+ "elements_ref": { "type": "string" },
182
+ "notes": { "type": "string" }
183
+ }
184
+ }
185
+ }
186
+ }
@@ -0,0 +1 @@
1
+ > 已并入 [`成片包.template.md`](./成片包.template.md)。每集只产 **成片包.md**,不再单独产人审包.md。
@@ -0,0 +1,15 @@
1
+ # 人审说明(skill 内指南)
2
+
3
+ | 看什么 | 路径 |
4
+ |--------|------|
5
+ | 进度 | `执行清单.md` |
6
+ | 事实 | `0030-facts/事实-*.md` |
7
+ | 脚本 | `0040-script/脚本-*.md` |
8
+ | 设计 | `0050-design/design-lock.md` |
9
+ | 素材 | `0060-assets/素材清单.md` |
10
+ | **冻结(优先)** | **`0070-package/成片包.md`** |
11
+ | 机读 | `0070-package/shots.json` |
12
+ | 工厂 | `0080-factory/适配说明.md`(**用户选** remotion / hyperframe) |
13
+
14
+ 录音认成片包 / `vo_text`;工厂不得改口播语义。
15
+ 校验:`python …/uc-media-0070-package/scripts/validate_shots.py …/0070-package/shots.json`
@@ -0,0 +1,49 @@
1
+ # 成片包 · {主题}
2
+
3
+ | 项 | 内容 |
4
+ |----|------|
5
+ | 总时长 | _ s / _ 帧 |
6
+ | 画幅 · fps | 1920×1080 · 30 |
7
+ | style_id | (自 design-lock) |
8
+ | production_stack | remotion / hyperframe / … |
9
+ | shots.json | version=1 · 校验:OK / 失败原因 |
10
+ | cue-timeline.json | 可选;知识小城风格必填 · 校验:OK / 失败原因 |
11
+ | 旁白时码 | `estimated` / `aligned_to_audio` |
12
+ | 上游脚本 | `../0040-script/脚本-….md` |
13
+ | 上游 design | `../0050-design/design-lock.md` |
14
+ | 上游素材清单 | `../0060-assets/素材清单.md` |
15
+
16
+ ---
17
+
18
+ ## 1. 脉络摘要
19
+
20
+ **主线:** …
21
+
22
+ | 章 | 标题 | 记住一句 | 秒 |
23
+ |----|------|----------|-----|
24
+ | | | | |
25
+
26
+ ---
27
+
28
+ ## 2. 录音总表(播放序)
29
+
30
+ | 镜号 | 章 | 秒 | 口播全文 | 主视觉 | 素材就绪 |
31
+ |------|----|----|----------|--------|----------|
32
+ | A00 | | | | | ✅/⚠ |
33
+
34
+ ---
35
+
36
+ ## 3. 风险与缺口
37
+
38
+ -
39
+
40
+ ---
41
+
42
+ ## 4. 签字
43
+
44
+ - [ ] 脉络 OK
45
+ - [ ] 口播可念、无说教腔
46
+ - [ ] 镜号与素材对齐
47
+ - [ ] **可以开录 / 可以进工厂适配**
48
+
49
+ 审阅:________ 日期:________
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: uc-media-0080-factory
3
+ description: |
4
+ 工厂适配(0080):package 冻结后,由用户选择 Remotion 或 HyperFrame 生成/映射工程。
5
+ 触发词:Remotion、HyperFrame、工厂、适配、出片工程、0080。
6
+ 不要用于:改口播语义、改事实、当 flow。
7
+ ---
8
+
9
+ # uc-media-0080-factory · 工厂适配
10
+
11
+ > **可单独执行。** 上游须有合法 `0070-package/shots.json`。
12
+
13
+ **上游 schema:** [`../uc-media-0070-package/shots.schema.json`](../uc-media-0070-package/shots.schema.json)
14
+
15
+ ## 行为(本 skill 内聚)
16
+
17
+ 1. validate package;读 design 偏好;**选型确认后**映射/脚手架、写 `适配说明.md`。
18
+ 2. **工厂未确认 → 停,不写工程**。
19
+ 3. 不发明镜号、不私自改 vo/秒。
20
+
21
+ ---
22
+
23
+ ## 大步骤契约
24
+
25
+ | 项 | 内容 |
26
+ |----|------|
27
+ | **序** | 0080 |
28
+ | **stage** | `factory` |
29
+ | **上游** | `0070-package/shots.json` validate OK |
30
+ | **主文档** | **`0080-factory/适配说明.md`** |
31
+ | **工程目录** | `{episode_dir}/remotion/` **或** `hyperframe/` |
32
+ | **禁止** | 静默替用户选定工厂 |
33
+
34
+ ## 0. 用户选择工厂(硬停)
35
+
36
+ | 选项 | 工程根 |
37
+ |------|--------|
38
+ | **A. Remotion** | `{episode_dir}/remotion/` |
39
+ | **B. HyperFrame** | `{episode_dir}/hyperframe/` |
40
+
41
+ ## 1. 校验
42
+
43
+ ```bash
44
+ # 校验脚本在兄弟 skill(sync 后与本 skill 同级)
45
+ python3 ../uc-media-0070-package/scripts/validate_shots.py \
46
+ "{work_dir}/0070-package/shots.json"
47
+ ```
48
+
49
+ 失败 → 回 0070。
50
+
51
+ ## 2. 适配说明.md
52
+
53
+ 选型 · 上游路径 · 校验 · 工程根 · 镜号映射 · 已做/未做 ·「改口播回 0040/0070」
54
+
55
+ ## 3A/3B
56
+
57
+ Remotion:同号映射 · frames · durations/catalog
58
+ HyperFrame:按模板映射;无模板列缺口