

一、整体流程
生文 -> 段落处理 -> 生图 -> 组装参数 -> 视频编排

二、详细拆解
- 开始节点: 开始节点输入 标题等信息

角色
你是一位知心老爷爷,根据用户提出的话题,生成1段简短的感悟语录,极简风格,句子简短、治愈、有内涵。
格式要求:
整句之前使用句号间隔,字数限制150字,生成12句话。
##
直接输出语录文案。
直接用工具初步处理一遍文案,少写一点代码

3. 代码节点:
过滤空字符串等数据;设置默认提示词(用于支持自定义提示词)
// 在这里,您可以通过 ‘params’ 获取节点中的输入变量,并通过 'ret' 输出结果
// 'params' 和 'ret' 已经被正确地注入到环境中
// 下面是一个示例,获取节点输入中参数名为‘input’的值:
// const input = params.input;
// 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
// const ret = { "name": ‘小明’, "hobbies": [“看书”, “旅游”] };
async function main({ params }: Args): Promise<Output> {
const originalList = params.items;
var auto_prompt = params.auto_prompt;
const processedList = processList(originalList);
if(!auto_prompt || auto_prompt=='默认'){
auto_prompt = "一位头发灰白、脸颊圆润、身材略显肥胖的老爷爷,胡子修剪成圆润的半圆形,稀疏的发丝,发际线后退,头顶略显光秃,皮肤光滑,带有岁月感的光泽,两侧鬓角的头发浓密而自然,银白色的发丝在阳光下泛着冷光,层次分明,脸颊泛红、嘴角上扬露出愉悦笑容,Q版形象";
}
// 构建输出对象
const ret = {
"items": processedList,
"auto_prompt": auto_prompt
};
return ret;
}
const processList = (list) =>
list
.map(str => str.replace(/s/g, '')) // 去除所有空格
.filter(str => str !== ''); // 过滤空字符串
自定义提示词:
简笔画版:
一位头发灰白、脸颊圆润、身材略显肥胖的老爷爷,胡子修剪成圆润的半圆形,稀疏的发丝,发际线后退,头顶略显光秃,皮肤光滑,带有岁月感的光泽,两侧鬓角的头发浓密而自然,银白色的发丝在阳光下泛着冷光,层次分明,脸颊泛红、嘴角上扬露出愉悦笑容,整体画面色彩柔和温暖、线条简洁流畅,有着可爱温馨的卡通风格,简笔画,彩铅手绘,治愈系插画,富有童趣,笔触简单,有线条感。
一位头发灰白、脸颊圆润、身材略显肥胖的老爷爷,胡子修剪成圆润的半圆形,稀疏的发丝,发际线后退,头顶略显光秃,皮肤光滑,带有岁月感的光泽,两侧鬓角的头发浓密而自然,银白色的发丝在阳光下泛着冷光,层次分明,脸颊泛红、嘴角上扬露出愉悦笑容,Q版形象。
4. 添加大模型,用于生成画面配图提示词

-
# 角色
你是一位经验丰富且亲切温暖的老爷爷语录视频剪映草稿生成专家,以老爷爷的身份,针对用户输入的字符串数组中的每一句话,分别创作出适合用于制作老爷爷语录视频剪映草稿的温馨绘画提示词。绘画提示词需呈现不同情景,输出内容限定为人物、动作和物品,生成的绘画提示词数组数量必须与原输入数组一致。
## 技能
### 技能 1: 生成绘画提示词数组
1. 仔细分析用户输入的字符串数组中的每一句话及其语境。
2. 基于分析结果,针对每句话分别构思不同的温馨场景。
3. 按照要求为每句话输出人物、动作和物品,形成对应的绘画提示词,并将这些提示词整理成数组,确保生成的提示词数组数量与原输入数组一致。
- 示例:若原数组为 ["文案1", "文案2", "文案3"],则输出 ["老爷爷坐在摇椅上,手里拿着一杯热茶", "老爷爷站在窗边,望着窗外的风景", "老爷爷坐在暖暖的阳光下,手里拿着一本书"]
## 限制:
- 仅围绕生成符合要求的绘画提示词数组进行回复,不回答其他无关问题。
- 输出内容必须简洁呈现人物、动作和物品,且以数组形式输出,数组数量与原输入数组一致。
5. 添加批处理节点,生成图片:


6. 添加代码节点,处理图片和音乐素材数据

-
// 在这里,您可以通过 ‘params’ 获取节点中的输入变量,并通过 'ret' 输出结果
// 'params' 和 'ret' 已经被正确地注入到环境中
// 下面是一个示例,获取节点输入中参数名为‘input’的值:
// const input = params.input;
// 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
// const ret = { "name": ‘小明’, "hobbies": [“看书”, “旅游”] };
async function main({ params }: Args): Promise<Output> {
// 构建输出对象
const imgList = params.imageList || [];
const imgs = [];
// 处理图片的缝隙
let imgStart = 0;
for (const element of imgList) {
const start = imgStart;
const end = imgStart + 3000000; // 3秒
imgs.push({
image_url: element,
width: 1024,
height: 768,
start: start,
end: end,
transition: "翻页",
transition_duration: 1000000 // 1秒
});
imgStart = end;
}
// 修改音频部分输出结构
const totalDuration = imgList.length * 3000000;
const audio = [
{
audio_url: "https://codel-agent.oss-cn-shanghai.aliyuncs.com/zhlyy.mp3",
duration: totalDuration,
start: 0,
end: totalDuration
}
];
// 构建输出对象
const ret = {
imgs: JSON.stringify(imgs),
audio_infos: JSON.stringify(audio)
};
return ret;
}
7. 将素材进行编排,生成视频(插件搜索剪映小助手)


到此,一个治愈人生老爷爷视频就生成好了。
同样的流程,调整提示词可以生成各类视频。
本篇文章来源于微信公众号: CodeL
文章评论