CrabNote螃蟹笔记

贾栾:用扣子10天手搓产品上线全程慢直播2万字记录

贾栾:用扣子10天手搓产品上线全程慢直播2万字记录

贾栾:用扣子10天手搓产品上线全程慢直播2万字记录 贾栾:用扣子10天手搓产品上线全程慢直播2万字记录 Modified July 10, 2025 No access c95c1aa29f2721b41839614a05832b4b 00:00 看着挺像回事,代码拷贝进去试下~ 运行报错,看提示 它从 data 开始解析。然后让它改为 从 items 开始解析。 修改后,搞定~ 完整工作流 集成页面 路径走通,再调下细节~ 搞定,支持文、图、链接~ 后续实战补充 之前在Day10中有提到,最近用的过程中,发现使用场景还挺多,比如可以放操作指引、微信二维码。 虽然小程序中屏蔽的支付二维码,但是允许识别微信二维码。 其它使用场景:多账户的广告咨询、banner图、更新通知等。 不想通过数据库、还不想通过专有运营后台调用API形式来实现的情况下,这是一个很好的方式 更新、发版、调整线上数据~ END 总结 至此,10 天时间手搓 AI 短视频工厂 APP 的慢直播告一段落。目前 APP 流程基本完成,进入内测阶段。后边需要不断丰富模板、优化迭代。同时要进行运营推广了。 关于时间,10 天不算多快,复盘后会发现有很多返工的内容。但在 AI 时代我觉着就是要先干起来,然后发现问题快速迭代。有很多东西都是都是要尝试后才能发现问题,AI 时代就是可以让大家不断的快速试错、低成本试错。 关于功能,肯定还有不完善的地方,在整理本文前刚刚修复了几个问题更新上线。但至少从产品角度已经形成闭环。关于链接、支付等体验不好的地方,后续可以持续跟进或接入第三方产品支持。 关于是否要懂技术?可以明确的说,不懂技术也可以做,只是会慢一些。我认为更重要的是业务、逻辑,逻辑清晰了,不懂技术,让 Trae+DS 来解决。 关于能否做其它产品?我认为这篇慢直播记录的重点在意,不在形。 10 天文档记录虽然不系统,但确是从搭建智能体的角度从零搭建。我认为更有价值的是搭建产品的思维,遇到问题时的方式方法。希望让更多的同学看到一些可行性,可以参考并搭建自己想搭建的产品。 最后,感谢一直关注的同学,让我们一起在 AI 智能体元年都能找到自己的定位~ END 感兴趣的同学添加关注,持续更新分享更多实战内容~ ⛱️ 个人简介 贾栾 一个喜欢跑马的 AI 研究者 | 专注于 AIGC 应用落地。 ~全马 PB333,半马 128~ 10 年+研发管理经验、7 年+创业,传统软件公司转型中,目前 All in AI。 致力于打造让每个人都能用的 AI 应用工具。 No access c95c1aa29f2721b41839614a05832b4b 00:00 No access c95c1aa29f2721b41839614a05832b4b 00:00 看着挺像回事,代码拷贝进去试下~ 运行报错,看提示 它从 data 开始解析。然后让它改为 从 items 开始解析。 修改后,搞定~ 完整工作流 集成页面 路径走通,再调下细节~ 搞定,支持文、图、链接~ 后续实战补充 之前在Day10中有提到,最近用的过程中,发现使用场景还挺多,比如可以放操作指引、微信二维码。 虽然小程序中屏蔽的支付二维码,但是允许识别微信二维码。 其它使用场景:多账户的广告咨询、banner图、更新通知等。 不想通过数据库、还不想通过专有运营后台调用API形式来实现的情况下,这是一个很好的方式 更新、发版、调整线上数据~ END 总结 至此,10 天时间手搓 AI 短视频工厂 APP 的慢直播告一段落。目前 APP 流程基本完成,进入内测阶段。后边需要不断丰富模板、优化迭代。同时要进行运营推广了。 关于时间,10 天不算多快,复盘后会发现有很多返工的内容。但在 AI 时代我觉着就是要先干起来,然后发现问题快速迭代。有很多东西都是都是要尝试后才能发现问题,AI 时代就是可以让大家不断的快速试错、低成本试错。 关于功能,肯定还有不完善的地方,在整理本文前刚刚修复了几个问题更新上线。但至少从产品角度已经形成闭环。关于链接、支付等体验不好的地方,后续可以持续跟进或接入第三方产品支持。 关于是否要懂技术?可以明确的说,不懂技术也可以做,只是会慢一些。我认为更重要的是业务、逻辑,逻辑清晰了,不懂技术,让 Trae+DS 来解决。 关于能否做其它产品?我认为这篇慢直播记录的重点在意,不在形。 10 天文档记录虽然不系统,但确是从搭建智能体的角度从零搭建。我认为更有价值的是搭建产品的思维,遇到问题时的方式方法。希望让更多的同学看到一些可行性,可以参考并搭建自己想搭建的产品。 最后,感谢一直关注的同学,让我们一起在 AI 智能体元年都能找到自己的定位~ END 感兴趣的同学添加关注,持续更新分享更多实战内容~ ⛱️ 个人简介 贾栾 一个喜欢跑马的 AI 研究者 | 专注于 AIGC 应用落地。 ~全马 PB333,半马 128~ 10 年+研发管理经验、7 年+创业,传统软件公司转型中,目前 All in AI。 致力于打造让每个人都能用的 AI 应用工具。 个人简介 贾栾 一个喜欢跑马的 AI 研究者 | 专注于 AIGC 应用落地。 ~全马 PB333,半马 128~ 10 年+研发管理经验、7 年+创业,传统软件公司转型中,目前 All in AI。 致力于打造让每个人都能用的 AI 应用工具。 概述 继上次分享贾栾:两天用Coze搭建产品级APP框架并发布到微信小程序之后,历经累计 10 天的慢直播记录,终于在最后一天打通全流程,小程序正式进入内测阶段,先体验下效果: 贾栾:两天用Coze搭建产品级APP框架并发布到微信小程序 演示视频 👍 10 天文档记录虽然不系统,但确是从搭建智能体、产品应用的角度从零搭建。我认为更有价值的是搭建产品的思维,遇到问题时的方式方法。现在对这 10 天文档进行系统整理下,输出搭建产品全过程。 希望可以让更多的同学看到普通人手戳产品的可能性。 文章较长,可以收藏慢慢查看,或是作为遇到问题时的疑难参考。 10 天文档记录虽然不系统,但确是从搭建智能体、产品应用的角度从零搭建。我认为更有价值的是搭建产品的思维,遇到问题时的方式方法。现在对这 10 天文档进行系统整理下,输出搭建产品全过程。 希望可以让更多的同学看到普通人手戳产品的可能性。 文章较长,可以收藏慢慢查看,或是作为遇到问题时的疑难参考。 第一天:创建 Coze 应用,页面搭建 1. 一级页面搭建 1.1 创建空白应用 页面选择 小程序和 H5。(用户级产品,后续需要发布到小程序) 1.2 先根据 UI 将页面框架简单搭下 UI 设计:让AI设计产品UI 让AI设计产品UI 1 个半小时搭建了一级页面初版,搭建过程见视频。由于搭建的过程要考虑很多统一性,会来回调整。基本框架搭建完成后,后续页面就很快,基本就是粘贴复制。 提示:沉浸式搭建录屏,没有声音。仅供参考。 前三个页面(首页、模板、社区案例) 个人中心 以上,app 一级页面框架搭建完成,后边就需要做核心工作流了。搭建页面的目的是为了有个 APP 的雏形,搭建过程中会考虑工作流如何对应,以及工作流完成后方便调试。 二级页面等工作流完成后,再搭建。 注意:不要投入太多精力调页面细节,因为后续会经常调整,根据工作流的实际情况等。 2. 工作流搭建 🎉 随便写写 工作流是整个智能体的核心,所有的业务逻辑都在工作流中完成。一个产品体验的好坏,UI 占一部分,更多的是业务流程体验是否够好。 1、比如生成一个视频耗时较长,是否有过程提示,如果失败了是否有异常提示,方便用户修改。 2、工作流的命名规则,要方便维护。预计本应用的工作流会在 50+,随着模板增多,工作流也不断增多。 3、一定要做到通用,尽可能同一类模板使用一个工作流。 4、一定要做到解耦,一个单独的功能要独立拆分成一个子动作流。 3 和 4 没有冲突,3 是为了让业务通用,4 是为了让功能解耦。理想情况下就是,不同的业务,使用同一个工作流,只需要区分入参就好。然后每一个工作流的节点又不多,由一块一块的子功能工作流组合而成。 以上,随便写写,开始搞工作流了~~耗时会很长 随便写写 工作流是整个智能体的核心,所有的业务逻辑都在工作流中完成。一个产品体验的好坏,UI 占一部分,更多的是业务流程体验是否够好。 1、比如生成一个视频耗时较长,是否有过程提示,如果失败了是否有异常提示,方便用户修改。 2、工作流的命名规则,要方便维护。预计本应用的工作流会在 50+,随着模板增多,工作流也不断增多。 3、一定要做到通用,尽可能同一类模板使用一个工作流。 4、一定要做到解耦,一个单独的功能要独立拆分成一个子动作流。 3 和 4 没有冲突,3 是为了让业务通用,4 是为了让功能解耦。理想情况下就是,不同的业务,使用同一个工作流,只需要区分入参就好。然后每一个工作流的节点又不多,由一块一块的子功能工作流组合而成。 以上,随便写写,开始搞工作流了~~耗时会很长 2.1 轮播图 以轮播图为例,功能简单,适合做个初始规范,后续的工作流复制即可。 思路: 首先:轮播图包含了图片和点击事件。应该使用数据库存储图片的 URL,这样可以方便后续更换。点击事件直接跳转 URL 即可(暂定都是用外部 URL(飞书文档))。 创建数据表 app banner,用于存储轮播图记录。手动添加几条数据。 工作流如下: 参考贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧,统一输出规范。及时你认为不可能有异常,也要加上异常处理。因为但凡是机器、代码,就可能会出问题。 贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧 命名规范:app get banner(应用级 获取方式 功能) 工作流运行成功,开始页面集成 注意: 这里有平台功能缺失,不支持所有轮播图区分跳转。先这样吧,都跳转第一个的链接~~,后续应该会完善的。 2.2 模板中心 数据表:模板类型、模板名称、模板编号、模板图片、热度、是否推荐、是否上架、模板示例视频 ULR。 app 模板搜索(包含首页推荐模板、模板中心的分类筛选、关键词筛选) 2.3 作品展示 数据表:视频编号、视频 URL、视频名称、作者名称、作者 id、所属模板类型、所属模板名称、所属模板编号、是否推荐、是否上架、浏览次数。 首页、案例中心,都走这一个工作流。通过参数区分。 20250610090131 rec 20250610090131 rec 20250610090131 rec 20250610090131 rec 小技巧: 如何将数据表中的带时区的 Time 类型,去掉时区? 1:只显示年月日(YYYY MM DD) 2: 显示年月日 + 时分秒(YYYY MM DD HH:mm:ss) 但是发现时间不带时区,即比北京时间晚 8 小时。 最终选择直接处理字符串吧。 既然 item.bstudio create time 的格式是 "2025 06 12 18:02:06 +0800 CST",并且组件中不支持复杂代码,我们可以直接截取前 19 个字符(YYYY MM DD HH:mm:ss),去掉后面的时区信息。 第二天:其它一级页面搭建及微信小程序初审 1. 模板中心页 分析: 1、需要单独工作流,获取分类列表。 2、根据第一个分类,通过工作流获取对应的模板。可以默认推荐是第一个,或者与首页推荐区分开,再增加一个字段。 3、搜索就根据 app get template 根据关键词模糊匹配搜索即可,不关联分类。 思考: 1、是否需要再建表,用于存储模板分类?——用模板表,尝试分组查询,试下 2、第一个分类默认“推荐模板”,跟首页用一个工作流。区别是 首页最多展示前 5 个,模板页展示全部。 实操: 1. 单独建个工作流,查询模板分类。 用模板表,尝试分组查询。 这里只能用自定义 SQL 插件,通过自然语言让 AI 写 SQL 查询语句。 这样,就可以不单独建表存储模板分类了。 2. 数据库中添加一些测试数据,方便调试。 下载模板,填写测试数据,批量导入。 同理添加视频作品表测试书籍 增加数据后,刷新页面效果。 发现个问题: ListHorizontal 横向列表,在 PC 端扣子商店不支持鼠标横向列表滑动, 但是支持鼠标点击后,左右键盘滑动,又是个缺陷~~ 前期就先只推荐 3 个,后边考虑是否更换成竖向的。。。 3. 分类列表 思考: 工作流 app get template typelist 用于从模板表中查询所有的分类列表,然后通过点击每一个分类,查询该分类下的模板。 需要在最前增加”推荐“分类,用于默认显示书籍,展示所有的推荐模板。 需要在工作流中,通过代码节点手动追加。 增加后,刷新页面,如图所示。 4. 默认加载推荐模板,点击”分类“加载其它类型模板 发现与首页的推荐模板数据有些冲突,需要修改工作流的入参,以匹配多种情况。 每种情况,测试一遍,通过~~ 这样一个工作流,就能匹配所有的功能需求了,后续迭代调整也方便。(后边发现多页面引用有冲突,会有调整) 页面配置好工作流,按需配置参数,运行~~ 页面提示查询失败,检查工作流运行日志,发现平台的坑~~ 没有传参,这里识别成了“null”字符串。 这算是平台缺陷,需要处理一下。 不想加代码节点过滤,想了个变通方案: 入参时输入空格,工作流接收到的是空格,再通过选择器过滤空格。(有风险,哪天自己不注意会删了~~) 运行,功能基本正常。 缺失功能: 1、点击”推荐“,需要在工作流中手动增加判断,查询所有推荐模板。 2、页面功能交互、loadding 框。 继续调整~ 20250610121838 rec 00:00 20250610121838 rec 00:00 遗留问题: TODO:按钮及控件的点击缩放功能,设置了未生效。后续再跟踪~ 2. 社区广场 分析: 这个页面相对逻辑简单,根据筛选条件查询即可。切换条件时,触发工作流调用,传入对应参数。 2.1.1 搭建工作流,根据入参获取视频列表。 20250610141048 rec 20250610141048 rec 20250610141048 rec 20250610141048 rec 2.1.2 追加个小功能:在列表底部增加“已经到底了~” 思路: 在列表下边增加文本,默认不显示,直到加载完毕在显示。 提示: 必须要用表达式,不然效果不好。让我写我也不太会写,直接找记录,粘贴复制、替换。 参考文档:贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧 贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧 ❤️ 上边 3 个判断都不能少,稍微解读一下: 组件显示逻辑:显示:false,隐藏:true。 目标:默认隐藏,加载完显示 1、就得{{!(False)}} 2、app get video list.loading——工作流执行中 app get video list != undefined &&app get video list.data !=undefined——工作流有结果,不管结果是否为空。(注意:必须先判断 app get video list 是否为空,在判断里边的属性,否正会出现空的应用而导致无效。) 上边 3 个判断都不能少,稍微解读一下: 组件显示逻辑:显示:false,隐藏:true。 目标:默认隐藏,加载完显示 1、就得{{!(False)}} 2、app get video list.loading——工作流执行中 app get video list != undefined &&app get video list.data !=undefined——工作流有结果,不管结果是否为空。(注意:必须先判断 app get video list 是否为空,在判断里边的属性,否正会出现空的应用而导致无效。) 配置好一个,其它页面粘贴复制即可,没必要都重新写~ 3. 个人中心 分析: 主要功能包含 1、个人信息获取——直接通过组件中的用户信息获取即可(用户名、头像)。 2、账户体系——账户激活、激活状态判断、账户消费充值、账户明细查询、在线充值。 3、营销体系——每日打卡、邀请好友、发布作品 等触发账户消费充值。 4、其它附加功能入口。 实操: 3.1.1 先将账户体系移植过来 理论上可以直接使用资源库中相关的工作流,但由于 coze 平台对外部的资源引用稳定性有问题,还是将相关资源复制进应用内。这也是资源尽量做共通的好处,提高可复用性。 参考文档:贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧 贾栾:扣子应用搭建拆解(详拆支付体系)及高阶实战技巧 🍞 突然收到短信: 【工业和信息化部】尊敬的用户贾栾,您的备案信息已被变更,详情请咨询您的接入服务提供商。【工信部 ICP 备案】 历时近一月,终于通过了。 突然收到短信: 【工业和信息化部】尊敬的用户贾栾,您的备案信息已被变更,详情请咨询您的接入服务提供商。【工信部 ICP 备案】 历时近一月,终于通过了。 集成好支付体系后,发布到小程序试试~~ 继续: 开启系统变量,用于获取用户身份 uuid。设置相关变量,用于应用内使用。 用户变量: 用户激活状态:用于存储用户激活状态,避免每次都查数据库。 用户账户余额:存储账户余额,仅作显示用。具体操作时,还是以数据库为准。 user key:用户 uuid 太长,对用户不友好,所以新建用户账户唯一 key。 user name:工作流中无法直接获取用户昵称,所以需要变量存储。 工作流迁移后,要逐个检查修改,里边引用的资源都需要重新关联。一定要仔细。 3.1.2 开始页面配置 20250610181633 rec 00:00 20250610181633 rec 00:00 20250610181633 rec 00:00 大部分都是迁移过来的功能,还有些细节待调整。 小技巧: 虽然组件的显示/隐藏通过表达式做的比较多了,但是遇到比较复杂的判断还是经常会调试好久。这个时候就把每个判断通过文本组件显示出来,看看过程中的判断值。 如图: 20250610182101 rec 00:00 20250610182101 rec 00:00 20250610182101 rec 00:00 20250610182101 rec 00:00 如果调试过程中发现有问题,就把每一块的代码如下,都显示出来。通过页面刷新就能看出变化。 下边代码是我最终控制“激活”按钮的表达式 总结:做多了自然就会有经验~这一次我应该是终于能弄明白了 以上,两天将 APP 框架搭了出来。基本上属于通用 app 框架,后边就是往里边添加具体的业务了。 4. 微信小程序 接下来研究研究发布微信小程序~~ 4.1 首次验证的 5 次审核: 晚上到家看到小程序审核结果出了,未通过,赶紧去看看~~ 4.1.1 第一次审核结果: 登录微信小程序后台,查看通知,如下: 1、为什么没呢? 因为微信小程序使用的数据库是线上环境,coze 平台、coze 商店都是用的测试环境。 赶紧将测试数据同步到生产环境后,重新提交审核。 2、为了保险起见,赶紧在小程序新增类目: 社交 社区/论坛。 同时将社区 字眼换掉。 (由于新增类目,为后边留下了坑,稍后再讲) 4.1.2 第二次审核结果: 挺快的,10 来分钟就出结果了。 赶紧体验下 8a6854b7430cc74da6df32576f7c8a3e 00:00 8a6854b7430cc74da6df32576f7c8a3e 00:00 整体 UI 效果基本一致,初次体验效果不错。 发现一些不兼容项: 1、无法获取用户信息(昵称和头像)。 毕竟不是一家子,还没有打通~ 2、不支持视频预览、不支持跳转外部链接。 跳转时会提示如下,继续访问也无效。其实是可以播放的,但是被小程序给拦截了(因为我看到了短暂的视频加载页面)。 3、不支持二维码识别。 以上是初步发现的问题,2、3 很头大,需要考虑下有没有合适的方案。 参考了下其他小程序“花店运营”,发现其中有个图片可以放大并可以长按识别。正好之前加过好友,赶紧问问怎么做的。 操作如下,可以点击全屏查看,并支持长按。 赶紧修改,重新提交审核。 此时收到了类目审核通过通知。 看了描述,心凉了。这不是还得再审核 7 天。坎坷中继续等待。 4.1.3 第三次审核结果: 等了预计半个多小时才有结果,审核失败。(还以为需要 7 天) 处理:增加了点击跳转事件。提交审核。 4.1.4 第四次审核结果 好吧,能够理解,不支持其他支付。 那我就先把这个功能隐藏掉。 (藏了个小心思,默认隐藏“充值”按钮,点击“复制”时,显示“充值”按钮。看看是否可以蒙混过去) 提交审核。 ⚽ 吐槽:你就不能一次性把所有问题都提出来,非要发现一个就拒绝。 吐槽:你就不能一次性把所有问题都提出来,非要发现一个就拒绝。 4.1.5 第五次审核结果 心凉了~~ 看来是蒙混过关,微信平台审核通过了,于是自动触发了 网信部门的审核。看来真要等待 7 天了。。。 以上,初版小程序发布了,可以先一放了,继续做功能~~ 第三天:第一个视频模板制作 1. 整理模板数据 先找几个视频模板,按表格标准整理好,然后开始调整具体的工作流。 2. 第一个模板制作 2.1 先以简单模板,打通流程,制作标准框架。 节点名称我都改说明了,暂不做过多解释。 2.2 简要说明 正常来说工作流返回的是草稿地址,可以通过剪映小助手下载后通过剪映进行二次编辑。 但是对于产品用户来说,肯定是直接要合成后的视频就好。 所以最后增加了云渲染节点(gen video),可以通过云端渲染,最后直接返回视频。(需要开通 SVIP 服务) 2.3 工作流结束返回: 草稿地址:https://ts.fyshark.com/ /cozeToJianyin?drafId=https://video snot 12220.oss cn shanghai.aliyuncs.com/2025 06 11/draft/5d39221b 57f0 47ff 8a11 431470203003.json 视频地址:https://ts api.fyshark.com/api/get video/5d39221b 57f0 47ff 8a11 431470203003 草稿地址也可以展示给用户,方便有需要的用户进行二次编辑。 视频地址是一个异步任务接口: 异步合成前返回: {"code":201,"message":"等待中,一般等待 10 分钟左右","status":1}(有可能不需要等待,直接渲染) {"code":202,"message":"渲染中,一般等待 2 分钟左右","status":2} 异步合成后,直接返回视频地址或者视频资源。 异步合成前返回: {"code":201,"message":"等待中,一般等待 10 分钟左右","status":1}(有可能不需要等待,直接渲染) {"code":202,"message":"渲染中,一般等待 2 分钟左右","status":2} 异步合成后,直接返回视频地址或者视频资源。 2.4 思考: 1、需要在异步任务合成成功后,获取视频资源,通过 OSS 插件转存云端。 2、需要制作一个子工作流,通过 http 插件循环读取异步任务的结果。 (注意:这两步功能最后都被舍弃,仅供参考) 2.5 制作子工作流 循环读取接口返回结果 基本逻辑如图,就是隔 10 秒读取一次,直至读取成功,返回视频地址。 发现问题: http 插件读取不了视频接口地址,报错,还在研究中。同时询问服务方有没有相关的接口说明文档~~ 尝试: 1、通过 trae 写代码请求地址,直接返回视频文件。 2、通过 API 访问工具,调用返回如下: 看来通过 coze 的 http 插件很难获取视频链接了,考虑是否制作个插件。。。 一开始我也没搞明白什么问题,后来直接问 deepseek,给了原因,如下。 2.6 制作异步视频合成结果查询插件 我们先来问问 Deepseek: 通过 Trae 运行代码,结果可行 那就开搞吧,将代码封装成插件,供工作流调用~ 以下是 Trae+ds3 给的代码,直接用即可,都不需要用工作流了,直接代码封装了循环查询功能。 要求修改代码,匹配 Coze 插件格式: 最终代码如下: 一次性通过,点击发布,投入使用。 2.7 使用插件循环等待,直到获取到视频结果 修改工作流,曾加两个插件,直接先运行看效果。 运行成功,并上传阿里云 OSS。 至此,基本功能已经完成,接下来还要完善: 1、异常情况处理、提示。 2、过程消息输出,方便用户查看进度。 第四天:第一个视频模板集成测试 1. 第一个模板工作流优化 1.1 目前流程 1.2 思考 1、异常情况处理、提示。 2、过程消息输出,方便用户查看进度。 3、图片生成节点经常会出错,生成失败,要增加重试机制,暂定重试 3 次。 4、是否有可以共通的功能,封装成工作流。 5、合成视频要存储视频表。 1.3 视频合成任务相关操作 1.3.1 视频表相关操作 1、视频生成工作流开始,要插入一条视频创建记录,进展为“任务已开始”,状态为“进行中”。 2、大模型文案生成,进展为“文案已创建”。 3、音视频素材生成,进展为“音视频素材已创建”。 4、草稿保存,状态为“草稿已保存” 5、云端渲染完成,状态为“云端渲染完成” 6、OSS 转存完成,状态为“云端保存完成,创建成功”,状态为“已完成”。 7、中间过程有异常导致工作流失败,状态为“失败”。 以上,也可以通过数据库的状态,来大致判断失败原因。 app video 表增加两个字段,用于存储过程和结果。 同时考虑这个功能是否要做成工作流,方便调用。 1.3.2 根据模板编号,创建 video id 和 video name 添加代码节点生成,直接让 DS3 来写。 粘贴到代码节点,一次运行通过。 这个代码节点很通用,虽然只有一个节点,可以封装为子工作流,为了方便后续其他工作流调用。 还一个好处是:如果命名规则改版,可以只改工作流即可。 1.3.3 将更新操作封装为子工作流,支持所有过程中的记录更新。 注意:需要验证某个更新字段不传参,是否不会更新对应字段。 注:这里有问题,详见第五天会进行改造。 1.3.4 模板工作流试运行 先看下工作流全景 试运行 发现数据库存储的 video id 为 null,出问题了。去对应节点查看结果。 查看子工作流运行结果,貌似没问题。插入成功了,但是 video id 字段没成功,怀疑是将字段属性由 int 改为 string 造成的。 关掉页面重试~~ 20250612115834 rec 00:00 20250612115834 rec 00:00 20250612115834 rec 00:00 20250612115834 rec 00:00 果然是类型造成的,但是怎么改呢。当这种情况,删除节点,重新引用新的就可以了,如视频。这种在 coze 平台引用不同步的情况,经常会遇到。 1.3.5 运行通过,如下: 页面还没适配,就先盯着数据库看状态变化。 20250612122322 rec 00:00 20250612122322 rec 00:00 最终视频地址如下: https://qdrsw ai.oss cn beijing.aliyuncs.com/coze/video/1101 20250612 fHTKCE.mp4 1101 20250612 fHTKCE 00:00 1101 20250612 fHTKCE 00:00 1.3.6 中间关键节点增加异常判断: 看似复杂,只要逻辑清晰其实就不复杂了。 将关键节点异常情况通过消息提示并且存储数据库,方便后边页面使用。 1.4 总结: 标准模板 优化完后的模板工作流流程图如下,后续模板都会按此模板进行内容变更。 记得存下档,避免不必要的丢失~ 输出结果示例: { "msg": "创建成功", "status": true, "video draft url": "https://ts.fyshark.com/ /cozeToJianyin?drafId=https://video snot 12220.oss cn shanghai.aliyuncs.com/2025 06 12/draft/534c1b69 643d 4015 a96a 5ddff769cee7.json", "video url": "https://qdrsw ai.oss cn beijing.aliyuncs.com/coze/video/1101 20250612 LeWpwT.mp4" } 重点改造说明: 1、增加了数据库的相关操作,从开始的新增,到中间过程的状态更新,到结果的保存。 2、封装了两个子工作流:1:template sub insert video 新增创作记录;2:template sub update video 中间过程状态数据更新。 3、增加了文生图的重试机制,尽量避免资源紧张性异常影响整个过程。 4、增加了视频合成过程中重要节点的消息提示输出、异常提示输出,用于在引用页面显示。 5、注意工作流命名规则,方便后期管理工作流。 6、注意节点排放位置、排序,如果上边的工作流使用了 自动排版,将不忍直视。。。 以上,第一个模板工作流改造完成,开始去做页面适配~ 2. 页面适配 2.1 简单页面搭建,先将流程跑通 关联工作流,运行,报错~~ 查看工作流日志,找到错误节点,如图: 终于还是这里超时了,这里是获取云端视频渲染任务的插件,之前还担心如果超过 3 分钟会不会触发超时,果然触发了。 coze 平台关于单独插件,有 3 分钟超时的限制。我在插件里设置了循环,如果超过 3 分钟就会触发超时~ 解决问题: 1、将插件里的循环机制去掉,或者设置最长 1 分钟的超时机制。 2、写子工作流,用于循环调用插件节点去查询。 2.2 修改插件代码 插件源码粘贴到 trae,直接交给 trae+dsv3 进行修改。 修改后的代码,粘贴回插件,修改下入参、出餐,直接运行,通过。 发布插件。 2.3 子工作流,循环查询渲染结果 名称:util get video task result 运行通过后,替换工作流中的插件。 直接在页面运行测试~~ 20250612174316 rec 00:00 20250612174316 rec 00:00 20250612174316 rec 00:00 20250612174316 rec 00:00 报错了~好吧,还是先看看原因~ 这里有问题,子工作流没有经过测试,还是不行哈~~ 又是选择器关于空字符串的判断问题。。。处理下。 调整下选择器的优先级,并增加字符串长度判断。 20250612180052 rec 20250612180052 rec 运行~ 功能跑通~ 接下来就是页面功能了~~ 2.4 页面功能优化 一点点调整,细节需要慢慢打磨~ 20250612194849 rec 00:00 20250612194849 rec 00:00 20250612194849 rec 00:00 20250612194849 rec 00:00 关于实时进度的提示: 实现方式就是将所有的中间输出消息输出,需要注意换行。 如果连续多个,只有一个可能出现,那么这几个输出之间不需要换行。 今天基本到这,后续要处理的有: 1、这一个页面尽量能兼容所有类型的模板。 2、需要一个总的模板制作工作流,进行分发,根据 template id 执行具体的工作流。 3、考虑增加一些用户可自定义的元素,比如片尾视频、音色、语速? 第五天:我的作品页面搭建 待办事项: 创建一个任务后,返回继续创建第二个的情况下,多个任务同时进行中是否会有显示冲突? 同上,如果视频列表工作流在多个页面使用,是否会有冲突? 搭建我的作品页面,打通创建、记录、查看。 创建第二个模板。 视频表要保存主题,用于在我的作品页面显示,用于区分同一个模板视频。 1、这一个页面尽量能兼容所有类型的模板。 2、需要一个总的模板制作工作流,进行分发,根据 template id 执行具体的工作流。 3、考虑增加一些用户可自定义的元素,比如片尾视频、音色、语速? 1. 创建工作流:获取我的作品 1.1 思考: 1、先不考虑分页加载,后期量大再加,按时间倒序取 100 条。 2、可以和视频列表 app get video list 工作流共用。 1.2 改造 app get video list 工作流 2. 页面:我的作品 奇葩的问题,我就想共用一个工作流,结果不知道哪里出了问题,工作流的字段识别不了了,之前的页面也不行了。 又是平台缺陷。 平常心~~ 明明找不到属性、报异常,不识别,但是还能加载出来预览,奇葩。 那就盲写吧,直接运行看结果~ 今天结束时该问题已解决 都加载出数据了,还是报异常。 我有尝试过了,复制新的工作流,然后首页、视频列表页好了,我的作品也还是不行。 先不管了,暂不影响,继续~ 2.1 初步搭建效果如下: 细节: 1、增加“刷新”按钮,让用户可以在这个页面刷新实时进度。(实际是读取的数据库的最新状态数据) 2、时间 我用之前的方式发现比毕竟时间晚 8 小时,然后又不支持复杂的 js 表达式。所以简单些,直接处理字符串。 3、结果:分为 成功、失败、进行中,不同颜色区分。通过表达式控制 3 个组件的显隐。 4、共享:点击切换,执行工作流,更新视频表。 但是操作体验性不好,考虑还是封装互斥按钮组件。 先直接按钮点击吧,分享之后就置灰。 TODO :有个缺点是分享后,不能自动更新状态~ 这种效果体验会好些~~ 2.2 整体试运行: 20250613124038 rec 20250613124038 rec 2.3 流程走通,发现了些问题。 1、点击分享时,更新数据库,将进度字段 设置为 null 了。 通过查看日志发现,没有传参的设置未 null 了。不管传看来还是要区分处理。 在工作流里直接执行,不传会被解析为空字符串。 改造工作流判断: 2.4 细节: 1、选择器里 认为 false 也是 null,不能这样写。 这算是平台的缺陷。 2、发现一个规律: 如果 update 的前后内容一致,则返回的结果 rownum 是 0 。所以不能根据 rownum 的结果判断是否成功。 2.5 思考: 1、分享更新工作流,可以返回最新的数据状态。然后进行指定 UI 更新。 ——更新的是某一个 item ,如果关联工作流则会导致所有 item 都会关联。 如果做不到区分,则不可行。 2.6 突发异常 改着改着,突发 FDL 错误,没有任何提示,崩溃了,询问官方支持中~~ 就从 视频列表的 item 字段不识别开始,总感觉是哪里资源存储有问题,从面上已经看不出什么了,可能是后台资源出错,得需要找官方支持了~ 再就是考虑重新复制一份应用,或许就好了。 复制了一份,发现仍有问题,只能在去看看具体工作流了,这次一试运行,就提示错误了,发现原因了~ 我开始将每个更新节点,都进行了异常处理,当有异常时,进行错误提示。结果不允许~~ 这里基本不会有问题,就取消异常处理吧,正常了~ 2.7 页面优化了一些 2.8 关于 Video 引用字段不识别的问题发现 更换电脑、更换浏览器发现视频展示相关的 UI 引用还是不识别,并且 通过小程序体验版查看效果发现通过 video 的属性设置显隐不生效。 决定还是再去看看、分析下问题。 对比其它正常的工作流 发现不对劲,视频工作流结束字段返回的列表没有属性。。。 往前排查~ 由于是增加了 我的作品 分支后出现的问题,所以把 这个分支去掉,竟然有属性了~ 原来如此,应该是“我的作品”数据库节点返回的字段与其它节点不一致,导致聚合变量里的数据结构不一致,所以就没识别出来~ 将所有节点都查询所有节点后(字段先后顺序不影响,虽然有些字段无效,但影响不大),就可以了。 看页面,