书单解说Coze工作流:一键生成书本解说,保姆级教程,附提示词

大家好,我是陌晨,分享有用的AI知识与工具,喜欢记得关注。

内容一直是时代进度的产物,不管AI+自媒体如何演变,亘古不变的还是内容。 读书号一直是做副业、做自媒体拿来练手,既方便又是很有效的内容。

本次分享coze工作流制作炫酷开头书本解说,实现只需要输入书名,就拿到视频解说的剪映模板并生成图文并茂带有动效视频。

步骤工作流
  1. 拆书解文案
  2. 配音+字幕对齐并组合
  3. 剪映小助手获得模板

picture.image

拆书解文案

步骤1开始

  • 输入书名

picture.image

步骤2豆瓣搜书

  • 插件 豆瓣搜书

picture.image

步骤3书名+作者

  • 文本处理

picture.image

步骤4开场白文案

  • 文本处理

picture.image

步骤5开场白配音

  • 语音合成
  • 音色可以根据自己需要做变动picture.image

步骤6获取开场白时长

  • 插件获取音频时长

picture.image

步骤7计算时长

  • 代码-

picture.image

  
- 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书单图片提示词

  • 大模型-

picture.image

picture.image

  
- 系统提示词  
#角色  
你是一个AI绘画提示词生成专家。请根据用户提供的书籍《{{book\_name}}》,生成一段符合Midjourney规范的插图画面描述。  
  
#核心要求  
1. 内容与风格:描述必须忠实于书籍的内容、时代背景和核心氛围,并体现其文学风格(如哥特式、浪漫主义、存在主义等)。  
2. 艺术风格:需指定一种或多种艺术风格(如炭笔画、水墨、暗调摄影、蚀刻版画等),以强化书籍的基调。  
3. 色彩约束:画面必须避免使用亮色和红色。优先使用低饱和度、单色、柔和或深沉的色调。  
  
#输出格式  
直接输出纯净、连贯的Midjourney提示词,无需额外解释。提示词应包含画面主体、环境、光影、氛围及技术参数。  

步骤9生成书单图片

  • 图像生成-

picture.image

步骤10书单文案

  • 大模型

picture.image

picture.image

  
- 提示词  
#角色:你是一位专业的书评作家,擅长以精炼、生动且有深度的语言,向读者介绍书籍的核心价值与独特魅力。  
  
# 技能:  
基于用户指定的书籍《{{book\_name}}》,生成一篇结构完整、内容深刻的书评。  
  
# 书评要求  
1.内容风格: 使用第三人称和口语化表达,确保语言流畅自然,观点鲜明;2.金句引用: 每个核心观点中须至少嵌入一句书中原文作为支撑;  
3.结构规范:  
(1)开篇直接切入主题,不设引言或铺垫;  
(2)围绕三个核心观点展开,每段观点内容不少于100字,不超过200字;  
(3)避免使用'第一个观点’、'第二个观点’等刻板表述,改用自然过渡;  
(4)文未需有简要总结,并附上引导读者进一步行动的语句;  
  
# 限制  
书评内容中每句话≤15个字(不包含标点符号);  
示例:  
“今天星期五,明天可以休息啦。”中“今天是星期五,”算作一句话:  
# 输出格式  
书评内容  
用户提示词 ①  

步骤11分割文案

  • 文本处理

picture.image

步骤12循环配音

  • 循环节点

picture.image

步骤12.1 判断是否为空

  • 选择器

picture.image

步骤12.2 分句

picture.image

  
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 继续循环

picture.image

步骤12.4 视频文案配音

  • 语音合成

picture.image

步骤12.5 字幕音频对齐

  • 搜索插件字幕音频自动对齐

picture.image

步骤12.6 素材组合

  • 代码

picture.image

  
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 设置变量

  • 变量

picture.image

到此循环体的节点就结束了。

picture.image

步骤13获取所有变量

  • 代码

picture.image

  
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个节点。

picture.image

步骤14.1 创建剪映草稿

  • 视频合成_剪映小助手create_draftpicture.image

步骤14.2 背景音乐

  • 视频合成_剪映小助手add_audiospicture.image

步骤14.3 文案配音

  • 视频合成_剪映小助手add_audiospicture.image

步骤14.4 开场图片1

  • 视频合成_剪映小助手add_imagespicture.image

步骤14.5 开场图片2

  • 视频合成_剪映小助手add_imagespicture.image

步骤14.6 开场迷糊特效

  • 视频合成_剪映小助手add_effectspicture.image

步骤14.7 星火特效

  • 视频合成_剪映小助手add_effectspicture.image

步骤14.8 添加书名

  • 视频合成_剪映小助手add_captionspicture.image

步骤14.9 添加字幕

  • 视频合成_剪映小助手add_captionspicture.image

步骤14.10 添加顶部标题

  • 视频合成_剪映小助手add_captionspicture.image

步骤14 结束

picture.image

步骤15 试运行

picture.image

步骤16 剪映小助手

- https://www.51aigc.cc/#/cozeToJianyin

picture.image

步骤16 剪映展示

picture.image

更多AI探索及案例

欢迎扫码备注“AI”拉你入群。

picture.image

0
0
0
0
评论
未登录
暂无评论