利用Coze工作流生成文章封面(一次不太成功的尝试)

684 阅读6分钟

一、铺垫

因为平常写文章比较多,并且微信公众号是强制你要有文章封面的,虽然封面可以在一些图片网站,比如Unsplash上寻找,但现在是AI时代,而且AI绘画的技术也比较成熟了,所以自然是希望AI为我们打工了。

目前AI绘画比较出名的有Stable Diffusion、DALLE和Midjourney等,Stable Diffusion 是开源免费的,但需要你的电脑有一张显卡,DALLE 和 Midjourney 则是需要付费。

综合考虑,我最终选择白嫖Coze的文生图功能,它目前是支持 Stable Diffusion 和 DALLE 插件的。

二、创建AI Bot

我们先从最简单的 AI Bot搞起,具体的创建流程这里就不赘述了。

这是我最初创建的AI Bot,主要用到了三个插件,分别是 Notion 和前面提到的两个文生图插件。

loading

用Notion插件是因为我的文章是用它管理的,我的想法是直接输入一个Notion链接,让AI读取里面的内容,并最终用文生图插件生成封面。

使用这个插件需要先授权才能读取到内容

loading

起初这个Notion插件还是成功运行的,并生成了几张图片,但后面再运行的时候就报错了

loading

三、创建工作流

上面的AI Bot 存在两点问题,一是Notion插件不稳定,这个我后续更换成了知识库的形式;二是你每次生成封面的时候都得输入一遍提示词,这对于想偷懒的我不太能接受,所以我就想创建一个工作流提高这个步骤的效率,并顺便熟悉下Coze的工作流如何使用。

3.1 工作流基础知识

第一,每个工作流都有一个开始节点和结束节点,最后一个节点必须是结束节点

loading

第二,节点之间可以相连,从而下一个节点可以获取上一个节点内容,或者上上节点的内容

loading

第三,开始节点和结束节点之间可以嵌入基础节点、插件、其他工作流

loading

第四,如果使用条件节点,也就是If-else,else节点必须也得连到其他节点,就是说else也得有结果,不能空着

loading

不然你可能会收到类似的错误

loading

第五,如果想要完整地调试整个流程,可以点击右上角的 Test Run 按钮;如果想单独调试某个节点也可以,点击该节点上面的启动图标即可(某些节点如条件节点是不支持的)

loading

调试之后,可以点击旁边的Show Result查看结果(这点做得真不错,很方便)

loading

第六,工作流发布

请注意,工作流发布之后才能被自己和他人所使用,而且如果你再次对工作流进行修改后,必须 Test Run 成功后才能再次发布。

详情参考官方文档:Coze - Coze 文档中心

3.2 第一版工作流

因为是第一次使用工作流,所以也踩了一点坑,我一开始的工作流是这样的

  • 1.开始节点:传入 notion_link 参数
  • 2.Notion插件获取内容:Notion插件根据 notion_link 链接获取内容
  • 3.获取图片宽度:这是因为我想指定图片宽度
  • 4.获取图片高度:这是因为我想指定图片高度
  • 5.调整图片宽高:这是图片宽高是从Bot里面提取的,不一定存在,所以需要用代码调整并赋予默认值
  • 6.LLM输出提示词:大模型根据第2步的内容输出提示词
  • 7.SD文生图:根据第5步得到的宽高和第6步得到的提示词生成图片
  • 8.结束节点:输出第7步的结果

这里需注意的是,SD有两个版本,如果是v1.0 版本,只支持指定尺寸;如果是 v1.6 版本,则宽高尺寸范围在 [320, 1536] 之间,默认是512。(默认使用 v1.6 版本)

loading

而且这里还发现Coze一个做得不是很好的地方,就是我有个参数原本不应该有输入,但是不小心选了,这时候无法清除,只能替换为其他输入参数(比如Seed不应该接受width参数的输入) image.png

但这个版本有两个问题,一是Notion插件不稳定,用过一次后就无法再获取内容了,提示 “Server Internel Error”,二是 Stable Diffusion 生成的图片没有预想的好,文字很模糊,类似下面这张图,所以就有了第二版

loading

3.3 第二版工作流(最终版)

由于第一版的两个问题,最终改进后的版本如下:

  • 1.开始节点:传入 unit_name 参数,这是知识库Unit的名称
  • 2.知识库匹配内容:根据前面的 unit_name 匹配对应的Unit
  • 3.获取图片宽度:这是因为我想指定图片宽度
  • 4.获取图片高度:这是因为我想指定图片高度
  • 5.调整图片宽高:这是图片宽高是从Bot里面提取的,不一定存在,所以需要用代码调整并赋予默认值
  • 6.LLM输出提示词:大模型根据第2步的内容输出提示词
  • 7.DALLE3文生图:根据第6步得到的提示词生成图片
  • 8.结束节点:输出第7步的结果

这里也有几个注意点,第一是如果使用DALLE3,第3,4,5步其实可以略过,因为DALLE3不支持自定义宽高(我这里保留是方便后续修改)

loading

第二就是你在用LLM的时候,记得在提示词那里引用输入内容,不然LLM不知道你输入了什么内容

loading

四、如何使用上述工作流

为什么我在标题上说这是一次不太成功的尝试呢,是因为虽然这个工作流看起来能用,但是只能给自己用,不能给别人用(很尴尬,后面才发现的)

因为工作流里面的知识库其实就是个小型数据库,它适合的场景应该是获取某些特定的知识,而不是像我一样,只是为了分析总结生成提示词(如果后面官方能指定别人的知识库就很Nice了)。

我自己用的话效果如下(需要把文章先上传到知识库):

loading

如果内容不存在,会提示这个:

loading

如果想看我的工作流实现的朋友,可以在工作流搜索:EasyCover

loading

五、总结

虽然这是一次不那么成功的尝试,但好在也趁这个机会了解了Coze工作流的具体玩法,总体不亏。如果大家有什么好的改进想法,或者对工作流有什么不懂的,也可以下方留言!

注:原文链接,也欢迎关注 AI技术巫 公众号