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

482 lines
14 KiB
YAML
Raw Permalink 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: 通用剧本创作工作流 - 一套流程覆盖大纲、写作、拆解三种模式
icon: 🎞️
icon_background: '#E8F5E9'
mode: workflow
name: 剧本创作通用工作流-v1
use_icon_as_answer_icon: false
kind: app
version: 0.1.2
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
enabled: false
opening_statement: '输入项目设定并选择模式:大纲模式 / 写作模式 / 拆解模式。'
retriever_resource:
enabled: false
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
graph:
edges:
- data:
isInIteration: false
sourceType: start
targetType: if-else
id: 1940748800000-source-1940748800004-target
source: '1940748800000'
sourceHandle: source
target: '1940748800004'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1940748800004-true-1940748800001-target
source: '1940748800004'
sourceHandle: 'true'
target: '1940748800001'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: if-else
id: 1940748800004-false-1940748800008-target
source: '1940748800004'
sourceHandle: 'false'
target: '1940748800008'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: answer
id: 1940748800001-source-1940748800005-target
source: '1940748800001'
sourceHandle: source
target: '1940748800005'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1940748800008-true-1940748800002-target
source: '1940748800008'
sourceHandle: 'true'
target: '1940748800002'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1940748800008-false-1940748800003-target
source: '1940748800008'
sourceHandle: 'false'
target: '1940748800003'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: answer
id: 1940748800002-source-1940748800006-target
source: '1940748800002'
sourceHandle: source
target: '1940748800006'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: answer
id: 1940748800003-source-1940748800007-target
source: '1940748800003'
sourceHandle: source
target: '1940748800007'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- label: 项目名
max_length: 120
options: []
required: true
type: text-input
variable: project_name
- label: 核心一句话
max_length: 500
options: []
required: true
type: paragraph
variable: core_idea
- label: 时代与世界观
max_length: 1200
options: []
required: true
type: paragraph
variable: world_setting
- label: 角色设定
max_length: 2000
options: []
required: true
type: paragraph
variable: character_setup
- label: 风格参考
max_length: 1200
options: []
required: false
type: paragraph
variable: style_reference
- label: 当前任务目标
max_length: 1200
options: []
required: false
type: paragraph
variable: task_goal
- label: 已有文本(拆解时必填)
max_length: 8000
options: []
required: false
type: paragraph
variable: existing_text
- label: 输出模式
max_length: 24
options:
- 大纲模式
- 写作模式
- 拆解模式
required: true
type: select
variable: output_mode
height: 220
id: '1940748800000'
position:
x: 80
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 260
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: contains
id: condition-001
value: 大纲模式
varType: string
variable_selector:
- '1940748800000'
- output_mode
id: 'true'
logical_operator: and
- case_id: 'false'
conditions:
- comparison_operator: not contains
id: condition-002
value: 大纲模式
varType: string
variable_selector:
- '1940748800000'
- output_mode
id: 'false'
logical_operator: and
desc: 先判断是否走大纲模式
selected: false
title: 模式判断A
type: if-else
height: 140
id: '1940748800004'
position:
x: 390
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: contains
id: condition-003
value: 写作模式
varType: string
variable_selector:
- '1940748800000'
- output_mode
id: 'true'
logical_operator: and
- case_id: 'false'
conditions:
- comparison_operator: not contains
id: condition-004
value: 写作模式
varType: string
variable_selector:
- '1940748800000'
- output_mode
id: 'false'
logical_operator: and
desc: 非大纲后,区分写作与拆解
selected: false
title: 模式判断B
type: if-else
height: 140
id: '1940748800008'
position:
x: 700
y: 420
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
desc: 生成可执行的剧本全局规划
model:
completion_params:
max_tokens: 3600
temperature: 0.7
mode: chat
name: deepseek-reasoner
provider: langgenius/deepseek/deepseek
prompt_template:
- id: system-001
role: system
text: |
你是资深剧集编剧统筹,擅长长剧结构设计。
任务:基于输入生成“可持续连载”的剧本大纲,不空泛。
输出格式Markdown
# 项目总纲
## 1) 核心卖点3条
## 2) 世界观规则5条
## 3) 主角成长弧(起点-转折-代价-终局)
## 4) 关键配角弧至少3人
## 5) 三幕式结构(每幕目标、冲突、爆点)
## 6) 20集分集卡点每集2-3句含结尾钩子
## 7) 风险与修正建议至少5条
约束:
- 每集必须有“目标-阻碍-变化”
- 不要模板化鸡汤句
- 允许爽点,但必须包含代价
- id: user-001
role: user
text: |
项目名:{{#1940748800000.project_name#}}
核心一句话:{{#1940748800000.core_idea#}}
时代与世界观:{{#1940748800000.world_setting#}}
角色设定:{{#1940748800000.character_setup#}}
风格参考:{{#1940748800000.style_reference#}}
当前任务目标:{{#1940748800000.task_goal#}}
selected: false
title: 大纲统筹AI
type: llm
variables: []
height: 98
id: '1940748800001'
position:
x: 700
y: 120
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
desc: 生成单集可拍剧本草稿
model:
completion_params:
max_tokens: 3800
temperature: 0.72
mode: chat
name: deepseek-reasoner
provider: langgenius/deepseek/deepseek
prompt_template:
- id: system-001
role: system
text: |
你是影视剧本执笔编剧。
任务:根据项目设定与当前任务,输出一集可拍的场景剧本草稿。
输出格式Markdown
# 单集剧本草稿
## 集标题
## 本集主题与冲突
## 场景列表8-12场
每场按以下格式:
- 场次编号
- 时空标记(内/外 + 日/夜 + 地点)
- 画面动作
- 关键对白2-6句
- 场尾钩子
## 节奏检查
- 前10%钩子是否成立
- 中段是否升级
- 结尾是否有不可逆变化
约束:
- 避免百科式解释
- 角色对白要有身份区分
- 保留类型爽点,同时写出代价
- id: user-001
role: user
text: |
项目名:{{#1940748800000.project_name#}}
核心一句话:{{#1940748800000.core_idea#}}
时代与世界观:{{#1940748800000.world_setting#}}
角色设定:{{#1940748800000.character_setup#}}
风格参考:{{#1940748800000.style_reference#}}
当前任务目标:{{#1940748800000.task_goal#}}
selected: false
title: 剧本写作AI
type: llm
variables: []
height: 98
id: '1940748800002'
position:
x: 1020
y: 350
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
desc: 将已有剧本拆解为生产资料(分镜/口播/发布文案)
model:
completion_params:
max_tokens: 3800
temperature: 0.65
mode: chat
name: deepseek-reasoner
provider: langgenius/deepseek/deepseek
prompt_template:
- id: system-001
role: system
text: |
你是内容拆解与改编总监。
任务:把输入的剧本文本拆解为短视频与图文生产资料。
输出格式Markdown
# 剧本拆解包
## 1) 剧情主线摘要150字内
## 2) 关键角色卡(主角+2配角
## 3) 分镜提纲6-10镜头
每条含:镜头目的 / 画面 / 台词要点 / 情绪
## 4) 60秒口播稿
## 5) 小红书笔记版文案220-320字
## 6) 标题10条悬念/反差/结论各至少3条
## 7) 封面文案3组主+副)
约束:
- 不改变原剧情核心事件
- 可优化节奏与表达,但不凭空新增关键设定
- id: user-001
role: user
text: |
项目名:{{#1940748800000.project_name#}}
风格参考:{{#1940748800000.style_reference#}}
当前任务目标:{{#1940748800000.task_goal#}}
已有文本:{{#1940748800000.existing_text#}}
selected: false
title: 剧本拆解AI
type: llm
variables: []
height: 98
id: '1940748800003'
position:
x: 1020
y: 520
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1940748800001.text#}}'
desc: 输出项目总纲与分集卡点
selected: false
title: 大纲模式输出
type: answer
variables: []
height: 102
id: '1940748800005'
position:
x: 1330
y: 120
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1940748800002.text#}}'
desc: 输出单集可拍剧本草稿
selected: false
title: 写作模式输出
type: answer
variables: []
height: 102
id: '1940748800006'
position:
x: 1330
y: 350
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1940748800003.text#}}'
desc: 输出剧本拆解资料包
selected: false
title: 拆解模式输出
type: answer
variables: []
height: 102
id: '1940748800007'
position:
x: 1330
y: 520
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244