简述
一个可以录制、自定义浏览器行为、通过可视化工具定义Workflow的浏览器插件。可以理解成浏览器的RPA机器人,也有点像直接对浏览器上的行为进行编程,可以打开Tab、切换Tab、输入/抓取文本、点击按钮、批量下载、批量操作等等。 吸引我的点: UI优美*(一看就是有UI和UX打磨过的),功能强大,使用看上去很简便。对于流程(Workflow)、"块"(Block)、"线"(Line)的概念定义也值得学习,条件区块中的'AND'和'OR'设计也值得拆解
我用它做了一个把自己小红书无人点赞的笔记批量隐藏掉的功能。(官方没有提供,搜索了一下感觉有类似需求的人还蛮多的,之后还可以拓展条件为阅读量低的等等。) 除此之外,还做了一个复制微信读书Cookie到Github Action变量的功能。我使用的Weread2Notion项目会使用Github Action跑脚本,每天把我的阅读记录同步到Notion中,但有时候Cookie会失效。手动更新麻烦而且容易出错。使用Automa可以轻松地自动化这一系列操作。 用它还可以执行更多、更复杂的RPA功能,值得探索~
使用的感受是非常强悍 ,设计好流程,完全可以使用自动化的工作流来代替琐碎、重复、跨越多个网站的工作。一切可重复性的操作交给机器来执行,既节约时间,又减少出错。看到不少人已经将它运用到运营工作中了。
如何开始
前往Automa官网,下载并安装
打开插件(可能因为安全策略,浏览器会自动关闭它。记得打开)
从右上角点击插件图标,开始使用
值得注意的是原本的录制⏺️按钮无法再直接从插件弹窗中快速触发了,得从Dashboard中触发。
点击🏠图标,进入Dashboard,可以进行Workflow的编排。也可以直接使用Marketplace中别人已经编排好的流程。
基础概念学习
每一个自动化行为是一个Workflow(工作流)。工作流由**块(Block)**和线(Line)构成。
Automa 中有六类块
- General : Perform a general action in the workflow, like making an HTTP request or executing another workflow.
常规:在工作流中执行常规操作,例如发出 HTTP 请求或执行另一个工作流。- Browser : To control the browser.
浏览器:控制浏览器。- Web Interaction : To interact with the active tab of the workflow. Before using blocks in this category, you need to use a New Tab or Active Tab block.
Web 交互 :与工作流程的活动选项卡进行交互。在使用此类别中的块之前,您需要使用新选项卡或活动选项卡块。- Control Flow : Add logic to the workflow.
控制流程:向工作流程添加逻辑。- Online Services : Services that integrate with Automa.
在线服务:与 Automa 集成的服务。- Data : Modify or manipulate workflow variables or tables.
数据:修改或操作工作流程变量或表格。
支持的配置项: 1⃣️ 执行的操作 2⃣️错误处理
块执行支持如下错误处理:
- 1. Enable : Enable the error handler for the block
Enable :启用块的错误处理程序- 2. Retry action : retry the block execution if an error occurs on the block
重试操作:如果块上发生错误,则重试块执行- 3. Throw error : if selected, the block will throw an error
抛出错误:如果选择,该块将抛出错误- 4. Continue flow : if selected, the workflow execution will continue
继续流程:如果选择,工作流程将继续执行- 5. Execute fallback : if selected, the workflow will continue to the block that connects to the fallback output
执行回退:如果选择,工作流程将继续到连接到回退输出的块- 6.Insert data : insert data into the table or variable (个人理解: 为人工操作或者后续其他操作留下空间) 插入数据 :将数据插入表或变量中
块之间通过Line来连接。 可以进行线的连接、删除、自定义外观等。
我认为有趣的特性
Trigger - ContextMenu - selectionText 将Trigger配置为Context Menu类型,并支持将选中的文本作为变量,触发工作流。
后台运行 将"set active tab"取消,让其在后台运行
节点支持写JavaScript代码! 通过内置 automa 函数,读取网页内容、读写变量
条件与循环、各种条件对应的路径定义
可以读取CSS元素的Attribute Value
看视频,学基础操作和应用场景(官方示例)
官方给出的4个教程视频挺不错的,加起来不到一个小时,强烈推荐观看。下面是我总结的示例场景。
!example 右键选择内容,翻译并从页面alert 1⃣️触发器 Trigger 设置成Context Menu,支持将选中的文本作为变量输入到后续块中 2⃣️ New Tab 打开谷歌翻译页面 3⃣️ Form 块,输入内容,等待,获取结果 4⃣️ Javascript 块,alert结果
有了"沉浸式翻译"插件,翻译选中内容不再是刚需,但举一反三,我们完全可以做到:选中内容-发送给AI-获取结果-回显到网页上,或者发送摘录的内容到自己的笔记中。
- 谷歌搜索小猫咪,并逐个保存查询到的元素
1⃣️打开谷歌图像搜索页面
2⃣️ Form - 文本域输入,Press Key - Search
3⃣️ Loop - 根据CSS 选择元素来Loop (注意:条件区块的其他块,也应该连接到Loop Break点中!)
4⃣️通过"下载"区块,下载图片。
快速出爬虫,这比Python代码还要简单不少,唯一要考虑的可能是别被反爬机制反制了。
- 做一个WhatsUp 聊天机器人Bot 1⃣️打开聊天页面 2⃣️ Loop 聊天窗口 3⃣️ 根据CSS属性做Condition,如果最后一条信息是hello,则进行回复"Hello Again" 4⃣️ Trigger 是定时触发,并使用fixed Delay
- 读取谷歌Sheet中的内容,批量发送邮件
1⃣️将Google Sheet的权限分享给Automa账号
2⃣️ Loop Google Sheet数据(可以Preview)
3⃣️ 打开邮件页面,Form 块 - 填写收件人、内容、发件人信息,并点击发送。
很适合运用到运营等工作领域中。由于工作流中支持接入HTTP请求和自定义的数据源,我们可以结合AIGC,做批量生成内容后的批量发布、批量运营。唯一风险点就是可能会被平台风控(很多时候不出批量功能不是不能,而是不想)。
我的工作流
1.批量隐藏小红书笔记
地址: automa.site/workflow/PO...
思路讲解
- 打开小红书笔记管理页面
- 遍历元素,将上限设置得比较高,并设置Load More Elements(重要!页面默认懒加载,只加载前10条)
- 获取笔记的"喜欢"数据(通过CSS选择器读取)
使用Automa提供的元素选择器进行拾取。值得注意的是,要将拾取到的路径中的父元素路径替换成 {{ loopData.notes }} ,这样每次读取的都是当前循环到的这条笔记的"喜欢"数量。同理也能拿到阅读量、评论、收藏、分享数据。
- 根据自定条件判断
这里的交互设计很优秀。我们可以看到它的AND 和OR条件是如何设计的:
我这里只设置了一个条件,就是------没有人点赞。(可以自己调整)
条件块支持多个Path,可以理解成不是if else而是switch case。注意在循环内,每个path都应该链接到循环断点。
- 符合条件的编辑权限成"仅自己可见"
没什么好说的,都是使用录制功能完成的。
- 下拉,强制列表刷新(不然读不到元素!) 每次遍历后都强制滚动页面,让页面元素加载
递增是勾上的,不然是每次都滚动到同个位置。
- 循环结束
亲测可用~
2. 复制微信读书Cookie到Github Action变量
地址: automa.site/workflow/-r...
这个工作流相对来说更简单,唯一值得说的可能是需要配置一个全局数据,这样可以让别人也能用。
- 打开微信读书(需要是登录好的)
- Javascript代码块,读取Cookie,并放到变量里去
- 打开Github Action Variable配置页面
地址形如:
这里就是globalData的作用了。
页面是这样的
- 使用Form 填写变量值
- 点击提交
我的工作流做到这里就停了,接下来会让你填写密码确认。当然可以也把密码填写一并做进去,看个人的偏好了~
总结
Automa的设计思路和交互都很棒!虽然可能出于安全的考虑(这玩意让爬虫又好写了很多),有被封禁的风险,但它带来的效率提升的前景是毋庸置疑的。
自动化一向让我痴迷。一切可以抽象出来的操作,最后都可以交给自动化来执行~只要花一次配置的时间,就可以一直使用,并且减少出错的可能,何乐而不为呢?