komga-creater/workflow/剧本创作通用工作流-v2.yml
2026-03-03 17:59:27 +08:00

590 lines
17 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

app:
description: 通用剧本创作工作流 - 同时生成大纲、写作、拆解并导出DOCX
icon: 🎞️
icon_background: '#E8F5E9'
mode: workflow
name: 剧本创作通用工作流-v2
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: bowenliang123/md_exporter:2.2.0@9f39c2c2c1cd09180e2cc053090adc9886019483f502727467f136712b8b9639
version: null
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/deepseek:0.0.11@35bcd3f233f99d07bdadef8b326945df3bda5e8f773330144bc90d84800336b9
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
enabled: false
opening_statement: '输入项目设定后将自动同时生成项目大纲、单集草稿、拆解素材并导出为DOCX。'
retriever_resource:
enabled: false
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: 2040748800000-source-2040748800001-target
source: '2040748800000'
sourceHandle: source
target: '2040748800001'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 2040748800001-source-2040748800002-target
source: '2040748800001'
sourceHandle: source
target: '2040748800002'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 2040748800000-source-2040748800003-target
source: '2040748800000'
sourceHandle: source
target: '2040748800003'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 2040748800001-source-2040748800004-target
source: '2040748800001'
sourceHandle: source
target: '2040748800004'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 2040748800002-source-2040748800004-target
source: '2040748800002'
sourceHandle: source
target: '2040748800004'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 2040748800003-source-2040748800004-target
source: '2040748800003'
sourceHandle: source
target: '2040748800004'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: tool
id: 2040748800004-source-2040748800005-target
source: '2040748800004'
sourceHandle: source
target: '2040748800005'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: tool
targetType: end
id: 2040748800005-source-2040748800006-target
source: '2040748800005'
sourceHandle: source
target: '2040748800006'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: 项目名
max_length: 120
options: []
placeholder: ''
required: true
type: text-input
variable: project_name
- default: ''
hint: ''
label: 核心一句话
max_length: 500
options: []
placeholder: ''
required: true
type: paragraph
variable: core_idea
- default: ''
hint: ''
label: 时代与世界观
max_length: 1200
options: []
placeholder: ''
required: true
type: paragraph
variable: world_setting
- default: ''
hint: ''
label: 角色设定
max_length: 2500
options: []
placeholder: ''
required: true
type: paragraph
variable: character_setup
- default: ''
hint: ''
label: 风格参考
max_length: 1200
options: []
placeholder: ''
required: false
type: paragraph
variable: style_reference
- default: ''
hint: ''
label: 当前任务目标
max_length: 1200
options: []
placeholder: ''
required: false
type: paragraph
variable: task_goal
- default: 第1集
hint: ''
label: 目标集数(用于单集生成)
max_length: 32
options: []
placeholder: 例如第1集 / 第10集
required: true
type: text-input
variable: target_episode
- default: ''
hint: ''
label: 已有文本(用于拆解)
max_length: 8000
options: []
placeholder: ''
required: false
type: paragraph
variable: existing_text
height: 250
id: '2040748800000'
position:
x: 80
y: 260
positionAbsolute:
x: 80
y: 260
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
context:
enabled: false
variable_selector: []
desc: 生成项目总纲和分集卡点
model:
completion_params:
temperature: 0.7
max_tokens: 3200
mode: chat
name: deepseek-chat
provider: langgenius/deepseek/deepseek
prompt_template:
- id: sys-001
role: system
text: |
你是资深剧集编剧统筹。输出务必具体、可执行。
输出格式Markdown
# A. 项目总纲
## 核心卖点3条
## 世界观规则5条
## 主角成长弧(起点-转折-代价-终局)
## 关键配角弧至少3人
## 三幕式结构(每幕目标、冲突、爆点)
## 20集分集卡点每集2-3句含结尾钩子
## 风险与修正建议至少5条
- id: usr-001
role: user
text: |
项目名:{{#2040748800000.project_name#}}
核心一句话:{{#2040748800000.core_idea#}}
时代与世界观:{{#2040748800000.world_setting#}}
角色设定:{{#2040748800000.character_setup#}}
风格参考:{{#2040748800000.style_reference#}}
当前任务目标:{{#2040748800000.task_goal#}}
selected: false
title: 大纲统筹AI
type: llm
variables: []
height: 98
id: '2040748800001'
position:
x: 420
y: 80
positionAbsolute:
x: 420
y: 80
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
context:
enabled: false
variable_selector: []
desc: 基于A总纲生成指定集数的单集草稿
model:
completion_params:
temperature: 0.72
max_tokens: 3200
mode: chat
name: deepseek-chat
provider: langgenius/deepseek/deepseek
prompt_template:
- id: sys-002
role: system
text: |
你是影视剧本执笔编剧。你的唯一依据是输入的“A.项目总纲”,必须严格对齐,不得偏离。
输出格式Markdown
# B. 单集剧本草稿
## 对齐检查(先输出)
- 目标集数:
- 对应总纲卡点原文:
- 本集承接上集/推进主线说明:
## 集标题
## 本集主题与冲突
## 场景列表8-12场
每场格式:场次编号 / 时空标记 / 画面动作 / 关键对白 / 场尾钩子
## 节奏检查
- 前10%钩子
- 中段升级
- 结尾不可逆变化
硬性约束:
1. 仅生成“目标集数”对应内容
2. 不得新增会破坏总纲主线的关键设定
3. 角色关系与能力边界必须与总纲一致
4. 信息不足时,只做最小补全并显式标注“补全假设”
- id: usr-002
role: user
text: |
A.项目总纲全文:
{{#2040748800001.text#}}
项目名:{{#2040748800000.project_name#}}
目标集数:{{#2040748800000.target_episode#}}
核心一句话:{{#2040748800000.core_idea#}}
时代与世界观:{{#2040748800000.world_setting#}}
角色设定:{{#2040748800000.character_setup#}}
风格参考:{{#2040748800000.style_reference#}}
当前任务目标:{{#2040748800000.task_goal#}}
selected: false
title: 剧本写作AI
type: llm
variables: []
height: 98
id: '2040748800002'
position:
x: 420
y: 280
positionAbsolute:
x: 420
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
context:
enabled: false
variable_selector: []
desc: 将已有剧本拆解为短视频与图文素材
model:
completion_params:
temperature: 0.65
max_tokens: 3200
mode: chat
name: deepseek-chat
provider: langgenius/deepseek/deepseek
prompt_template:
- id: sys-003
role: system
text: |
你是内容拆解与改编总监。
输出格式Markdown
# C. 剧本拆解包
## 剧情主线摘要150字内
## 关键角色卡(主角+2配角
## 分镜提纲6-10镜头
## 60秒口播稿
## 小红书笔记版文案220-320字
## 标题10条悬念/反差/结论)
## 封面文案3组主+副)
约束:不改变原剧情核心事件,不凭空新增关键设定。
- id: usr-003
role: user
text: |
项目名:{{#2040748800000.project_name#}}
风格参考:{{#2040748800000.style_reference#}}
当前任务目标:{{#2040748800000.task_goal#}}
已有文本:{{#2040748800000.existing_text#}}
selected: false
title: 剧本拆解AI
type: llm
variables: []
height: 98
id: '2040748800003'
position:
x: 420
y: 480
positionAbsolute:
x: 420
y: 480
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
code: |
function main({project_name, outline_text, writing_text, breakdown_text}) {
const md = `# ${project_name} - 剧本创作输出包\n\n${outline_text}\n\n---\n\n${writing_text}\n\n---\n\n${breakdown_text}`;
return {
merged_markdown: md,
output_name: `${project_name}-剧本创作输出包`
};
}
code_language: javascript
outputs:
merged_markdown:
children: null
type: string
output_name:
children: null
type: string
selected: false
title: 合并Markdown
type: code
variables:
- value_selector:
- '2040748800000'
- project_name
value_type: string
variable: project_name
- value_selector:
- '2040748800001'
- text
value_type: string
variable: outline_text
- value_selector:
- '2040748800002'
- text
value_type: string
variable: writing_text
- value_selector:
- '2040748800003'
- text
value_type: string
variable: breakdown_text
height: 52
id: '2040748800004'
position:
x: 780
y: 280
positionAbsolute:
x: 780
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: Markdown text
zh_Hans: Markdown格式文本
label:
en_US: Markdown text
zh_Hans: Markdown格式文本
llm_description: ''
max: null
min: null
name: md_text
options: []
placeholder: null
precision: null
required: true
scope: null
template: null
type: string
- auto_generate: null
default: null
form: llm
human_description:
en_US: Optional docx template file for styling
zh_Hans: 可选的docx模板文件用于样式控制
label:
en_US: DOCX Template File
zh_Hans: DOCX 模板文件
llm_description: ''
max: null
min: null
name: docx_template_file
options: []
placeholder: null
precision: null
required: false
scope: null
template: null
type: file
- auto_generate: null
default: null
form: llm
human_description:
en_US: Optional custom output file name
zh_Hans: 可选的自定义输出文件名
label:
en_US: Output Filename
zh_Hans: 输出文件名
llm_description: ''
max: null
min: null
name: output_filename
options: []
placeholder: null
precision: null
required: false
scope: null
template: null
type: string
params:
docx_template_file: ''
md_text: ''
output_filename: ''
plugin_id: bowenliang123/md_exporter
plugin_unique_identifier: bowenliang123/md_exporter:2.2.0@9f39c2c2c1cd09180e2cc053090adc9886019483f502727467f136712b8b9639
provider_icon: /console/api/workspaces/current/plugin/icon
provider_id: bowenliang123/md_exporter/md_exporter
provider_name: bowenliang123/md_exporter/md_exporter
provider_type: builtin
selected: false
title: Markdown 转 DOCX 文件
tool_configurations: {}
tool_description: 将 Markdown 转换为 DOCX 文件的工具
tool_label: Markdown 转 DOCX 文件
tool_name: md_to_docx
tool_node_version: '2'
tool_parameters:
docx_template_file:
type: constant
value: null
md_text:
type: mixed
value: '{{#2040748800004.merged_markdown#}}'
output_filename:
type: mixed
value: '{{#2040748800004.output_name#}}'
type: tool
height: 52
id: '2040748800005'
position:
x: 1140
y: 280
positionAbsolute:
x: 1140
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
outputs:
- value_selector:
- '2040748800004'
- merged_markdown
value_type: string
variable: merged_markdown
- value_selector:
- '2040748800005'
- files
value_type: array[file]
variable: docx_files
selected: false
title: 输出
type: end
height: 114
id: '2040748800006'
position:
x: 1460
y: 280
positionAbsolute:
x: 1460
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260