100 个 Coze 精品案例:Coze 全自动情感治愈视频混剪。用 Coze 工作流帮您节约 99% 的时间,从此告别手动!!

大家好,我是大明哥,目前专注 AI 智能体。


相信大家都刷到过这类视频:它们以情绪化、人生感悟、心灵治愈的文案,配上一些简单的视频。这类视频非常容易引发共鸣。制作也相对容易些,如果你用剪映来做的话,制作一个视频应该要花几十分钟。

但是,如果你用 Coze 工作流的花,几十秒就可以搞定。你只需要输入文案主题,Coze 工作流就可以对多个视频片段进行混剪(支持自定义上传视频),同时生成文案、配音。

整体思路

  • 利用 deepSeek 生成情感治愈的文案
  • 将文案转换为音频
  • 根据音频的时间随机获取一些视频片段
  • 将字幕、音频、视频片段、背景音乐添加到剪映草稿里面

完整工作流:

搭建工作流

整个工作流接收三个参数:

  • input:文案主题
  • api_token:字幕跟音频对齐插件的 token
  • video_urls:自定义视频片段

利用 DeepSeek 来生成文案,提示词如下:

markdown 复制代码
# 角色
你是一位出色的治愈情感文案专家,擅长依据用户输入的主体,创作出饱含温情、抚慰人心的情感文案。你的文字细腻且富有感染力,能精准捕捉情感的微妙之处,给人带来温暖与力量。

## 技能
### 技能 1: 创作情感文案
1. 接收用户输入的主体后,深入剖析主体蕴含的情感元素。
2. 围绕主体展开丰富联想,从多维度挖掘相关情感脉络。
3. 使用电影旁白的深情风格,文案需能够引起用户的情感共鸣,精炼简短,字数在 150 字左右

===回复示例===
[情感文案内容]
===示例结束===

### 输出格式
最后直接输出创作好的文案,无需额外说明。

## 限制:
- 仅围绕用户输入的主体创作情感文案,拒绝回答与创作情感文案无关的话题。
- 所输出的情感文案须逻辑清晰、语句通顺,符合情感表达要求。
- 情感文案应紧密围绕用户输入的主体,不得偏离主题创作。 
- 最后直接输出文案,文案字数 150字左右。

生成文案后就将文案转换为语音,同时获取它的时长:

由于生成的文案是一整段的,所以需要将其进行分割处理,主要是按照标点符号来分割:

由于文案是切割的,但是音频是一整段,所以需要利用插件将文案和音频对齐,这里采用插件[字幕音频对齐]:

注意:这个插件是收费的。当然,这里也有不收费的方式,就是先将文案分割,然后在批量将其合成音频,最后利用代码来进行时间线的处理。这种方案实现起来也不难(大明哥前面大部分工作流都是这么处理的),就是稍微繁琐了点。

文案和音频处理完成后就需要来处理视频了。

如果输入了自定义视频的话,需要先获取自定义视频的时长,因为需要根据自定义视频时长和音频长度进行补齐处理:

再就是挑选视频片段了,由于代码比较多就比贴出来了。挑选完视频后,还需要再次对挑选的视频时长再次进行下计算,主要目的是为了构建视频的时间线:

再然后就是利用 Python 代码来构建剪映草稿的数据了。输入参数:

输出参数:

Python 代码:

