skills/zhaihao118/micro-drama-skills/submit-anime-project

submit-anime-project

SKILL.md

整部作品提交技能 (Submit Project)

概述

本技能用于将一整部短剧项目的分镜任务(通常 50 条)批量提交到 Seedance 任务服务。

输入来源:

  • seedance_project_tasks.json(项目根目录下的唯一任务文件)

输出结果:

  • 提交成功的 taskCodes
  • 失败任务清单
  • submission_report.json

依赖协议

遵循 seedance-video-task-submit 协议(详见 skill-task-submit.md):

  • 服务地址默认:http://localhost:3456
  • 核心接口:POST /api/tasks/push
  • 支持单任务或批量(tasks 数组)

任务对象关键字段:

  • prompt (必填,使用 (@fileName) 语法引用参考图)
  • description
  • modelConfigmodel / referenceMode / aspectRatio / duration
  • referenceFiles (对象数组,每项包含 fileName / base64 / fileType)
  • realSubmit (默认 false)
  • priority (默认 1)
  • tags (建议包含 project_id,EPxx,A|B)

referenceFiles 存储与展开

存储格式(seedance_tasks.json 中)referenceFiles相对路径字符串数组,相对于项目根目录。包含分镜参考图、角色参考图、场景参考图和道具参考图。

"referenceFiles": [
  "episodes/EP01/DM-002-EP01-A_storyboard.png",
  "characters/林策_ref.png",
  "characters/沈璃_ref.png",
  "scenes/scene_01_ref.png",
  "props/prop_01_ref.png"
]

提交时展开:提交前将每个路径展开为对象,读取文件转 base64:

"referenceFiles": [
  {
    "fileName": "DM-002-EP01-A_storyboard.png",
    "base64": "data:image/png;base64,iVBOR...",
    "fileType": "image/png"
  }
]

展开逻辑(Python 伪代码):

import base64, os, mimetypes

def expand_reference_files(ref_paths, project_dir):
    result = []
    for rel_path in ref_paths:
        abs_path = os.path.join(project_dir, rel_path)
        file_name = os.path.basename(rel_path)
        mime_type = mimetypes.guess_type(abs_path)[0] or "image/png"
        with open(abs_path, "rb") as f:
            b64 = base64.b64encode(f.read()).decode()
        result.append({
            "fileName": file_name,
            "base64": f"data:{mime_type};base64,{b64}",
            "fileType": mime_type
        })
    return result

目录约定

目标项目目录(示例 DM-002_tjkc/)应包含:

DM-002_tjkc/
├── seedance_project_tasks.json          # 必须,唯一任务文件
├── episodes/
│   ├── EP01/
│   │   ├── dialogue.md
│   │   └── storyboard_config.json
│   └── ...
└── submission_report.json               # 本技能生成

执行流程

第一步:定位项目

  1. 若用户指定项目编号(如 DM-002),定位对应目录
  2. 若未指定,使用 projects/index.json 最新项目

第二步:加载任务

  1. 优先读取 seedance_project_tasks.json
  2. 若不存在,遍历 episodes/EP01-EP25/seedance_tasks.json 聚合
  3. 若用户指定单集(如 EP01),只读取该集的 seedance_tasks.json
  4. 校验任务结构:
    • 每个任务必须有 prompt
    • modelConfig 缺失时补默认值
    • realSubmit 缺失时默认 false

第三步:展开 referenceFiles

对每个任务的 referenceFiles(相对路径字符串数组),执行 base64 展开:

  1. 拼接绝对路径:项目根目录 + 相对路径
  2. 读取文件二进制内容
  3. 转换为 {fileName, base64: "data:mime;base64,...", fileType} 对象
  4. 替换原 referenceFiles 数组

第四步:批量提交

  1. 按批次提交(推荐每批 20~50 条)到 /api/tasks/push
  2. 请求体格式:
{
  "tasks": [
    {
      "prompt": "...",
      "description": "...",
      "modelConfig": {
        "model": "Seedance 2.0 Fast",
        "referenceMode": "全能参考",
        "aspectRatio": "16:9",
        "duration": "15s"
      },
      "referenceFiles": [
        {
          "fileName": "DM-002-EP01-A_storyboard.png",
          "base64": "data:image/png;base64,...",
          "fileType": "image/png"
        },
        {
          "fileName": "林策_ref.png",
          "base64": "data:image/png;base64,...",
          "fileType": "image/png"
        },
        {
          "fileName": "scene_01_ref.png",
          "base64": "data:image/png;base64,...",
          "fileType": "image/png"
        }
      ],
      "realSubmit": true,
      "priority": 1,
      "tags": ["DM-002", "EP01", "A"]
    }
  ]
}
  1. 收集返回的 taskCodes
  2. 记录失败批次与错误信息

第五步:生成报告

在项目根目录生成 submission_report.json,格式示例:

{
  "project_id": "DM-002",
  "submitted_at": "2026-02-16T12:00:00Z",
  "api_base": "http://localhost:3456",
  "total_tasks": 300,
  "submitted_tasks": 300,
  "failed_tasks": 0,
  "task_codes": ["SD-20260216-0001"],
  "failed_items": []
}

推荐默认值

当字段缺失时,按以下默认值补齐:

{
  "modelConfig": {
    "model": "Seedance 2.0 Fast",
    "referenceMode": "全能参考",
    "aspectRatio": "16:9",
    "duration": "15s"
  },
  "referenceFiles": [],
  "realSubmit": false,
  "priority": 1,
  "tags": []
}

运行指令

可通过以下表达触发:

  • "提交整部作品任务"
  • "把 DM-002 全部分镜提交到 Seedance"
  • "batch submit drama tasks"
  • "提交所有 seedance_tasks"

可附带参数:

  • 项目编号:如 DM-002
  • realSubmittrue/false
  • 批次大小:如 batch=30
  • API 地址:如 api_base=http://localhost:3456

检查清单

  • 已定位正确项目目录
  • 任务来源文件存在(项目级或分集级)
  • 每个任务包含 prompt
  • 批量提交到 /api/tasks/push 成功
  • 已收集全部 taskCodes
  • 失败项已记录并可重试
  • submission_report.json 已生成

输出示例

✅ 整部作品任务提交完成

项目:DM-002
总任务数:300
成功提交:300
失败:0

报告文件:/data/dongman/projects/DM-002_tjkc/submission_report.json
Weekly Installs
7
GitHub Stars
84
First Seen
Feb 22, 2026
Installed on
gemini-cli7
github-copilot7
codex7
amp7
kimi-cli7
openclaw7