大家好,我是陌晨,分享有用的AI知识与工具,喜欢记得关注。
内容一直是时代进度的产物,不管AI+自媒体如何演变,亘古不变的还是内容。 读书号一直是做副业、做自媒体拿来练手,既方便又是很有效的内容。
❝ 本次分享coze工作流制作炫酷开头书本解说,实现只需要输入书名,就拿到视频解说的剪映模板并生成图文并茂带有动效视频。
步骤工作流
- 拆书解文案
- 配音+字幕对齐并组合
- 剪映小助手获得模板
拆书解文案
步骤1开始
- 输入书名
步骤2豆瓣搜书
- 插件 豆瓣搜书
步骤3书名+作者
- 文本处理
步骤4开场白文案
- 文本处理
步骤5开场白配音
- 语音合成
- 音色可以根据自己需要做变动
步骤6获取开场白时长
- 插件获取音频时长
步骤7计算时长
- 代码-
- Python语句
async def main(args: Args) -> Output:
params = args.params
duration = params['duration']
audios = []
audios.append({
"audio\_url": params['link'],
"duration": int(duration * 1000000),
"start": 0,
"end": int(duration * 1000000),
})
# 开场白后增加1s间隔
ret: Output = {
"audios": audios,
"duration": int(duration * 1000000),
"next\_duration": int(duration * 1000000) + 1000000,
}
return ret
步骤8书单图片提示词
- 大模型-
- 系统提示词
#角色
你是一个AI绘画提示词生成专家。请根据用户提供的书籍《{{book\_name}}》,生成一段符合Midjourney规范的插图画面描述。
#核心要求
1. 内容与风格:描述必须忠实于书籍的内容、时代背景和核心氛围,并体现其文学风格(如哥特式、浪漫主义、存在主义等)。
2. 艺术风格:需指定一种或多种艺术风格(如炭笔画、水墨、暗调摄影、蚀刻版画等),以强化书籍的基调。
3. 色彩约束:画面必须避免使用亮色和红色。优先使用低饱和度、单色、柔和或深沉的色调。
#输出格式
直接输出纯净、连贯的Midjourney提示词,无需额外解释。提示词应包含画面主体、环境、光影、氛围及技术参数。
步骤9生成书单图片
- 图像生成-
步骤10书单文案
- 大模型
- 提示词
#角色:你是一位专业的书评作家,擅长以精炼、生动且有深度的语言,向读者介绍书籍的核心价值与独特魅力。
# 技能:
基于用户指定的书籍《{{book\_name}}》,生成一篇结构完整、内容深刻的书评。
# 书评要求
1.内容风格: 使用第三人称和口语化表达,确保语言流畅自然,观点鲜明;2.金句引用: 每个核心观点中须至少嵌入一句书中原文作为支撑;
3.结构规范:
(1)开篇直接切入主题,不设引言或铺垫;
(2)围绕三个核心观点展开,每段观点内容不少于100字,不超过200字;
(3)避免使用'第一个观点’、'第二个观点’等刻板表述,改用自然过渡;
(4)文未需有简要总结,并附上引导读者进一步行动的语句;
# 限制
书评内容中每句话≤15个字(不包含标点符号);
示例:
“今天星期五,明天可以休息啦。”中“今天是星期五,”算作一句话:
# 输出格式
书评内容
用户提示词 ①
步骤11分割文案
- 文本处理
步骤12循环配音
- 循环节点
步骤12.1 判断是否为空
- 选择器
步骤12.2 分句
import re
async def main(args: Args) -> Output:
params = args.params
pattern = r'[,,.。!?;:-]\s*'
content = params['content']
# 通过分隔符分割数组
sentences = re.split(pattern, content)
str\_list = []
for s in sentences:
# 去除中英文单引号、双引号、换行符
s = re.sub(r'[\'""‘’“”\n]', '', s)
# 跳过空串
if not s:
continue
s = s.replace('——', ',')
s = s.replace('、', ',')
str\_list.append(s)
ret: Output = {
"sentence\_list": "\n".join(str\_list)
}
return ret
步骤12.3 继续循环
步骤12.4 视频文案配音
- 语音合成
步骤12.5 字幕音频对齐
- 搜索插件字幕音频自动对齐
步骤12.6 素材组合
- 代码
async def main(args: Args) -> Output:
params = args.params
# 中间变量
pre\_time = params['pre\_time']
captions = params['caption\_list']
audios = params['audio\_list']
# 循环变量
timelines = params['timelines']
audio = params['audio']
texts = params['texts']
duration = params['duration']
# 添加基本验证
if not timelines or not texts:
return {
"captions": captions,
"audios": audios,
"end\_time": pre\_time
}
# 确保两个列表长度一致
min\_length = min(len(timelines), len(texts))
if len(timelines) != len(texts):
print(f"警告:timelines长度({len(timelines)})与texts长度({len(texts)})不一致")
audios.append({
"audio\_url": audio,
"duration": int(duration),
"start": pre\_time,
"end": pre\_time + int(duration),
})
# 设置字幕时长
each\_pause\_duration = 0
length = len(timelines)
if length > 1:
pause\_duration = int(duration) - int(timelines[-1]['end'] - timelines[0]['start']) - timelines[0]['start']
each\_pause\_duration = max(0, int(pause\_duration / (length - 1))) # 确保不为负数
for i in range(min\_length): # 使用min\_length而不是直接使用timelines
time = timelines[i]
start\_time = int(pre\_time + time['start'])
end\_time = int(pre\_time + time['end'])
if i != 0:
start\_time += each\_pause\_duration * i
end\_time += each\_pause\_duration * i
caption = {
'text': texts[i], # 现在确保i不会越界
'start': start\_time,
'end': end\_time,
}
captions.append(caption)
ret = {
"captions": captions,
"audios": audios,
"end\_time": pre\_time + int(duration)
}
return ret
步骤12.7 设置变量
- 变量
到此循环体的节点就结束了。
步骤13获取所有变量
- 代码
import json
async def main(args: Args) -> Output:
params = args.params
# 获取输入参数
width = params['width']
height = params['height']
pre\_time = params['pre\_time']
audios = params['audio\_list']
cover\_img = params['cover\_img']
background\_img = params['background\_img']
# 开场白时长
audio\_duration = params['audio\_duration']
top\_title = params['top\_title']
title\_captions = []
title\_captions.append({
'text': params['title'],
'start': audio\_duration + 1000000,
'end': pre\_time,
"in\_animation": "缩小",
"in\_animation\_duration": 2000000
})
top\_captions = []
top\_captions.append({
'text': top\_title,
'start': audio\_duration + 1000000,
'end': pre\_time,
"in\_animation": "渐显",
"in\_animation\_duration": 1000000
})
# 添加翻书声音和背景乐
bgm\_audios = []
bgm\_audios.append({
"audio\_url": "https://houht.oss-cn-shanghai.aliyuncs.com/public/booklist/book.MP3",
"duration": 2000000,
"start": 0,
"end": 2000000
})
bgm\_audios.append({
"audio\_url": "https://ve-template-0920.oss-cn-shanghai.aliyuncs.com/uploads/1747213706549\_bzwh21eozgv.mp3",
"duration": pre\_time - 2000000,
"start": 2000000,
"end": pre\_time,
"volume": 0.7
})
# 增加开场封面和背景图片的入场动画和转场特效
images1 = []
images2 = []
# 开场白时长+1.5秒 后开始转场特效“中心切开”,持续一秒
images1.append({
"image\_url": cover\_img,
"width": 768,
"height": 1024,
"start": 0,
"end": audio\_duration + 1500000,
"transition": "中心切开",
"transition\_duration": 1000000
})
# 开场白时长+1秒 后开始动画“翻书”,持续一秒
images2.append({
"image\_url": cover\_img,
"width": 768,
"height": 1024,
"start": 0,
"end": audio\_duration + 1000000,
"in\_animation": "翻书",
"in\_animation\_duration": audio\_duration,
"transition": "中心切开",
"transition\_duration": 1000000
})
images2.append({
"image\_url": background\_img,
"width": width,
"height": height,
"start": audio\_duration + 1000000,
"end": pre\_time
})
# 添加视频特效
effects1 = []
effects1.append({
"effect\_title": "模糊开幕",
"start": 0,
"end": audio\_duration + 1000000,
})
effects2 = []
effects2.append({
"effect\_title": "星火",
"start": audio\_duration + 1000000,
"end": pre\_time,
})
# 构建输出对象
ret = {
"captions": json.dumps(params['caption\_list']),
"audios": json.dumps(audios),
"bgm\_audios": json.dumps(bgm\_audios),
"images1": json.dumps(images1),
"images2": json.dumps(images2),
"effects1": json.dumps(effects1),
"effects2": json.dumps(effects2),
"title\_captions": json.dumps(title\_captions),
"top\_captions": json.dumps(top\_captions)
}
return ret
步骤14视频合成_剪映小助手10个节点。
步骤14.1 创建剪映草稿
- 视频合成_剪映小助手create_draft
步骤14.2 背景音乐
- 视频合成_剪映小助手add_audios
步骤14.3 文案配音
- 视频合成_剪映小助手add_audios
步骤14.4 开场图片1
- 视频合成_剪映小助手add_images
步骤14.5 开场图片2
- 视频合成_剪映小助手add_images
步骤14.6 开场迷糊特效
- 视频合成_剪映小助手add_effects
步骤14.7 星火特效
- 视频合成_剪映小助手add_effects
步骤14.8 添加书名
- 视频合成_剪映小助手add_captions
步骤14.9 添加字幕
- 视频合成_剪映小助手add_captions
步骤14.10 添加顶部标题
- 视频合成_剪映小助手add_captions
步骤14 结束
步骤15 试运行
步骤16 剪映小助手
- https://www.51aigc.cc/#/cozeToJianyin
步骤16 剪映展示
更多AI探索及案例
欢迎扫码备注“AI”拉你入群。
