LocalMiniDrama 本地短剧助手 — 通过自然语言控制短剧项目全流程:创建剧本、生成角色/场景/道具、生成分镜、批量出图、出视频、合成完整剧集、支持小说导入和工程导入导出
通过自然语言控制 LocalMiniDrama 后端,完成从零到短剧成片的全流程 AI 生成。
用户想要创建、管理、生成短剧相关内容时使用此技能。
const baseUrl = config.base_url || "http://localhost:5679";
GET {baseUrl}/api/v1/dramas?page=1&page_size=20
POST {baseUrl}/api/v1/dramas
Content-Type: application/json
{
"title": "少年修仙传",
"style": "古风仙侠",
"type": "short_drama",
"metadata": {
"aspect_ratio": "16:9",
"video_duration": 5
}
}
metadata.aspect_ratio支持16:9(横屏)、9:16(竖屏)、1:1(方形)
流式(推荐):实时接收 AI 生成的剧本内容
POST {baseUrl}/api/v1/generation/story/stream
Content-Type: application/json
{
"premise": "一个少年意外获得上古修仙传承...",
"style": "古风仙侠",
"episode_count": 3,
"genre": "仙侠"
}
非流式:等待完整结果后一次性返回
POST {baseUrl}/api/v1/generation/story
Content-Type: application/json
{
"premise": "...",
"style": "古风仙侠",
"episode_count": 3
}
流式响应格式(SSE):
{ "type": "start" } — 开始{ "type": "progress", "text": "已生成的文字..." } — 增量文本{ "type": "done", "result": { "episodes": [...] } } — 完成,附结构化集数{ "type": "error", "message": "..." } — 错误将生成的剧本保存到项目集数:
字段名:
script_content(不是content),title(集标题),episode_number
PUT {baseUrl}/api/v1/dramas/{drama_id}/episodes
Content-Type: application/json
{
"episodes": [
{
"episode_number": 1,
"title": "山涧奇遇,石中传承",
"script_content": "第一集剧本完整正文..."
}
]
}
GET {baseUrl}/api/v1/dramas/{drama_id}
PUT {baseUrl}/api/v1/dramas/{drama_id}
Content-Type: application/json
{
"title": "新标题",
"style": "都市言情",
"metadata": { "aspect_ratio": "9:16" }
}
DELETE {baseUrl}/api/v1/dramas/{drama_id}
GET {baseUrl}/api/v1/dramas/stats
GET {baseUrl}/api/v1/dramas/{drama_id}/characters
POST {baseUrl}/api/v1/generation/characters
Content-Type: application/json
{
"drama_id": "项目ID"
}
→ 返回 { "task_id": "...", "status": "pending" },用 GET /api/v1/tasks/{task_id} 轮询
PUT {baseUrl}/api/v1/dramas/{drama_id}/characters
Content-Type: application/json
{
"characters": [
{ "name": "李逍遥", "description": "少年,侠客", "appearance": "白衣少年,剑眉星目" },
{ "name": "赵灵儿", "description": "仙女", "appearance": "青衣少女" }
]
}
POST {baseUrl}/api/v1/characters/{character_id}/generate-image
Content-Type: application/json
{
"prompt_override": "古风仙侠,白衣少年,剑眉星目..."
}
POST {baseUrl}/api/v1/characters/{character_id}/generate-four-view-image
POST {baseUrl}/api/v1/characters/{character_id}/extract-from-image
Content-Type: application/json
{
"image_url": "/static/storage/..."
}
GET {baseUrl}/api/v1/character-library
POST {baseUrl}/api/v1/character-library # 新建角色
PUT {baseUrl}/api/v1/character-library/{id}
DELETE {baseUrl}/api/v1/character-library/{id}
GET {baseUrl}/api/v1/dramas/{drama_id}/scenes
POST {baseUrl}/api/v1/episodes/{episode_id}/extract-backgrounds
POST {baseUrl}/api/v1/scenes/{scene_id}/generate-image
GET {baseUrl}/api/v1/scene-library
POST {baseUrl}/api/v1/scene-library
PUT {baseUrl}/api/v1/scene-library/{id}
DELETE {baseUrl}/api/v1/scene-library/{id}
GET {baseUrl}/api/v1/dramas/{drama_id}/props
POST {baseUrl}/api/v1/episodes/{episode_id}/extract-props
POST {baseUrl}/api/v1/props/{prop_id}/generate
GET {baseUrl}/api/v1/prop-library
POST {baseUrl}/api/v1/prop-library
PUT {baseUrl}/api/v1/prop-library/{id}
DELETE {baseUrl}/api/v1/prop-library/{id}
POST {baseUrl}/api/v1/episodes/{episode_id}/storyboards
Content-Type: application/json
{
"model": "qwen-plus", // 可选,AI 模型名称
"style": "古风仙侠", // 可选,覆盖项目风格
"storyboard_count": 8, // 可选,分镜数量(默认自动)
"video_duration": 5, // 可选,单个视频秒数
"aspect_ratio": "16:9", // 可选,覆盖比例
"include_narration": false // 是否含旁白
}
→ 返回 { "task_id": "...", "status": "pending" }
GET {baseUrl}/api/v1/episodes/{episode_id}/storyboards
GET {baseUrl}/api/v1/storyboards/{storyboard_id}
PUT {baseUrl}/api/v1/storyboards/{storyboard_id}
Content-Type: application/json
{
"dialogue": "调整后的台词",
"action": "调整后的动作",
"image_prompt": "调整后的画面描述"
}
DELETE {baseUrl}/api/v1/storyboards/{storyboard_id}
POST {baseUrl}/api/v1/storyboards/{storyboard_id}/insert-before
POST {baseUrl}/api/v1/storyboards/batch-infer-params
Content-Type: application/json
{
"episode_id": "集数ID",
"overwrite": false // 是否覆盖已有参数
}
POST {baseUrl}/api/v1/storyboards/{storyboard_id}/polish-prompt
POST {baseUrl}/api/v1/storyboards/{storyboard_id}/frame-prompt
Content-Type: application/json
{
"frame_type": "first", // "first" | "last" | "key"
"panel_count": 3,
"model": "qwen-plus"
}
POST {baseUrl}/api/v1/storyboards/{storyboard_id}/upscale
POST {baseUrl}/api/v1/images/episode/{episode_id}/batch
Content-Type: application/json
{
"types": ["image"] // 或 ["image", "video"] 同时出图和视频
}
GET {baseUrl}/api/v1/images/{image_gen_id}
GET {baseUrl}/api/v1/storyboards/{storyboard_id}/images
POST {baseUrl}/api/v1/storyboards/{storyboard_id}/upload
Content-Type: multipart/form-data