produce-mv
npx skills add https://github.com/zhaihao118/micro-drama-skills --skill produce-mv
Agent 安装分布
Skill 文档
MVå¶ä½æè½ (Produce Music Video)
æ¦è¿°
æ¬æè½ç¨äºèªå¨åçæå®æ´MVï¼é³ä¹è§é¢ï¼ä½åçå ¨å¥å¶ä½ææ¡£åSeedanceè§é¢çæä»»å¡ãæ¯æä¸¤ç§è¾å ¥æ¨¡å¼ï¼
- 仿è¯/å§æ¬åä½ï¼æ ¹æ®ç¨æ·æä¾çæè¯æMVå§æ¬ï¼èªå¨çæå®æ´çåé设计åè§é¢çæä»»å¡
- ä»å·²æç´ æå¯¼å ¥ï¼è¯»åç¨æ·æå®æä»¶å¤¹ä¸çè§è²åèå¾çãåºæ¯å¾ççï¼ç»åå§æ¬çæè§é¢ä»»å¡
MVç¹ç¹ï¼ä¸çå§çåºå«ï¼
| 维度 | çå§ï¼produce-animeï¼ | MVï¼produce-mvï¼ |
|---|---|---|
| ç»æ | 25é à ä¸ä¸ä¸¤é¨å | æææ²æ®µè½å段ï¼é常8-20æ®µï¼ |
| é©±å¨ | å§æ é©±å¨ | é³ä¹/æè¯èå¥é©±å¨ |
| ç¼å· | DM-XXX | MV-XXX |
| åç®å½ | episodes/EP01-EP25 | segments/SEG01-SEGxx |
| æ¯æ®µæ¶é¿ | åºå®15s/part | åºå®15s/segment |
| æ»æ¶é¿ | åºå®12å30ç§ | åå³äºææ²é¿åº¦ï¼é常3-5åéï¼ |
| å¯¹è¯ | ä¸æäººç©å¯¹è¯ | æè¯ï¼å¯å«å¿µç½/ç¬ç½ï¼ |
| è§è§é£æ ¼ | ç»ä¸é£æ ¼ | æ¯æå¤é£æ ¼äº¤æ¿ï¼å¦ç°å®/å¹»æ³åæ¢ï¼ |
| ç´ ææ¥æº | èªå¨çæææè§è²å¾ | æ¯æå¯¼å ¥ç¨æ·å·²æç´ æ |
宿´å·¥ä½æµç¨ï¼4ä¸ªé¶æ®µï¼
| é¶æ®µ | æè½ | äº§åº |
|---|---|---|
| 1. MVå¶ä½ | produce-mv |
mv_script.md, character_bible.md, storyboard_config.json, video_index.json |
| 2. åªä½çæ | generate-media |
è§è²åèå¾ + åºæ¯åèå¾ + åéå¾ |
| 3. ä»»å¡çæ | produce-mvï¼ç¬¬ä¸æ¥ï¼ |
seedance_project_tasks.jsonï¼ä½¿ç¨ (@æä»¶å) å¼ç¨å¾çï¼ |
| 4. ä»»å¡æäº¤ | submit-anime-project |
æ¹éæ¨éå° Seedance API |
è§è§é£æ ¼é¢è®¾
é¡¹ç®æ¯æä» /data/dongman/.config/visual_styles.json 读åè§è§é£æ ¼é¢è®¾ãMVç¹å«æ¯æå¤é£æ ¼äº¤æ¿ï¼å¦ç°å®é£æ ¼A + å¹»æ³é£æ ¼B交æ¿ï¼ã
â ï¸ é£æ ¼éæ©äº¤äºï¼å¨å¼å§å¶ä½åï¼ä½¿ç¨
ask_questionså·¥å ·è®©ç¨æ·éæ©è§è§é£æ ¼ãMVå¯ä»¥éæ©ï¼
- åä¸é£æ ¼ï¼å ¨çç»ä¸
- å飿 ¼äº¤æ¿ï¼å¦”ç°å®ä¸ç”ç¨é£æ ¼A4幻æ³ä¸ç”ç¨é£æ ¼Bï¼å¨
metadata.jsonçvisual_stylesæ°ç»ä¸è®°å½ï¼
æ§è¡æµç¨
å½ç¨æ·è¦æ±å¶ä½MVæ¶ï¼æä»¥ä¸æ¥éª¤é¡ºåºæ§è¡ï¼
ç¬¬ä¸æ¥ï¼åå§å项ç®
- 读å
/data/dongman/projects/index.jsonè·åå½åä½åç¼å·- MV项ç®ä½¿ç¨
MV-XXXç¼å·ï¼ä¸çå§DM-XXXåºåï¼ - å¦
index.json䏿 MV 项ç®ï¼ä»MV-001å¼å§
- MV项ç®ä½¿ç¨
- å¨
/data/dongman/projects/ä¸å建æ°ä½åç®å½ï¼å½åè§åï¼{MVç¼å·}_{ä½ååç§°æ¼é³ç¼©å}/ - å建ä½åç®å½ç»æï¼
projects/
âââ index.json # ææä½åç´¢å¼ï¼å
¨å±ï¼DM+MVå
±ç¨ï¼
âââ MV-001_xxxx/ # åé¨MVä½åç®å½
âââ metadata.json # ä½åå
æ°æ®
âââ script/
â âââ mv_script.md # 宿´MVåéå§æ¬
âââ characters/ # è§è²è®¾è®¡
â âââ character_bible.md # è§è²å£ç»
â âââ ref_index.json # è§è²åèå¾ç´¢å¼
âââ scenes/ # åºæ¯è®¾è®¡
â âââ scene_bible.md # åºæ¯å£ç»
â âââ ref_index.json
âââ props/ # éå
·è®¾è®¡
â âââ prop_bible.md # éå
·å£ç»
â âââ ref_index.json
âââ assets/ # å¤é¨å¯¼å
¥ç´ æï¼ç¨æ·æä¾ï¼
â âââ README.md # ç´ æè¯´æ
âââ segments/ # åæ®µå
å®¹ï¼æ¯æ®µ15sï¼
â âââ SEG01/
â â âââ storyboard_config.json # æ¬æ®µæ
äºæ¿é
ç½®ï¼å«9å®«æ ¼åéï¼
â âââ SEG02/
â â âââ storyboard_config.json
â âââ ... (SEG01-SEGxx)
âââ seedance_project_tasks.json # [é¶æ®µ3·åªä½çæå] å
¨MV Seedanceä»»å¡
âââ video_index.json # è§é¢ç¼å·ç®¡çç´¢å¼
ç¬¬äºæ¥ï¼è¯»å/å¯¼å ¥ç´ æï¼å¯éï¼
å¦ç¨æ·æå®äºç´ ææä»¶å¤¹è·¯å¾ï¼æ§è¡ç´ æå¯¼å ¥ï¼
2.1 æ«æç´ ææä»¶å¤¹
# æ¥åç¨æ·æå®çæä»¶å¤¹è·¯å¾ï¼ç»å¯¹è·¯å¾æç¸å¯¹äºworkspaceçè·¯å¾ï¼
# æ«æä»¥ä¸ç±»åçæä»¶ï¼
# - å¾çï¼.png, .jpg, .jpeg, .webp
# - å§æ¬ï¼.md, .txt
# - é³é¢ï¼.mp3, .wavï¼è®°å½è·¯å¾ï¼ä¸å¤çé³é¢å
容ï¼
2.2 ç´ æåç±»ä¸å¯¼å ¥
-
è§è²åèå¾ï¼
- æä»¶åå«
è§è²åæcharacterçå¾ç â å¤å¶å°characters/ - èªå¨æ´æ°
characters/ref_index.json - å¦ç¨æ·æç¡®æå®”xx.pngæ¯è§è²Açåèå¾”ï¼ææå®æ å°
- æä»¶åå«
-
åºæ¯åèå¾ï¼
- æä»¶åå«
sceneæåºæ¯çå¾ç â å¤å¶å°scenes/ - èªå¨æ´æ°
scenes/ref_index.json
- æä»¶åå«
-
éå ·åèå¾ï¼
- æä»¶åå«
propæéå ·çå¾ç â å¤å¶å°props/ - èªå¨æ´æ°
props/ref_index.json
- æä»¶åå«
-
å§æ¬æä»¶ï¼
.mdæ.txtæä»¶ â 读åå 容ä½ä¸ºMVå§æ¬è¾å ¥
-
å ¶ä»ç´ æï¼
- å¤å¶å°
assets/ï¼è®°å½å°assets/README.md
- å¤å¶å°
2.3 交äºç¡®è®¤
ç¨ ask_questions è®©ç¨æ·ç¡®è®¤ç´ ææ å°ï¼
- “æ£æµå°ä»¥ä¸æä»¶ï¼è¯·ç¡®è®¤ç¨éï¼”
- ååºæä»¶å忍æµçç¨éï¼è§è²å¾/åºæ¯å¾/å ¶ä»ï¼
- è®©ç¨æ·è°æ´æ å°
æ ç´ ææ¨¡å¼ï¼å¦ç¨æ·æªæå®ç´ ææä»¶å¤¹ï¼åææè§è²/åºæ¯åèå¾å¨é¶æ®µ2ï¼generate-mediaï¼ä¸èªå¨çæã
ç¬¬ä¸æ¥ï¼è¯»å/åä½MVå§æ¬
模å¼Aï¼ä»å·²æå§æ¬è¯»å
å¦æç¨æ·æä¾äºMVå§æ¬æä»¶ï¼å¦ notes/mv reffiles/MVå§æ¬ï¼å¡äººæçèµåç¥è¯.mdï¼ï¼è¯»åå¹¶è§£æï¼
- è§£æå§æ¬è¡¨æ ¼/段è½ï¼æåï¼
- æ¯ä¸ªåéçåºå·
- æè¯/å¬è§èå¥ï¼å¯¹åºæ¶é´çº¿ï¼
- ç»é¢å 容ï¼è§è§åç°æè¿°ï¼
- é头è¿ç¨ï¼Cameraï¼
- ç»é¢é£æ ¼ & è²è°
- æ ¹æ®æ®µè½æ°é计ç®Seedanceåæ®µæ°ï¼æ¯æ®µ15ç§ï¼
- å°å§æ¬éé
为æ å
mv_script.mdæ ¼å¼
模å¼Bï¼ä»æè¯åä½
å¦æç¨æ·åªæä¾æè¯ï¼æææ²åï¼ç±AIåä½å§æ¬ï¼ï¼æä»¥ä¸æ¥éª¤ï¼
- åææè¯ç»æï¼åå¥ã主æã坿ãé´å¥ã尾声çï¼
- æ ¹æ®ææ²èå¥è®¾è®¡è§è§åäº
- ç¡®å®é£æ ¼æ¹åï¼åå®/å¹»æ³/æ··åï¼
- çæå®æ´MVåéå§æ¬
çæ script/mv_script.md
# ãææ²åãMV 宿´åéå§æ¬
## ä½åä¿¡æ¯
- **ææ²å**ï¼[ææ²åç§°]
- **èºæ¯å®¶/åä½è
**ï¼[åç§°]
- **ææ²æ¶é¿**ï¼[XåXç§]
- **MVç±»å**ï¼[åäºå/æ¦å¿µå/表æ¼å/æ··åå]
- **è§è§é£æ ¼**ï¼[飿 ¼æè¿°]
- 飿 ¼Aï¼å¦éç¨ï¼ï¼[æè¿°]
- 飿 ¼Bï¼å¦éç¨ï¼ï¼[æè¿°]
- **æ ¸å¿æ¦å¿µ**ï¼[ä¸å¥è¯æ¦æ¬MVæ ¸å¿è§è§æ¦å¿µ]
- **ç®æ åä¼**ï¼[ç®æ 群ä½]
- **æ»æ®µæ°**ï¼[X段 à 15ç§ = æ»æ¶é¿]
## ææ²ç»æåæ
| æ®µè½ | æ¶é´èå´ | ç±»å | æ
绪 |
|------|---------|------|------|
| åå¥ | 0:00-0:15 | instrumental | åæ/æ¬å¿µ |
| 主æ1 | 0:15-0:45 | verse | åè¿°/å¹³é |
| 坿1 | 0:45-1:15 | chorus | çå/æ¿æ |
| ... | ... | ... | ... |
## ä¸çè§/è§è§æ¦å¿µè®¾å®
[200-300åæè¿°MVçè§è§ä¸çè§]
## åéèæ¬
### åé01ï¼[æ®µè½æ é¢]
- **æ¶é´**ï¼0:00-0:15ï¼å¯¹åºSegment SEG01ï¼
- **æè¯/é³é¢**ï¼[å¯¹åºæè¯æé³ä¹æè¿°]
- **ç»é¢å
容**ï¼[100å详ç»è§è§æè¿°]
- **é头è¿ç¨**ï¼[é头类å+è¿å¨æ¹å¼]
- **ç»é¢é£æ ¼**ï¼[飿 ¼A/B + è²è°æè¿°]
- **åºåºè§è²**ï¼[è§è²å表]
- **使ç¨åºæ¯**ï¼[åºæ¯IDå表]
- **使ç¨éå
·**ï¼[éå
·IDå表]
- **æ
æåºè°**ï¼[æ
绪å
³é®è¯]
- **AIç»å¾å
³é®è¯ï¼è±æï¼**ï¼[ç¨äºçæåéå¾çPrompt]
### åé02ï¼[æ®µè½æ é¢]
...ï¼æææ²ç»æåæ®µï¼
## 导æ¼å¤æ³¨
[å
³äºè§è§åäºãå¡ç¹è®¾è®¡ãè½¬åºæå·§ãè²å½©éå»çæ»ä½æ§è¡å»ºè®®]
ç¬¬åæ¥ï¼è§è²/åºæ¯/éå ·è®¾è®¡
4.1 è§è²è®¾è®¡ characters/character_bible.md
妿已ä»ç´ ææä»¶å¤¹å¯¼å ¥äºè§è²åèå¾ï¼è§è²è®¾å®åºäºå·²æå¾çæè¿°ï¼
# MVè§è²è®¾å®é
## 主è§
### è§è²1ï¼[åå/代å·]
- **è§è²å®ä½**ï¼[主è§/é
è§/群æ¼]
- **å¤è²ç¹å¾**ï¼[è¯¦ç»æè¿°]
- **æè£
设计**ï¼
- 飿 ¼Aé åï¼[ç°å®ä¸çæè£
]
- 飿 ¼Bé åï¼[å¹»æ³ä¸çæè£
]ï¼å¦éç¨ï¼
- **è§è²å¼§å
**ï¼[å¨MVä¸çæ
æ/ç¶æåå]
- **åè徿¥æº**ï¼[imported/generated]
- 导å
¥æä»¶ï¼[åå§æä»¶å]ï¼å¦ä¸ºå¯¼å
¥ï¼
- **AIç»å¾å
³é®è¯ï¼è±æï¼**ï¼[Prompt]
## 群æ¼/é
è§
...
4.2 åºæ¯è®¾è®¡ scenes/scene_bible.md
# MVåºæ¯è®¾å®é
## åºæ¯1ï¼[åºæ¯åç§°]
- **åºæ¯ID**ï¼scene_01
- **åºæ¯ç±»å**ï¼[ç°å®/å¹»æ³/è¿æ¸¡]
- **åºæ¯æè¿°**ï¼[è¯¦ç»æè¿°]
- **åºç°æ®µè½**ï¼SEG01, SEG03, SEG05...
- **è²è°/æ°å´**ï¼[è²è°æè¿°]
- **åè徿¥æº**ï¼[imported/generated]
- **AIç»å¾å
³é®è¯ï¼è±æï¼**ï¼[Prompt]
4.3 éå
·è®¾è®¡ props/prop_bible.md
# MVéå
·è®¾å®é
## éå
·1ï¼[éå
·åç§°]
- **éå
·ID**ï¼prop_01
- **éå
·æè¿°**ï¼[å¤è§/æè´¨/尺寸]
- **è±¡å¾æä¹**ï¼[å¨MVä¸çè§è§è±¡å¾]
- **åºç°æ®µè½**ï¼SEG02, SEG08, SEG15
- **åè徿¥æº**ï¼[imported/generated]
- **AIç»å¾å
³é®è¯ï¼è±æï¼**ï¼[Prompt]
ç´ æä¼å ååï¼å¦æç¨æ·å·²å¯¼å ¥æè§è²/åºæ¯/éå ·çåèå¾ï¼å
character_bible.md/scene_bible.md/prop_bible.mdä¸å¯¹åºæ¡ç®çåè徿¥æºæ 记为importedï¼ä¸åéè¿generate-mediaéå¤çæã
ç¬¬åæ¥Bï¼èµäº§å®æ´æ§æ£æ¥ä¸è¡¥å ¨
å®æç¬¬åæ¥è§è²/åºæ¯/éå ·è®¾è®¡åï¼å¿ é¡»æ§è¡èµäº§å®æ´æ§æ£æ¥ï¼ç¡®ä¿ææå¨åéä¸è¢«å¼ç¨çèµäº§é½æå¯¹åºçåè徿çæè®¡åã
æ£æ¥é»è¾
def check_asset_completeness(project_dir):
"""æ£æ¥ææèµäº§æ¯å¦å®æ´ï¼è¿å缺失æ¸
å"""
missing = {"characters": [], "scenes": [], "props": []}
# 1. è§£æè§è²å£ç»ï¼æ£æ¥æ¯ä¸ªè§è²æ¯å¦æåèå¾
characters = parse_character_bible(project_dir / "characters/character_bible.md")
for char in characters:
ref_path = project_dir / f"characters/{char['name']}_ref.png"
if not ref_path.exists():
missing["characters"].append(char)
# 2. è§£æåºæ¯å£ç»ï¼æ£æ¥æ¯ä¸ªåºæ¯æ¯å¦æåèå¾
scenes = parse_scene_bible(project_dir / "scenes/scene_bible.md")
for scene in scenes:
ref_path = project_dir / f"scenes/{scene['id']}_ref.png"
if not ref_path.exists():
missing["scenes"].append(scene)
# 3. è§£æéå
·å£ç»ï¼æ£æ¥æ¯ä¸ªéå
·æ¯å¦æåèå¾
props = parse_prop_bible(project_dir / "props/prop_bible.md")
for prop in props:
ref_path = project_dir / f"props/{prop['id']}_ref.png"
if not ref_path.exists():
missing["props"].append(prop)
return missing
è¡¥å ¨çç¥
èµäº§ç¼ºå¤±æ¶ï¼æä»¥ä¸ä¼å çº§è¡¥å ¨ï¼
| ä¼å 级 | è¡¥å ¨æ¹å¼ | éç¨åºæ¯ | 说æ |
|---|---|---|---|
| 1 | ç¨æ·æå¨æä¾ | ç¨æ·æç°æç´ æ | éè¿ ask_questions 询é®ç¨æ·æ¯å¦æå¯ç¨ç´ æ |
| 2 | èªå¨çæ | æ ç°æç´ æ | è°ç¨ generate-media æè½ç对åºé¶æ®µèªå¨çæ |
| 3 | æ è®°å¾ çæ | æ¹éå¤çæ¨¡å¼ | å¨ ref_index.json 䏿 è®° status: "pending"ï¼ç»ä¸å¨é¶æ®µ2çæ |
è¡¥å ¨æ§è¡æµç¨
-
æ±æ»ç¼ºå¤±èµäº§æ¸ åï¼
â ï¸ èµäº§å®æ´æ§æ£æ¥ç»æï¼ - è§è²åèå¾ç¼ºå¤±ï¼3个ï¼ä¸»è§ãé è§Aãé è§Bï¼ - åºæ¯åèå¾ç¼ºå¤±ï¼2个ï¼scene_01 åºç§å±ãscene_03 å°éç«ï¼ - éå ·åèå¾ç¼ºå¤±ï¼1个ï¼prop_01 ARç¼éï¼ -
交äºç¡®è®¤è¡¥å ¨æ¹å¼ï¼ 使ç¨
ask_questionsè®©ç¨æ·éæ©è¡¥å ¨çç¥ï¼- é项Aï¼ãç«å³èªå¨çæææç¼ºå¤±èµäº§ãâ ç´æ¥è°ç¨
generate-mediaè¡¥å ¨ - é项Bï¼ãæç¨åæå¨æä¾é¨åç´ æãâ æ 记为
pendingï¼ç»§ç»åç»æ¥éª¤ - é项Cï¼ãè·³è¿ç¼ºå¤±èµäº§ï¼ä»
ç¨å·²æç´ æãâ å¨ prompt ä¸ä¸å¼ç¨ç¼ºå¤±èµäº§ç
(@xx_ref.png)
- é项Aï¼ãç«å³èªå¨çæææç¼ºå¤±èµäº§ãâ ç´æ¥è°ç¨
-
èªå¨è¡¥å ¨è§è²åèå¾ï¼é项Aæ¶ï¼ï¼
- ä»
character_bible.md读å缺失è§è²çAIç»å¾å ³é®è¯ï¼è±æï¼ - è°ç¨ Gemini å¾ç模åçæè§è²åèå¾
- ä¿åå°
characters/{è§è²å}_ref.png - æ´æ°
characters/ref_index.jsonï¼æ è®°source: "generated"
- ä»
-
èªå¨è¡¥å ¨åºæ¯åèå¾ï¼é项Aæ¶ï¼ï¼
- ä»
scene_bible.md读åç¼ºå¤±åºæ¯çAIç»å¾å ³é®è¯ï¼è±æï¼ - çæåå®«æ ¼åæå¾ï¼æ£é¢/å·¦45°/å³45°/èé¢ï¼
- ä¿åå°
scenes/{åºæ¯ID}_ref.png - æ´æ°
scenes/ref_index.jsonï¼æ è®°source: "generated"
- ä»
-
èªå¨è¡¥å ¨éå ·åèå¾ï¼é项Aæ¶ï¼ï¼
- ä»
prop_bible.md读å缺失éå ·çAIç»å¾å ³é®è¯ï¼è±æï¼ - çæä¸è§å¾åæå¾ï¼æ£é¢/ä¾§é¢/俯è§ï¼
- ä¿åå°
props/{éå ·ID}_ref.png - æ´æ°
props/ref_index.jsonï¼æ è®°source: "generated"
- ä»
-
æ´æ° ref_index.jsonï¼
è¡¥å ¨åç
ref_index.json示ä¾ï¼{ "主è§": { "source": "imported", "original_file": "hero_front.png", "ref_file": "characters/主è§_ref.png", "status": "ready" }, "é è§A": { "source": "generated", "ref_file": "characters/é è§A_ref.png", "status": "ready", "generated_date": "2026-02-23" }, "群æ¼B": { "source": "pending", "ref_file": null, "status": "pending", "reason": "ç¨æ·éæ©ç¨åæä¾" } }
åéå¼ç¨æ¶ç缺失å¤ç
å¨ç¬¬ä¸æ¥çæ Seedance 任塿¶ï¼å¦æèµäº§ä»ä¸º pending ç¶æï¼
- ä¸å¨ prompt 头é¨å£°æè¯¥èµäº§ç
(@xx_ref.png)å¼ç¨ - ä¸å å ¥ referenceFiles æ°ç»
- å¨ prompt çé头æè¿°ä¸ï¼æ¹ç¨çº¯æåæè¿°æ¿ä»£å¾çå¼ç¨ï¼éçº§æ¹æ¡ï¼
- å¨ä»»å¡ç
tagsä¸è¿½å"incomplete_refs"æ è®°ï¼ä¾¿äºåç»ææ¥
â ï¸ éè¦ï¼èµäº§è¡¥å ¨æ¯ MV å¶ä½çå ³é®æ¥éª¤ã缺失åèå¾ä¼ç´æ¥å½±å Seedance è§é¢çæçè§è²ä¸è´æ§ååºæ¯åç¡®æ§ã建议ä¼å éæ©ãç«å³èªå¨çæãï¼ç¡®ä¿ææèµäº§å°±ç»ªååè¿å ¥åéå¾çæåä»»å¡æäº¤é¶æ®µã
ç¬¬äºæ¥ï¼éæ®µçææ äºæ¿é ç½®
5.1 ç¡®å®æ®µæ°
æ ¹æ®ææ²æ¶é¿è®¡ç®æ®µæ°ï¼
- æ»æ®µæ° = ceil(ææ²æ»ç§æ° / 15)
- ä¾ï¼4åéææ² = 240ç§ = 16段
5.2 çæ storyboard_config.jsonï¼æ¯æ®µ1个ï¼
对æ¯ä¸ª Segmentï¼SEG01-SEGxxï¼ï¼çæ segments/SEGxx/storyboard_config.jsonï¼
{
"video_id": "MV-001-SEG01",
"project_type": "mv",
"segment": 1,
"total_segments": 16,
"segment_title": "æ®µè½æ é¢",
"duration_seconds": 15,
"fps": 24,
"resolution": "1920x1080",
"aspect_ratio": "16:9",
"style": "music_video",
"visual_style": {
"style_id": 1,
"style_name": "Cinematic Film",
"camera": "...",
"film_stock": "...",
"filter": "...",
"focal_length": "...",
"aperture": "...",
"prompt_suffix": "..."
},
"active_visual_mode": "style_a",
"subtitle": false,
"music_sync": {
"time_range_in_song": "0:00-0:15",
"lyrics": "å¯¹åºæè¯ææ¬ï¼å¯å«å¤å¥ï¼",
"music_section": "intro",
"tempo": "slow",
"emotion_curve": "building"
},
"scene_refs": ["scene_01"],
"prop_refs": [],
"character_refs": ["主è§"],
"atmosphere": {
"overall_mood": "æ®µè½æ°å´æ»æè¿°",
"color_palette": ["#è²å¼1", "#è²å¼2", "#è²å¼3"],
"lighting": "å
å½±æè¿°",
"weather": "天æ°/ç¯å¢"
},
"video_prompt": "English prompt for AI video generation of this segment (15s), 16:9 aspect ratio.",
"bgm": {
"description": "æ¬æ®µé³ä¹ç¹å¾",
"mood": "é³ä¹æ
绪å
³é®è¯",
"instruments": "主è¦ä¹å¨",
"dynamics": "å度ååï¼æ¸å¼º/æ¸å¼±/çªå¼ºçï¼"
},
"storyboard_9grid": [
{
"grid_number": 1,
"time_start": 0.0,
"time_end": 1.67,
"scene_description": "ç»é¢æè¿°ï¼50åï¼å«äººç©å¨ä½ã表æ
ãå
å½±ï¼",
"lyrics_at_grid": "æ¬æ ¼å¯¹åºçæè¯ï¼å¦æï¼",
"camera": {
"type": "è¿æ¯|䏿¯|è¿æ¯|ç¹å",
"movement": "åºå®|æ¨|æ|æ|ç§»|è·|ç¯ç»|èªæ",
"angle": "å¹³è§|俯è§|ä»°è§|主è§",
"special": "åå¼¹æ¶é´|å»¶æ¶æå½±|æææå¨ çï¼å¯éï¼"
},
"characters": [
{
"name": "è§è²å",
"action": "å¨ä½æè¿°",
"expression": "表æ
",
"position": "ç»é¢ä½ç½®(å·¦/ä¸/å³)"
}
],
"visual_mode": "style_a|style_b",
"transition": {
"type": "cut|dissolve|match_cut|glitch|shatter|none",
"description": "è½¬åºæè¿°ï¼å¦æï¼"
},
"atmosphere": "æ¬æ ¼æ°å´æè¿°",
"sfx": "鳿æè¿°",
"ai_image_prompt": "English prompt for this grid's image: character, composition, lighting, mood, 16:9 aspect ratio. [visual_style.prompt_suffix will be appended automatically]"
},
{
"grid_number": 2,
"time_start": 1.67,
"time_end": 3.33,
"...": "åä¸ç»æ"
},
{ "grid_number": 3, "time_start": 3.33, "time_end": 5.0, "...": "åä¸" },
{ "grid_number": 4, "time_start": 5.0, "time_end": 6.67, "...": "åä¸" },
{ "grid_number": 5, "time_start": 6.67, "time_end": 8.33, "...": "åä¸" },
{ "grid_number": 6, "time_start": 8.33, "time_end": 10.0, "...": "åä¸" },
{ "grid_number": 7, "time_start": 10.0, "time_end": 11.67, "...": "åä¸" },
{ "grid_number": 8, "time_start": 11.67, "time_end": 13.33, "...": "åä¸" },
{ "grid_number": 9, "time_start": 13.33, "time_end": 15.0, "...": "åä¸" }
]
}
ä¸çå§storyboardçå ³é®å·®å¼ï¼
- å¢å
music_syncèï¼è®°å½æè¯ãé³ä¹æ®µè½ç±»åãèå¥ä¿¡æ¯ - å¢å
active_visual_modeï¼æ è¯å½å段使ç¨çè§è§é£æ ¼æ¨¡å¼ - å¢å
lyrics_at_gridï¼æ¯æ ¼å¯¹åºçæè¯ - å¢å
visual_modeï¼æ¯æ ¼çè§è§é£æ ¼ï¼æ¯ææ ¼é´é£æ ¼åæ¢ï¼ - å¢å
transitionï¼è½¬åºç±»åæè¿°ï¼MVè½¬åºæ´ä¸°å¯ï¼ - æ
part_a/part_bååï¼MVæ¯æ®µå³ä¸ä¸ªå®æ´ç15sçæ®µ
9å®«æ ¼åéå¸å±ï¼ä¸çå§ä¸è´ï¼3è¡Ã3åï¼16:9æ¯ä¾ï¼ï¼
| æ ¼1 (0.0-1.67s) | æ ¼2 (1.67-3.33s) | æ ¼3 (3.33-5.0s) |
| æ ¼4 (5.0-6.67s) | æ ¼5 (6.67-8.33s) | æ ¼6 (8.33-10.0s) |
| æ ¼7 (10.0-11.67s) | æ ¼8 (11.67-13.33s) | æ ¼9 (13.33-15.0s) |
ç¬¬å æ¥ï¼çæè§é¢ç¼å·ç®¡çç´¢å¼
çæ video_index.jsonï¼
{
"project_id": "MV-001",
"project_type": "mv",
"project_name": "ä½ååç§°",
"song_title": "ææ²å",
"total_segments": 16,
"created_date": "2026-02-23",
"status": "scripted",
"videos": [
{
"segment": 1,
"segment_title": "æ®µè½æ é¢",
"video_id": "MV-001-SEG01",
"duration": 15,
"music_section": "intro",
"time_in_song": "0:00-0:15",
"status": "script_ready",
"files": {
"storyboard_config": "segments/SEG01/storyboard_config.json"
}
},
{
"segment": 2,
"video_id": "MV-001-SEG02",
"...": "..."
}
],
"editing_guide": {
"total_segments": 16,
"total_videos": 16,
"duration_per_segment_seconds": 15,
"total_duration_seconds": 240,
"grids_per_segment": 9,
"total_grids": 144,
"recommended_export_format": "MP4 H.264",
"recommended_resolution": "1920x1080",
"recommended_fps": 24,
"post_production_note": "æç»åªè¾æ¶éé
ååæ²é³è½¨å¯¹é½æ¯æ®µèå¥"
}
}
æ´æ°å ¨å±ç´¢å¼
æ´æ° /data/dongman/projects/index.jsonï¼MV项ç®ä¸DM项ç®å
񆋬
{
"last_updated": "2026-02-23",
"total_projects": 4,
"next_id": "DM-004",
"next_mv_id": "MV-002",
"projects": [
{ "project_id": "DM-001", "...": "..." },
{ "project_id": "DM-002", "...": "..." },
{ "project_id": "DM-003", "...": "..." },
{
"project_id": "MV-001",
"project_type": "mv",
"project_name": "å¡äººæ",
"song_title": "XWOW-å¡äººæ",
"directory": "MV-001_frc/",
"segments": 16,
"status": "scripted",
"created_date": "2026-02-23",
"video_count": 16
}
]
}
ç¬¬ä¸æ¥ï¼çæ Seedance ä»»å¡ï¼â ï¸ åªä½çæåæ§è¡ï¼
åç½®æ¡ä»¶ï¼å¿ é¡»å è¿è¡
generate-mediaæè½ï¼ç¡®ä¿ä»¥ä¸æä»¶å·²çæï¼
- è§è²åèå¾ï¼
characters/{è§è²å}_ref.pngï¼æä»ç´ æå¯¼å ¥ï¼- åºæ¯åèå¾ï¼
scenes/{åºæ¯ID}_ref.pngï¼æä»ç´ æå¯¼å ¥ï¼- éå ·åèå¾ï¼
props/{éå ·ID}_ref.pngï¼æä»ç´ æå¯¼å ¥ï¼- åéåèå¾ï¼
segments/SEGxx/{project_id}-SEGxx_storyboard.png
å¨é¡¹ç®æ ¹ç®å½çæ seedance_project_tasks.jsonï¼ä»»å¡æ° = 段æ°ï¼ã
7.1 seedance_project_tasks.json æ ¼å¼
{
"project_id": "MV-001",
"project_type": "mv",
"project_name": "å¡äººæ",
"song_title": "XWOW-å¡äººæ",
"total_tasks": 16,
"created_date": "2026-02-23",
"tasks": [
{
"prompt": "(@MV-001-SEG01_storyboard.png) 为9å®«æ ¼åéåèå¾ï¼(@主è§_ref.png) 为è§è²ã主è§ãçåè形象ã\n\nä»é头1å¼å§ï¼ä¸è¦å±ç¤ºå¤å®«æ ¼åéåèå¾çãåéå¾å¶ä½æçµå½±çº§å«ç髿¸
å½±è§çº§å«çè§é¢ã严ç¦åèå¾åºç°å¨ç»é¢ä¸ãæ¯ä¸ªç»é¢ä¸ºåä¸ç»å¹
ï¼ç¬ç«å±ç¤ºï¼æ²¡æä»»ä½åå²çº¿æå¤å®«æ ¼ææç»é¢ã(Exclusions); Do not show speech bubbles, do not show comic panels, remove all text, full technicolor.æé¤é¡¹: No speech bubbles(æ å¯¹è¯æ°æ³¡),No text(æ æå), No comic panels(æ æ¼«ç»åé),No split screen(æ åå±),No monochrome(éåè²/é»ç½),No manga effects(æ æ¼«ç»ç¹æçº¿).æ£åæ¿ä»£:Fullscreen(å
¨å±),Single continuous scene(åä¸è¿ç»åºæ¯).表æ
ãå´åãå¼å¸ãå°è¯ä¸¥æ ¼åæ¥ã廿å¾çä¸çæ°´å°ï¼ä¸è¦åºç°ä»»ä½æ°´å°ã没æä»»ä½åå¹ã\n\nMV-001-SEG01 ãæ®µè½æ é¢ããæè¯ï¼[å¯¹åºæè¯]ã æ°å´ï¼æ°å´æè¿°ã åºæ¯åè (@scene_01_ref.png)ã\n\né头1(0.0s-1.67s): ...\né头2(1.67s-3.33s): ...\n...\né头9(13.33s-15.0s): ...",
"description": "MV-001 SEG01 ãæ®µè½æ é¢ã MVåéâè§é¢",
"modelConfig": {
"model": "Seedance 2.0 Fast",
"referenceMode": "å
¨è½åè",
"aspectRatio": "16:9",
"duration": "15s"
},
"referenceFiles": [
"segments/SEG01/MV-001-SEG01_storyboard.png",
"characters/主è§_ref.png",
"scenes/scene_01_ref.png"
],
"realSubmit": false,
"priority": 1,
"tags": ["MV-001", "SEG01"]
}
]
}
7.2 prompt æå»ºè§åï¼MVçï¼
-
头é¨å£°æï¼ååºåéå¾åè§è²åèå¾
(@{project_id}-SEGxx_storyboard.png) 为9å®«æ ¼åéåèå¾(@{è§è²å}_ref.png) 为è§è²ã{è§è²å}ãçåè形象ï¼ä» ååºæ¬æ®µåºåºè§è²ï¼
-
æ åæé¤æä»¤ï¼ä¸çå§ä¸è´ï¼æ¯ä¸ªpromptå¿ é¡»å å«ï¼ï¼
ä»é头1å¼å§ï¼ä¸è¦å±ç¤ºå¤å®«æ ¼åéåèå¾çãåéå¾å¶ä½æçµå½±çº§å«ç髿¸ å½±è§çº§å«çè§é¢ã严ç¦åèå¾åºç°å¨ç»é¢ä¸ãæ¯ä¸ªç»é¢ä¸ºåä¸ç»å¹ ï¼ç¬ç«å±ç¤ºï¼æ²¡æä»»ä½åå²çº¿æå¤å®«æ ¼ææç»é¢ã(Exclusions); Do not show speech bubbles, do not show comic panels, remove all text, full technicolor.æé¤é¡¹: No speech bubbles(æ å¯¹è¯æ°æ³¡),No text(æ æå), No comic panels(æ æ¼«ç»åé),No split screen(æ åå±),No monochrome(éåè²/é»ç½),No manga effects(æ æ¼«ç»ç¹æçº¿).æ£åæ¿ä»£:Fullscreen(å ¨å±),Single continuous scene(åä¸è¿ç»åºæ¯).表æ ãå´åãå¼å¸ãå°è¯ä¸¥æ ¼åæ¥ã廿å¾çä¸çæ°´å°ï¼ä¸è¦åºç°ä»»ä½æ°´å°ã没æä»»ä½åå¹ã -
段è½ä¿¡æ¯è¡ + æè¯ + åºæ¯/éå ·å èå¼ç¨ï¼
{video_id} ã{segment_title}ããæè¯ï¼{lyrics}ã æ°å´ï¼{atmosphere.overall_mood}ã åºæ¯åè (@{åºæ¯ID}_ref.png)ãéå ·åè (@{éå ·ID}_ref.png)ã -
éé头æè¿°ï¼9æ¡ï¼ä¸çå§ç»æä¸è´ï¼ï¼
é头N(time_start-time_end): 第X段第Næ ¼ï¼{scene_description}ã{camera.movement}{camera.type}{camera.angle}ãæè¯ï¼{lyrics_at_grid}ã{atmosphere}ã 鳿:{sfx}ã (@{è§è²å}_ref.png){è§è²å}{action}ï¼è¡¨æ {expression}ã- MV䏿 对è¯ï¼æ¹ä¸ºæè¯åæ¥æè¿°
- 妿飿 ¼åæ¢ï¼å¨è½¬åºæ ¼æ³¨æ
[飿 ¼åæ¢: AâB] - æ¯ä¸ªè§è²æåæ¶é½ç¨
(@{è§è²å}_ref.png)åç¼
-
referenceFiles æå»ºè§åï¼ä¸çå§ä¸è´ï¼ï¼
- åéåèå¾ï¼
segments/SEGxx/{project_id}-SEGxx_storyboard.png - è§è²åèå¾ï¼
characters/{è§è²å}_ref.pngï¼æåºåºé¡ºåºï¼å»éï¼ - åºæ¯åèå¾ï¼
scenes/{åºæ¯ID}_ref.pngï¼å¦æï¼ - éå
·åèå¾ï¼
props/{éå ·ID}_ref.pngï¼å¦æï¼
- åéåèå¾ï¼
ç´ æå¯¼å ¥è¯¦ç»è§è
å¯¼å ¥æµç¨
ç¨æ·æå®æä»¶å¤¹è·¯å¾
â
æ«ææä»¶å¤¹ï¼éå½/ééå½å¯éï¼
â
ææä»¶ç±»ååç±»
â
ask_questions è®©ç¨æ·ç¡®è®¤æ å°
â
å¤å¶/龿¥æä»¶å°é¡¹ç®ç®å½
â
æ´æ° ref_index.json
æ¯æçç´ æç±»å
| ç´ æç±»å | æ©å±å | å¯¼å ¥ç®æ | 说æ |
|---|---|---|---|
| è§è²åèå¾ | .png/.jpg/.jpeg/.webp | characters/ | éå½å为 {è§è²å}_ref.png |
| åºæ¯åèå¾ | .png/.jpg/.jpeg/.webp | scenes/ | éå½å为 {scene_id}_ref.png |
| éå ·åèå¾ | .png/.jpg/.jpeg/.webp | props/ | éå½å为 {prop_id}_ref.png |
| MVå§æ¬ | .md/.txt | script/ | 读åå
容ï¼è½¬ä¸º mv_script.md |
| å ¶ä»ç´ æ | * | assets/ | ååä¿ç |
ç´ ææ å°äº¤äºç¤ºä¾
æ£æµå°ä»¥ä¸æä»¶ï¼
1. hero_front.png â è§è²åèå¾ï¼æ¨æµè§è²åï¼heroï¼
2. city_night.jpg â åºæ¯åèå¾
3. keyboard_glow.png â éå
·åèå¾
4. mv_script.md â MVå§æ¬
请确认æè°æ´æ å°ã
ref_index.json æ ¼å¼ï¼ç´ æå¯¼å ¥åï¼
{
"主è§": {
"source": "imported",
"original_file": "hero_front.png",
"ref_file": "characters/主è§_ref.png",
"import_date": "2026-02-23"
}
}
metadata.json æ ¼å¼
{
"project_id": "MV-001",
"project_type": "mv",
"project_name": "å¡äººæ",
"project_name_en": "FanRenGe",
"directory": "MV-001_frc/",
"song_title": "XWOW-å¡äººæ",
"song_artist": "XWOW",
"song_duration_seconds": 240,
"genre": "ææ» / èµåæå
",
"mv_type": "åäºå+æ¦å¿µå",
"visual_style": {
"mode": "dual",
"style_a": {
"name": "ç°æç°å®ä¸»ä¹",
"description": "æ¥æ¤ãåæçç°ä»£é½å¸ï¼å·ç°/æèè²è°ï¼ææé头ï¼é¢ç²æ",
"style_id": null,
"prompt_suffix": "handheld camera, film grain, desaturated cold tones, blue-grey color palette, urban isolation"
},
"style_b": {
"name": "䏿¹èµåç¥è¯",
"description": "å®å¤§æ°åç¥è¯ç©ºé´ï¼ééè²/éè¹èï¼å¹³ç¨³å¤§æ°é头ï¼å¤±éæ",
"style_id": null,
"prompt_suffix": "epic cyber mythology, golden and neon blue palette, weightless atmosphere, digital particles, majestic scale"
}
},
"target_audience": "éå¹´ / ç§æä»ä¸è
",
"total_segments": 16,
"segment_duration_seconds": 15,
"total_duration_seconds": 240,
"core_concept": "å¡äººä¹èº¯ï¼æ¯è©ç¥è¿¹ââå¹³å¡ç¨åºåå¨ä»£ç ä¸çä¸åé ä¼ å¥",
"status": "scripted",
"created_date": "2026-02-23",
"video_count": 16,
"imported_assets": {
"characters": 0,
"scenes": 0,
"props": 0,
"other": 0
}
}
å飿 ¼æ¨¡å¼è¯´æï¼å½
visual_style.mode为"dual"æ¶ï¼style_aåstyle_båå«æè¿°ä¸¤ç§äº¤æ¿ä½¿ç¨çè§è§é£æ ¼ãæ¯ä¸ª segment çstoryboard_config.jsonéè¿active_visual_modeåæ®µæå®ä½¿ç¨åªç§é£æ ¼ï¼æ¯æ ¼éè¿visual_modeåæ®µå¯è¿ä¸æ¥æ§å¶æ ¼çº§å«ç飿 ¼åæ¢ã
ç¼å·è§å
ä½åç¼å·
- MVæ ¼å¼ï¼
MV-XXXï¼XXX为ä¸ä½æ°åï¼ä»001éå¢ï¼ - 示ä¾ï¼
MV-001,MV-002,MV-003 - ä¸çå§
DM-XXXåºåç¬ç«è®¡æ°
è§é¢ç¼å·
- æ ¼å¼ï¼
{ä½åç¼å·}-SEG{段å·ä¸¤ä½} - 示ä¾ï¼
MV-001-SEG01,MV-001-SEG16
段å·ç¼å·
- æ ¼å¼ï¼
SEG{䏤使°å}ï¼ä»SEG01å¼å§ - æ®µæ°æ ¹æ®ææ²æ¶é¿å¨æç¡®å®
å 容åä½è§è
MVå§æ¬è¦æ±
- é³ä¹åæ¥ï¼æ¯æ®µçè§è§èå¥å¿ é¡»ä¸é³ä¹æ®µè½ï¼åå¥/主æ/坿/é´å¥/尾声ï¼å¹é
- æ ææ²çº¿ï¼å¯æé¨åçç»é¢å¿ é¡»é åæå¼ºççè§è§ååï¼ä¸é³ä¹çç¹åæ¥
- è§è§åäºï¼å³ä½¿æ¯æ¦å¿µåMVä¹éè¦æåºæ¬çè§è§åäºçº¿ï¼æ 绪弧线ï¼
- å¡ç¹è®¾è®¡ï¼é¼ç¹/éæå¤åºå¯¹åºç»é¢ç¡¬åæå ³é®å¨ä½
- 转åºè®¾è®¡ï¼MVè½¬åºæ¯çå§æ´ä¸°å¯ï¼å¹é åªè¾/æ éææ/空é´ç¢è£çï¼
- è²å½©éå»ï¼ä¸åæ 绪段è½ä½¿ç¨ä¸åè²è°ï¼å½¢æè§è§å¯¹æ¯
- 15ç§çº¦æï¼æ¯æ®µèç¦ä¸ä¸ªé³ä¹æ®µè½çæ ¸å¿è§è§è¡¨è¾¾
åéè¦æ±
- æ¶é¿ï¼æ¯æ®µåºå®15ç§
- æ ¼æ°ï¼åºå®9æ ¼ï¼3Ã3å¸å±ï¼16:9æ¯ä¾ï¼
- æ¯æ ¼çº¦ 1.67ç§
- 9æ ¼ä¹é´éè¦æè§è§è¿ç»æ§åé³ä¹èå¥é»è¾
- 妿飿 ¼åæ¢ï¼å¨å¯¹åºæ ¼æ 注
visual_modeåtransition - æè¯åæ¥ï¼æ¯æ ¼æ 注对åºçæè¯ï¼
lyrics_at_gridï¼
æ äºæ¿é ç½®è¦æ±
- JSONæ ¼å¼ï¼å¯è¢«ç¨åºç´æ¥è§£æ
- å
å«
music_syncèï¼ææ²æ¶é´æ å°ï¼ - å
å«
storyboard_9gridï¼9å®«æ ¼åéï¼ - å å«AIå¾åçæçè±æPrompt
subtitleåæ®µå§ç»ä¸ºfalse
ä¸ generate-media æè½çå ¼å®¹
generate-media æè½å·²æ¯æ DM 项ç®ï¼MV 项ç®éè¦ä»¥ä¸éé
ï¼å
¼å®¹å·²æé»è¾ï¼ï¼
-
ç®å½ç»æéé ï¼
- DM 项ç®ï¼
episodes/EPxx/ - MV 项ç®ï¼
segments/SEGxx/ generate-mediaéåæ¶æ£æ¥ä¸¤ç§ç®å½ç»æ
- DM 项ç®ï¼
-
è§è²/åºæ¯/éå ·åèå¾ï¼èµäº§è¡¥å ¨æç¥ï¼ï¼
- 已导å
¥çèµäº§ï¼
ref_index.jsonä¸source: "imported"ï¼status: "ready"ï¼â è·³è¿çæ - å·²çæçèµäº§ï¼
source: "generated"ï¼status: "ready"ï¼â è·³è¿çæ - æ è®°å¾
çæçèµäº§ï¼
status: "pending"ï¼â æ§è¡çæ - æ
ref_index.jsonææ¡ç®ä¸åå¨ â æ bible æä»¶ä¸ç AI ç»å¾å ³é®è¯æ£å¸¸çæ - çæå®æåæ´æ°
ref_index.jsonï¼å°statusæ¹ä¸º"ready"ï¼sourceæ 记为"generated"
- 已导å
¥çèµäº§ï¼
-
åéå¾çå½åï¼
- DM 项ç®ï¼
{project_id}-EPxx-{A|B}_storyboard.png - MV 项ç®ï¼
{project_id}-SEGxx_storyboard.pngï¼æ A/Bååï¼
- DM 项ç®ï¼
-
é ç½®æä»¶è·¯å¾ï¼
- DM 项ç®ï¼
episodes/EPxx/storyboard_config.jsonâ 读åpart_a/part_b - MV 项ç®ï¼
segments/SEGxx/storyboard_config.jsonâ ç´æ¥è¯»åæ ¹çº§storyboard_9grid
- DM 项ç®ï¼
generate-media å ¼å®¹æ£æµé»è¾
# detect project type
metadata_path = PROJECT_DIR / "metadata.json"
if metadata_path.exists():
with open(metadata_path) as f:
metadata = json.load(f)
project_type = metadata.get("project_type", "drama")
else:
project_type = "drama"
if project_type == "mv":
CONTENT_DIR = PROJECT_DIR / "segments"
dir_prefix = "SEG"
else:
CONTENT_DIR = PROJECT_DIR / "episodes"
dir_prefix = "EP"
ä¸ submit-anime-project æè½çå ¼å®¹
submit-anime-project 读å seedance_project_tasks.jsonï¼è¯¥æä»¶æ ¼å¼ä¸çå§ä¸è´ï¼æ éé¢å¤éé
ãå¯ä¸åºå«æ¯ï¼
- MVä»»å¡ç
tagsä¸å å«SEGxxèéEPxx - MV任塿
A/Bæ ç¾ - æäº¤é»è¾å®å ¨å¤ç¨
è¿è¡æä»¤
ç¨æ·å¯ä»¥éè¿ä»¥ä¸æ¹å¼è§¦åæ¬æè½ï¼
- “å¶ä½ä¸ä¸ªMV”
- “çæMV”
- “produce music video”
- “å¶ä½é³ä¹è§é¢”
- “ç¨è¿ä¸ªå§æ¬åMV” + æå®å§æ¬æä»¶
- “æ ¹æ®è¿é¦æçæè¯åMV” + æä¾æè¯
- “读åxxæä»¶å¤¹çç´ æåMV”
å¯é另忰ï¼
- ææ²å/æè¯ï¼å¦ “为ãå¡äººæãå¶ä½MV”
- å§æ¬æä»¶è·¯å¾ï¼å¦ “ä½¿ç¨ notes/mv reffiles/MVå§æ¬.md”
- ç´ ææä»¶å¤¹è·¯å¾ï¼å¦ “读å /path/to/assets/ ä¸çè§è²å¾”
- è§è§é£æ ¼ï¼å¦ “èµåæå 飿 ¼”ã”å飿 ¼ï¼ç°å®+幻泔
- MVç±»åï¼å¦ “åäºåMV”ã”æ¦å¿µåMV”
å¦ç¨æ·æªæå®ç´ ææ¥æºï¼åææç´ æéè¿ generate-media èªå¨çæã
æ§è¡æ£æ¥æ¸ å
é¶æ®µ1ï¼MVå¶ä½å®æåèªæ¥
-
index.jsonå ¨å±ç´¢å¼å·²æ´æ°ï¼å«MV项ç®ï¼ -
metadata.jsonä½åå æ°æ®å·²å建ï¼project_type: "mv"ï¼ -
mv_script.md宿´MVåéå§æ¬å·²çæ -
character_bible.mdè§è²è®¾è®¡å·²å®æ -
scenes/scene_bible.mdåºæ¯è®¾è®¡å·²å®æ -
props/prop_bible.mdéå ·è®¾è®¡å·²å®æï¼å¦æï¼ - ææå¯¼å ¥ç´ æå·²æ£ç¡®å¤å¶å°å¯¹åºç®å½
- å
ref_index.json已记å½å¯¼å ¥ç´ æä¿¡æ¯ - èµäº§å®æ´æ§æ£æ¥å·²æ§è¡ï¼ç¬¬åæ¥Bï¼
- 缺失èµäº§å·²è¡¥å
¨ææ 记为
pendingï¼å«ç¨æ·ç¡®è®¤ï¼ - æ¯ä¸ªè§è²å¨
ref_index.jsonä¸status为readyæpending - æ¯ä¸ªåºæ¯å¨
ref_index.jsonä¸status为readyæpending - æ¯ä¸ªéå
ጬ
ref_index.jsonä¸status为readyæpending - SEG01-SEGxx æææ®µç®å½åå·²å建
- æ¯æ®µå
å«
storyboard_config.json - æ¯æ®µé
ç½®å
å«
music_syncèï¼æè¯/é³ä¹æ®µè½åæ¥ä¿¡æ¯ï¼ - ææè§é¢ç¼å·éµå¾ª
MV-XXX-SEGxxå½åè§å -
video_index.jsonå·²çæ - ææé
ç½®æ æ³¨
subtitle: false - 段è½ä¹é´è§è§åäºè¿è´¯ï¼ä¸é³ä¹èå¥åæ¥
é¶æ®µ3ï¼åªä½çæåï¼Seedanceä»»å¡çæèªæ¥
- èµäº§è¡¥å
¨äºæ¬¡æ ¡éªï¼ææ
ref_index.jsonä¸status: "pending"çæ¡ç®å·²å¤ç - è§è²åèå¾å·²åå¨ï¼
characters/{è§è²å}_ref.pngï¼å¯¼å ¥æçæï¼ï¼æå·²ç¡®è®¤è·³è¿ - åºæ¯åèå¾å·²åå¨ï¼
scenes/{åºæ¯ID}_ref.pngï¼å¯¼å ¥æçæï¼ï¼æå·²ç¡®è®¤è·³è¿ - éå
·åèå¾å·²åå¨ï¼
props/{éå ·ID}_ref.pngï¼å¯¼å ¥æçæï¼ï¼æå·²ç¡®è®¤è·³è¿ - åéåèå¾å·²åå¨ï¼
segments/SEGxx/{project_id}-SEGxx_storyboard.png - é¡¹ç®æ ¹ç®å½
seedance_project_tasks.jsonå·²çæ - æ¯æ¡ä»»å¡ç prompt 使ç¨
(@æä»¶å)æ ¼å¼å¼ç¨åèå¾ - æ¯æ¡ä»»å¡ç prompt å 嫿 åæé¤æä»¤
- æ¯æ¡ä»»å¡ç prompt å 嫿è¯åæ¥ä¿¡æ¯
- æ¯æ¡ä»»å¡ç prompt å å«éé头æè¿°ï¼9æ¡ï¼
- æ¯æ¡ä»»å¡ç
referenceFilesååºææå¼ç¨çå¾çè·¯å¾
è¾åºç¤ºä¾
é¶æ®µ1宿忥åï¼
â
MVå¶ä½å®æï¼
ð ä½åä¿¡æ¯
- ä½åç¼å·ï¼MV-001
- ææ²ï¼ãXWOW-å¡äººæã
- MVç±»åï¼åäºå+æ¦å¿µå
- è§è§é£æ ¼ï¼å飿 ¼äº¤æ¿
- 飿 ¼Aãç°æç°å®ä¸»ä¹ãï¼å·ç°/æèï¼ææé头ï¼é¢ç²æ
- 飿 ¼Bã䏿¹èµåç¥è¯ãï¼éé/éè¹èï¼å²è¯æï¼å¤±éæ
- æ»æ®µæ°ï¼16æ®µï¼æ¯æ®µ15ç§ï¼
- æ»æ¶é¿ï¼4åé
ð 项ç®ç®å½ï¼/data/dongman/projects/MV-001_frc/
ð çæå
容ç»è®¡
- MVåéå§æ¬ï¼1份
- è§è²è®¾å®ï¼X个è§è²
- åºæ¯è®¾å®ï¼Xä¸ªåºæ¯
- éå
·è®¾å®ï¼X个éå
·
- 导å
¥ç´ æï¼X个ï¼è§è²X + åºæ¯X + éå
·Xï¼
- æ
äºæ¿é
ç½®ï¼16ä»½ï¼æ¯æ®µ1份ï¼å«9å®«æ ¼åéï¼
- è§é¢æ»æ°ï¼16个
- æ»åéæ ¼æ°ï¼144æ ¼ï¼16段 à 9æ ¼ï¼
ð¬ è§é¢ç¼å·èå´
MV-001-SEG01 ~ MV-001-SEG16
ð æ¯æ®µæä»¶
- storyboard_config.json â æ
äºæ¿é
ç½®ï¼å«9å®«æ ¼åé + é³ä¹åæ¥ï¼
âï¸ ä¸ä¸æ¥
1. è¿è¡ generate-media æè½çæåèå¾ + åéå¾
2. è¿è¡æ¬æè½ç¬¬ä¸æ¥çæ seedance_project_tasks.json
3. è¿è¡ submit-anime-project æè½æäº¤ä»»å¡