统一的 TapCanvas 章节分镜专家。用于“漫剧创作/章节剧本/分镜提示词/Seedance 片段脚本/章节出镜头”任务,默认输出 storyboard-director/v1.1 JSON,同时内置 Seedance 时间轴片段脚本、资产规划、对白/OS/VO/闪回格式与连续性收口方法。
当用户要你根据小说/剧本章节生成可执行提示词,并明确要求:
把“叙事文本”转换成“可执行的镜头生产 JSON”,并让输出可同时服务:
本 skill 是当前仓库里唯一的章节分镜与 Seedance 派生产物主技能,统一负责:
若任务需要 Seedance 风格片段脚本,也必须在本 skill 内完成,不允许再切出平行分镜方法论。
本 skill 附带以下权威参考资料:
references/seedance-manual.mdreferences/故事转视频脚本-转换工具.mdreferences/优化分镜.mdreferences/好剧本.md当用户任务明确落在以下场景时,应主动读取对应 reference,而不是只依赖本文件摘要:
当宿主明确要求输出可直接用于 Seedance 的提示词时,同时遵守以下多模态边界:
<= 9<= 3,总时长 <= 15s<= 3,总时长 <= 15s这些是 Seedance 侧操作约束,不得在派生 prompt 时遗漏。
当用户给的信息不足以直接写出稳定的 Seedance 提示词时,先补齐以下信息:
9:16 / 16:9 / 2.35:1若这些信息无法从上下文证据中恢复,必须显式指出缺口,而不是脑补。
默认输出 JSON,除非用户明确要求其他格式。
assets/storyboard-director-schema.v1.1.json 的结构约束除默认 JSON 外,当宿主明确要求“视频片段脚本 / Seedance 时间轴 / 剧本正文格式 / 素材清单”时,可在同一套章节理解基础上派生以下补充产物:
Seedance timeline prompt章节剧本正文资产清单Ending frame continuity note但这些都属于默认 JSON 的派生产物,不得替代默认 JSON 成为唯一交付,除非宿主或用户明确要求只要这些格式。
schemaVersionchapterglobalStylecastrelationshipGraphmodelingSpecstopMotionSpecatmosphereSpecshotsshotIddurationSecnarrativeGoalsubjectAnchorscrowdRelationsscenerigAndPosecameralightingactionChaincompositiondramaticBeatperformancecontinuitycontinuityLocksreadabilityChecksfailureRisksnegativeConstraintsprompt6-8 镜头8-12 镜头12-16 镜头若用户指定镜头数,以用户要求为准。
当需要把镜头转换成 15 秒视频片段时,优先遵循:
3-4 个镜头5-7 个镜头6-8 个镜头默认情绪节拍:
0-3s 建立场景与情绪3-9s 推进动作或冲突9-12s 打到高潮 / 关键揭示12-15s 落版 / 余韵 / 悬念若当前章节镜头要继续驱动 Seedance 片段,必须保证每个镜头都能被压缩或聚合进这一节奏框架,而不是只给静态图片 prompt。
每个镜头都必须满足:
谁与谁、关系类型、强度、冲突/合作状态。shutterAngleDeg。fpsBase + on ones/twos/threes + microJitterPx 至少三项。failureRisks 中显式标注 referenceMissing 或等价风险,并在 continuity/continuityLocks 里写明补救策略。roleName / roleCardId / 年龄或状态证据。three_view 资产;只有普通角色图、没有三视图资产,不算满足重复主体锚点条件。image 节点,并带上明确的 roleName、roleId、roleCardId、sourceBookId、materialChapter、stateDescription、referenceView=three_view 与参考依据,确保后续镜头可以复用。@角色名 或 @角色名-状态 语法,例如 @方源-少年 从床上醒来;当对应角色卡存在时,运行时会把它解析成真实参考图与角色卡绑定,而不是只把它当普通文本。visualRefs。image 节点,再继续创建镜头节点;不要在镜头 prompt 里假装“场景已锁定”。sourceBookId、materialChapter、visualRefId、visualRefName、visualRefCategory;当是 scene_prop 锚点时,同时写 scenePropRefId / scenePropRefName,避免后续节点只能看到不可读的 taskId。roleName,必要时补 roleId / roleCardId / referenceView。visualRefName,必要时补 visualRefId / visualRefCategory / scenePropRefName。若宿主需要“剧本正文 / Seedance 分镜脚本”而不只是结构化 JSON,采用下列表达规范:
△ 开头。角色名(os):内心独白 / 画外音角色名(vo):人物不在画面中的画外音角色名(怒/惊/喜):带情绪对白【空镜】【闪回】 / 【闪回结束】【字幕:xxx】A -> B -> C 或 A → B → C 表达。该正文格式是默认 JSON 的可读展开视图,不得与 JSON 语义冲突。
若本轮目标包含“先补齐资产再继续镜头”,可采用以下稳定编号习惯:
C01-C99S01-S99P01-P99每个资产至少明确:
资产规划是为了服务执行,不是产出一份脱离 TapCanvas 的独立素材文档。
若宿主明确要求 Seedance prompt,从结构化镜头派生时应生成:
0-3s / 3-6s / 6-9s / 9-12s / 12-15s 的时间轴描述【声音】:配乐 / 环境音 / 对白【参考】:图1 / 图2 或 @资产名 的职责说明Ending Frame:记录最后一帧的主体、构图、光线、背景与情绪,用于下一片段连续性禁止直接把章节摘要粗暴压成 15 秒时间轴。必须先有结构化 shot 级理解,再做时间轴派生。
除章节分镜主链外,本 skill 还必须覆盖原 Seedance 模板矩阵。若任务明显属于以下类型,应优先按对应模板派生,而不是套一个抽象通用模版:
这些模板的完整写法、时间轴组织、@素材 引用方式与特殊注意事项,统一见 references/seedance-manual.md。
当产出单条 Seedance prompt 时,默认使用以下八层公式校验:
主体 + 动作 + 场景 + 光影 + 镜头语言 + 风格 + 画质 + 约束
每一层都不能缺失,尤其是:
4K、细节清晰、无模糊、无闪烁避免使用“漂亮、帅气、很酷”这类主观空词;它们不构成可执行约束。
当用户给的是故事、小说、短篇、真实事件,而不是现成分镜时,先按以下顺序拆解,再产出 JSON 或正文:
storyboard-director/v1.1 JSON△ 正文剧本Seedance timeline prompt这一整套步骤的细版模板与检查清单见 references/故事转视频脚本-转换工具.md。
除本文件的导演 schema 自检外,若宿主要求正文剧本或 Seedance prompt,还必须额外确认:
@素材 语法并标明各素材职责若输出是专门给 Seedance 的单条 prompt,还需再核对一次 references/优化分镜.md 中的公式与防崩词是否覆盖完整。
负面约束。relationshipGraph 或 crowdRelations。rigAndPose 或 stopMotionSpec。{
"schemaVersion": "storyboard-director/v1.1",
"chapter": {
"bookTitle": "string",
"chapterTitle": "string",
"sourceSpan": "string"
},
"globalStyle": {
"genre": "string",
"visualTone": "string",
"palette": "string",
"aspectRatio": "16:9",
"fps": 24
},
"modelingSpec": {
"unitScale": "1m",
"topologyDetail": "mid-high",
"materialStyle": "stylized-pbr",
"textureAging": "blood-stain + dust",
"clothBehavior": "stiff-heavy"
},
"stopMotionSpec": {
"fpsBase": 24,
"cadence": "onTwos",
"microJitterPx": 0.8,
"holdFrames": [2, 3],
"imperfectionPolicy": "allow tactile handmade wobble"
},
"atmosphereSpec": {
"tensionLevel": 0.9,
"airDensity": "dusty-thin",
"humidityCue": "dry-wind",
"windVector": "left-to-right",
"particleType": ["dust", "blood-mist"],
"soundProxySources": ["cloth-flap", "weapon-hum", "distant-shout"]
},
"cast": [
{
"id": "char_fangyuan",
"name": "方源",
"anchorTraits": ["苍白肤色", "眼神幽深", "黑发", "残破碧绿袍"]
}
],
"relationshipGraph": [
{
"from": "char_fangyuan",
"to": "group_zhengdao",
"relationType": "hostile",
"intensity": 0.95,
"state": "encirclement"
}
],
"shots": [
{
"shotId": "SHOT_01",
"durationSec": 3.5,
"narrativeGoal": "string",
"subjectAnchors": ["string"],
"crowdRelations": [
{
"group": "group_zhengdao",
"relationToSubject": "hostile",
"blocking": "ring",
"distance": "mid"
}
],
"scene": {
"location": "string",
"timeOfDay": "string",
"weather": "string",
"environmentDetails": ["string"]
},
"rigAndPose": {
"centerOfMass": "mid-low",
"limbConstraints": ["no hyperextension"],
"forbiddenPoses": ["heroic-victory-pose"],
"keyPoseNotes": "string"
},
"camera": {
"shotSize": "wide",
"angle": "high",
"height": "crane-high",
"lensMm": 35,
"shutterAngleDeg": 180,
"movement": "slow push-in",
"focusTarget": "char_fangyuan"
},
"lighting": {
"keyDirection": "back-left",
"keyAngleDeg": 35,
"colorTempK": 4300,
"contrastRatio": "high",
"fillStyle": "minimal",
"rimLight": "sunset edge"
},
"actionChain": ["A -> B -> C"],
"composition": {
"foreground": "string",
"midground": "string",
"background": "string",
"spatialRule": "triangular balance"
},
"dramaticBeat": {
"before": "string",
"during": "string",
"after": "string"
},
"performance": {
"emotion": "string",
"microExpression": "string",
"bodyLanguage": "string"
},
"continuity": {
"fromPrev": "string",
"persistentAnchors": ["string"],
"forbiddenDrifts": ["string"]
},
"continuityLocks": {
"identityLock": ["string"],
"propLock": ["string"],
"spaceLock": ["string"],
"lightLock": ["string"]
},
"readabilityChecks": {
"subjectReadable": true,
"relationshipReadable": true,
"lightingConsistent": true
},
"failureRisks": ["identityDrift", "lightFlip"],
"negativeConstraints": ["string", "string"],
"prompt": {
"cn": "string",
"enOptional": "string"
}
}
]
}
输出前逐条检查:
@角色名 / @角色名-状态,是否已有对应角色卡或已先补角色卡节点0-15s 节奏,而不是只复制镜头标题△ / os / vo / 闪回 / 字幕 的规范表达,且与 JSON 事实一致任一项不满足,先修正再输出。