大数跨境
0
0

Coze一键自媒体丨3分钟一键生成爆款家庭教育对话视频

Coze一键自媒体丨3分钟一键生成爆款家庭教育对话视频 L-SEO
2025-08-31
2
导读:大家好,我是云途。本文工作流代码关注后发送“家庭教育”领取!

大家好,我是云途。本文工作流代码关注后发送“家庭教育”领取

大家都没有看过这种视频,家庭教育对话类型的视频,播放点赞量都非常不错,万赞爆款比比皆是,变现也是各类视频里最好的之一。如果自己做至少需要好几个步骤,

🍌

1.写文案

2.利用即梦文生图

3.导入剪映做成视频

如果加上即梦图片抽卡的等待时间和大模型生成故事筛选,实际做这种精品视频至少需要一天。

但是今天为大家带来Coze工作流,可以一键生成家庭教育对话视频。

用Coze工作流花3分钟生成出来的视频,不论是画面、视频节奏还是音效都还原了爆款视频的逻辑,如果想自己提升画面质量把Coze自带的生图插件换成即梦即可。

接下来大家跟着我一起来看看这条工作流是的制作思路吧。

一、工作流全览

这个工作流主要分为4块,

第1块:利用一个大模型插件生成文案,也可以对输入文案进行分割。


第2块:文案合成语音。


第3块:人声合成。


第4块:文案合并。


第5步:配图合成制作。


第5步:背景图片、BGM生成。


第6步:利用剪映小助手插件生成剪映视频草稿。


二、节点拆解

开始节点:

该模型使用简便,输入主题就可以输出完整的视频,如果有自己的文案的也可以输入自己的文案让模型自动生成视频。

大模型节点:

2.1 文案生成节点:

提示词如下,生成视频文案:


2.2 口播稿生成节点:



2.3 图片生成节点:


2.4 视频生成节点:



2.5 分镜关键词抓取节点:


2.6 图像生成节点:



批处理体节点:

此模型批处理节点过多,如需细节联系TQ索要。

3.1 单双行文本拆分节点:

async function main({ params }: Args): Promise{
    // 构建输出对象
    const ret = {
        wenanTimeline: params.wenan.map((item,idx) => ({
            content: item,
            start: params.timelines[idx].start,
            end: params.timelines[idx].end
        }))
    };

    return ret;
}

3.2 合并分组文本时间线节点

async function main({ params }: Args): Promise{
    const { wenan_group, timeline } = params;

    const wenan_group_timeline = [];
    let currentIndex = 0;

    for (const group of wenan_group) {
      const groupLen = group.wenan.length;

      // 当前组最后一句的 end 作为统一结束时间
      const unifiedEnd = timeline[currentIndex + groupLen - 1].end;

      for (let i = 0; i < groupLen; i++) {
        const content = group.wenan[i].trim();

        let start: number;

        if (i === 0) {
          // 第一句:用当前这句原始 start
          start = timeline[currentIndex + i].start;
        } else {
          // 后面句子:start = 上一句的原始 end - 0.3秒(注意不能小于0)
          const prevEnd = timeline[currentIndex + i - 1].end;
          start = Math.max(0, prevEnd - 300000);
        }

        wenan_group_timeline.push({
          start,
          end: unifiedEnd,
          content
        });
      }

      currentIndex += groupLen;
    }

    return { wenan_group_timeline };
  }

3.3 视频生成节点

