Huginn:一个开源、自托管的 IFTTT
作为开发人员,我们没有时间或耐心处理日常任务。我们喜欢把事情做好,任何可以帮助我们自动化的工具都是我们关注的重点。
输入Huginn,一个类似于Zapier或IFTTT的工作流自动化服务器,但开源。使用 Huginn,您可以自动执行任务,例如查看航空旅行优惠、持续关注 Twitter 上的某些主题或扫描代码中的敏感数据。
最近一篇关于 Huginn 的帖子登上了 Hacker News的顶部。这激起了我的兴趣,所以我想看看它为什么如此受欢迎,它的全部内容以及它的用途。
Huginn 是如何开始的
我联系了 Huginn 的创建者Andrew Cantino,询问他为什么要启动它。
“我在 2013 年开始这个项目是为了解决我自己的痒——我想抓取一些网站以了解它们何时发生变化(网络漫画、电影预告片、当地天气预报、Craigslist 销售、eBay 等),我希望能够自动化对这些变化的简单反应。我对个人自动化感兴趣有一段时间了,Huginn 最初是我在那年圣诞节假期建立的一个快速项目。
然而,这个简单的圣诞假期项目迅速发展起来。
今天,Huginn 是一个社区驱动的项目,拥有数百名贡献者和数千名用户。 Andrew 仍然将 Huginn 用于其原始用例:
“我仍然主要将 Huginn 用于此目的:它告诉我即将到来的庭院销售、由于预报中的雨我今天是否应该带雨伞、很少更新的博客发生变化、Twitter 上的某些词飙升等等。我还发现它对于为我撰写的有关航天工业的每周通讯采购信息非常有用,称为The Orbital Index。”
但是,社区发现了更广泛的用途。因此,让我们看看 Huginn 到底是什么,如何设置它,以及如何使用它来自动化您的日常生活。
Huginn 的工作原理
Huginn 是一个基于 Web 的调度服务,它运行名为Agents的工作人员。每个代理都执行特定的功能,例如发送电子邮件或请求网站。代理生成和使用称为事件的 JSON 有效负载,可用于将代理链接在一起。可以安排代理,也可以手动执行代理。
入门
只需单击Deploy to Heroku按钮,即可轻松部署 Huginn。 Huginn 还支持Docker和 Docker Compose、在 Linux 上手动安装等多种部署方式。安装后,您可以使用众多可用的Agent Gems之一来扩展 Huginn,或者通过创建自己的来扩展 Huginn。
部署 Huginn 并登录后(检查 URL 的特定设置),创建新代理很简单,如此屏幕截图所示。该代理实时关注 Twitter 流。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--4o9e_raE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/of4xg1y4eaz3j5ndpjiy.png)
这是从 xkcd.com 提取最新漫画的现有代理。您可以查看代理的基本统计信息(上次检查、上次创建等)。选项字段显示代理的配置方式,包括用于从页面提取数据的 CSS 选择器。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--3Crb9GlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/d2rkvpdarzwnbezwrhmu.png)
场景
您还可以将代理组织到场景中,这样您就可以将类似的代理分组以及将代理配置导入和导出为 JSON 文件。您还可以使用称为控制器的特殊代理微调代理调度和配置。在这里,我们看到围绕“娱乐”主题构建的场景。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--1AbDJvyC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/5f1l3wb910htmlwzsc5h.jpg)
动态内容
最后,Huginn 使用 Liquid 模板引擎,它允许您将动态内容加载到代理中。这通常用于将配置数据(例如凭据)与代理分开存储。
在这里,它用于将来自 XKCD 源代理的 URL、标题和悬停文本格式化为 HTML:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--fHGMMl7W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/akuj27z7q2hfaa3c81yo.jpg)
为什么要使用 Huginn?
除了网络抓取之外,Huginn 还支持多种操作,可以允许一些真正复杂的工作流程。免责声明:许多网站不允许自动网页抓取。请务必查看您打算使用 Huginn 访问的任何网站的服务条款 (TOS)。
GitHub 页面中的一些示例包括:
-
留意航空旅行或购物优惠
-
在 Twitter 上关注您的项目名称,并在人们提及它们时获取更新连接到 Adioso、HipChat、Basecamp、Growl、FTP、IMAP、Jabber、JIRA、MQTT、nextbus、Pushbullet、Pushover、RSS、Bash、Slack、StubHub、翻译 API 、Twilio、Twitter、Wunderground 和微博等等。
-
在一天中的特定时间发送包含您关心的事情的摘要电子邮件
-
跟踪高频事件的计数并在它们达到峰值时发送短信
-
发送和接收 WebHooks
-
运行自定义 JavaScript 或 CoffeeScript 函数
-
随着时间的推移跟踪您的位置
-
创建 Amazon Mechanical Turk 工作流作为代理的输入或输出(Amazon Turk 代理称为“HumanTaskAgent”)。例如:“一天一次,请 5 人为一张有趣的猫照片;将结果发送给另外 5 人进行评分;将评分最高的照片发送给 5 人以获得有趣的标题;发送给最终的 5 人进行评分最有趣的标题;最后,在我的博客上发布最好的标题照片。”
让我们详细了解其中的一些用例。
精选提要
使用网站代理,您可以获取多个网页的最新内容,过滤和汇总结果,然后将最终内容作为电子邮件发送给自己。默认场景通过获取最新的 XKCD 漫画来演示这一点。这将创建一个包含漫画标题、URL 和悬停文本的事件,这些事件通过事件格式化代理呈现为 HTML。另一个网站代理同时从 iTunes 获取最新的电影预告片,然后将两个事件合并到一个电子邮件摘要代理中,该代理每天下午触发:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--AcvLQeFw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/5mpaspc89uql1jn6w8dj.png)
监控社交网络
Huginn 支持多个社交网络,包括 Twitter 和 Tumblr。这些代理可以监视来自其他用户的新帖子、热门话题和更新。
假设您生活在飓风多发地区,并且想要跟踪风暴的影响。使用 Twitter 流代理,您可以查看包含“飓风”、“风暴”等的推文,并将结果传递给峰值检测器代理。这会计算一段时间内的推文,测量标准偏差,并在检测到异常值时触发事件。您可以让此事件触发立即通知您的电子邮件代理。 Andrew Cantino 在他的博客上更详细地解释了这个用例。
价格购物
Huginn 是一款出色的在线购物工具。在购买最优惠的价格时,创建网站代理以在折扣和交易网站上运行每日搜索。使用事件格式化代理提取价格,然后使用变更检测代理将最后检索到的价格与当前价格进行比较。如果它较低,您可以提取项目 URL 并将其直接发送到您的收件箱。
安全警报
掌握安全更新是一个持续的过程。您可以使用 Huginn 查看影响您系统的 CVE 的国家漏洞数据库并立即通知您。如果您想过滤结果(例如只显示高优先级警报),您可以使用触发代理仅允许严重性高于某个值的结果。
高级用例
Huginn 带有一些强大的代理,这些代理大大扩展了它的功能,超越了网络抓取。
数据处理和验证
Huginn 可以读取存储在主机上的文件,使其成为有用的数据处理工具。假设您正在测试对代码库的更改,并且在提交之前,您想要扫描您在测试期间可能留下的任何敏感数据。您可以创建本地文件代理来扫描您的项目目录,将内容传递给事件格式化代理,并使用正则表达式来检测凭据、密码和类似字符串。或者,您可以使用 Shell 命令代理调用诸如 repo-supervisor 之类的实用程序,并在检测到匹配时触发桌面通知。
新闻编辑室自动化
Huginn 的第一个巨大成功是它被《纽约时报》采用以自动化新闻编辑室任务。在 2014 年冬季奥运会期间,Huginn 监控他们的数据管道可用性,并在颁发奖牌时发送通知。 Huginn 还会在新故事发布时通知记者,并在 nytimes.com 上的内容发生变化时更新 Slack 频道。您可以在 Huginn for Newsrooms 了解有关他们使用案例的更多信息。
结论
Huginn 是一个看似简单的工具,具有很大的灵活性。看看它可以做什么的最好方法是自己尝试一下。要了解更多信息,请访问https://github.com/huginn/huginn。
更多推荐


所有评论(0)