现在,我可以在微信里画小姐姐了
“
大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的全指南,再比如一些限时福利,错过了就是错过了。
所以建议大家加个星标,就能第一时间收到推送。👇
关于 RPA 自动机器人的教程,咱们已经结结实实的出了两篇了——
一篇是利用 RPA 工具,在 Discord 上,根据已有的 Prompt 表格,自动跑 Midjourney 的文生图👉我睡觉的时候,电脑画了一夜小姐姐
另一篇是利用 RPA 工具,自动去 C 站上爬取模型下,网友们分享的例图,以及 Prompt👉手把手教会你怎么爬涩图
如果把 RPA 工具比成搭积木的话,操作很简单,但教程写起来确实费劲,尤其是想让小白也看懂,问题不单单出在可能牵扯代码,而是拆分逻辑,并和大家讲清楚这事比较难。
好在两篇下来,评论区的反馈还不错,只要打开思路,学学怎么搭积木,相信大家都能有收获。
自从玩上 Stable Diffusion 后,每天守在电脑前的时间估计得多一俩小时,但一直坐在电脑前我这老腰有点扛不住。。。
加上身边朋友也想玩,却少了硬件,也搞不懂那么多参数,最后都是让我代劳,一来二去,就让我有了个想法,有没有机会用更简单的方式,远程控制本机呢?
先提炼一下需求:1、不用坐在电脑前;2、尽可能无成本让小白也能玩上 AI 绘画。
基于第二点,让我暂时弃用了远程控制工具,不过上周的最后一篇文章,咱们分享的那个实时录屏工具,给了我新思路——
不如以微信群聊做中转,用 RPA 工具监控群消息,手机往群里丢一条提示词,就能让电脑自动跑图。
换句话说,咱们用微信 DIY 了一个简易版的 Midjourney,效果如下:
而电脑端这边,完全是虚拟环境下跑的,甚至不影响我接着写稿。
因为是用 RPA 工具实现的,所以代码量极低极低,小白也能无门槛复现今天的操作。
这不,第三篇 RPA 教程不就来了吗。
第一步:获取群消息
说起自动化,或许大家想到是全自动,比如自动打开 SD 并访问 WebUI,自动打开微信,并找到群聊等等。
用「运行或打开」的指令启动 SD 整合包和微信就能实现,打开软件后再用「点击元素」的指令模拟操作就好。
这一块不做太多的介绍,我们重点还是放到实现逻辑上来,即获取群聊消息。
我这里实现的思路简单粗暴,就是把群聊窗口拎出来,让 RPA 去监控这个窗口里的文字消息。
所以先要做的,是用「获取窗口对象」指令找到群聊窗口,我是用群名定位的窗口,然后起一个能看懂的名字,方便后续操作时调用。
找到窗口了,就该捕获群里的文字消息啦,「获取相似元素列表(win)」指令,操作的窗口是之前那个自己起的名字,操作方式是获取文本内容,最后起个名字把群消息给保存一下。
至于如何捕获?「去元素库选择-捕获新元素」,然后在群聊窗口里选择文字消息,看过前两篇文章的小伙伴应该对这操作很熟悉了,影刀捕获模式下的红框,选中文本即可。
至此,群里面的文字消息就都搞定了。
第二步:判断消息
为了实现群消息监控的效果,我们最后肯定是让脚本循环获取这个群消息的,即「获取相似元素列表(win)」这一步,是要扔到「无限循环」指令中的。
但你想啊,在这个无限循环中,群消息可能是多样的,有可能是空白的一条消息也没有;也有可能是就这么一条消息,每次循环都是同一条消息。
解决这个问题的方法可以是多样的,因为每次循环都抓取到了群消息,所以我们可以拿上一次的群消息与这一次的群消息做条件判断。
即如果有消息,且和上一次循环抓取的消息不一致,证明有新消息的传入,那就可以拿这个新消息去作为提示词生图了。
当然,不用所有的事情都交给脚本,条件判断的依据也可以是特定的锚点,一个数字「0」也好,「任务开始」四个字也罢,怎么都可以,不过既然是微信,我这里选的锚点是「@」。
也就是说,只要当这个群消息中有「@网黑哥」的字眼时,默认的上一条消息就是 SD 需要的提示词。
所以在获取群消息后,再跟一个「IF 多条件」的指令,如果判断通过,再让 SD 开始跑图,不通过就这么循环着。
至于具体的判断依据,看指令内容,符合以下全部条件时再触发,条件分别为:1、抓取到的消息数不为 0;2、抓取到的最后一条消息包含@网黑哥的字眼。
为啥一开始我说代码极低,而非是 0,就是因为整个脚本为数不多的代码都在处理群消息这了。
len(消息_list) 是为了提取出群消息的数量,进而判断消息数不为 0。
消息_list[-1] 是为了获取最后一条群消息,进而判断有没有触发@网黑哥的字眼出现。
注意,咱这个脚本机器人并没有考虑多个成员同时发消息的问题,所以在获取群消息时,只抓取了文本消息,其中并没有包含发消息的人是谁。
至于你说 RPA 工具能不能实现,肯定是能的,抓到消息人和消息内容,再去做判断,但实话实说复杂了好几步,不利于小白学明白,所以这里暂略。
这里实现的,是只要满足了有群消息,且群消息最后一条是@网黑哥,就能自动跑图的功能,面向的也是群里单个人发出请求,自动返回给图的思路。
整体操作都是一条线捋下来的,想扩展下去,就需要有点数据结构的基础了。。。
第二步:自动开始跑图
有了提示词,操作不就简单起来了嘛,先去 SDWebUI 上瞅瞅,提示词放到输入框,生成下面第一个按钮可以一键导入提示词包含的内容,最后生成。
也就是前面的 IF 判断下面,扔三条指令即可,「填写输入框」、「点击元素」、「点击元素」。
第一个指令「填写输入框」的输入内容,就该是群消息的倒数第二条内容了。
注意,SD 不是支持很多参数嘛,包括负面提示词在内,尺寸、种子之类的,其实都可以通过下面这样的文本格式一键导入,红色的是咱们可以修改的部分。
但我测试时发现,最后一行参数那里,必须要有三个及以上参数,才能一键导入,这里稍微注意一下。
玩 SD 多了,你对这样的输入指令肯定不陌生,但万一用这个脚本的人是个对 SD 一窍不通的小白呢?
为了妥协这一点,我干脆去掉了第二天点击一键导入按钮的指令,换成了写死的通用负面提示词。
这样就可以做到,哪怕你对 AI 绘画一无所知,只要用英文输入一条你想画的内容,就可以自动产图的功效。
至于其他参数,复杂点的方案是,像前面做判断一样,搞个锚点出来,输入「1」就改尺寸,输入「2」就改种子,粗暴点的方案是,我直接后台给它配好了。。。
那图片生成了,该返图了吧,这个简单三条指令——
1、「获取文件列表」,SD 生图的目录都是固定的,按时间增序排列,最后一张图就是刚刚生成的。
2、「将文件添加到剪切板」
3、「键盘输入」,模拟「Ctrl+V+Enter」的方式,把剪切板的图发送到群里。
至此,生图、返图的效果就都搞定了。
等等,你还记得吗,返图后群聊消息中最后一条文本消息还是@网黑哥,所以下一次循环中还会根据同样的提示词再生成一边。
怎么处理呢?可以返图后,再发送一条「任务已完成」的文本,也可以模拟鼠标操作,把群聊消息清空。
第三步:虚拟环境运行
现在 RPA 机器人就都搞定了,怎么在虚拟环境中运行呢?简单,在进入脚本前,右键菜单里有个「虚拟桌面中运行」的选项。
然后脚本会在该虚拟环境下运行,因为我把自动启动 SD 和微信的指令都关了,所以在虚拟桌面里,先暂停运行中的脚本。
手动启动整合包,选择浏览器访问 SDWebUI;登录微信,打开群聊窗口。
上一节也说了,对于 SD 跑图的其他参数,比如模型、步数、采样器、尺寸宽高、种子等等,我都手动改过了。
然后在虚拟桌面中运行脚本。
这个我们 DIY 出来的机器人,就开始监控群里消息了,当有提示词被发出来,就能自动跑图啦。
我知道肯定会有人会关心,这么操作会不会影响正常系统资源占用,这是开启脚本监控状态下的资源占用:
只能说,这个简单的脚本,对于资源占用来说,影响不大。
结语
其实这篇的难点,就是能不能理解咱为啥要搞个无限循环,能不能理解咱为啥要搞个 IF 判断。
至于脚本来说,都是最基础的操作,像搭积木那么一点点攒起来的,因为有了前两次利用 RPA 工具搭建机器人的经验,所以这次捋清逻辑后,花了不到 20 分钟就搞定了。
现在我可以趴在床上,用手机输入指令抽盲盒,老腰的问题搞定了;也可以拉个朋友进来,用这个低配版的 MJ 去玩 AI 绘画。
RPA 工具好就好在,介于有代码和无代码之间,为醋包饺子学习一门编程语言或许很难,但像玩软件一样,搭个积木要简单的多。
唯一需要注意的,大概就是不像 MJ 那样,SD 并不禁止瑟瑟,小心微信群炸了吧。
PS:常规宣传一下咱们有更多更快的一手 AI 玩法的星球,欢迎加入。
对了,ChatGPT 这周开始就要对 Plus 用户开包括联网在内的诸多插件了,星球这边对接的有稳定代充渠道,星球小伙伴代充价是 150 元,公众号特惠价 160 元,有需求的小伙伴可以扫码加小姐姐的微信。
如果是星球的小伙伴,请备注:星球编号+昵称;
如果是公众号的小伙伴,请备注:公众号+Plus 代充。
电报群:wldxhdzq QQ 群:729224889 网站:wldxh.com
微信扫码关注该文公众号作者