ini 复制代码
import json
async def main(args: Args) -> Output:
    params = args.params
    
    video_url = params["video_url"]
    time_lines = params["time_lines"]
    audio_url = params["audio_url"]
    text_list = params["text_list"]
    audio_duration = params["audio_duration"]
    title = params["title"]
    video_duration = params["video_duration"]

    # 处理视频
    video_start = 0
    video_end = 0
    video_infos = []
    
    for index,item in enumerate(video_url):
        duration = convert_to_seconds(video_duration[index]["duration"])
        video_end = video_start + duration * 1000000
        if (video_end >= audio_duration):
            video_end = audio_duration
        video_infos.append({
            "video_url": item,
            "start": video_start,
            "end": video_end,
            "width":576,
            "height":1024,
            "transition": "叠化",
            "transition_duration": 1000000
        })
        video_start = video_end
        if (video_start >= audio_duration):
            break

    # 背景音乐
    bg_audio = [{
        "audio_url":"https://houht.oss-cn-shanghai.aliyuncs.com/public/mp3/qingroubgm.MP3",
        "start":0,
        "end":video_end
    }]

    # 配音和字幕
    ## 配音
    audio_infos = [{
        "audio_url": audio_url,
        "duration": audio_duration,
        "start":0,
        "end":audio_duration
    }]

    ## 字幕
    start = 0
    end = 0
    caption_infos = []
    for index,item in enumerate(time_lines):
        start = item["start"]
        end = item["end"]

        text = text_list[index]
        caption_infos.append({
            'text': text,
            'start': start,
            'end': end,
            "in_animation":"渐显",
            "out_animation":"渐隐"
        })

    captions_title = [{
        'text': title,
        'start': 0,
        'end': 2000000,
        "in_animation":"",
         "out_animation":"渐隐"
    }]

    # 构建输出对象
    ret: Output = {
        "video_infos":  json.dumps(video_infos),
        "bg_audio":  json.dumps(bg_audio),
        "audio_infos":  json.dumps(audio_infos),
        "caption_infos":  json.dumps(caption_infos),
        "captions_title":  json.dumps(captions_title)
    }
    return ret

# 将时间格式转化为秒数
def convert_to_seconds(time_str):
    ## 为空 返回 0
    if not time_str:
        return 0
    
    parts = time_str.split('时')
    if len(parts) == 2:
        hours = int(parts[0])
        sub_parts = parts[1].split('分')
        minutes = int(sub_parts[0])
        seconds = int(sub_parts[1].split('秒')[0])
        total_seconds = hours * 3600 + minutes * 60 + seconds
    else:
        parts = parts[0].split('分')
        if len(parts) == 2:
            minutes = int(parts[0])
            seconds = int(parts[1].split('秒')[0])
            total_seconds = minutes * 60 + seconds
        else:
            total_seconds = int(parts[0].split('秒')[0])
    return total_seconds

最后就是创建剪映草稿,然后添加数据了:

视频效果(掘金上传视频太麻烦了),看这里:mp.weixin.qq.com/s/D8MPrtrXn...


相关推荐
xueyongfu22 分钟前
PTX指令集基础以及warp级矩阵乘累加指令介绍
人工智能·线性代数·算法·矩阵
云卓SKYDROID25 分钟前
无人机惯性导航模块运行与技术难点!
人工智能·计算机视觉·目标跟踪·无人机·高科技
小喵要摸鱼1 小时前
机器学习与人工智能领域的顶级会议期刊
人工智能·机器学习
Blossom.1182 小时前
基于深度学习的图像分割:使用DeepLabv3实现高效分割
人工智能·python·深度学习·机器学习·分类·机器人·transformer
张较瘦_3 小时前
[论文阅读] 人工智能 + 软件工程 | 增强RESTful API测试:针对MongoDB的搜索式模糊测试新方法
论文阅读·人工智能·软件工程
Wendy14414 小时前
【边缘填充】——图像预处理(OpenCV)
人工智能·opencv·计算机视觉
钱彬 (Qian Bin)4 小时前
《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——8. AI赋能(下):在Qt中部署YOLOv8模型
人工智能·qt·yolo·qml·qt quick·工业质检·螺丝瑕疵检测
星月昭铭5 小时前
Spring AI调用Embedding模型返回HTTP 400:Invalid HTTP request received分析处理
人工智能·spring boot·python·spring·ai·embedding
大千AI助手6 小时前
直接偏好优化(DPO):原理、演进与大模型对齐新范式
人工智能·神经网络·算法·机器学习·dpo·大模型对齐·直接偏好优化
ReinaXue6 小时前
大模型【进阶】(四)QWen模型架构的解读
人工智能·神经网络·语言模型·transformer·语音识别·迁移学习·audiolm