Loading...
Loading...
Short Drama Production Skill. Used to generate complete short drama works, including script writing, character design, 9-grid storyboard, and storyboard configuration. Each run generates one work (25 episodes, 30 seconds per episode = two parts of 15 seconds each, with 9-grid storyboard for each part). Keywords: short drama, film and television, drama, script, storyboard, storyboard, character design.
npx skill4agent add zhaihao118/micro-drama-skills produce-animescene_refsprop_refs(@file name).config/visual_styles.json| Stage | Skill | Output |
|---|---|---|
| 1. Script Production | | full_script.md, character_bible.md, dialogue.md, storyboard_config.json, video_index.json |
| 2. Media Generation | | character reference images + 4-grid scene images + 3-view prop images + 9-grid storyboard images |
| 3. Task Generation | | seedance_project_tasks.json (50 entries with @image references) |
| 4. Task Submission | | Batch push to Seedance API |
/data/dongman/.config/visual_styles.jsondefault_style_id⚠️ Style Selection Interaction: When generating character reference images, 4-grid scene images, and 3-view prop images, users must first select a visual style. Use thetool to list all style options inask_questionsand start generation only after user confirmation. The style will affect both the reference image styles of characters/scenes/props and the storyboard image styles.visual_styles.json
visual_stylemetadata.jsonvisual_stylestoryboard_config.jsonprompt_suffixai_image_prompt| Field | Description | Example |
|---|---|---|
| Camera/body | Panavision Sphero 65 and Hasselblad Lenses |
| Film/sensor | Vision3 500T 5219 |
| Filter combination | ND0.6, Diffusion Filter 1/4 |
| Focal length | 65mm |
| Aperture | f/2.0 |
| Style description appended to the end of AI prompts | shot on Panavision... |
/data/dongman/projects/index.jsonDM-001/data/dongman/projects/{work number}_{pinyin abbreviation of work name}/projects/
├── index.json # All works index (global management)
└── DM-001_xxxx/ # Single work directory
├── metadata.json # Work metadata
├── script/ # Script
│ └── full_script.md # Complete script (25 episodes outline + detailed script)
├── characters/ # Character design
│ └── character_bible.md # Character bible (all character settings)
├── scenes/ # Scene design (reused throughout the drama)
│ └── scene_bible.md # Scene bible (all scene settings + AI drawing keywords)
├── props/ # Prop design (reused throughout the drama)
│ └── prop_bible.md # Prop bible (all prop settings + AI drawing keywords)
├── episodes/ # Episode content
│ ├── EP01/
│ │ ├── dialogue.md # Episode dialogue script (Chinese, covering both parts)
│ │ └── storyboard_config.json # Storyboard configuration (including both parts, 9-grid per part, with scene_refs/prop_refs)
│ ├── EP02/
│ │ └── ...
│ └── ... (EP01-EP25)
├── seedance_project_tasks.json # [Stage 3 · After media generation] Full drama Seedance tasks (50 entries with @image references)
└── video_index.json # Video number management indexscript/full_script.md# Complete Script of "Work Name"
## Work Information
- **Genre**: [Adventure/Fantasy/Sci-Fi/Daily/Love, etc.]
- **Style**: [Passionate/Healing/Suspense/Comedic, etc.]
- **Visual Style**: [Preset style name, e.g., Cinematic Film]
- **Target Audience**: [Teenagers/Girls/Young Adults/All Ages]
- **Total Duration**: 25 episodes × 30 seconds = 12 minutes 30 seconds
- **Core Theme**: One-sentence summary
## Worldview Setting
[200-300 words describing the worldview]
## Story Outline
[500 words overall story line]
## Episode Summaries
### Episode 1: [Title]
- **Plot Summary**: [50 words]
- **Key Events**: [List]
- **Emotional Tone**: [Joy/Anger/Sadness/Happiness/Tension/Warmth]
### Episode 2: [Title]
... (total 25 episodes)characters/character_bible.md# Character Settings Collection
## Main Characters
### Character 1: [Name]
- **Full Name**:
- **Age**:
- **Gender**:
- **Height/Weight**:
- **Appearance Features**: [Detailed description for AI drawing prompts]
- Hairstyle/Hair Color:
- Eye Color:
- Body Type:
- Signature Features:
- **Costume Design**:
- Daily Wear:
- Battle/Special Wear:
- **Personality Traits**:
- **Catchphrase**:
- **Backstory**: [100 words]
- **Character Arc**: [Growth changes in 25 episodes]
- **AI Drawing Keywords (English)**: [Prompt for consistent character generation]
## Supporting Characters
...
## Character Relationship Map
[Text description of the relationship network between characters]scenes/scene_bible.md# Scene Settings Collection
## Scene 1: [Scene Name]
- **Scene ID**: scene_01
- **Scene Description**: [50-100 words describing physical space, decoration, atmosphere]
- **Episodes Appeared**: EP01, EP02, EP05, EP15...
- **Key Visual Elements**: [List iconic objects, color tones, lighting of the scene]
- **AI Drawing Keywords (English)**: [Detailed English prompts including spatial layout, light and shadow, furnishing style]
## Scene 2: [Scene Name]
...Scene Screening Principle: Only include important scenes that reappear in 3 or more episodes (scenes that appear once do not need separate reference images). Usually, a 25-episode short drama has 3-6 core scenes.
props/prop_bible.md# Prop Settings Collection
## Prop 1: [Prop Name]
- **Prop ID**: prop_01
- **Prop Description**: [30-50 words describing appearance, material, size]
- **Episodes Appeared**: EP10, EP12, EP25...
- **Plot Significance**: [Symbolic/functional significance of the prop in the drama]
- **AI Drawing Keywords (English)**: [Detailed English prompts including material, color, shape, details]
## Prop 2: [Prop Name]
...Prop Screening Principle: Only include props with plot-driving or symbolic significance (such as tokens, key documents, iconic items), not daily objects. Usually, a 25-episode short drama has 2-5 core props.
dialogue.md# Episode X: [Title] Dialogue Script
## Note: This episode has no subtitles; dialogues are conveyed through dubbing
## Part A (00:00-00:15)
## Video ID: DM-001-EP01-A
| No. | Time | Character | Dialogue Content (Chinese) | Tone/Emotion | Remarks |
|------|------|------|----------------|----------|------|
| 1 | 00:02 | Character A | 「Dialogue content」 | Firm | — |
| 2 | 00:06 | Character B | 「Dialogue content」 | Surprised | — |
| 3 | 00:11 | Character A | 「Dialogue content」 | Excited | — |
## Part B (00:15-00:30)
## Video ID: DM-001-EP01-B
| No. | Time | Character | Dialogue Content (Chinese) | Tone/Emotion | Remarks |
|------|------|------|----------------|----------|------|
| 4 | 00:17 | Character B | 「Dialogue content」 | Low-pitched | — |
| 5 | 00:22 | Character A | 「Dialogue content」 | Gentle | — |
| 6 | 00:27 | Character C | 「Dialogue content」 | Mysterious | — |storyboard_config.json{
"video_id_prefix": "DM-001-EP01",
"episode": 1,
"episode_title": "Episode 1 Title",
"total_duration_seconds": 30,
"fps": 24,
"resolution": "1920x1080",
"aspect_ratio": "16:9",
"style": "short_drama",
"visual_style": {
"style_id": 1,
"style_name": "Cinematic Film",
"camera": "Panavision Sphero 65 and Hasselblad Lenses",
"film_stock": "Vision3 500T 5219",
"filter": "ND0.6, Diffusion Filter 1/4",
"focal_length": "65mm",
"aperture": "f/2.0",
"prompt_suffix": "shot on Panavision Sphero 65 and Hasselblad Lenses, Vision3 500T 5219, ND0.6, Diffusion Filter 1/4, cinematic film grain, shallow depth of field"
},
"subtitle": false,
"synopsis": "Episode plot summary (100 words)",
"emotion_tone": "Emotional tone",
"connection": {
"from_previous": "Connection with previous episode",
"to_next": "Foreshadowing for next episode"
},
"part_a": {
"video_id": "DM-001-EP01-A",
"label": "A",
"time_range": "00:00-00:15",
"duration_seconds": 15,
"scene_refs": ["scene_01"],
"prop_refs": [],
"atmosphere": {
"overall_mood": "Overall mood description of Part A",
"color_palette": ["#Color Value 1", "#Color Value 2", "#Color Value 3"],
"lighting": "Light and shadow description",
"weather": "Weather/Environment"
},
"video_prompt": "English prompt for AI video generation of Part A (15s), 16:9 aspect ratio. No subtitles.",
"bgm": {
"description": "Background music description",
"mood": "Music mood keywords"
},
"storyboard_9grid": [
{
"grid_number": 1,
"time_start": 0.0,
"time_end": 1.67,
"scene_description": "Scene description (50 words, including character actions, expressions, light and shadow)",
"camera": {
"type": "Long Shot|Medium Shot|Close-Up|Extreme Close-Up",
"movement": "Fixed|Push|Pull|Pan|Tilt|Follow",
"angle": "Eye Level|High Angle|Low Angle"
},
"characters": [
{
"name": "Character Name",
"action": "Action description",
"expression": "Expression",
"position": "Screen position (Left/Middle/Right)"
}
],
"dialogue": {
"speaker": "Character Name (null if no dialogue)",
"text": "Chinese dialogue content",
"emotion": "Tone/Emotion"
},
"atmosphere": "Mood description of this grid",
"sfx": "Sound effect description",
"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,
"scene_description": "...",
"camera": {},
"characters": [],
"dialogue": {},
"atmosphere": "...",
"sfx": "...",
"ai_image_prompt": "..."
},
{ "grid_number": 3, "time_start": 3.33, "time_end": 5.0, "...": "Same structure as above" },
{ "grid_number": 4, "time_start": 5.0, "time_end": 6.67, "...": "Same structure as above" },
{ "grid_number": 5, "time_start": 6.67, "time_end": 8.33, "...": "Same structure as above" },
{ "grid_number": 6, "time_start": 8.33, "time_end": 10.0, "...": "Same structure as above" },
{ "grid_number": 7, "time_start": 10.0, "time_end": 11.67, "...": "Same structure as above" },
{ "grid_number": 8, "time_start": 11.67, "time_end": 13.33, "...": "Same structure as above" },
{ "grid_number": 9, "time_start": 13.33, "time_end": 15.0, "...": "Same structure as above" }
]
},
"part_b": {
"video_id": "DM-001-EP01-B",
"label": "B",
"time_range": "00:15-00:30",
"duration_seconds": 15,
"scene_refs": ["scene_02"],
"prop_refs": ["prop_01"],
"atmosphere": {
"overall_mood": "Overall mood description of Part B",
"color_palette": ["#Color Value 1", "#Color Value 2", "#Color Value 3"],
"lighting": "Light and shadow description",
"weather": "Weather/Environment"
},
"video_prompt": "English prompt for AI video generation of Part B (15s), 16:9 aspect ratio. No subtitles.",
"bgm": {
"description": "Background music description",
"mood": "Music mood keywords"
},
"storyboard_9grid": [
{
"grid_number": 1,
"time_start": 0.0,
"time_end": 1.67,
"scene_description": "Scene description (50 words)",
"camera": {},
"characters": [],
"dialogue": {},
"atmosphere": "...",
"sfx": "...",
"ai_image_prompt": "..."
},
{ "grid_number": 2, "time_start": 1.67, "time_end": 3.33, "...": "Same structure as above" },
{ "grid_number": 3, "time_start": 3.33, "time_end": 5.0, "...": "Same structure as above" },
{ "grid_number": 4, "time_start": 5.0, "time_end": 6.67, "...": "Same structure as above" },
{ "grid_number": 5, "time_start": 6.67, "time_end": 8.33, "...": "Same structure as above" },
{ "grid_number": 6, "time_start": 8.33, "time_end": 10.0, "...": "Same structure as above" },
{ "grid_number": 7, "time_start": 10.0, "time_end": 11.67, "...": "Same structure as above" },
{ "grid_number": 8, "time_start": 11.67, "time_end": 13.33, "...": "Same structure as above" },
{ "grid_number": 9, "time_start": 13.33, "time_end": 15.0, "...": "Same structure as above" }
]
}
}Note:is not generated in this step, but in Step 7 of Stage 3 (after media generation), because the prompt needs to reference existing character reference images and storyboard images.seedance_tasks.json
| Grid 1 (0.0-1.67s) | Grid 2 (1.67-3.33s) | Grid 3 (3.33-5.0s) |
|:---:|:---:|:---:|
| Grid 4 (5.0-6.67s) | Grid 5 (6.67-8.33s) | Grid 6 (8.33-10.0s) |
|:---:|:---:|:---:|
| Grid 7 (10.0-11.67s) | Grid 8 (11.67-13.33s) | Grid 9 (13.33-15.0s) |scene_refsprop_refsvideo_index.json{
"project_id": "DM-001",
"project_name": "Work Name",
"total_episodes": 25,
"created_date": "2026-02-14",
"status": "scripted",
"videos": [
{
"episode": 1,
"episode_title": "Episode 1 Title",
"part_a": {
"video_id": "DM-001-EP01-A",
"label": "A",
"duration": 15,
"status": "script_ready",
"files": {
"dialogue": "episodes/EP01/dialogue.md",
"storyboard_config": "episodes/EP01/storyboard_config.json"
}
},
"part_b": {
"video_id": "DM-001-EP01-B",
"label": "B",
"duration": 15,
"status": "script_ready",
"files": {
"dialogue": "episodes/EP01/dialogue.md",
"storyboard_config": "episodes/EP01/storyboard_config.json"
}
}
}
],
"editing_guide": {
"total_episodes": 25,
"parts_per_episode": 2,
"total_videos": 50,
"duration_per_part_seconds": 15,
"total_duration_seconds": 750,
"grids_per_part": 9,
"total_grids": 450,
"recommended_export_format": "MP4 H.264",
"recommended_resolution": "1920x1080",
"recommended_fps": 24
}
}/data/dongman/projects/index.json{
"last_updated": "2026-02-14",
"total_projects": 1,
"next_id": "DM-002",
"projects": [
{
"project_id": "DM-001",
"project_name": "Work Name",
"directory": "DM-001_xxxx/",
"episodes": 25,
"status": "scripted",
"created_date": "2026-02-14",
"video_count": 50
}
]
}Precondition: Theskill must be run first to ensure the following files are generated:generate-media
- Character reference images:
characters/{character name}_ref.png- Storyboard reference images:
episodes/EPxx/{project_id}-EPxx-{A|B}_storyboard.png
storyboard_config.jsondialogue.mdseedance_project_tasks.jsonseedance_tasks.jsonseedance_project_tasks.json{
"project_id": "DM-001",
"project_name": "Work Name",
"total_tasks": 50,
"created_date": "2026-02-21",
"tasks": [
{
"prompt": "(@DM-001-EP01-A_storyboard.png) is the 9-grid storyboard reference image, (@Character A_ref.png) is the reference image of character \"Character A\", (@Character B_ref.png) is the reference image of character \"Character B\".\n\nStart from shot 1, do not show the multi-grid storyboard reference image. Turn the storyboard into a cinematic high-definition film-level video. Strictly prohibit reference images from appearing in the frame. Each frame is a single frame, displayed independently, with no dividing lines or multi-grid effect frames. (Exclusions); Do not show speech bubbles, do not show comic panels, remove all text, full technicolor. Exclusions: No speech bubbles, No text, No comic panels, No split screen, No monochrome, No manga effects. Positive replacements: Fullscreen, Single continuous scene. Expressions, mouth movements, breathing, and lines must be strictly synchronized. Remove watermarks from images, do not show any watermarks. No subtitles.\n\nDM-001-EP01-A Episode 1 「Episode Title」 Part A. Plot summary. Atmosphere: Atmosphere description.\n\nShot 1(0.0s-1.67s): Episode 1 Part A Grid 1: Scene description. (@Character A_ref.png) Character A performs action, expression expression. (@Character A_ref.png) Character A says: \"Dialogue content\" (emotion)\nShot 2(1.67s-3.33s): ...\n...\nShot 9(13.33s-15.0s): ...",
"description": "DM-001 EP01 Part-A 「Episode Title」 Part A 9-grid storyboard → video",
"modelConfig": {
"model": "Seedance 2.0 Fast",
"referenceMode": "All-Round Reference",
"aspectRatio": "16:9",
"duration": "15s"
},
"referenceFiles": [
"episodes/EP01/DM-001-EP01-A_storyboard.png",
"characters/Character A_ref.png",
"characters/Character B_ref.png"
],
"realSubmit": false,
"priority": 1,
"tags": ["DM-001", "EP01", "A"]
},
{
"prompt": "... Part-B prompt ...",
"description": "DM-001 EP01 Part-B 「Episode Title」 Part B 6-grid storyboard → video",
"...": "Same structure as above"
}
]
}(@{project_id}-EPxx-{A|B}_storyboard.png) is the 9-grid storyboard reference image(@{character name}_ref.png) is the reference image of character \"{character name}\"Start from shot 1, do not show the multi-grid storyboard reference image. Turn the storyboard into a cinematic high-definition film-level video. Strictly prohibit reference images from appearing in the frame. Each frame is a single frame, displayed independently, with no dividing lines or multi-grid effect frames. (Exclusions); Do not show speech bubbles, do not show comic panels, remove all text, full technicolor. Exclusions: No speech bubbles, No text, No comic panels, No split screen, No monochrome, No manga effects. Positive replacements: Fullscreen, Single continuous scene. Expressions, mouth movements, breathing, and lines must be strictly synchronized. Remove watermarks from images, do not show any watermarks. No subtitles.{video_id} Episode X 「{episode_title}」 {Part A/Part B}. {synopsis}. Atmosphere: {atmosphere.overall_mood}. Scene references (@{scene ID}_ref.png) (@{scene ID}_ref.png). Prop references (@{prop ID}_ref.png).(@xx_ref.png)storyboard_9gridShot N(time_start-time_end): Episode X {Part A/Part B} Grid N: {scene_description}. {camera.movement}{camera.type}{camera.angle}. {atmosphere}. Sound effect: {sfx}. (@{character name}_ref.png){character name}{action}, expression {expression}. (@{character name}_ref.png){character name} says: \"{dialogue.text}\" ({dialogue.emotion})Narration, {emotion}: \"{text}\"(@{character name}_ref.png)episodes/EPxx/{project_id}-EPxx-{A|B}_storyboard.pngcharacters/{character name}_ref.pngscenes/{scene ID}_ref.png(@xx_ref.png)props/{prop ID}_ref.pngseedance_project_tasks.jsonsubmit-anime-projectDM-XXXDM-001DM-002DM-003{work number}-EP{two-digit episode number}-ADM-001-EP01-ADM-001-EP25-A{work number}-EP{two-digit episode number}-BDM-001-EP01-BDM-001-EP25-BEP{two-digit number}EP01EP25video_promptscene_refsprop_refspart_apart_bsubtitlefalsedefault_style_idvisual_styles.jsonindex.jsonmetadata.jsonfull_script.mdcharacter_bible.mdscenes/scene_bible.mdprops/prop_bible.mddialogue.mdstoryboard_config.jsonstoryboard_config.jsonpart_apart_b-A-Bvideo_index.jsonsubtitle: falsecharacters/{character name}_ref.pngscenes/{scene ID}_ref.pngprops/{prop ID}_ref.pngepisodes/EPxx/{project_id}-EPxx-{A|B}_storyboard.pngseedance_project_tasks.json(@file name)referenceFilesseedance_tasks.json✅ Short drama script production completed!
📋 Work Information
- Work ID: DM-001
- Work Name: 《xxxxx》
- Visual Style: Cinematic Film (Cinematic Texture)
- Genre: xxxxx
- Total Episodes: 25 episodes (2 parts per episode)
📁 Project Directory: /data/dongman/projects/DM-001_xxxx/
📊 Generated Content Statistics
- Complete Script: 1 copy
- Character Settings: X characters
- Scene Settings: X core scenes
- Prop Settings: X core props
- Dialogue Scripts: 25 copies (1 per episode, covering both parts)
- Storyboard Configurations: 25 copies (1 per episode, including 9-grid for both parts + scene/prop references + video prompts)
- Total Videos: 50 (25 episodes × 2 parts)
- Total Storyboard Grids: 450 (50 videos × 9 grids)
🎬 Video ID Range
- Part A: DM-001-EP01-A ~ DM-001-EP25-A
- Part B: DM-001-EP01-B ~ DM-001-EP25-B
📂 Per Episode Files (2 files)
- dialogue.md → Dialogue Script
- storyboard_config.json → Storyboard Configuration (including 9-grid storyboard + scene_refs/prop_refs)
⏭️ Next Steps
1. Run the generate-media skill to generate character reference images + storyboard images
2. Run Step 7 of this skill to generate seedance_project_tasks.json (with @image references, 50 tasks)
3. Run the submit-anime-project skill to submit tasks