async function main({ params }) {
    const {
      wenan_group_timeline = [],
      singleLineGroups = [],
      keywordsList = [],
      doubleLineGroups = []
    } = params;

    const timelineMap = {};
    for (const { content, start, end } of wenan_group_timeline) {
      timelineMap[content] = { start, end };
    }

    const keywordArr = keywordsList.map(item => item.keywords);
    const keywordStr = keywordArr.join('|');

    // === 轨道 1:单句字幕 ===
    const track_1_texts = [];
    const track_1_timelines = [];
    const track_1_otherInfo = [];

    for (const text of singleLineGroups) {
      const time = timelineMap[text];
      if (!time) continue;

      track_1_texts.push(text);
      track_1_timelines.push(time);
      track_1_otherInfo.push({
        alignment: 1,
        text_color: "#61862b",
        transform_x: 0,
        transform_y: 0
      });
    }

    // === 轨道 2 和 3:普通双行字幕 ===
    const track_2_texts = [];
    const track_2_timelines = [];
    const track_2_otherInfo = [];

    const track_3_texts = [];
    const track_3_timelines = [];
    const track_3_otherInfo = [];

    // === 新增轨道 4:推荐文案 ===
    const track_4_texts = [];
    const track_4_timelines = [];
    const track_4_otherInfo = [];

    // === 新增轨道 5:书名文案 ===
    const track_5_texts = [];
    const track_5_timelines = [];
    const track_5_otherInfo = [];

    // 存储双行字幕组的对应关系,用于生成画面提示词
    const doubleLinePairs = [];

    for (const { wenan } of doubleLineGroups) {
      const [line1, line2] = wenan;
      const time1 = timelineMap[line1];
      const time2 = timelineMap[line2];
      if (!time1 || !time2) continue;

      const recommendPhrases = ['推荐', '强烈推荐', '建议', '安利', '一定要试试', '必须看看', '良心推荐', '超适合', '很适合', '值得一读', '分享', '别错过', '可以入手'];
      const childrenPhrases = ['孩子', '宝贝', '小朋友', '宝宝', '小宝', '小孩', '娃', '娃娃', '儿童', '幼儿', '学龄前', '小男孩', '小女孩', '小弟弟', '小妹妹', '小公主', '小王子'];
      const actionPhrases = ['读一读', '看一看', '读读看', '看看', '共读', '阅读'];
      const unitPhrases = ['这套', '这一套', '这本', '这一册', '这册'];

      function isBookRecommendation(line) {
        const pattern = new RegExp(
          `(?:${recommendPhrases.join('|')}).*?(?:陪|给)?.*?(?:${childrenPhrases.join('|')})?.*?(?:${actionPhrases.join('|')}).{0,5}(?:${unitPhrases.join('|')})`
        );
        return pattern.test(line);
      }

      if (isBookRecommendation(line1)) {
        // === 推荐句 → 轨道 4
        track_4_texts.push(line1);
        track_4_timelines.push(time1);
        track_4_otherInfo.push({
          alignment: 1,
          text_color: "#000000",
          transform_x: 0,
          transform_y: 100
        });

        // === 书名句 → 轨道 5
        track_5_texts.push(line2);
        track_5_timelines.push(time2);
        track_5_otherInfo.push({
          alignment: 1,
          text_color: "#db7431",
          transform_x: 0,
          transform_y: -100
        });
      } else {
        // === 普通双行逻辑
        track_2_texts.push(line1);
        track_2_timelines.push({ start: time1.start, end: time1.end });
        track_2_otherInfo.push({
          alignment: 1,
          text_color: "#61862b",
          transform_x: 0,
          transform_y: 140
        });

        track_3_texts.push(line2);
        track_3_timelines.push({ start: time2.start, end: time2.end });
        track_3_otherInfo.push({
          alignment: 1,
          text_color: "#db7431",
          transform_x: 0,
          transform_y: -140
        });

        // 保存普通双行字幕的配对信息
        doubleLinePairs.push({
          line1: { text: line1, time: time1 },
          line2: { text: line2, time: time2 }
        });
      }
    }

    // === 生成画面提示词数据 ===
    const visualPromptGroups = [];

    // 添加单句字幕的提示词
    for (let i = 0; i < track_1_texts.length; i++) {
      visualPromptGroups.push({
        start: track_1_timelines[i].start,
        end: track_1_timelines[i].end,
        content: track_1_texts[i]
      });
    }

    // 添加双行字幕的提示词
    for (const pair of doubleLinePairs) {
      visualPromptGroups.push({
        start: pair.line1.time.start,
        end: pair.line2.time.end,
        content: `${pair.line1.text}\n${pair.line2.text}`
      });
    }

    return {
      track_1: {
        texts: track_1_texts,
        timelines: track_1_timelines,
        otherInfo: track_1_otherInfo,
        keywords: track_1_texts.map(() => keywordStr),
        keyword_color: "#db7431"
      },
      track_2: {
        texts: track_2_texts,
        timelines: track_2_timelines,
        otherInfo: track_2_otherInfo
      },
      track_3: {
        texts: track_3_texts,
        timelines: track_3_timelines,
        otherInfo: track_3_otherInfo
      },
      track_4: {
        texts: track_4_texts,
        timelines: track_4_timelines,
        otherInfo: track_4_otherInfo
      },
      track_5: {
        texts: track_5_texts,
        timelines: track_5_timelines,
        otherInfo: track_5_otherInfo
      },
      visualPromptGroups // 新增字段,用于生成画面提示词
    };
  }

3.4 音轨配图信息处理

async functionmain({ params }: Args): Promise<Output> {
    constdouble_img_info: any[] = [];
    constsingle_img_info: any[] = [];

    const infos = params.infos_list.map(item =>JSON.parse(item));
    const prompts = params.visualPromptGroups;

    for (let i = 0; i < prompts.length; i++) {
        const content = prompts[i].content;
        const firstImgInfo = infos[i]?.[0];  // 安全获取第一个图片信息
        if (!firstImgInfo) continue// 如果为空跳过

        if (content.includes('\n')) {
            double_img_info.push(firstImgInfo);
        } else {
            single_img_info.push(firstImgInfo);
        }
    }

    return {
        single_img_info,
        double_img_info
    };
}

剪映小助手等后处理节点:

达成的功能分别是:对齐视频,创建草稿,选择并添加背景音乐,最后保存导出。

这条工作流的思路大致就是这样,有基础的小伙伴可以根据自己创建一条试试,其实逻辑非常简单。

最后打个广告

🍌

云途创建了一个Coze学习社群,大家可以相互鼓励监督,有问题都可以在群里问,一起利用AI踏上自媒体之路。想加入的朋友们可以添加云途,发送“社群”领取15条爆火工作流。

如果有深入学习的需求,可以看看商品链接,包含市面上最全的150+工作流,从视频制作、文案收集、自媒体素材库的搭建,全方面助你走上自媒体道路。


【声明】内容源于网络
0
0
L-SEO
个人账户
内容 23
粉丝 1
L-SEO 个人账户
总阅读3.9k
粉丝1
内容23