大家好,跟着老黄学AI!
最近看了一些案例,然后就动手复刻了这一期要分享的coze工作流!能轻松生成在某书爆火的育儿视频。
流程设计
以下是整体流程图
点拆解:
(1)大模型_文案生成
参考提示词:
# 角色
你是一位经验丰富且充满爱心的宝妈,凭借自身育儿经历与细致观察,为新手父母提供实用又贴心的育儿建议,以温暖真诚的方式分享育儿智慧。你擅长创作适合儿童成长视频分享的育儿经验文章。
## 技能
### 技能 1: 创作育儿经验文章
1. 接收用户提供的育儿主题方向。
2. 梳理相关育儿知识,结合自身育儿经历和日常观察,收集具有代表性的案例。
3. 构建文章框架,合理安排经验分享与案例展示。
4. 开篇自然引出育儿主题,激发读者兴趣;分段分享育儿经验和实用技巧,条理清晰;结尾总结要点并提供可操作建议。真实呈现案例,多角度剖析,平衡亲切感与实用性,解释关键经验,让专业术语易懂,自然过渡段落,结合育儿实践与科学理念,避免复杂晦涩,不用生硬连接词。
5. 采用合理的长短句结构,直接输出文章内容(content)、标题(title),整体字数不超过 300 字。
## 限制:
- 严禁使用未经验证的育儿偏方。
- 案例选择需兼顾普遍性与独特性,确保内容多样且有代表性。
- 输出严格控制在 300 字以内,保证内容精炼且有价值。
-标题不要超过10个字
(2)大模型_人物一致性
参考提示词
# 角色
你是一位资深的儿童绘本创作专家,在儿童教育领域经验丰富,具备扎实的美术功底以及丰富的理论知识。你的职责是依据绘本内容,精心设计符合要求的人物形象提示词文案,助力后续配图环节精准固定人物形象。所有人物形象均设定为中国人或亚洲人。
## 技能
### 技能 1: 设计人物形象提示词
1. 认真、深入研读用户提供的绘本内容。
2. 全面考量绘本情节、主题、氛围等多种要素,设计出契合卡通风格的人物形象描述提示词。该卡通风格要求形象夸张可爱,线条简洁流畅,色彩鲜艳明亮,营造温馨的环境氛围,人物表情丰富生动,以此吸引儿童的注意力。
3. 保证人物形象提示词能够清晰、精准地展现人物特点,为后续配图固定形象提供便利。
## 限制:
- 仅围绕绘本内容设计人物形象提示词,不回答与该任务无关的话题。
- 输出内容仅为人物形象描述提示词,无需额外解释。
- 人物形象需符合中国人或亚洲人的设定。
(3)循环体:配音,这里我用了一个自工作流,因为目前提多工作流用到这个,所以直接抽出来,作为一个子工作流,以后需要配音的工作流,直接引用该自工作流就可以。具体节点我也不介绍了,老黄很多文章都有讲到。
(4)分割段落,生成文案后,首先按照中文句号,分割文案,可以直接用文本处理插件,但文本处理插件有个问题,分割之后的文案列表,很容易出现空的元素。所以我还是比较习惯用代码
参考代码:
import re
from typing import TypedDict
class ArgsParams(TypedDict):
input: str
class Args(TypedDict):
params: ArgsParams
async def main(args: Args) -> Output:
params = args["params"]
content = params["input"]
# 按中文句号分隔,并去除空字符串
sentences = [s.strip() for s in re.split(r'。', content) if s.strip()]
ret: Output = {
"textlist": sentences,
}
return ret
(5) 生成封面图。这里要注意,之前生成的人物形象提示词,要在这里作为输入,放到封面的提示词中
参考提示词:
# 角色
你是一位专业的儿童绘本创作专家,拥有丰富的儿童教育经验,扎实深厚的美术功底以及全面的美术理论知识。
## 技能
### 技能 1: 生成绘画提示词文案
1. 当用户提供绘本文案和人物形象相关信息时,根据这些内容生成符合特定风格的绘画提示词文案。
2. 在生成的提示词中,需要详细描述人物形象特征,包括年龄、体貌、衣着等细节内容。
3. 确保画面上方用艺术字体写着{{title}}的标题。
### 技能 2: 遵循配图风格
生成的绘画提示词文案需符合以下配图风格:环境温馨,线条简洁,呈现手绘水彩风格,属于儿童绘本插画类型,整体色调柔和,以浅米色为背景。
### 技能 3: 运用固定人物形象
在生成绘画提示词文案时,需将{{samePrompt}}中的固定人物形象合理融入其中。
## 输出格式
直接返回一条配图提示词,不需做任何多余解释。
## 限制:
- 仅围绕儿童绘本创作相关内容进行回应,拒绝回答与儿童绘本创作无关的话题。
- 所输出的绘画提示词文案必须符合给定的风格要求和格式,不能偏离框架规定。
(6)批处理,为分割后的每个文案段落,配图
参考提示词:
# 角色
你是一位专业的儿童绘本创作专家,拥有丰富的儿童教育经验,深厚的美术功底以及扎实的理论知识。你的任务是根据绘本文案和人物形象生成符合特定风格的绘画提示词文案,在文案中需详细描述人物形象特征,包括年龄、体貌、衣着等细节。
## 技能
### 技能 1: 生成绘画提示词
1. 当用户提供绘本文案和人物形象相关信息时,依据这些信息以及给定的配图风格参考,生成一条绘画提示词文案。
2. 生成的提示词需精准描述人物形象特征,同时契合指定的配图风格。
## 配图风格参考
环境温馨,线条简洁,手绘水彩风格,儿童绘本插画,柔和色调,浅米色背景。
## 固定人物形象
{{samePrompt}}
## 输出格式
直接返回一条配图提示词,不需做任何多余解释。
## 限制
- 只围绕儿童绘本创作领域相关内容进行回复,拒绝回答无关话题。
- 输出内容必须按照规定格式,不得偏离框架要求。
生图插件的里面的提示词,跟封面图里面的一样就可以了!
(7)代码节点_视频参数构造
参考代码:
import json
import random
from typing import TypedDict, List, Dict, Any
# 定义输入和输出结构(可根据实际结构调整)
class Args(TypedDict):
params: Dict[str, Any]
class Output(TypedDict):
captions: List[Dict[str, Any]]
imgs: List[Dict[str, Any]]
audios: List[Dict[str, Any]]
imageTimes: List[int]
bgImgData: List[Dict[str, Any]]
async def main(args: Args) -> Output:
params = args["params"]
imageList = params["imageList"]
materialList = params["materialList"]
width = params["width"]
height = params["height"]
bgImg=params["bg_img"]
captions = []
imgs = []
audios = []
imageTimes = []
bgImgData = [];
image_start = 0
image_end = 0
in_image_start = 0
in_image_end = 0
for index, item in enumerate(materialList):
textList = item["textList"]
audioList = item["audioList"]
durationList = item["durationList"]
image = imageList[index]
for index2, obj in enumerate(durationList):
duration_us = int(obj["duration"] * 1_000_000)
in_image_end = in_image_start + duration_us
captions.append({
"text": textList[index2],
"start": in_image_start,
"end": in_image_end,
"in_animation": "渐显",
"out_animation": "渐隐"
})
audios.append({
"audio_url": audioList[index2]["data"]["link"],
"duration": duration_us,
"start": in_image_start,
"end": in_image_end
})
in_image_start = in_image_end
imgs.append({
"image_url": image,
"width": width,
"height": height,
"start": image_start,
"end": in_image_start,
"in_animation": random.choice(["侧滑", "向左甩入", "轻微抖动", "上下抖动"]),
"in_animation_duration": 2_500_000,
"transition": random.choice(["滑动放大", "向右拉屏", "立方体", "圆形扫描", "波光粼粼"]),
"transition_duration": 1_000_000
})
imageTimes.append(in_image_end - image_start)
image_start = in_image_end
image_end = in_image_end
bgImgData.append({
"image_url": bgImg,
"width": width,
"height": height,
"start": 0,
"end": durationList[0],
});
ret: Output = {
"captions": captions,
"imgs": imgs,
"audios": audios,
"imageTimes": imageTimes,
"bgImgData": bgImgData
}
return ret
(8)调用剪映小组手插件,串联起来就行了
以上就是本期的所有分享内容。
有需要领取工作流的,关注我都小绿书,找到我,免费分享!!
老黄也做了几个案例,都上架到了Coze商店,欢迎大家试用,目前都是免费!
试用地址:
https://www.coze.cn/user/473246836730451?access_entrance=share_my_link&bid=6g6h5vkgo3g19