AI萌宠·拟人化视频创作-单图拼接版-画布修复版
这是知识库中的旧 DSL 案例。DSL 本身是机器文件,下面保留原始 YAML,供后续迭代、对照和排错使用。
文件大小
102490 bytes
来源路径
/Users/ljn/Desktop/自动化搭建/AI生产线知识库/raw/old_dsl/AI萌宠·拟人化视频创作-单图拼接版-画布修复版.yml
app:
description: 支持上传 1 张宠物照片,生成更有梗的强拟人化萌宠短视频,并自动拼接分镜视频,最终输出 result video url。
icon: 🐾
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: AI萌宠·拟人化视频创作(单图拼接版)
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: package
value:
plugin_unique_identifier: aict/ai_hub:3.3.1@4e71d8262fbecb133fd6801e8b0a4c141f0bf4f0d6b68cec1b5c254a65365e96
kind: app
version: 0.3.1
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions: []
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
audio:
enabled: false
number_limits: 1
transfer_methods:
- local_file
enabled: true
fileUploadConfig:
audio_file_size_limit: 100
batch_count_limit: 1
file_size_limit: 50
image_file_size_limit: 20
video_file_size_limit: 100
workflow_file_upload_limit: 1
image:
enabled: true
number_limits: 1
transfer_methods:
- local_file
number_limits: 1
video:
enabled: false
number_limits: 1
transfer_methods:
- local_file
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 1880000000001-source-1880000000002-target
source: '1880000000001'
sourceHandle: source
target: '1880000000002'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1880000000002-source-1880000000003-target
source: '1880000000002'
sourceHandle: source
target: '1880000000003'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: image-generation
id: 1880000000003-source-1880000000004-target
source: '1880000000003'
sourceHandle: source
target: '1880000000004'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: image-generation
targetType: llm
id: 1880000000004-source-1880000000005-target
source: '1880000000004'
sourceHandle: source
target: '1880000000005'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1880000000005-source-1880000000006-target
source: '1880000000005'
sourceHandle: source
target: '1880000000006'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: iteration
id: 1880000000006-source-1880000000007-target
source: '1880000000006'
sourceHandle: source
target: '1880000000007'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: iteration
targetType: code
id: 1880000000007-source-1880000000012-target
source: '1880000000007'
sourceHandle: source
target: '1880000000012'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
sourceType: iteration-start
targetType: code
id: 1880000000007start-source-1880000000009-target
source: 1880000000007start
sourceHandle: source
target: '1880000000009'
targetHandle: target
type: custom
zIndex: 1002
- data:
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
sourceType: code
targetType: image-generation
id: 1880000000009-source-1880000000010-target
source: '1880000000009'
sourceHandle: source
target: '1880000000010'
targetHandle: target
type: custom
zIndex: 1002
- data:
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
sourceType: image-generation
targetType: tool
id: 1880000000010-source-1880000000011-target
source: '1880000000010'
sourceHandle: source
target: '1880000000011'
targetHandle: target
type: custom
zIndex: 1002
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: tool
id: 1880000000012-source-1880000000013-target
source: '1880000000012'
sourceHandle: source
target: '1880000000013'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: tool
targetType: code
id: 1880000000013-source-1880000000014-target
source: '1880000000013'
sourceHandle: source
target: '1880000000014'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: end
id: 1880000000014-source-1880000000008-target
source: '1880000000014'
sourceHandle: source
target: '1880000000008'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- allowed_file_extensions: []
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
label: 宠物照片(仅上传 1 张)
max_length: 48
options: []
required: true
type: file
variable: pet_image_1
- label: 宠物人物设定(delivery_rider / college_student / office_worker)
max_length: 64
options:
- delivery_rider
- college_student
- office_worker
required: true
type: text-input
variable: pet_role_preset
- label: 目标平台(douyin / xiaohongshu / bilibili)
max_length: 48
options:
- douyin
- xiaohongshu
- bilibili
required: true
type: text-input
variable: target_platform
- label: 主角音色(male / female)
max_length: 32
options:
- male
- female
required: true
type: text-input
variable: voice_gender
- label: 选题(可选,如早八赶课/第一次送外卖/工位摸鱼)
max_length: 100
options: []
required: false
type: text-input
variable: topic
- label: 宠物名称(可选)
max_length: 48
options: []
required: false
type: text-input
variable: pet_name
- label: 宠物类型(可选,如 cat / dog)
max_length: 48
options: []
required: false
type: text-input
variable: pet_type
height: 244
id: '1880000000001'
position:
x: 30
y: 1143
positionAbsolute:
x: 30
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
audio:
configs:
variable_selector: []
enabled: false
context:
enabled: false
variable_selector: []
desc: ''
document:
configs:
variable_selector: []
enabled: false
model:
completion_params:
response_format: json_schema
json_schema: "{\n \"additionalProperties\": false,\n \"properties\": {\n \"input_profile\": {\n \"additionalProperties\"\
: false,\n \"properties\": {\n \"creation_mode\": {\n \"type\": \"string\"\n },\n\
\ \"pet_name\": {\n \"type\": \"string\"\n },\n \"pet_role_preset\": {\n \
\ \"type\": \"string\"\n },\n \"pet_role_preset_zh\": {\n \"type\": \"string\"\n\
\ },\n \"pet_type\": {\n \"type\": \"string\"\n },\n \"target_platform\"\
: {\n \"type\": \"string\"\n },\n \"target_platform_zh\": {\n \"type\": \"string\"\
\n },\n \"topic\": {\n \"type\": \"string\"\n },\n \"topic_applied\": {\n\
\ \"type\": \"string\"\n },\n \"voice_gender\": {\n \"type\": \"string\"\n \
\ },\n \"voice_gender_zh\": {\n \"type\": \"string\"\n }\n },\n \"required\"\
: [\n \"creation_mode\",\n \"pet_name\",\n \"pet_type\",\n \"pet_role_preset\",\n\
\ \"pet_role_preset_zh\",\n \"target_platform\",\n \"target_platform_zh\",\n \"\
topic\",\n \"topic_applied\",\n \"voice_gender\",\n \"voice_gender_zh\"\n ],\n \
\ \"type\": \"object\"\n },\n \"platform_policy\": {\n \"additionalProperties\": false,\n \
\ \"properties\": {\n \"aspect_ratio\": {\n \"type\": \"string\"\n },\n \"canvas_height\"\
: {\n \"type\": \"number\"\n },\n \"canvas_width\": {\n \"type\": \"number\"\
\n },\n \"cover_style\": {\n \"type\": \"string\"\n },\n \"duration_range_sec\"\
: {\n \"type\": \"string\"\n },\n \"hook_window_sec\": {\n \"type\": \"number\"\
\n },\n \"image_size\": {\n \"type\": \"string\"\n },\n \"share_copy_style\"\
: {\n \"type\": \"string\"\n },\n \"shot_count\": {\n \"type\": \"string\"\n\
\ },\n \"subtitle_density\": {\n \"type\": \"string\"\n },\n \"target_duration_sec\"\
: {\n \"type\": \"number\"\n },\n \"tone_style\": {\n \"type\": \"string\"\n\
\ },\n \"video_ratio\": {\n \"type\": \"string\"\n }\n },\n \"required\"\
: [\n \"target_duration_sec\",\n \"duration_range_sec\",\n \"hook_window_sec\",\n \
\ \"shot_count\",\n \"subtitle_density\",\n \"tone_style\",\n \"cover_style\",\n \
\ \"share_copy_style\",\n \"aspect_ratio\",\n \"image_size\",\n \"video_ratio\",\n \
\ \"canvas_width\",\n \"canvas_height\"\n ],\n \"type\": \"object\"\n },\n \"role_policy\"\
: {\n \"additionalProperties\": false,\n \"properties\": {\n \"emotion_pool\": {\n \
\ \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"string\"\n },\n\
\ \"ending_twist_style\": {\n \"type\": \"string\"\n },\n \"human_identity\":\
\ {\n \"type\": \"string\"\n },\n \"prop_pool\": {\n \"items\": {\n \
\ \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"scene_pool\":\
\ {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n\
\ }\n },\n \"required\": [\n \"human_identity\",\n \"scene_pool\",\n \"\
prop_pool\",\n \"emotion_pool\",\n \"ending_twist_style\"\n ],\n \"type\": \"object\"\
\n },\n \"visual_profile\": {\n \"additionalProperties\": false,\n \"properties\": {\n \
\ \"body_shape\": {\n \"type\": \"string\"\n },\n \"breed_guess\": {\n \"\
type\": \"string\"\n },\n \"coat_main\": {\n \"type\": \"string\"\n },\n \
\ \"coat_pattern\": {\n \"type\": \"string\"\n },\n \"ear_feat\": {\n \"type\"\
: \"string\"\n },\n \"eye_feat\": {\n \"type\": \"string\"\n },\n \"face_shape\"\
: {\n \"type\": \"string\"\n },\n \"id_keys\": {\n \"items\": {\n \
\ \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"image_summary\"\
: {\n \"type\": \"string\"\n },\n \"species\": {\n \"type\": \"string\"\n \
\ },\n \"tail_feat\": {\n \"type\": \"string\"\n },\n \"unique_marks\": {\n\
\ \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n \
\ }\n },\n \"required\": [\n \"species\",\n \"breed_guess\",\n \"coat_main\"\
,\n \"coat_pattern\",\n \"face_shape\",\n \"eye_feat\",\n \"ear_feat\",\n \
\ \"body_shape\",\n \"tail_feat\",\n \"unique_marks\",\n \"id_keys\",\n \"image_summary\"\
\n ],\n \"type\": \"object\"\n },\n \"voice_policy\": {\n \"additionalProperties\": false,\n\
\ \"properties\": {\n \"voice_anchor\": {\n \"type\": \"string\"\n },\n \"\
voice_consistency_rule\": {\n \"type\": \"string\"\n },\n \"voice_gender\": {\n \
\ \"type\": \"string\"\n },\n \"voice_style\": {\n \"type\": \"string\"\n \
\ }\n },\n \"required\": [\n \"voice_gender\",\n \"voice_anchor\",\n \"voice_style\"\
,\n \"voice_consistency_rule\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n\
\ \"input_profile\",\n \"platform_policy\",\n \"role_policy\",\n \"voice_policy\",\n \"visual_profile\"\
\n ],\n \"type\": \"object\"\n}"
temperature: 0.35
max_completion_tokens: 4096
mode: chat
name: gpt-5.5-2026-04-24
provider: aict/ai_hub/ai_hub
prompt_template:
- id: e7ff773b-2c53-48bd-9a73-aa1bd2a07bd1
role: system
text: '你是 AI 萌宠角色基础建模 Agent。
你的任务是基于用户输入的结构化字段和上传的 1 张宠物照片,输出一份统一的角色基础建模结果,供后续拟人角色设计、故事规划和镜头生成使用。
输入字段如下:
- 宠物人物设定:{{#1880000000001.pet_role_preset#}}
- 目标平台:{{#1880000000001.target_platform#}}
- 主角音色:{{#1880000000001.voice_gender#}}
- 选题:{{#1880000000001.topic#}}
- 宠物名称:{{#1880000000001.pet_name#}}
- 宠物类型:{{#1880000000001.pet_type#}}
你必须同时完成以下 5 件事:
1. 规范化用户输入,生成 input_profile。
2. 根据 target_platform 生成 platform_policy。
3. 根据 pet_role_preset 生成 role_policy。
4. 根据 voice_gender 生成 voice_policy,用于后续所有分镜固定同一个音色锚点。
5. 系统会通过图片处理传入 1 张宠物照片,请直接观察这张照片,不要把图片内容当作文本变量解析。根据这 1 张上传照片生成 visual_profile,用于识别“这还是这只宠物”。
平台策略必须固定遵守以下规则:
- douyin:target_duration_sec=18,duration_range_sec=15-22,hook_window_sec=2,shot_count=5-6,subtitle_density=high,tone_style=强反差快节奏,cover_style=大字直给,share_copy_style=短句口语化,aspect_ratio=9:16,image_size=1024x1536,video_ratio=9:16,canvas_width=1080,canvas_height=1920。
- xiaohongshu:target_duration_sec=26,duration_range_sec=20-35,hook_window_sec=3,shot_count=6-7,subtitle_density=medium,tone_style=生活感可爱感,cover_style=更像生活记录,share_copy_style=带一点“我家宠物太像人了”的分享感,aspect_ratio=9:16,image_size=1024x1536,video_ratio=9:16,canvas_width=1080,canvas_height=1920。
- bilibili:target_duration_sec=40,duration_range_sec=30-55,hook_window_sec=4,shot_count=6-8,subtitle_density=medium_high,tone_style=小叙事更完整,cover_style=可稍弱标题党,share_copy_style=更像完整日常分享,aspect_ratio=16:9,image_size=1536x1024,video_ratio=16:9,canvas_width=1920,canvas_height=1080。
人设策略必须固定遵守以下规则:
- delivery_rider:human_identity=外卖员;scene_pool 包含出门、赶单、等电梯、送餐、休息、回家;prop_pool 包含头盔、工服、保温箱、电动车、手机;emotion_pool
包含累、嘴硬、敬业、轻崩溃;ending_twist_style=“明天还得接着跑”。
- college_student:human_identity=大学生;scene_pool 包含起床、洗漱、赶课、食堂、图书馆、宿舍;prop_pool 包含书包、课本、水杯、耳机、电脑;emotion_pool 包含困、呆、装成熟、拖延;ending_twist_style=“明天一定早起”。
- office_worker:human_identity=职场打工人;scene_pool 包含通勤、打卡、工位、开会、午饭、加班、回家;prop_pool 包含工牌、电脑、咖啡、背包、地铁;emotion_pool
包含班味、疲惫、忍住不发疯;ending_twist_style=“今天也没辞职”。
选题使用规则:
1. 如果 topic 非空,creation_mode=topic_driven,后续角色形象、故事钩子、镜头内容都要优先围绕这个选题展开,但仍不能偏离 pet_role_preset 对应的人设。
2. 如果 topic 为空,creation_mode=role_driven,后续角色形象和故事完全根据 pet_role_preset 展开。
音色策略规则:
1. 必须输出 voice_policy。
2. voice_anchor 必须是一句固定的“音色锚点描述”,供后续所有分镜视频生成复用,确保同一条视频里音色不漂移。
3. male 输出稳定男声音色锚点;female 输出稳定女声音色锚点。
4. voice_style 允许结合人设和选题做轻微风格提示,但不能改变基础音色身份。
视觉解析要求:
1. 只提取这张照片里的原宠物识别锚点,不要在这一节点做拟人造型。
2. 重点提取:毛色、花纹、脸型、眼睛、耳朵、嘴套、胡须、体型、尾巴、独特标记。
3. 输出必须服务后续一致性控制。
4. 如果 pet_type 为空,可根据图片判断;如果无法确定则如实写待确认。
输出必须是严格 JSON,不要输出 Markdown,不要输出解释性文字。
质量标准:
- 输出必须能被下游节点直接消费,字段完整、类型稳定、不得漏填 required 字段。
- 内容必须同时保持宠物识别点、人设一致性、平台节奏和短视频可看性。
- 对不确定信息要写“待确认”,不要编造成确定事实。
迭代反馈信号:
- 如果后续生成结果出现角色不像原宠物、笑点平、镜头拖、口播像说明书、视频拼接缺 URL,应优先回到本节点检查视觉锚点、故事钩子、字段完整性和下游依赖字段。
输出合同:
- 只输出符合 JSON Schema 的 JSON 对象,不输出 Markdown、解释文字或额外字段。
'
- id: 6568fd20-6537-4f71-83b1-774bd3436a86
role: user
text: '请根据以下输入和上传的 1 张宠物照片,输出角色基础建模 JSON。
- 宠物人物设定:{{#1880000000001.pet_role_preset#}}
- 目标平台:{{#1880000000001.target_platform#}}
- 主角音色:{{#1880000000001.voice_gender#}}
- 选题:{{#1880000000001.topic#}}
- 宠物名称:{{#1880000000001.pet_name#}}
- 宠物类型:{{#1880000000001.pet_type#}}
图片变量:{{#1880000000001.pet_image_1#}}
请严格按 JSON Schema 输出 input_profile、platform_policy、role_policy、voice_policy、visual_profile。'
selected: false
structured_output:
schema:
additionalProperties: false
properties:
input_profile:
additionalProperties: false
properties:
creation_mode:
type: string
pet_name:
type: string
pet_role_preset:
type: string
pet_role_preset_zh:
type: string
pet_type:
type: string
target_platform:
type: string
target_platform_zh:
type: string
topic:
type: string
topic_applied:
type: string
voice_gender:
type: string
voice_gender_zh:
type: string
required:
- creation_mode
- pet_name
- pet_type
- pet_role_preset
- pet_role_preset_zh
- target_platform
- target_platform_zh
- topic
- topic_applied
- voice_gender
- voice_gender_zh
type: object
platform_policy:
additionalProperties: false
properties:
aspect_ratio:
type: string
canvas_height:
type: number
canvas_width:
type: number
cover_style:
type: string
duration_range_sec:
type: string
hook_window_sec:
type: number
image_size:
type: string
share_copy_style:
type: string
shot_count:
type: string
subtitle_density:
type: string
target_duration_sec:
type: number
tone_style:
type: string
video_ratio:
type: string
required:
- target_duration_sec
- duration_range_sec
- hook_window_sec
- shot_count
- subtitle_density
- tone_style
- cover_style
- share_copy_style
- aspect_ratio
- image_size
- video_ratio
- canvas_width
- canvas_height
type: object
role_policy:
additionalProperties: false
properties:
emotion_pool:
items:
type: string
type: string
ending_twist_style:
type: string
human_identity:
type: string
prop_pool:
items:
type: string
type: array
scene_pool:
items:
type: string
type: array
required:
- human_identity
- scene_pool
- prop_pool
- emotion_pool
- ending_twist_style
type: object
visual_profile:
additionalProperties: false
properties:
body_shape:
type: string
breed_guess:
type: string
coat_main:
type: string
coat_pattern:
type: string
ear_feat:
type: string
eye_feat:
type: string
face_shape:
type: string
id_keys:
items:
type: string
type: array
image_summary:
type: string
species:
type: string
tail_feat:
type: string
unique_marks:
items:
type: string
type: array
required:
- species
- breed_guess
- coat_main
- coat_pattern
- face_shape
- eye_feat
- ear_feat
- body_shape
- tail_feat
- unique_marks
- id_keys
- image_summary
type: object
voice_policy:
additionalProperties: false
properties:
voice_anchor:
type: string
voice_consistency_rule:
type: string
voice_gender:
type: string
voice_style:
type: string
required:
- voice_gender
- voice_anchor
- voice_style
- voice_consistency_rule
type: object
required:
- input_profile
- platform_policy
- role_policy
- voice_policy
- visual_profile
type: object
structured_output_enabled: true
title: 节点1:角色基础建模
type: llm
variables: []
video:
configs:
variable_selector: []
enabled: false
vision:
configs:
detail: high
variable_selector:
- '1880000000001'
- pet_image_1
enabled: true
height: 120
id: '1880000000002'
position:
x: 332
y: 1143
positionAbsolute:
x: 332
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
audio:
configs:
variable_selector: []
enabled: false
context:
enabled: false
variable_selector: []
desc: ''
document:
configs:
variable_selector: []
enabled: false
model:
completion_params:
response_format: json_schema
json_schema: "{\n \"additionalProperties\": false,\n \"properties\": {\n \"anthro_character_spec\": {\n \
\ \"additionalProperties\": false,\n \"properties\": {\n \"back_view_desc\": {\n \"\
type\": \"string\"\n },\n \"body_mode\": {\n \"type\": \"string\"\n },\n \
\ \"costume_rule\": {\n \"type\": \"string\"\n },\n \"expression_range\": {\n \
\ \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n\
\ \"face_lock\": {\n \"items\": {\n \"type\": \"string\"\n },\n \
\ \"type\": \"array\"\n },\n \"front_view_desc\": {\n \"type\": \"string\"\n \
\ },\n \"hand_foot_rule\": {\n \"type\": \"string\"\n },\n \"identity_brief\"\
: {\n \"type\": \"string\"\n },\n \"image_prompt\": {\n \"type\": \"string\"\
\n },\n \"negative_prompt\": {\n \"type\": \"string\"\n },\n \"prop_rule\"\
: {\n \"type\": \"string\"\n },\n \"side_view_desc\": {\n \"type\": \"string\"\
\n },\n \"speaking_face_rule\": {\n \"type\": \"string\"\n }\n },\n \
\ \"required\": [\n \"identity_brief\",\n \"face_lock\",\n \"body_mode\",\n \"hand_foot_rule\"\
,\n \"costume_rule\",\n \"prop_rule\",\n \"expression_range\",\n \"speaking_face_rule\"\
,\n \"front_view_desc\",\n \"side_view_desc\",\n \"back_view_desc\",\n \"image_prompt\"\
,\n \"negative_prompt\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"\
anthro_character_spec\"\n ],\n \"type\": \"object\"\n}"
temperature: 0.35
max_completion_tokens: 4096
mode: chat
name: gpt-5.5-2026-04-24
provider: aict/ai_hub/ai_hub
prompt_template:
- id: 1b3a16af-a9f2-416e-95b8-69dbb643773d
role: system
text: '你是 AI 萌宠拟人角色三视图设定 Agent。
你要基于节点1输出的 {{#1880000000002.structured_output#}},尤其是 input_profile、role_policy 和 visual_profile,生成一份“强拟人化萌宠角色三视图设定稿”,供后续统一生图使用。
这里的角色是“保留宠物脸部识别点的人形角色”,必须满足:
1. 保留原宠物的脸型、眼睛、鼻子、嘴套、毛色、花纹、耳朵、胡须、独特标记。
2. 允许像人类一样站立、穿衣服、做动作、说话、做表情。
3. 身体允许人形比例,但绝不能把脸直接变成人脸,也不能丢失宠物感。
4. 服装、帽子、道具必须服务用户选择的人设。
5. speaking_face_rule 必须明确这个角色说话时的嘴型、眼神、耳朵、胡须和面部变化规则。
你需要输出:
- identity_brief:角色一句话设定
- face_lock:脸部和宠物识别点锁定项
- body_mode:人形身体模式
- hand_foot_rule:手脚表现规则
- costume_rule:服装规则
- prop_rule:主道具规则
- expression_range:允许的表情范围
- speaking_face_rule:说话表情规则
- front_view_desc / side_view_desc / back_view_desc:拟人角色三视图描述
- image_prompt:供三视图生图节点直接使用的中文提示词
- negative_prompt:禁止项,必须覆盖人脸化、毛色漂移、花纹错误、肢体畸形、文字、UI、复杂背景
输出必须是严格 JSON,不要输出 Markdown。
质量标准:
- 输出必须能被下游节点直接消费,字段完整、类型稳定、不得漏填 required 字段。
- 内容必须同时保持宠物识别点、人设一致性、平台节奏和短视频可看性。
- 对不确定信息要写“待确认”,不要编造成确定事实。
迭代反馈信号:
- 如果后续生成结果出现角色不像原宠物、笑点平、镜头拖、口播像说明书、视频拼接缺 URL,应优先回到本节点检查视觉锚点、故事钩子、字段完整性和下游依赖字段。
输出合同:
- 只输出符合 JSON Schema 的 JSON 对象,不输出 Markdown、解释文字或额外字段。
'
- id: 0b2d4517-15cd-4f32-8c46-fa91723f287f
role: user
text: '请基于节点1的角色基础建模结果,输出拟人角色三视图设定 JSON。
节点1结构化结果:{{#1880000000002.structured_output#}}
原始宠物照片:{{#1880000000001.pet_image_1#}}
请严格按 JSON Schema 输出 anthro_character_spec,并确保 image_prompt 可直接驱动后续图生图组件。'
selected: false
structured_output:
schema:
additionalProperties: false
properties:
anthro_character_spec:
additionalProperties: false
properties:
back_view_desc:
type: string
body_mode:
type: string
costume_rule:
type: string
expression_range:
items:
type: string
type: array
face_lock:
items:
type: string
type: array
front_view_desc:
type: string
hand_foot_rule:
type: string
identity_brief:
type: string
image_prompt:
type: string
negative_prompt:
type: string
prop_rule:
type: string
side_view_desc:
type: string
speaking_face_rule:
type: string
required:
- identity_brief
- face_lock
- body_mode
- hand_foot_rule
- costume_rule
- prop_rule
- expression_range
- speaking_face_rule
- front_view_desc
- side_view_desc
- back_view_desc
- image_prompt
- negative_prompt
type: object
required:
- anthro_character_spec
type: object
structured_output_enabled: true
title: 节点2:拟人角色三视图设定
type: llm
variables: []
video:
configs:
variable_selector: []
enabled: false
vision:
configs:
detail: high
variable_selector:
- '1880000000001'
- pet_image_1
enabled: true
height: 120
id: '1880000000003'
position:
x: 634
y: 1143
positionAbsolute:
x: 634
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
isInIteration: false
isInLoop: false
model_info:
config_version: v1
model_id: jimeng-seedream-4.5-img2img
model_name: 即梦 SeedDream 4.5 图生图
provider: jimeng
provider_name: 即梦
params:
custom_size:
type: constant
value: null
enable_cs_transfer:
type: constant
value: true
images:
type: variable
value_selector:
- '1880000000001'
- pet_image_1
max_images:
type: constant
value: 1
prompt:
type: constant
value: '基于输入图片生成 1 张拟人角色三视图参考板。必须是同一个 AI 萌宠角色的前视图、侧视图、后视图,统一出现在同一张参考板中。
角色设定如下:
{{#1880000000003.structured_output.anthro_character_spec.image_prompt#}}
角色锁定要求如下:
- 身份设定:{{#1880000000003.structured_output.anthro_character_spec.identity_brief#}}
- 脸部锁定:{{#1880000000003.structured_output.anthro_character_spec.face_lock#}}
- 身体模式:{{#1880000000003.structured_output.anthro_character_spec.body_mode#}}
- 服装规则:{{#1880000000003.structured_output.anthro_character_spec.costume_rule#}}
- 道具规则:{{#1880000000003.structured_output.anthro_character_spec.prop_rule#}}
必须保持强拟人化但仍然一眼看出是原来的宠物,不要变成人脸,不要生成文字、字幕、UI、编号、复杂背景。
负向约束:
{{#1880000000003.structured_output.anthro_character_spec.negative_prompt#}}'
sequential_image_generation:
type: constant
value: false
size:
type: variable
value_selector:
- '1880000000002'
- structured_output
- platform_policy
- image_size
watermark:
type: constant
value: false
selected: false
title: 节点2.5:拟人角色三视图生成
type: image-generation
height: 698
id: '1880000000004'
position:
x: 936
y: 1143
positionAbsolute:
x: 936
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
audio:
configs:
variable_selector: []
enabled: false
context:
enabled: false
variable_selector: []
desc: ''
document:
configs:
variable_selector: []
enabled: false
model:
completion_params:
response_format: json_schema
json_schema: "{\n \"additionalProperties\": false,\n \"properties\": {\n \"story_plan\": {\n \"additionalProperties\"\
: false,\n \"properties\": {\n \"beat_outline\": {\n \"items\": {\n \"type\"\
: \"string\"\n },\n \"type\": \"array\"\n },\n \"character_card_summary\": {\n\
\ \"type\": \"string\"\n },\n \"cover_text_candidates\": {\n \"items\": {\n\
\ \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ending_line\"\
: {\n \"type\": \"string\"\n },\n \"hook_0_3s\": {\n \"type\": \"string\"\n\
\ },\n \"os_lines\": {\n \"items\": {\n \"type\": \"string\"\n },\n\
\ \"type\": \"array\"\n },\n \"speaking_shot_ids\": {\n \"items\": {\n \
\ \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"story_title\"\
: {\n \"type\": \"string\"\n },\n \"subtitle_style\": {\n \"type\": \"string\"\
\n },\n \"voice_style_hint\": {\n \"type\": \"string\"\n }\n },\n \"\
required\": [\n \"story_title\",\n \"hook_0_3s\",\n \"beat_outline\",\n \"os_lines\"\
,\n \"speaking_shot_ids\",\n \"voice_style_hint\",\n \"ending_line\",\n \"subtitle_style\"\
,\n \"cover_text_candidates\",\n \"character_card_summary\"\n ],\n \"type\": \"object\"\
\n }\n },\n \"required\": [\n \"story_plan\"\n ],\n \"type\": \"object\"\n}"
temperature: 0.35
max_completion_tokens: 4096
mode: chat
name: gpt-5.5-2026-04-24
provider: aict/ai_hub/ai_hub
prompt_template:
- id: f47bffa4-1b84-4779-bd42-ac16c2ec13f4
role: system
text: '你是 AI 萌宠故事规划 Agent。
你要基于以下输入,生成一条强拟人化 AI 萌宠短视频的故事规划:
- 节点1输出:{{#1880000000002.structured_output#}}
- 节点2输出:{{#1880000000003.structured_output#}}
- 用户主角音色:{{#1880000000001.voice_gender#}}
要求:
1. 故事必须严格服从 platform_policy:时长、镜头数倾向、钩子窗口、字幕密度、语气风格都要匹配目标平台。
2. 故事必须严格服从 role_policy:人设不能跑偏。
3. 角色是强拟人化角色,不是宠物纪录片。
4. 如果 input_profile.creation_mode=topic_driven,story_title、hook_0_3s、beat_outline、ending_line、cover_text_candidates
都必须优先围绕 input_profile.topic 展开,不能把选题只当成一句点缀。
5. 如果 input_profile.creation_mode=role_driven,则完全根据 pet_role_preset 和 role_policy 展开,不要强行编造额外选题。
6. 输出 2-4 句短口播台词,控制在短视频节奏内,每句尽量 6-14 个字。
7. 明确 speaking_shot_ids,告诉后续哪些镜头需要说话。
8. voice_style_hint 必须参考 voice_policy,和 voice_policy.voice_anchor 保持同一基础音色身份,只允许情绪轻微变化,不允许变成另一种声线。
9. 剧本必须更有趣、更有梗,但不能堆网络热词。优先使用“人设反差 + 宠物习性 + 当代日常”的笑点:例如外卖员的嘴硬、大学生的早八崩溃、打工人的班味和摸鱼。
10. 每条口播台词都要像真人短视频里的吐槽,短、狠、好记,避免说明书式旁白。
11. hook_0_3s 必须有明确反差或悬念;ending_line 必须有回扣前文的包袱,不能只是普通总结。
12. cover_text_candidates 要像平台短视频标题,口语化、有冲突感,但不能低俗、不能攻击具体群体、不能使用侵权台词。
固定结构建议:
- 前 0-3 秒建立钩子
- 中段 3-5 个生活动作片段推进
- 结尾落一个反差收束
输出必须是严格 JSON,不要输出 Markdown。
质量标准:
- 输出必须能被下游节点直接消费,字段完整、类型稳定、不得漏填 required 字段。
- 内容必须同时保持宠物识别点、人设一致性、平台节奏和短视频可看性。
- 对不确定信息要写“待确认”,不要编造成确定事实。
迭代反馈信号:
- 如果后续生成结果出现角色不像原宠物、笑点平、镜头拖、口播像说明书、视频拼接缺 URL,应优先回到本节点检查视觉锚点、故事钩子、字段完整性和下游依赖字段。
输出合同:
- 只输出符合 JSON Schema 的 JSON 对象,不输出 Markdown、解释文字或额外字段。
'
- id: ece37b4a-6c00-40c5-90af-0ba68d97b3a6
role: user
text: '请基于角色基础建模和拟人角色设定,生成更有趣、更有梗的短视频故事规划 JSON。
节点1结构化结果:{{#1880000000002.structured_output#}}
节点2结构化结果:{{#1880000000003.structured_output#}}
主角音色:{{#1880000000001.voice_gender#}}
用户选题:{{#1880000000001.topic#}}
请严格按 JSON Schema 输出 story_plan。'
selected: false
structured_output:
schema:
additionalProperties: false
properties:
story_plan:
additionalProperties: false
properties:
beat_outline:
items:
type: string
type: array
character_card_summary:
type: string
cover_text_candidates:
items:
type: string
type: array
ending_line:
type: string
hook_0_3s:
type: string
os_lines:
items:
type: string
type: array
speaking_shot_ids:
items:
type: string
type: array
story_title:
type: string
subtitle_style:
type: string
voice_style_hint:
type: string
required:
- story_title
- hook_0_3s
- beat_outline
- os_lines
- speaking_shot_ids
- voice_style_hint
- ending_line
- subtitle_style
- cover_text_candidates
- character_card_summary
type: object
required:
- story_plan
type: object
structured_output_enabled: true
title: 节点3:故事规划
type: llm
variables: []
video:
configs:
variable_selector: []
enabled: false
vision:
enabled: false
height: 120
id: '1880000000005'
position:
x: 1238
y: 1143
positionAbsolute:
x: 1238
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
audio:
configs:
variable_selector: []
enabled: false
context:
enabled: false
variable_selector: []
desc: ''
document:
configs:
variable_selector: []
enabled: false
model:
completion_params:
response_format: json_schema
json_schema: "{\n \"additionalProperties\": false,\n \"properties\": {\n \"shot_package\": {\n \"items\"\
: {\n \"additionalProperties\": false,\n \"properties\": {\n \"camera_style\": {\n \
\ \"type\": \"string\"\n },\n \"duration_sec\": {\n \"type\": \"number\"\
\n },\n \"gesture_action\": {\n \"type\": \"string\"\n },\n \"\
image_prompt\": {\n \"type\": \"string\"\n },\n \"mouth_action\": {\n \
\ \"type\": \"string\"\n },\n \"negative_prompt\": {\n \"type\": \"string\"\n\
\ },\n \"purpose\": {\n \"type\": \"string\"\n },\n \"shot_id\"\
: {\n \"type\": \"string\"\n },\n \"shot_title\": {\n \"type\": \"string\"\
\n },\n \"subtitle\": {\n \"type\": \"string\"\n },\n \"video_prompt\"\
: {\n \"type\": \"string\"\n },\n \"visual_desc\": {\n \"type\": \"\
string\"\n },\n \"voice_emotion\": {\n \"type\": \"string\"\n },\n \
\ \"voice_line\": {\n \"type\": \"string\"\n }\n },\n \"required\":\
\ [\n \"shot_id\",\n \"shot_title\",\n \"duration_sec\",\n \"purpose\",\n\
\ \"visual_desc\",\n \"camera_style\",\n \"subtitle\",\n \"voice_line\"\
,\n \"voice_emotion\",\n \"mouth_action\",\n \"gesture_action\",\n \"image_prompt\"\
,\n \"video_prompt\",\n \"negative_prompt\"\n ],\n \"type\": \"object\"\n \
\ },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"shot_package\"\n ],\n \"type\":\
\ \"object\"\n}"
temperature: 0.35
max_completion_tokens: 4096
mode: chat
name: gpt-5.5-2026-04-24
provider: aict/ai_hub/ai_hub
prompt_template:
- id: 0cb38881-6554-4e02-9003-339ea82d3c8e
role: system
text: "你是 AI 萌宠分镜与镜头提示词合并 Agent。\n\n任务:把故事规划拆成可直接驱动分镜图生成、分镜视频生成和最终视频拼接的结构化镜头包。\n\n你要基于以下输入,一次性输出整条视频的分镜表和每镜的图像 /\
\ 视频提示词:\n- 节点1输出:{{#1880000000002.structured_output#}}\n- 节点2输出:{{#1880000000003.structured_output#}}\n- 节点3输出:{{#1880000000005.structured_output#}}\n\
\n关键要求:\n1. 输出镜头数必须符合 platform_policy.shot_count。\n2. 总时长必须尽量落入 platform_policy.duration_range_sec,并尽量贴近 target_duration_sec。\n\
3. 第一镜必须在 hook_window_sec 内建立钩子。\n4. 后续镜头生成只允许参考“拟人角色三视图”,不要再把原宠物图作为后续镜头锚点。\n5. 如果 input_profile.creation_mode=topic_driven,每个镜头都必须服务\
\ input_profile.topic,镜头动作、场景、字幕和台词都要围绕该选题推进。\n6. 如果 input_profile.creation_mode=role_driven,则围绕 pet_role_preset\
\ 的典型日常展开。\n7. 每镜都必须输出:\n shot_id、shot_title、duration_sec、purpose、visual_desc、camera_style、subtitle、voice_line、voice_emotion、mouth_action、gesture_action、image_prompt、video_prompt、negative_prompt。\n\
8. image_prompt 用于关键帧图生成,video_prompt 用于图生视频,negative_prompt 用于防止角色漂移、人脸化、毛色花纹错误、肢体畸形、文字和 UI。\n9. 图像和视频提示词都必须服从\
\ platform_policy.aspect_ratio、platform_policy.image_size、platform_policy.video_ratio 对应的平台尺寸策略。\n10. 说话镜头要根据\
\ story_plan.speaking_shot_ids 分配 voice_line;静默镜头 voice_line 留空,mouth_action 设为 none。\n11. 所有说话镜头必须共享同一个 voice_policy.voice_anchor,不允许分镜之间切换声线。\n\
12. 角色可以像人一样站立、做动作、说话、穿衣服,但始终保持宠物脸部识别点。\n13. 每个镜头都要承担一个明确笑点功能:反差钩子、铺垫、升级、误会、嘴硬、崩溃或反转,不能只是平铺直叙的生活动作。\n14. subtitle\
\ 和 voice_line 要更像短视频热评式吐槽,允许轻微夸张,但必须贴合宠物动作和人物设定。\n15. image_prompt / video_prompt 要把笑点转成可见动作,例如眼神躲闪、假装镇定、突然加速、原地愣住、抱着道具嘴硬,不要只写“有趣”。\n\
16. 避免过时烂梗、低俗梗、饭圈黑话和侵权台词;梗感来自生活反差,不靠复制流行语。\n\n\n输出必须是严格 JSON,不要输出 Markdown。\n\n质量标准:\n- 输出必须能被下游节点直接消费,字段完整、类型稳定、不得漏填\
\ required 字段。\n- 内容必须同时保持宠物识别点、人设一致性、平台节奏和短视频可看性。\n- 对不确定信息要写“待确认”,不要编造成确定事实。\n\n迭代反馈信号:\n- 如果后续生成结果出现角色不像原宠物、笑点平、镜头拖、口播像说明书、视频拼接缺\
\ URL,应优先回到本节点检查视觉锚点、故事钩子、字段完整性和下游依赖字段。\n\n输出合同:\n- 只输出符合 JSON Schema 的 JSON 对象,不输出 Markdown、解释文字或额外字段。\n"
- id: 0b66c0a8-052d-4e60-8e8e-bb127a7f0255
role: user
text: '请把故事规划拆成可生成分镜图和分镜视频的 shot_package JSON。
节点1结构化结果:{{#1880000000002.structured_output#}}
节点2结构化结果:{{#1880000000003.structured_output#}}
节点3结构化结果:{{#1880000000005.structured_output#}}
请严格按 JSON Schema 输出 shot_package,每个镜头都要保留笑点功能、字幕、口播、图像提示词和视频提示词。'
selected: false
structured_output:
schema:
additionalProperties: false
properties:
shot_package:
items:
additionalProperties: false
properties:
camera_style:
type: string
duration_sec:
type: number
gesture_action:
type: string
image_prompt:
type: string
mouth_action:
type: string
negative_prompt:
type: string
purpose:
type: string
shot_id:
type: string
shot_title:
type: string
subtitle:
type: string
video_prompt:
type: string
visual_desc:
type: string
voice_emotion:
type: string
voice_line:
type: string
required:
- shot_id
- shot_title
- duration_sec
- purpose
- visual_desc
- camera_style
- subtitle
- voice_line
- voice_emotion
- mouth_action
- gesture_action
- image_prompt
- video_prompt
- negative_prompt
type: object
type: array
required:
- shot_package
type: object
structured_output_enabled: true
title: 节点4:分镜与提示词合并
type: llm
variables: []
video:
configs:
variable_selector: []
enabled: false
vision:
enabled: false
height: 120
id: '1880000000006'
position:
x: 1540
y: 1143
positionAbsolute:
x: 1540
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
error_handle_mode: continue-on-error
height: 1886
is_parallel: true
iterator_input_type: array[object]
iterator_selector:
- '1880000000006'
- structured_output
- shot_package
output_selector:
- '1880000000011'
- url
output_type: array[string]
parallel_nums: 8
selected: false
start_node_id: 1880000000007start
title: 遍历-镜头图与视频生成
type: iteration
width: 1110
height: 1886
id: '1880000000007'
position:
x: 1869.4082155158476
y: 814.6983453579518
positionAbsolute:
x: 1869.4082155158476
y: 814.6983453579518
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 1110
zIndex: 1
- data:
desc: ''
outputs:
- value_selector:
- '1880000000014'
- video_url
value_type: string
variable: video_url
selected: false
title: 结束
type: end
height: 120
id: '1880000000008'
position:
x: 3918
y: 1143
positionAbsolute:
x: 3918
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
code: "function main({ storyboard_payload, videos, canvas_width, canvas_height }) {\n const parseJson = (value) =>\
\ {\n if (typeof value !== \"string\") return value\n const trimmed = value.trim()\n if (!trimmed) return\
\ null\n return JSON.parse(trimmed)\n }\n\n const getShots = (value) => {\n const parsed = parseJson(value)\n\
\ if (Array.isArray(parsed)) return parsed\n if (parsed && Array.isArray(parsed.shot_package)) return parsed.shot_package\n\
\ return []\n }\n\n const flattenVideos = (value) => {\n if (!Array.isArray(value)) return []\n return\
\ value.flatMap((item) => Array.isArray(item) ? item : [item])\n }\n\n const pickVideoUrl = (file) => {\n if\
\ (typeof file === \"string\" && file.trim()) return file.trim()\n const candidates = [\n file?.remote_url,\n\
\ file?.url,\n file?.download_url,\n file?.view_url,\n file?.file_url,\n file?.presigned_url,\n\
\ file?.video_url,\n file?.path,\n file?.data?.remote_url,\n file?.data?.url,\n file?.data?.download_url\n\
\ ]\n return candidates.find((item) => typeof item === \"string\" && item.trim()) || null\n }\n\n const\
\ positiveNumber = (value, label) => {\n const numberValue = Number(value)\n if (!Number.isFinite(numberValue)\
\ || numberValue <= 0) {\n throw new Error(`${label} 必须是大于 0 的数字`)\n }\n return numberValue\n }\n\n\
\ const shots = getShots(storyboard_payload)\n const videoItems = flattenVideos(videos)\n\n if (!shots.length)\
\ {\n throw new Error(\"shot_package 为空,无法生成视频拼接参数\")\n }\n if (!videoItems.length) {\n throw new Error(\"\
分镜视频输出为空,无法生成视频拼接参数\")\n }\n if (shots.length !== videoItems.length) {\n throw new Error(`镜头数与视频数不一致:shots=${shots.length},\
\ videos=${videoItems.length}`)\n }\n\n let cursor = 0\n const videoParams = []\n const subtitleParams = []\n\
\ const normalizedWidth = String(positiveNumber(canvas_width || 1080, \"canvas_width\"))\n const normalizedHeight\
\ = String(positiveNumber(canvas_height || 1920, \"canvas_height\"))\n\n shots.forEach((shot, index) => {\n \
\ const duration = positiveNumber(shot?.duration_sec, `第 ${index + 1} 个镜头 duration_sec`)\n const url = pickVideoUrl(videoItems[index])\n\
\n if (!url) {\n throw new Error(`第 ${index + 1} 个镜头缺少可用的视频 URL`)\n }\n\n const caption = String(\n\
\ shot?.subtitle ||\n shot?.voice_line ||\n shot?.shot_title ||\n `镜头${index + 1}`\n ).trim()\n\
\n videoParams.push({\n url,\n start: 0,\n end: duration,\n duration,\n order: index\
\ + 1,\n caption\n })\n\n if (caption) {\n subtitleParams.push({\n text: caption,\n \
\ start: cursor,\n end: cursor + duration\n })\n }\n\n cursor += duration\n })\n\n return\
\ {\n video_params: JSON.stringify(videoParams),\n audio_params: JSON.stringify([]),\n subtitle_params:\
\ JSON.stringify(subtitleParams),\n width: normalizedWidth,\n height: normalizedHeight,\n is_web_project:\
\ \"true\",\n segment_count: String(shots.length),\n total_duration_sec: String(cursor)\n }\n}"
code_language: javascript
desc: ''
outputs:
audio_params:
children: null
type: string
height:
children: null
type: string
is_web_project:
children: null
type: string
segment_count:
children: null
type: string
subtitle_params:
children: null
type: string
total_duration_sec:
children: null
type: string
video_params:
children: null
type: string
width:
children: null
type: string
selected: false
title: 生成视频拼接参数
type: code
variables:
- value_selector:
- '1880000000006'
- structured_output
- shot_package
value_type: array[object]
variable: storyboard_payload
- value_selector:
- '1880000000007'
- output
value_type: array[file]
variable: videos
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- canvas_width
value_type: number
variable: canvas_width
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- canvas_height
value_type: number
variable: canvas_height
height: 52
id: '1880000000012'
position:
x: 3012
y: 1143
positionAbsolute:
x: 3012
y: 1143
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
isInIteration: true
selected: false
title: ''
type: iteration-start
iteration_id: '1880000000007'
draggable: false
height: 48
id: 1880000000007start
parentId: '1880000000007'
position:
x: 60
y: 919
positionAbsolute:
x: 1929.4082155158476
y: 1733.698345357952
selectable: false
sourcePosition: right
targetPosition: left
type: custom-iteration-start
width: 44
zIndex: 1002
- data:
code: "function main({ arg1, identity_brief, face_lock, costume_rule, prop_rule, voice_gender, topic, creation_mode,\
\ aspect_ratio, image_size, video_ratio, canvas_width, canvas_height, voice_anchor, voice_style, voice_consistency_rule\
\ }) {\n const item = typeof arg1 === \"string\" ? JSON.parse(arg1) : arg1\n\n return {\n shot_id: item.shot_id,\n\
\ shot_title: item.shot_title,\n duration_sec: String(item.duration_sec),\n purpose: item.purpose,\n \
\ visual_desc: item.visual_desc,\n camera_style: item.camera_style,\n subtitle: item.subtitle,\n voice_line:\
\ item.voice_line,\n voice_emotion: item.voice_emotion,\n mouth_action: item.mouth_action,\n gesture_action:\
\ item.gesture_action,\n image_prompt: item.image_prompt,\n video_prompt: item.video_prompt,\n negative_prompt:\
\ item.negative_prompt,\n identity_brief,\n face_lock,\n costume_rule,\n prop_rule,\n voice_gender,\n\
\ topic,\n creation_mode,\n aspect_ratio,\n image_size,\n video_ratio,\n canvas_width: String(canvas_width),\n\
\ canvas_height: String(canvas_height),\n voice_anchor,\n voice_style,\n voice_consistency_rule\n }\n\
}"
code_language: javascript
desc: ''
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
outputs:
aspect_ratio:
children: null
type: string
camera_style:
children: null
type: string
canvas_height:
children: null
type: string
canvas_width:
children: null
type: string
costume_rule:
children: null
type: string
creation_mode:
children: null
type: string
duration_sec:
children: null
type: string
face_lock:
children: null
type: array[string]
gesture_action:
children: null
type: string
identity_brief:
children: null
type: string
image_prompt:
children: null
type: string
image_size:
children: null
type: string
mouth_action:
children: null
type: string
negative_prompt:
children: null
type: string
prop_rule:
children: null
type: string
purpose:
children: null
type: string
shot_id:
children: null
type: string
shot_title:
children: null
type: string
subtitle:
children: null
type: string
topic:
children: null
type: string
video_prompt:
children: null
type: string
video_ratio:
children: null
type: string
visual_desc:
children: null
type: string
voice_anchor:
children: null
type: string
voice_consistency_rule:
children: null
type: string
voice_emotion:
children: null
type: string
voice_gender:
children: null
type: string
voice_line:
children: null
type: string
voice_style:
children: null
type: string
selected: false
title: 代码执行
type: code
variables:
- value_selector:
- '1880000000007'
- item
value_type: object
variable: arg1
- value_selector:
- '1880000000003'
- structured_output
- anthro_character_spec
- identity_brief
value_type: string
variable: identity_brief
- value_selector:
- '1880000000003'
- structured_output
- anthro_character_spec
- face_lock
value_type: array[string]
variable: face_lock
- value_selector:
- '1880000000003'
- structured_output
- anthro_character_spec
- costume_rule
value_type: string
variable: costume_rule
- value_selector:
- '1880000000003'
- structured_output
- anthro_character_spec
- prop_rule
value_type: string
variable: prop_rule
- value_selector:
- '1880000000001'
- voice_gender
value_type: string
variable: voice_gender
- value_selector:
- '1880000000002'
- structured_output
- input_profile
- topic
value_type: string
variable: topic
- value_selector:
- '1880000000002'
- structured_output
- input_profile
- creation_mode
value_type: string
variable: creation_mode
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- aspect_ratio
value_type: string
variable: aspect_ratio
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- image_size
value_type: string
variable: image_size
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- video_ratio
value_type: string
variable: video_ratio
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- canvas_width
value_type: number
variable: canvas_width
- value_selector:
- '1880000000002'
- structured_output
- platform_policy
- canvas_height
value_type: number
variable: canvas_height
- value_selector:
- '1880000000002'
- structured_output
- voice_policy
- voice_anchor
value_type: string
variable: voice_anchor
- value_selector:
- '1880000000002'
- structured_output
- voice_policy
- voice_style
value_type: string
variable: voice_style
- value_selector:
- '1880000000002'
- structured_output
- voice_policy
- voice_consistency_rule
value_type: string
variable: voice_consistency_rule
height: 52
id: '1880000000009'
parentId: '1880000000007'
position:
x: 87.42245703277831
y: 580.0180398603745
positionAbsolute:
x: 1956.830672548626
y: 1394.7163852183262
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 1002
- data:
desc: ''
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
model_info:
config_version: v1
model_id: jimeng-seedream-4.5-img2img
model_name: 即梦 SeedDream 4.5 图生图
provider: jimeng
provider_name: 即梦
params:
custom_size:
type: constant
value: null
enable_cs_transfer:
type: constant
value: true
images:
type: variable
value_selector:
- '1880000000004'
- images
max_images:
type: constant
value: 1
prompt:
type: constant
value: '你是一名 AI 萌宠分镜图生成 Agent。基于输入的“拟人角色三视图参考板”,为当前镜头生成 1 张符合目标平台尺寸策略的关键帧图。
角色总锚点如下:
- identity_brief={{#1880000000009.identity_brief#}}
- face_lock={{#1880000000009.face_lock#}}
- costume_rule={{#1880000000009.costume_rule#}}
- prop_rule={{#1880000000009.prop_rule#}}
- creation_mode={{#1880000000009.creation_mode#}}
- topic={{#1880000000009.topic#}}
- aspect_ratio={{#1880000000009.aspect_ratio#}}
- image_size={{#1880000000009.image_size#}}
当前镜头信息如下:
- shot_id={{#1880000000009.shot_id#}}
- shot_title={{#1880000000009.shot_title#}}
- purpose={{#1880000000009.purpose#}}
- visual_desc={{#1880000000009.visual_desc#}}
- camera_style={{#1880000000009.camera_style#}}
- subtitle={{#1880000000009.subtitle#}}
- gesture_action={{#1880000000009.gesture_action#}}
请围绕以下提示词出图:
{{#1880000000009.image_prompt#}}
必须保持同一个拟人角色,不要重新设计角色脸,不要改变毛色、花纹、耳朵、眼睛和服装基调,并严格服从 aspect_ratio 和 image_size 对应的平台画幅要求。
如果 creation_mode=topic_driven,则画面必须围绕 topic 展开,不要把选题弱化成无关背景。
不要生成文字、字幕、UI、水印。
负向约束:
{{#1880000000009.negative_prompt#}}'
sequential_image_generation:
type: constant
value: false
size:
type: variable
value_selector:
- '1880000000009'
- image_size
watermark:
type: constant
value: false
selected: false
title: 图像生成
type: image-generation
height: 1206
id: '1880000000010'
parentId: '1880000000007'
position:
x: 464.1049454961544
y: 90.45119708579091
positionAbsolute:
x: 2333.513161012002
y: 905.1495424437427
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 1002
- data:
desc: 使用本地可运行样本验证过的 AI Hub workflow-backed tool 生成图生视频。
is_team_authorization: true
output_schema: null
outputs:
- type: any
value_selector:
- '1880000000011'
- video_url
value_type: string
variable: url
- type: any
value_selector:
- '1880000000011'
- last_frame_url
value_type: string
variable: last_frame_url
- type: any
value_selector:
- '1880000000011'
- error_message
value_type: string
variable: error_message
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 提示词(建议不超过500个汉字或1000个英文单词)
ja_JP: 提示词(建议不超过500个汉字或1000个英文单词)
pt_BR: 提示词(建议不超过500个汉字或1000个英文单词)
zh_Hans: 提示词(建议不超过500个汉字或1000个英文单词)
llm_description: ''
max: null
min: null
name: prompt
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: 720p
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 视频分辨率(默认值:720p;可选:480p、720p、1080p)
ja_JP: 视频分辨率(默认值:720p;可选:480p、720p、1080p)
pt_BR: 视频分辨率(默认值:720p;可选:480p、720p、1080p)
zh_Hans: 视频分辨率(默认值:720p;可选:480p、720p、1080p)
llm_description: ''
max: null
min: null
name: resolution
options:
- icon: null
label:
en_US: 480p
ja_JP: 480p
pt_BR: 480p
zh_Hans: 480p
value: 480p
- icon: null
label:
en_US: 720p
ja_JP: 720p
pt_BR: 720p
zh_Hans: 720p
value: 720p
- icon: null
label:
en_US: 1080p
ja_JP: 1080p
pt_BR: 1080p
zh_Hans: 1080p
value: 1080p
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: adaptive
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 宽高比(默认值:adaptive;可选:16:9、4:3、1:1、3:4、9:16、21:9、adaptive)
ja_JP: 宽高比(默认值:adaptive;可选:16:9、4:3、1:1、3:4、9:16、21:9、adaptive)
pt_BR: 宽高比(默认值:adaptive;可选:16:9、4:3、1:1、3:4、9:16、21:9、adaptive)
zh_Hans: 宽高比(默认值:adaptive;可选:16:9、4:3、1:1、3:4、9:16、21:9、adaptive)
llm_description: ''
max: null
min: null
name: ratio
options:
- icon: null
label:
en_US: '16:9'
ja_JP: '16:9'
pt_BR: '16:9'
zh_Hans: '16:9'
value: '16:9'
- icon: null
label:
en_US: '4:3'
ja_JP: '4:3'
pt_BR: '4:3'
zh_Hans: '4:3'
value: '4:3'
- icon: null
label:
en_US: '1:1'
ja_JP: '1:1'
pt_BR: '1:1'
zh_Hans: '1:1'
value: '1:1'
- icon: null
label:
en_US: '3:4'
ja_JP: '3:4'
pt_BR: '3:4'
zh_Hans: '3:4'
value: '3:4'
- icon: null
label:
en_US: '9:16'
ja_JP: '9:16'
pt_BR: '9:16'
zh_Hans: '9:16'
value: '9:16'
- icon: null
label:
en_US: '21:9'
ja_JP: '21:9'
pt_BR: '21:9'
zh_Hans: '21:9'
value: '21:9'
- icon: null
label:
en_US: adaptive
ja_JP: adaptive
pt_BR: adaptive
zh_Hans: adaptive
value: adaptive
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: select
- auto_generate: null
default: '5'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 视频时长(默认值:5;可选:[4, 12]或-1自动选择)
ja_JP: 视频时长(默认值:5;可选:[4, 12]或-1自动选择)
pt_BR: 视频时长(默认值:5;可选:[4, 12]或-1自动选择)
zh_Hans: 视频时长(默认值:5;可选:[4, 12]或-1自动选择)
llm_description: ''
max: null
min: null
name: duration
options:
- icon: null
label:
en_US: '-1'
ja_JP: '-1'
pt_BR: '-1'
zh_Hans: '-1'
value: '-1'
- icon: null
label:
en_US: '4'
ja_JP: '4'
pt_BR: '4'
zh_Hans: '4'
value: '4'
- icon: null
label:
en_US: '5'
ja_JP: '5'
pt_BR: '5'
zh_Hans: '5'
value: '5'
- icon: null
label:
en_US: '6'
ja_JP: '6'
pt_BR: '6'
zh_Hans: '6'
value: '6'
- icon: null
label:
en_US: '7'
ja_JP: '7'
pt_BR: '7'
zh_Hans: '7'
value: '7'
- icon: null
label:
en_US: '8'
ja_JP: '8'
pt_BR: '8'
zh_Hans: '8'
value: '8'
- icon: null
label:
en_US: '9'
ja_JP: '9'
pt_BR: '9'
zh_Hans: '9'
value: '9'
- icon: null
label:
en_US: '10'
ja_JP: '10'
pt_BR: '10'
zh_Hans: '10'
value: '10'
- icon: null
label:
en_US: '11'
ja_JP: '11'
pt_BR: '11'
zh_Hans: '11'
value: '11'
- icon: null
label:
en_US: '12'
ja_JP: '12'
pt_BR: '12'
zh_Hans: '12'
value: '12'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 随机数种子(默认值-1;取值范围:[-1, 2^32-1] )
ja_JP: 随机数种子(默认值-1;取值范围:[-1, 2^32-1] )
pt_BR: 随机数种子(默认值-1;取值范围:[-1, 2^32-1] )
zh_Hans: 随机数种子(默认值-1;取值范围:[-1, 2^32-1] )
llm_description: ''
max: null
min: null
name: seed
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: number
- auto_generate: null
default: 'false'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 是否固定摄像头(默认值:false)
ja_JP: 是否固定摄像头(默认值:false)
pt_BR: 是否固定摄像头(默认值:false)
zh_Hans: 是否固定摄像头(默认值:false)
llm_description: ''
max: null
min: null
name: camerafixed
options:
- icon: null
label:
en_US: 'true'
ja_JP: 'true'
pt_BR: 'true'
zh_Hans: 'true'
value: 'true'
- icon: null
label:
en_US: 'false'
ja_JP: 'false'
pt_BR: 'false'
zh_Hans: 'false'
value: 'false'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: 'false'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 是否添加水印(默认值:false)
ja_JP: 是否添加水印(默认值:false)
pt_BR: 是否添加水印(默认值:false)
zh_Hans: 是否添加水印(默认值:false)
llm_description: ''
max: null
min: null
name: watermark
options:
- icon: null
label:
en_US: 'true'
ja_JP: 'true'
pt_BR: 'true'
zh_Hans: 'true'
value: 'true'
- icon: null
label:
en_US: 'false'
ja_JP: 'false'
pt_BR: 'false'
zh_Hans: 'false'
value: 'false'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: 'false'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 是否返回生成视频的尾帧图像(默认值:false)
ja_JP: 是否返回生成视频的尾帧图像(默认值:false)
pt_BR: 是否返回生成视频的尾帧图像(默认值:false)
zh_Hans: 是否返回生成视频的尾帧图像(默认值:false)
llm_description: ''
max: null
min: null
name: return_last_frame
options:
- icon: null
label:
en_US: 'true'
ja_JP: 'true'
pt_BR: 'true'
zh_Hans: 'true'
value: 'true'
- icon: null
label:
en_US: 'false'
ja_JP: 'false'
pt_BR: 'false'
zh_Hans: 'false'
value: 'false'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: 'true'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 是否生成音频(默认值:true)
ja_JP: 是否生成音频(默认值:true)
pt_BR: 是否生成音频(默认值:true)
zh_Hans: 是否生成音频(默认值:true)
llm_description: ''
max: null
min: null
name: generate_audio
options:
- icon: null
label:
en_US: 'true'
ja_JP: 'true'
pt_BR: 'true'
zh_Hans: 'true'
value: 'true'
- icon: null
label:
en_US: 'false'
ja_JP: 'false'
pt_BR: 'false'
zh_Hans: 'false'
value: 'false'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: false
scope: null
template: null
type: select
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: 给模型的图片对象,大于176x98px,小于6000x6000px
ja_JP: 给模型的图片对象,大于176x98px,小于6000x6000px
pt_BR: 给模型的图片对象,大于176x98px,小于6000x6000px
zh_Hans: 给模型的图片对象,大于176x98px,小于6000x6000px
llm_description: ''
max: null
min: null
name: image
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: file
params:
camerafixed: ''
duration: ''
generate_audio: ''
image: ''
prompt: ''
ratio: ''
resolution: ''
return_last_frame: ''
seed: ''
watermark: ''
provider_id: 41d6c1fa-5cd4-460d-9f6d-65d728614438
provider_name: 即梦图生视频-3.5 Pro
provider_type: workflow
selected: false
title: 即梦图生视频-3.5 Pro
tool_configurations: {}
tool_description: 即梦图生视频
tool_label: 即梦图生视频-3.5 Pro
tool_name: dreamina_image_generate_video_3_5_pro
tool_node_version: '2'
tool_parameters:
camerafixed:
type: constant
value: 'false'
duration:
type: constant
value: '-1'
generate_audio:
type: constant
value: 'true'
image:
type: variable
value:
- '1880000000010'
- images
prompt:
type: mixed
value: "基于输入图生成一段符合目标平台尺寸的视频,必须保持同一个 AI 萌宠拟人角色,不换脸、不换毛色、不换花纹、不换服装基调。\n\n当前镜头信息如下:\n- shot_id={{#1880000000009.shot_id#}}\n\
- shot_title={{#1880000000009.shot_title#}}\n- purpose={{#1880000000009.purpose#}}\n- visual_desc={{#1880000000009.visual_desc#}}\n\
- camera_style={{#1880000000009.camera_style#}}\n- voice_line={{#1880000000009.voice_line#}}\n- voice_emotion={{#1880000000009.voice_emotion#}}\n\
- mouth_action={{#1880000000009.mouth_action#}}\n- gesture_action={{#1880000000009.gesture_action#}}\n- voice_gender={{#1880000000009.voice_gender#}}\n\
- creation_mode={{#1880000000009.creation_mode#}}\n- topic={{#1880000000009.topic#}}\n- video_ratio={{#1880000000009.video_ratio#}}\n\
- voice_anchor={{#1880000000009.voice_anchor#}}\n- voice_style={{#1880000000009.voice_style#}}\n- voice_consistency_rule={{#1880000000009.voice_consistency_rule#}}\n\
\n角色总锚点:\n- identity_brief={{#1880000000009.identity_brief#}}\n- face_lock={{#1880000000009.face_lock#}}\n-\
\ costume_rule={{#1880000000009.costume_rule#}}\n- prop_rule={{#1880000000009.prop_rule#}}\n\n动态要求:\n1. 严格遵循以下视频提示词:{{#1880000000009.video_prompt#}}\n\
2. 如果 voice_line{{#1880000000009.voice_line#}} 为空,则该镜头静默表演,只保留自然呼吸、眨眼、头部和手部轻微动作。\n3. 如果 voice_line {{#1880000000009.voice_line#}}不为空,则让角色自然说出这句台词,音色按\
\ voice_anchor{{#1880000000009.voice_anchor#}} 和 voice_style{{#1880000000009.voice_style#}} 固定处理,整条视频都必须复用同一个基础音色身份,绝对不能在不同分镜切换成另一种声线:\n\
\ - male:男声\n - female:女声\n4. 说话镜头优先自然感,不要夸张口型;mouth_action=none 时不做口型,mouth_action=light 时做轻口型,mouth_action=clear\
\ 时做更清晰但不过度的口型。\n5. 角色表情、耳朵、眼神和手部动作应配合 voice_emotion 与 gesture_action。\n6. 严格遵守 video_ratio{{#1880000000009.video_ratio#}}\
\ 对应的平台比例;如果 creation_mode=topic_driven,则镜头动作和表演也要持续围绕 topic。\n7. 不要生成字幕、文字、UI、水印,不要突然新增其他角色,不要做复杂无关走位。\n\n\
负向约束:\n{{#1880000000009.negative_prompt#}}"
ratio:
type: variable
value:
- '1880000000009'
- video_ratio
resolution:
type: constant
value: 720p
return_last_frame:
type: constant
value: 'false'
seed:
type: constant
value: null
watermark:
type: constant
value: 'false'
type: tool
isInIteration: true
isInLoop: false
iteration_id: '1880000000007'
height: 240
id: '1880000000011'
parentId: '1880000000007'
position:
x: 810.4408240891889
y: 65
positionAbsolute:
x: 2679.8490396050365
y: 879.6983453579518
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 1002
- data:
desc: 使用本地指纹记录的 workflow-backed 火山视频点播-视频合成工具,把多个分镜片段拼接为一个完整 MP4。
is_team_authorization: true
output_schema: null
outputs:
- type: any
value_selector:
- '1880000000013'
- vid
value_type: string
variable: vid
- type: any
value_selector:
- '1880000000013'
- video_url
value_type: string
variable: video_url
- type: any
value_selector:
- '1880000000013'
- web_result
value_type: string
variable: web_result
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: video_params
ja_JP: video_params
pt_BR: video_params
zh_Hans: 视频参数 JSON 字符串
llm_description: ''
max: null
min: null
name: video_params
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: '[]'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: audio_params
ja_JP: audio_params
pt_BR: audio_params
zh_Hans: 音频参数 JSON 字符串
llm_description: ''
max: null
min: null
name: audio_params
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: '[]'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: subtitle_params
ja_JP: subtitle_params
pt_BR: subtitle_params
zh_Hans: 字幕参数 JSON 字符串
llm_description: ''
max: null
min: null
name: subtitle_params
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: '1080'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: width
ja_JP: width
pt_BR: width
zh_Hans: 宽度
llm_description: ''
max: null
min: null
name: width
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: '1920'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: height
ja_JP: height
pt_BR: height
zh_Hans: 高度
llm_description: ''
max: null
min: null
name: height
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: 'true'
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: is_web_project
ja_JP: is_web_project
pt_BR: is_web_project
zh_Hans: 是否 Web 项目
llm_description: ''
max: null
min: null
name: is_web_project
options:
- icon: null
label:
en_US: 'true'
ja_JP: 'true'
pt_BR: 'true'
zh_Hans: 'true'
value: 'true'
- icon: null
label:
en_US: 'false'
ja_JP: 'false'
pt_BR: 'false'
zh_Hans: 'false'
value: 'false'
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: select
params:
audio_params: ''
height: ''
is_web_project: ''
subtitle_params: ''
video_params: ''
width: ''
provider_id: e5d9c6cd-a06f-4b0f-9d42-09fa0f79b13b
provider_name: 火山视频点播-视频合成
provider_type: workflow
selected: false
title: 火山视频点播-视频合成
tool_configurations: {}
tool_description: 把多个视频片段、字幕和音频参数合成为一个完整视频
tool_label: 火山视频点播-视频合成
tool_name: volc_diaobo_videoconcat
tool_node_version: '2'
tool_parameters:
video_params:
type: variable
value:
- '1880000000012'
- video_params
audio_params:
type: variable
value:
- '1880000000012'
- audio_params
subtitle_params:
type: variable
value:
- '1880000000012'
- subtitle_params
width:
type: variable
value:
- '1880000000012'
- width
height:
type: variable
value:
- '1880000000012'
- height
is_web_project:
type: variable
value:
- '1880000000012'
- is_web_project
type: tool
height: 240
id: '1880000000013'
position:
x: 3314
y: 1143
positionAbsolute:
x: 3314
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "function main({ video_url, vid, web_result, segment_count, total_duration_sec }) {\n const text = String(video_url\
\ || \"\").trim()\n if (!/^https?:\\/\\//i.test(text)) {\n throw new Error(\"视频拼接结果缺少可用的 video_url\")\n }\n\
\ const diagnostics = {\n vid: String(vid || \"\").trim(),\n segment_count: String(segment_count || \"\"\
).trim(),\n total_duration_sec: String(total_duration_sec || \"\").trim(),\n has_web_result: String(web_result\
\ || \"\").trim() ? \"true\" : \"false\"\n }\n return {\n video_url: text,\n diagnostics: JSON.stringify(diagnostics)\n\
\ }\n}"
code_language: javascript
desc: ''
outputs:
video_url:
children: null
type: string
diagnostics:
children: null
type: string
selected: false
title: 最终视频 URL 校验
type: code
variables:
- value_selector:
- '1880000000013'
- video_url
value_type: string
variable: video_url
- value_selector:
- '1880000000013'
- vid
value_type: string
variable: vid
- value_selector:
- '1880000000013'
- web_result
value_type: string
variable: web_result
- value_selector:
- '1880000000012'
- segment_count
value_type: string
variable: segment_count
- value_selector:
- '1880000000012'
- total_duration_sec
value_type: string
variable: total_duration_sec
height: 52
id: '1880000000014'
position:
x: 3616
y: 1143
positionAbsolute:
x: 3616
y: 1143
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: -418.4241978088112
y: -309.36625707880387
zoom: 0.598120505050764