初学者向导

这篇文章来自与一个 Ruby 新手,适用于 Linux 系统。

备注: 在 Linux 系统上安装、运行 Huginn 比 Windows 上容易得多。如果你使用 Windows 系统, 请先安装 Linux VM ,比如 VMWare PlayerVirtual Box, 然后按照下面的说明进行操作。如果你使用Mac,请阅读这篇向导

这里也有一篇很长的安装向导 OpenSUSE 13.2 install guide

第一步 – 克隆仓库

安装 git,进入你的工作文件夹,克隆仓库。

git clone git://github.com/cantino/huginn.git

故障

如果你因为环境问题(不支持git协议)克隆仓库失败,在你的主文件夹的.gitconfig 文件内做以下改动,并重试。

[url "https://github.com"]
      insteadof = git://github.com

第二步 – 安装 ruby 和 gem

安装 ruby (推荐 2+,但是 1.9.3 版本也能使用) 和 gem。你可以手动下载并编译或者通过包管理器进行安装(例如 Mac OS X 的 homebrew 或 Ubuntu 的apt )。我们推荐使用 rvmrbenv。你还需要安装 MySQL 或 Postgres,同样也可以使用包管理器进行安装。

第三步 – 安装 rake 和 bundler

现在我们已经安装了 gem,我们再安装 ruby 任务构建工具—— rake 和 ruby gem 依赖管理工具—— bundler。如果你正在使用 rvm 或 rbenv,应该不需要做这一步。(译者注:bundler 需要安装)

gem install rake bundler

第四步 – 安装本地依赖

bundler 可以帮助我们管理依赖,确保你已经克隆了 huginn 文件夹,运行bundle 安装 Huginn 的依赖。(译者注:建议运行 bundle install

bundle

故障

如果你遇到像下面一样的错误,说明你安装 [mysql2][mysql2] gem 出现错误,继续阅读后面的信息。

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
  ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***

你必须为 [mysql2][mysql2] 安装一些依赖,运行下面的命令将在 Ubuntu 上安装依赖:

apt-get install libmysqlclient-dev
apt-get install mysql-devel

如果你已经安装好依赖,你可以通过命令 gem install mysql2 单独安装 [mysql2][mysql2],然后再运行 bundle

第五步 – 安装并开启 mysql-server

安装 mysql-server 并开启它(apt-get将自动完成开启进程)。

apt-get install mysql-server

第六步 – 快速开始的其他部分

本篇向导到此结束,READMEGetting Started 部分能继续帮助你。

本文由 Huginn 中文网 翻译并修改,已经获得项目作者授权,项目原文访问Novice Setup Guide

huginn 简介

Huginn 简介

Huginn 是一个用于构建在线执行自动化任务的系统,它可以监控网页变化、聚合第三方应用并且根据设定的触发条件执行自动化操作,你可以将它看作是一个可以运行在自己服务器上的 Yahoo!Pipes + IFTTT。该工具的作者为Andrew Cantino,Github 上的项目地址为 https://github.com/cantino/huginn/, 已经有上万的 star,而且该项目活跃度非常高,一直都有人在更新代码。

Yahoo!Pipes 是 雅虎提供一个信息聚合服务,可以用来烧制 RSS,该服务已于 2015 年 9 月 30 日完全关闭。

IFTTT 是 “if this then that”,意指『如果这样,则那样』,即如果一件事情发生了,则自动触发另一件事情。

huginn 的传说

项目名称的由来:在北欧神话中,奥丁的肩膀上坐着两只乌鸦,一只名叫 Huginn,一只名叫 Muninn。这两只乌鸦告诉奥丁他们的所见所闻,毫无遗漏。奥丁在黎明时派出它们,它们飞遍全世界然后在晚餐之前回来汇报,因此,奥丁能知晓很多事情。

Huginn 能实现的功能:

  • 跟踪天气的变化,如果监测到明天要下雨或下雪,就会发邮件提醒你:别忘了带伞哦!
  • 列出你关心的事项,并且当他们在微博上发生变化的时候自动接收邮件。(例如:如果你想知道全世界在“机器学习”方面发生的趣闻,那么 Huginn 可以监听微博上所有含有“机器学习”的条目,并且在发生尖锐的讨论时告诉你)
  • 监测航班行程和购物订单信息。
  • 在微博上关注你的项目名称,并且在人们提到它们时自动更新。
  • 抓取网页内容并且在它们发生变化时发送邮件给你。
  • 可以与 Adioso, HipChat, Basecamp, Growl, FTP, IMAP, Jabber, JIRA, MQTT, nextbus, Pushbullet, Pushover, RSS, Bash, Slack, StubHub, translation APIs, Twilio, Twitter, Wunderground, and Weibo等第三方服务连接。
  • 在一天中的某个指定时间发送通知邮件给你,告知你需要知道的事情。
  • 追踪高频次事件的数量,并且在出现突发状况时发送短信给你,就像“旧金山紧急报道”。
  • 发送和接收 Webhooks(网络钩子,Webhook 就是用户通过自定义回调函数的方式来改变Web应用的一种行为)
  • 运行自定义的 JavaScript 或者 CoffeeScript 函数
  • 追踪你的位置轨迹
  • 创建AMT工作流(Amazon Mechanical Turk workflows)代理的输入或输出。(Amazon Turk Agen

    被称为 “HumanTaskAgent” –人类任务代理)。例如,每天向5个人要一张有趣的猫的图片,然后将这些图片发送给5个或更多人去评分,然后发送评分数最高的照片给5个人并向他们征集有趣的标题,然后将这些标题发送给5个人让他们评出最有趣的标题,最后将最有趣的标题和图片发布到我的博客里。

Huginn 中的主要概念

与 IFTTT 通过 Recipe 一样,Huginn Agent 可以创建、利用事件,并沿着一条定向的路径来传播(事件流)。你能时刻把握你的数据的动态。

加入我们

加入我们的Slack 来共同讨论该项目(huginn-china),或者你可以加入原作者的 Gitter room

想用 Huginn 来帮助别人?我们鼓励所有形式的贡献!你可以贡献丰富的 UI 组件,或者制作一个新的 Agent 分享给大家,或者编写文档来指导那些对 Huginn 不太熟悉的人。或者,你可以挖掘或提出程序存在的问题,欢迎 fork 这个仓库,做出修正,并推送给我们。

【干货】如何高效地订阅微信公众号

作者 翔215

http://www.jianshu.com/p/582ad1400d6e

微信已然成了国内最流行的社交软件,甚至成了人们的一种生活方式,依托于这个平台的微信公众号自然是新媒体传播的最佳途径,是获取资讯的最佳场所,有很多优质的微信公众号都是值得订阅的。但是,在微信内订阅与阅读公众号文章的体验却是极差的,这个我想大家应该都是有目共睹的。

微信公众号订阅

本文会介绍大家几种订阅微信公众号的绝佳方法,相信总有一款是适合你的。为了衡量这些方法的优缺点,我会使用下面三个公众号进行测试:

  • warfalcon:刘洋老师的个人微信公共号,著名的博客写手,主要是分享一些关于学习以及生活的思考,粉丝较多;
  • 木西AlexanDENG:邓楠的个人微信公众号,著名的青年商业摄影师,主要是分享一些关于摄影的干货,在圈内粉丝较多;
  • MXPRESSO:一个好朋友公司的微信公众号,主要是分享一些关于咖啡与生活的文章,粉丝数不清楚。

1. 即刻APP

在聚合类APP里,我觉得即刻做得是最棒的。我是从2015年开始使用这个APP的,应该是最早的那批用户,从刚开始只有一些人工筛选的主题到现在用户可以自定义主题,即刻的功能越来越强大,我在之前的文章中就安利过多次。在3.0版本以后,即刻加入了自定义主题功能,用户可以通过APP提供的追踪机器人创建自定义主题(提醒),这个功能的加入让我对这个APP更加刮目相看,因为这个功能在别的APP中是找不到的。

即刻的追踪机器人

即刻提供的追踪机器人中就有公众号文章更新这个机器人,通过它就可以订阅微信公众号,创建一个关于公众号的自定义主题,微信公众号更新文章以后,就可以收到提醒,在即刻APP里阅读,而且创建的自定义主题还可以分享给其他人使用,通过审核后的主题还会被系统推荐给其他人使用。我测试了上面的三个微信公众号,都可以通过这种方式来订阅,如果你经常使用即刻的话,这种订阅方式是再适合不过的啦。

2. 轻芒阅读APP

轻芒阅读是另一款信息聚合类APP,就是以前的豌豆荚一览,现在已经从豌豆荚里分离出来了。在这个APP里可以阅读一些应用以及公众号的文章,使用体验很不错,高效且优雅。我搜索了上面的三个公众号,没有搜索到MXPRESSO,可能是因为没有收录吧。在内容更新上,Warfarcon的文章都有更新,包括前天的文章,但是木西AlexanDENG中昨天发布的文章就没有更新。

轻芒阅读

3. 一览

一览是一款国内的RSS阅读器(免费版只支持系统提供的数据源),支持订阅微信公众号和知乎,还可以将文章推送至Kindle,有网页版和APP客户端。我再次测试了一下上面的三个公众号,很遗憾,只能搜到Warfalcon,其他两个公众号都没有收录。在内容更新上,warfarcon五月份发布的文章暂时没有更新。

4. RSS+Huginn

我在【干货】信息大爆炸时代,该如何高效阅读中就介绍过将微信公众号转化成RSS的方法,推荐了大家使用微广场,但是,最近微广场正式关闭,这个方法已经彻底失效,甚至,连微口网这种提供摘要型RSS的方法都已经失效了。我在网上重新搜索了一下,貌似还有今天看啥还在提供RSS服务,但好像也是个人提供的付费服务,不知道能坚持到什么时候。因此,为了应对这种情况,我不得不祭出大招-Huginn,这也是我一直在推崇的方法,利用Huginn可以订阅一切网站的更新,当然也包括微信公众号,通过它,我们就可以将公众号变成RSS,而且更新速度快,阅读体验只取决于你的RSS阅读器(RSS阅读器的选择可依据你的喜好来)。

安装部署Huginn的方法请参见我前面的文章-Huginn 安装教程—建立你自己的 IFTTT,更多安装部署方法可参见我们的Huginn中文网。如果你想更深入地了解Huginn,请参见我之前的文章-使用 Huginn 打造自动化云端信息助手,或者来我们的论坛上进行交流。

下面我来详细说一下如何通过Huginn将微信公众号转化成RSS,因为Huginn必须依托网页源才能制作RSS,所以我们先要有获取微信公众号文章的网址,你可以使用已有的微信公众号聚合网站,比如,传送门启蒙,等等。但是,最全、更新最及时地莫过于搜狗微信,大部分聚合网站基本上也是通过爬搜狗微信获取公众号的全文,下面以将木西大神的木西AlexanDENG为例。

(1) 利用搜狗微信搜索想订阅的微信公众号

搜狗微信搜索结果

我们可以看到搜索获得的页面上就有最新文章的标题,我们只需要监控这个标题的变化就可以知道这个公众号有无更新,这里需要使用Huginn最常用的Website Agent,具体选项如下:

{
  "expected_update_period_in_days": "2",
  "url": [
    "http://weixin.sogou.com/weixin?type=1&query=%E6%9C%A8%E8%A5%BF+AlexanDENG&ie=utf8&_sug_=n&_sug_type_=&w=01019900&sut=2064&sst0=1470553392399&lkt=0%2C0%2C0"
  ],
  "type": "html",
  "mode": "on_change",
  "extract": {
    "title": {
      "css": "#sogou_vr_11002301_box_0 > dl:nth-child(3) > dd > a",
      "value": ".//text()"
    }
  }
}

url对应的是搜狗微信搜索微信公众号对应的搜索结果地址

(2) 获取最新文章对应的链接地址

在上面的Agent,我并没有直接获取对应文章的链接地址,因为微信全文对应的链接地址不是永久地址,如果也放到上面的Agent中的话,会导致无效的触发,继续使用Website Agent,具体选项如下:

{
  "expected_update_period_in_days": "2",
  "url": [
    "http://weixin.sogou.com/weixin?type=1&query=%E6%9C%A8%E8%A5%BF+AlexanDENG&ie=utf8&_sug_=n&_sug_type_=&w=01019900&sut=2064&sst0=1470553392399&lkt=0%2C0%2C0"
  ],
  "type": "html",
  "mode": "all",
  "extract": {
    "url": {
      "css": "#sogou_vr_11002301_box_0 > dl:nth-child(3) > dd > a",
      "value": "@href"
    }
  }
  `

(3) 获取公众号文章的全文

在获得最新文章对应的链接地址后,就可以获取文章的全文,下面继续使用 Website Agent 解析获得文章的全文,具体的选项如下:

{
  "expected_update_period_in_days": "2",
  "url_from_event": "{{url}}",
  "type": "html",
  "mode": "merge",
  "extract": {
    "title": {
      "css": "#activity-name",
      "value": "."
    },
    "fulltext": {
      "css": "#js_content",
      "value": "."
    }
  }
}

url对应的是上一个Agent获得的链接地址;mode模式选择merge,可以保留上一个Agent获得的url内容

(4) 输出RSS

最后,只需要使用 Data Output Agent 输出RSS即可,具体设置如下:

{
  "secrets": [
    "weixin"
  ],
  "expected_receive_period_in_days": 2,
  "template": {
    "title": "订阅微信公众号(木西AlexanDENG)",
    "description": "将微信公众号(木西AlexanDENG)输出RSS",
    "item": {
      "title": "{{title}}",
      "description": "{{fulltext|regex_replace:'data-src','src'}}",
      "link": "{{url}}"
    }
  }
}

需要注意的是,公众号全文中的Html并非标准的Html,要将其中的data-src 全部替换成src,否则输出的RSS中图片无法正常显示

将微信公众号制作成RSS

通过上面的设置,你就可以在你的Data Output Agent 界面的Summary上获得对应的RSS地址,将这个RSS地址放进你的RSS阅读器吧!!!

如果你不想一步一步地进行设置,你可以直接把这个文件导入Scenarios中,即可获得木西AlexanDENG对应的RSS地址;你只需要将前两步中的url换成你想订阅的微信公众号在搜狗微信中对应的搜索结果地址即可

因为搜狗上有反爬虫机制,所以你的Agent的触发间隔最好长一点,像木西大神的这个公众号最多一天也就更新一篇文章,因此我就设置成了一天触发一次。如果你想将触发间隔设置短一些,又不会触发到反爬虫机制,你可以使用Phantomjscloud提供的API,借助云端模拟浏览器进行爬取,这个方式是最棒的。最新版本的Huginn可以直接使用 Phantom Js Cloud Agent,老版本的Huginn可参见这篇教程-Browser Emulation Using PhantomJs Cloud

5. 总结

总结一下上面提供的四种方法:

  • 即刻APP:可更新几乎所有的微信公众号,更新速度快,即刻用户强推;
  • 轻芒阅读APP:收录的微信公众号较多,更新速度一般,阅读体验好,可考虑使用;
  • 一览:主要收录了一些热门的微信公众号,不同公众号的更新速度不一样,可以推送到Kindle上阅读,Kindle用户可以考虑一下;
  • RSS+Huginn:搜狗微信上有的公众号都可以制作成RSS,更新速度可设置,阅读体验取决于使用的RSS阅读器,爱折腾的用户强推。

不知道上面这几种方法有没有适合你的,有任何不明白的或好的想法,随时欢迎与我交流。

 

 

抓取新京报

新京报网络版。其中过滤了某些版面,可自行修改。由于排序的原因,增加了最后两个Agent,如果不需要排序,可删除。

images

下载链接: http://huginnio.herokuapp.com/scenarios/14

知乎话题监控

监控知乎,指定话题(自己设置)下的新答案,如果在指定时间(默认约10天)后,出现有价值的新答案(判断标准:赞数>3,可自己修改),则输出到RSS 注意:Huginn并没有准确的delay agent,所以这个10天只是粗略值

images

下载链接: http://huginnio.herokuapp.com/scenarios/11

豆瓣高分科幻电影提醒

当豆瓣上出现新的高分科幻电影(评分大于8分),则通过Slack进行提醒

下载链接:http://huginnio.herokuapp.com/scenarios/15

images

 

什么值得买 发现频道搜索

监控“发现频道”的搜索结果,如果出现有价值的条目(判断标准:值得数>不值得数,且值得数>2),则推送到Pushbullet

images

 

下载链接:

http://huginnio.herokuapp.com/scenarios/12

huginn 含义

在北欧神话中,爱瑟神族(Aesir)的主神奥丁(Odin)拥有两只乌鸦。奥丁是胜利、诗歌、智慧和死亡之神。他双肩上栖息着两只乌鸦,一只叫尤金(Huginn),另一只则为曼尼(Muninn),分别代表着“思维”和“记忆”, 它们是奥丁的眼线,会将每日所见向主人报告。当别的神在饮宴时,奥丁便思索“思维”和“记忆”告诉他的话。

RSS 从此我的信息我做主

 

作为一名极客,我也向往能够拥有自己的Huginn和Muninn。尤其在信息过载的时代,不想被今日头条和各种门户有目的的推送所裹挟,我的信息我做主。这篇文章重点解决我以下几个方面的问题:

1、反思

  • 事件背景

萧队长在群里发了一个链接,讲高效掌控自己信息/断舍离
what:大神讲了自动化阅读多平台文章的高效方法。
how:通过获取RSS&RSS阅读器
why:只要重复发生的事件就要系统化、自动化。

  • 情绪过程:

word天,好厉害!我要学起来!

  • 环境背景:

群里还沉浸在昨天老大的系统化、自动化的精进心智模式中。
(我被同侪力量所影响,通过搜狗输入法的首胜体验获得了自动化带来高效率的愉悦感)


  • 概括

整体概括
  • 一览阅读操作步骤

第一步
第二步
第三步
第四步
第五步
Paste_Image.png
Paste_Image.png

 

 

 

利器周报推荐 huginn

 

自动化神器

▍名称:Huginn.cn
▍推荐人:@祥子、@jiang、@巨迪 iOS、@riki、@何建博、@宫城-iOS、@Wenlei

借助 Huginn,你可以打造出一个云端私人助手,整合联动丰富的互联网服务与资源,自动触发你事先设定好的任务或指令。通过它,你可以实现智能化提醒、定制化推送、一站式阅读等有趣的功能,除此以外,你还可以创造性地组合各种 Scenarios 来实现其他超赞的功能,这只取决于你的想象。在利器群友@祥子、@jiang、@巨迪 iOS、@riki、@何建博、@宫城-iOS、@Wenlei 等人的协作下,他们完成了 Huginn 教程的翻译工作。可以点此阅读:http://huginn.cn/

 

物联网中间件- huginn

Huginn – Huginn是一个构建代理系统,可以帮你执行自动化的在线任务;

 

中间件

IFTTT – IFTTT是一个基于Web的服务,它允许使用者创建名为“Recipes”简单的条件语句链,其触发条件是Gmail、Facebook、 Instagram、Pinterest等Web服务的变化。IFTTT是“If This Then That”的缩写(其发音类似不包含g的“gift”发音);

Huginn – Huginn是一个构建代理系统,可以帮你执行自动化的在线任务;

Kaa – 用于快速创建物联网解决方案的开源中间件平台。

Huginn: 烧录RSS的神器

转自简书

http://www.jianshu.com/p/4a47e452abc9

作者 笠三叶

Huginn Logo

RSS重度用户,应该都会关注三件事:

  • 摘要RSS 转为 全文RSS
  • 为不提供RSS的网站,制作全文RSS
  • 根据关键词等条件,过滤RSS

在以前,Yahoo Pipes可以做这三件事儿。但Yahoo Pipes关闭以后呢?

这篇小文介绍一个很棒的替代品,Github上有一万多收藏的明星项目:Huginn(链接)。


提示
使用Huginn需具备最起码的折腾能力,和这些前提知识:

  • Linux基本操作
  • CSS基本使用
  • Xpath基本使用
  • RSS最基本知识
  • JSON最基本知识

1. 什么是Huginn

Huginn是将信息流组装、拼接和变形的一个工具。如果你听说过IFTTT(链接),Huginn约等于加强版的IFTTT。它能:

  • 监控天气预报,如果明天下雨,则给你发送提醒;
  • 监控某款商品的网页,一旦降价,通知你;
  • 监控游戏官网,一旦游戏有发售或新动态,通知你;
  • ……

官方WIKI(链接)内有更多例子。但为了不跑题,这篇短文只围绕RSS方面的应用来说。


2. Huginn怎样工作

Huginn中的关键概念Agent,就类似于IFTTT中的Recipe。如果你不了解IFTTT,那我们从头说起:

要给不提供RSS的网站制作全文RSS,这件事儿可以被比喻成,要把原木材制作成一套高脚桌椅。那么就需要一个“家具厂”来做。Huginn就像是这一座RSS的“家具厂”:

木材是原材料,被运进工厂,1号车间木材加工成板材,2号车间把板材组装成原木桌椅,3号车间将原木桌椅喷涂外漆和装箱,最终出厂的是商品:高脚桌椅

Huginn就像这一条流水线:

  • 出厂的高脚桌椅,即最终产物,比喻烧制成功的、我们需要的全文RSS
  • 原材料木材,即待处理的素材,比喻不提供RSS的网站,或等待被加工的原始RSS源

Agent Event Flow流水线

那么显然,这里的关键问题是,怎样把平淡无奇的木材(不提供RSS的网站),逐步加工成有价值的高脚桌椅(全文RSS)呢?

当然门道都在车间上!

使用几台车间?用什么类型的车间?所需的这几种类型车间有现成的吗?这都是要考虑的问题。而使用Huginn也完全一样的。


在Huginn中,这三组干活儿的车间,就被称作Agent

用Huginn 90%的时间,都是在操作Agent:用几个车间/Agent?什么类型的车间/Agent?我需要的车间/Agent,Huginn有提供吗?

例如,这是我创建的一部分Agent:

Agent页面

车间/Agent之间传递的,前一个车间/Agent传递给下一个车间/Agent板材/原木桌椅/中间物料,被Huginn称作Event


所以,整套过程是:

最初的素材A(或者是等待烧制RSS的网站,或者是摘要RSS),进入Huginn/工厂,通过一个又一个的Agent/车间流水线,在工厂内存在形态是Event,最终变成了我们想要的成品B(全文RSS)。

那么显然,Huginn能做什么,不能做什么,关键看它提供了哪些Agent。而我们用Huginn烧制RSS,关键就是选择它提供的一个个Agent,填入地址和必要的参数,等着输出全文RSS就行了。


下面就以具体例子演示,当想把一个摘要RSS转换成全文RSS时,创建几个Agent、哪些类型的Agent。


3. 举例:摘要RSS 转 全文RSS

比如我要把纽约时报的摘要RSS(链接),转换成全文RSS呢?也就是说,摘要RSS相当于木材,我想制作的全文RSS相当于高脚桌椅。那么,我要创建哪些Agent/车间,来完成这活儿呢?

如同把大象放进冰箱一样,只需把这活儿拆解成三步,即三个Agent

  1. 获取纽时的摘要RSS
  2. 去依次访问其中每个URL,抓取全文
  3. 把抓取的全文,再包装回RSS,输出订阅地址

这三个Agent,Huginn都已经提供了模板,只需要往里面填地址、写属性就行了,很简单。

3.1. 获取原始摘要RSS

比如第一步,获取纽约时报摘要RSS的Agent。Huginn里获取RSS的Agent,叫做RSSAgent,因此我们创建一个RSSAgent,填写入纽时的RSS地址:

{
  "expected_update_period_in_days": "14",
  "clean": "false",
  "url": "http://cn.nytimes.com/rss.html"
}

上面各项参数的含义,在创建Agent的页面上就有帮助说明。例如expected_update_period_in_days表示估计这个RSS源更新的频率。

创建成功后,Agent就有了一个专属页面:

单个Agent页面

当该Agent运行后,就去抓取RSS源,获取到许多Feed Entry。每一条取到的Feed就等于是一条中间物料/板材/Event,例如其中一个Event如下:

{
  "id": "http://cn.nytimes.com/health/20151110/c10pressure/",
  "date_published": "2015-11-10 10:12:35 +0800",
  "last_updated": "Tue, 10 Nov 2015 10:12:35 +0800",
  "url": "https://d3qlz4p8smvoli.cloudfront.net/health/20151110/c10pressure/",
  "urls": [
    "https://d3qlz4p8smvoli.cloudfront.net/health/20151110/c10pressure/"
  ],
  "description": "传统的收缩压标准将140毫米汞柱上下为正常,但美国研究人员最新发现,收缩压如果保持在120毫米汞柱以下,可以使发生心血管疾病或中风的风险降低25%。<p>![布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。 Charlie Mahoney for The New York Times](http://upload-images.jianshu.io/upload_images/206186-3efd2089eb6b1781.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)<\/p>                <p style='text-align: right; color: gray; font-size: 11px!important; line-height: 10px;'>Charlie Mahoney for The New York Times<\/p>                <p style='text-align: left; color: gray; font-size: 11px!important; line-height: 10px;'>布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。<\/p>                ",
  "content": "传统的收缩压标准将140毫米汞柱上下为正常,但美国研究人员最新发现,收缩压如果保持在120毫米汞柱以下,可以使发生心血管疾病或中风的风险降低25%。<p>![布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。 Charlie Mahoney for The New York Times](http://upload-images.jianshu.io/upload_images/206186-3efd2089eb6b1781.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)<\/p>                <p style='text-align: right; color: gray; font-size: 11px!important; line-height: 10px;'>Charlie Mahoney for The New York Times<\/p>                <p style='text-align: left; color: gray; font-size: 11px!important; line-height: 10px;'>布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。<\/p>                ",
  "title": "“正常”的血压值或许并不利于预防心脏病",
  "authors": [
    "GINA KOLATA"
  ],
  "categories": [
    "健康"
  ]
}

这些Event/中间物料/板材/都会吐给下一个Agent,它要访问其中url指向的网页,抽取全文内容。

3.2. 抓取全文

访问某个URL,去抓取全文,这类工作在Huginn中由WebsiteAgent完成,因此我们新建一个WebsiteAgent:

{
  "expected_update_period_in_days": "14",
  "url": "{{url}}",
  "type": "html",
  "mode": "merge",
  "extract": {
    "description_full": {
      "css": ".content_list",
      "value": "."
    }
  }
}

同样,里面各字段的含义,新建Agent时页面上都有帮助说明。通过extract字段指定的css和xpath(需要有相关基础知识),这一步Agent/车间就抓到了全文内容,并生成如下event:

{
  "id": "http://cn.nytimes.com/health/20151110/c10pressure/",
  "date_published": "2015-11-10 10:12:35 +0800",
  "last_updated": "Tue, 10 Nov 2015 10:12:35 +0800",
  "url": "https://d3qlz4p8smvoli.cloudfront.net/health/20151110/c10pressure/",
  "urls": [
    "https://d3qlz4p8smvoli.cloudfront.net/health/20151110/c10pressure/"
  ],
  "description": "传统的收缩压标准将140毫米汞柱上下为正常,但美国研究人员最新发现,收缩压如果保持在120毫米汞柱以下,可以使发生心血管疾病或中风的风险降低25%。<p>![布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。 Charlie Mahoney for The New York Times](http://upload-images.jianshu.io/upload_images/206186-3efd2089eb6b1781.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)<\/p>                <p style='text-align: right; color: gray; font-size: 11px!important; line-height: 10px;'>Charlie Mahoney for The New York Times<\/p>                <p style='text-align: left; color: gray; font-size: 11px!important; line-height: 10px;'>布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。<\/p>                ",
  "content": "传统的收缩压标准将140毫米汞柱上下为正常,但美国研究人员最新发现,收缩压如果保持在120毫米汞柱以下,可以使发生心血管疾病或中风的风险降低25%。<p>![布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。 Charlie Mahoney for The New York Times](http://upload-images.jianshu.io/upload_images/206186-3efd2089eb6b1781.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)<\/p>                <p style='text-align: right; color: gray; font-size: 11px!important; line-height: 10px;'>Charlie Mahoney for The New York Times<\/p>                <p style='text-align: left; color: gray; font-size: 11px!important; line-height: 10px;'>布莱根妇女医院心脏病学家、哈佛大学医学教授马克·阿兰·费弗尔博士表示,这项研究结果出来后,他会觉得自己现在有义务帮助病人进一步降低自己的血压。<\/p>                ",
  "title": "“正常”的血压值或许并不利于预防心脏病",
  "authors": [
    "GINA KOLATA"
  ],
  "categories": [
    "健康"
  ],
  "description_full": "<div class=\"content_list\">\n                \n        \n            \n                <figure class=\"img_row\">\n                  <div class=\"img_box\">\n                    <img href=\"http://static01.nyt.com/images/2015/11/10/science/10Pressure2/10Pressure2-popup.jpg\" src=\"http://static01.nyt.com/images/2015/11/10/science/10Pressure2/10Pressure2-articleInline.jpg\" alt=\"77岁的威廉·多尔蒂有家族心脏病史。经过药物治疗,他的血压基本控制在140之下。\">\n                  <\/div>\n                    <figcaption>\n                      <p class=\"img_text caption\">77岁的威廉·多尔蒂有家族心脏病史。经过药物治疗,他的血压基本控制在140之下。<\/p>\n                      <small class=\"credit\">Charlie Mahoney for The New York Times<\/small>\n                    <\/figcaption>\n                <\/figure> \n                \n            \n        \n        \n        <p class=\"\">今年9月,联邦政府宣布,因研究结果太过惊人,它突然叫停了一个大型血压研究,医生们因此陷入了进退维谷的境地。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">声明称,研究人员发现,将收缩压控制在远低于目前建议的水平——低于120,而非140或150毫米汞柱——可以挽救生命,以及预防心脏病和中风。但他们拒绝透露挽救了多少生命,预防了多少心梗,以及其他关键的量度数据。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">“不进一步了解他们的发现,怎么敢在血压控制上做任何不同的尝试?”耶鲁心脏病学家哈伦·克鲁姆霍尔茨(Harlan Krumholz)博士说,这也是其他专家的顾虑所在。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">周一,这项研究的调查人员在于佛罗里达州奥兰多市举行的美国心脏协会(American Heart Association)会议上做了报告,同时在《新英格兰医学期刊》(New England Journal of Medicine)发表了一篇文章,揭开了这项研究的面纱。该研究对9361名病人进行了为期平均3.2年的跟踪,结果发现,和将收缩压控制在目前的140的病人相比,控制在120以下的病人,死亡率低27%(155人对210人),出现心力衰竭的几率低38%(62人对100人)。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">收缩压是两项血压指标中更高的那一个,代表心脏收缩时的血压状况。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">这项研究的主要研究员之一保罗·K·惠尔顿(Paul K. Whelton)表示,总体而言,发生心梗、心脏衰竭或死于心脏病的比率可以降低25%(243人对319人)。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">年长的参与者跟年轻的情况一样好。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">没有参与该研究的哈佛大学教授马克·阿兰·费弗尔(Marc Alan Pfeffer)博士表示,这些研究结果会对美国数百万高血压患者产生颠覆性影响。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">费弗尔表示,这项研究出现之前,遇到年纪超过50岁、收缩压136、并对胆固醇等对心脏病重要风险因素有很好控制的病人,他会拍拍对方的肩膀然后说,“做得不错。”而现在,他会觉得自己有义务给病人开更多高血压药物。否则,他说,“我将错失挽救另一个生命的机会。”<\/p>\n    \n        \n            \n        \n         \n          <div class=\"nytcn_article_ad\" id=\"div-gpt-ad-bigad\">\n            <script type=\"text/javascript\">\n              googletag.cmd.push(function() { googletag.display('div-gpt-ad-bigad'); });\n            <\/script>\n          <\/div>\n        \n        <p class=\"\">据没有参与这项研究的阿拉巴马大学流行病学家保罗·芒特纳(Paul Muntner)测算,至少有1700万美国人马上就会受到这些发现的影响。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">这项名为Sprint的研究招募年龄50岁及更高的高血压病人参与。这些病人至少还有一项罹患心脏病的其他风险因素,比如吸烟、高胆固醇,患有肾脏疾病或只是年龄大于75岁。其中一半被要求将血压控制在140以下,与现行做法一致。另一半则被要求将血压控制在120以下。这项研究原计划持续到2017年,但今年夏天突然终止,当时研究人员宣布他们发现了有“有可能挽救生命”的研究结果。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">长期以来,医生们一直纠结于该把血压控制在什么水平。如果血压太低,可能导致眩晕、昏厥等并发症,对年纪大的人来说尤其如此。周一发布的结果显示,将血压控制在120的参与者中,有5%——即220人——在研究进行期间出现了严重的并发症——血压过低,导致严重眩晕或昏厥症状,或对肾脏产生不可逆的损伤。在将血压控制在140的参与者中,有118人出现了严重的并发症。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">研究人员担心血压指标为120或更低的人在起身时出现血压骤降的并发症状,而实际上,这种情况在血压控制目标更高的人身上更容易出现。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">“把这些并发症放在可以降低27%的死亡率的大背景下看,似乎益处大于风险,”韦克森林浸会医疗中心(Wake Forest Baptist Medical Center )生物统计学家维·M·勒布桑(David M. Reboussin)说,他是该研究的首席研究员。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">还有一个问题是,血压究竟应该低到什么程度。在这项新研究中,一些病人将收缩压控制在低于110的水准,而对大多数人而言,保持在120就已经不易。克利夫兰大学医院凯斯医疗中心(University Hospitals Case Medical Center)高血压项目主任、本研究的研究员小杰克逊·J·赖特(Jackson T. Wright Jr.)博士表示,很难想象再进行一个大型研究来对比110和120的血压状况。“这个区隔非常窄,”他说,得到的研究结果的差别会很小,这意味着研究规模要非常大,时间要很长。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">芒特纳表示,医生和病人只能面对一些不确定性。“临床试验再多也不够,”他说。<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">一些高血压专家劝诫大家要小心谨慎。纽约艾伯特·爱因斯坦医学院(Albert Einstein College of Medicine)的血压专家迈克尔·奥尔德曼(Michael Alderman)估计,这些研究结果意味着,每年在1000人中有6个人可以避免出现心梗、中风或心脏衰竭。他表示,这会让医生不知如何给病人个体提供建议。“如果它没有危害,或像安全的一次性疫苗接种一样危害很小,医生们就很容易做决定。但如果它意味着健康的人需要连续几十年服用药物,就没那么容易了。”<\/p>\n    \n        \n            \n        \n        \n        <p class=\"\">耶鲁大学的克鲁姆霍尔茨表示,尽管研究结果让人兴奋,但不应该将更低的血压定为要求。他说,血压那样低,“是有风险的。”医生们必须先和病人就侧重点和目标进行沟通。<\/p>\n    \n\n\n\n                \n                  <div class=\"nytcn_authorinfo\">\n                    <p>翻译:常青<\/p>\n                  <\/div>\n                \n              <\/div>"
}

可以看到,description_full字段已经是文章全文。说明抓取成功了。

3.3 输出全文RSS地址

最后一步,就剩下把抓到的全文Event,以RSS的格式输出。这里使用Data Output Agent:

{
  "secrets": [
    "newyork"
  ],
  "expected_receive_period_in_days": "7",
  "template": {
    "title": "纽约时报中文网 国际纵览",
    "description": "纽约时报中文网 国际纵览",
    "item": {
      "title": "{{title}}",
      "description": "{{description_full}}",
      "link": "{{id}}",
      "pubDate": "{{last_updated}}",
      "guid": "{{id}}"
    }
  }
}

大功告成。

最后在第三步Agent的页面,会给出新的全文RSS的订阅地址,如图:

输出RSS地址

生成的全文RSS地址,可以通过FeedBurner(链接)烧录后,分享到网上供更多人使用。例如通过以上三步Agent,生成的纽时全文RSS订阅在这里


结语

本来,几乎没必要写Huginn的使用介绍,因为官方帮助文档(链接)已经详细到令人发指的地步。可惜如此神器,国内使用的人却很少,讨论的也少,故写文安利下。

篇幅原因,没有介绍如何安装Huginn。目前被采纳最多的三种部署方式是:

  • Docker部署:适合本地练手用
  • 部署在Heroku:优点是免费,缺点是限制多
  • 部署在Linux:优缺点与上相反

如果你看完本文起了使用的心,超级详细的安装手册可以查阅官方文档(链接)。

另,除了这里介绍的摘要RSS转全文RSS以外,由不提供RSS的网站直接生成全文RSS的例子见这里(链接),根据关键词等条件过滤RSS的例子见这里(链接)。官方文档内有更多五花八门的应用范例。

首发于:http://walden.farbox.com/post/huginn-a-rss-master-piece
(完)

 

Huginn安装教程—建立你自己的IFTTT

Huginn是什么

首先,Huginn是一款开源应用(开源赛高!!!),这是它的Github地址,有上万的star(经常混Github的人应该都知道,上万的star意味着这个开源应用是非常厉害、非常受欢迎的),那么Hugin到底是什么?官网上的解释是:Huginn 是一个用于构建在线自动化任务的系统,可以把它看成是一个可以部署在自己服务器上的Yahoo! Pipes + IFTTT
Yahoo!Pipes的服务已经被关闭,大家可能不知道,IFTTT是这几年才流行起来的服务,它的功能是”如果一件事情被触发,则执行另一件设定好的事情“,比如,如果明天下雨,则自动给你的手机发送提醒,如果在微博上发布一条状态,则自动保存到印象笔记。。。等等,它的功能非常多。
Huginn是一个只属于自己的IFTTT,甚至比IFTTT更加强大,官网上介绍的功能就有很多,比如,跟踪天气变化、跟踪当前热点、监控商品价格(网页变化)、自动发送邮件、连接各种常用服务,等等。
作为一名RSS重度患者来说,Huginn最最让人心动的功能莫过于,它可以将任意网站的内容变成RSS。在这个RSS日益被忽略、被放弃的年代,很多网站都已经不再提供RSS服务,但是,我认为恰恰相反,正因为是这个年代,这个信息大爆炸的年代,RSS才应该需要更加受到重视,我在简书上的这篇文章就有讲到RSS的方便和好处。可惜, 尽管RSS能给用户带来最干净且完整的内容,但是它不能够给网站运营商带来广告或流量,也缺少互动,所以正在被很多网站运营商所抛弃。

Huginn官网图片

安装教程

Huginn需要自己部署到云端才能使用,官网上的部署教程非常详细,它可以部署在自己的VPS上(强烈推荐),也可以部署在各大云平台的虚拟主机上,在这里主要介绍部署在heroku的方法。

简单地介绍一下heroku的免费账号:

1. 免费帐号能创建无限个app(网站),所有app每个月的运行时长为550小时;
2. 支持python/ruby/php/nodejs等诸多语言,且非常友好;
3. 可使用Git、GitHub进行部署;
4. 每个网站在30分钟以内无人访问后便会自动关闭,在有人访问后会自动重新打开;
5. 添加信用卡的账户可以使用各种插件(大部分插件都有免费额度)。

其实,官网上的部署教程已经非常详细,但是它不支持通过Windows部署安装,在Windows上需要使用虚拟机才能部署到云端。那么,是不是Windows用户就不能将Huginn部署到云端呢?作为一名十足的工具控加Windows使用者,在各种Google之后,终于找到了解决办法,可以帮助任意系统的用户在heroku上部署Huginn,下面开始介绍具体的操作步骤:

  1. 注册heroku账号;
  2. 注册Cloud9账号(下面简称c9);
  3. 进入c9分配的workspaces,创建一个新的空间,空间属性选择private,template选择ruby,然后点击create workspace,见下图;

    建立工作空间
  4. 打开创建好的工作空间,接下来的操作跟官网上的教程基本上一样(c9空间内已经安装好了Heroku Toolbelt );
  5. 在c9空间内的bash中输入heroku login,然后按照提示输入自己注册heroku时的邮箱地址和密码;
  6. 创建名为huginn-myifttt的app:heroku create huginn-myifttt大家创建时需要换个名字
  7. 将app应用clone到c9空间内:heroku git:clone --app huginn-myifttt
  8. 将官网上的Huginn主程序也clone到c9空间内:git clone https://github.com/cantino/huginn.git
  9. 将clone下来的Huginn主程序(除了.git文件夹以外的其他文件夹和文件)复制到huginn-myifttt文件夹内;
  10. 进入到huginn-myifttt文件夹内:cd huginn-myifttt,随后输入cp .env.example .env,完成后再输入bundle,这一步会花费比较长的时间,请耐心等待;
  11. 上面的命令完成后,再依次输入下面一组命令,将更改的应用上传到heroku的云端服务器上:git addgit commit -am "install huginn"git push heroku master
  12. 上面的命令完成后,在bash内输入:bin/setup_heroku,运行过程中会有几处提示,请按照提示输入,这一步运行时间也比较长,请耐心等待;
  13. 待上面的命令完成之后,只属于你个人的Huginn网站正式部署完毕!!!当然,你也可以将邀请码分享给你的朋友,让他们能够注册你的huginn网站。

本教程建立好的网站地址是huginn-myifttt.herokuapp.com,邀请码是try-huginn,欢迎大家注册使用。

补充说明

如果你使用的是heroku的免费账户,这里还有几点需要说明:

  1. 免费账户的网站在30分钟内无人访问后会自动关闭(休眠),因此,如果要使网站能够不休眠的话,可以使用网站监控服务来防止其休眠,例如:uptimerobot
  2. 尽管在heroku上可以创建无限个网站,但是,免费用户的所有app运行总时长为每个月550小时,添加信用卡之后,会再赠送450小时,从而能够保证一个网站能够运行30X24X7小时,因此,建议让网站每天只运行18小时,这可以通过上面的网站监控服务来进行简单的控制(在实际使用中,其实根本不需要Huginn每天都能运行24h,但是,如果无论如何都要的话,可以添加信用卡,或者注册两个账号,分别部署Huginn,然后让它们交替运行);
  3. 免费账户只要5M的 Postgres 数据库,只允许在数据库中记录10000行,因此,作者建议设置heroku config:set AGENT_LOG_LENGTH=20,如果添加信用卡的话,可以获得更大额度的免费数据库。
  4. Huginn安装在heroku的过程中默认使用的是SendGrid的邮箱服务器,这还需要我们添加SendGrid插件才能正常使用,但是添加插件需要先添加信用卡,因此,非信用卡用户无法使用SendGrid的邮箱服务器,建议添加其它邮箱服务器,比如,gmail邮箱服务器,具体设置如下:
    heroku config:set SMTP_DOMAIN=google.com
    heroku config:set SMTP_USER_NAME=<你的gmail邮箱地址>
    heroku config:set SMTP_PASSWORD=<邮箱密码>
    heroku config:set SMTP_SERVER=smtp.gmail.com
    heroku config:set EMAIL_FROM_ADDRESS=<你的gmail邮箱地址>

    其中,如果你的google账号开启了两步验证,请使用专用密码

总结

Huginn是一款异常强大的开源应用,可以帮助我们实现很多自动化的任务,从而打造一个只属于我们自己的IFTTT服务,非常实用。但是,在具体使用的过程中,你可能还需要具备一些网页前端的知识,包括HTML、CSS等;大家遇到不懂的知识,可以去w3school上学习,也要经常去google,其实,它还是非常容易上手的。同时,我还要再着重强调一点,从某种程度上来说,Huginn比IFTTT要更加强大
关于Huginn的教程,国内的中文教程少之又少,所以本着让更多的人能够熟悉和使用这款开源应用,我写了这篇中文的安装教程,希望有更多的人能够使用它。最后,关于Huginn或RSS有什么需要交流的可以在微博或简书上私信给我。

使用Huginn打造自动化云端信息助手

前言

半年前我在简书上分享过一篇文章——Huginn 安装教程—建立你自己的 IFTTT,简单地介绍了一下Huginn到底是什么以及它部署到Heroku云平台上的方法。后来,我和利器群里结识的几个群友一起完成了Huginn教程的翻译;就在上个月,我们把这些教程都放到了网上(托管Github和Coding),于是就有了现在的Huginn中文网。但是,当我向其他人推荐这个开源应用时,大家还是不理解这个应用到底有大的用途,或者是有哪些有趣的玩法,恐怕就连Huginn这个单词很多人都不知道它的意思,更不要说它其中的典故。所以,我想结合我这近十个月左右的使用经验跟大家谈一谈它

本文不会详细地去介绍如何去使用它,如果你想学习Huginn的话,请看我们的Huginn中文网;更加深入地学习,请访问该项目的Github地址如果你还不知道Huginn是什么,或者还不是十分清楚它的用途,或是想知道它到底有哪些有趣的玩法,可以继续看下去

Huginn的典故出处

简介与原理

Huginn是北欧神话中奥丁肩膀上的乌鸦,它会帮助奥丁收集全世界的信息。在Huginn的项目主页上,作者对它有详细的介绍,我们的中文网上也有一篇简介——Huginn 简介。作者的原话是“Huginn is a system for building agents that perform automated tasks for you online”,所以,你可以理解成Huginn是一个在线自动化任务系统或者是云端私人助手;如果你对IFTTTYahoo!Pipes很了解的话,你也可以理解成 Huginn >= IFTTT + Yahoo!Pipes 。

Huginn的原理跟IFTTT云服务的原理类似,在IFTTT中,通过将每个Recipe串连起来,组合成一个Applet,就可以实现一个功能;在Huginn中也有相似的概念,Agent对应Recipe,Scenario对应Applet(两者稍微有点差别,在Huginn中,Scenario其实只是一些标签)。在Huginn中,通过编写一连串的Agents,就可以实现一个功能。在简书上的这篇文章中——Huginn: 烧录 RSS 的神器,作者将Huginn比如成一个加工工厂,每个Agents就像是流水线上的工人或机器,一组串联起来的Agents组成了一条流水线,我觉得这个比喻非常地恰当。

下面我举一个简单的例子吧,例如,我们想把某个人的知乎回答制作成RSS,用来在RSS阅读器上进行阅读。那么,我们需要写三个Agents,第一个Agent抓取回答的标题和链接,第二个Agent会根据链接抓取回答的全文,最后一个Agent将标题、链接和全文组合在一起,制作成RSS,这样就可以得到一个跟踪某人知乎回答的RSS源。在Huginn中,会按照下图所示的流程进行工作:

使用Huginn将知乎回答制作成RSS

定制化推送与一站式阅读

Huginn具体有哪些作用或用途,作者其实也列举了很多,比如,监测天气变化,监测Twitter热点,监测商品价格,监测Gmail邮箱,发送提醒,制作RSS,还可以连接到各种丰富的第三方应用(比如,邮箱、微博、Twitter、Wunderlist、Slack、Pushbullet,等等),可以组合出很多很多有趣的功能。经过我这一段时间的使用,总得来说,我觉得Huginn可以帮助我们做到两件事情,一是定制化推送或提醒,二是一站式阅读

首先,定制化推送或提醒就像你平时设定闹钟一样,设定好时间或条件后,当时间或条件满足时,Huginn就会把信息推送给你,或提醒你该去做某件事情。比如说,明天下雨,提醒你带伞;电视剧或漫画更新,提醒你去观看或直接推送给你;感兴趣的商品降价,提醒你去购买;发生有趣的热点新闻,也会推送给你。。。诸如此类生活中很多零散的信息地处理,甚至可以说,我们每天都在接收并处理这些信息。但是,这些明显带有个人主观喜好的事情,每个人的需求都不一样,有些人喜欢看西部世界,有些人喜欢看射雕英雄传,有些人喜欢看电视,有些人喜欢看漫画,有些人喜欢阅读文章,有些人喜欢欣赏照片……但是,很难有一个应用能够满足所有人的需求。如果要想满足所有人的需求的话,那就必须要让用户自己也参与进来,自己去筛选信息、制作信息源

去年出现了一个非常火的app,叫做即刻,我相信很多人都用过它或者还在使用它,这个app上有很多有趣的主题,诸如,有豆瓣8.0分以上的新电影、今天微博都在热议什么,等等,这个app在豌豆荚上的下载量已经有了34万,但是,尽管它有如此之多的主题,仍然不可能满足所有人的需求,比如,我想让它推送豆瓣7.5分以上的新电影,因为它没有这个主题,用户就无法得到这个信息。但是,对于Huginn来说,这种自定义是最简单不过的啦,因为Huginn的自定义界面是可以从底层信息源开始,它是一个通用的云端信息处理工具,只要你能熟悉掌握它,就可以满足你想要的大部分定制化推送。当然,它的操作和使用成本是比较高的,需要自建服务器,学习它的操作方法,再深入一些还需要用户懂一些编程方面的知识。

再说一说一站式阅读吧,我个人理解的一站式阅读是指在一处阅读所有的关注信息,包括但不仅限于微信公众号、知乎、简书、豆瓣、微博、Instagram……首先,我想讲一讲,为什么我们要去做一站式阅读。不知道大家有没有这样的体验,自己订阅了很多的微信公众号,但是却很少阅读,哪怕是当时觉得这个公众号的文章非常非常好,而过了很久才发现,我每天却很少打开它,除了微信公众号以外,知乎、简书、微博上的关注都可能会出现这种状况,这是为什么呢?我觉得很大一部分的原因是因为,这些信息的分布太过于分散。比如,你想要看微信公众号的话,需要打开微信,找到订阅号;阅读知乎需要打开知乎app,微博、简书也是这样;而除了这些主流的信息渠道,还有很多其它的信息渠道需要单独去阅读,我想你肯定是难搞定的;即使能做到定期阅读这些信息渠道,我觉得你肯定也耗费了不少精力,毕竟打开、关闭这些app累计下来的时间也应该有不少。所以,简化日常阅读信息的流程是非常重要的,而且,更重要是我们要不忘初心,因为既然你已经订阅或关注了这些内容,我觉得还是应该花时间去看一看的,这也是对过去承诺的负责。

因此,最好的解决方法就是一站式阅读,将所有自己关注的信息全部放在一处,而一站式阅读的最好方法就是RSS——将自己关注的信息渠道都制作成一个个RSS源,然后在RSS阅读器中集中阅读,之前我在简书上写过一篇文章【干货】信息大爆炸时代,该如何高效阅读,其中就有讲到各种信息源的RSS解决方案,而Huginn就是该方案的终极工具。

信息终极解决方案

在日常生活中,信息有很多种,有比较隐私的,有比较零散的,有希望可以分享的,有希望能即时获取的。。。而针对不同的信息,Huginn配合第三方应用都有很好的解决方案,比如一些优质的博客,我们可以制作成RSS,集中在RSS阅读器中阅读,等等,除了RSS阅读这种最佳的方式,下面我再介绍一些通过Huginn实现的信息解决方案。

1. Huginn与即刻配合使用(创建分享信息)

即刻通过人工和爬虫的方式制作了很多有趣的主题,每个主题下的信息都可以点赞和评论,具备了很好的社交功能。最新版的即刻还推出了创建提醒的功能,通过app提供的机器人可以将微信公众号、知乎、微博或RSS制作成主题,然后分享给其他人订阅。但是,它并不能将任意网站制作成主题,不过,因为它可以将RSS制作成主题,那么这样的话,借助Huginn制作RSS的强大功能,理论上就可以将绝大多数网站上的信息制作成主题。例如我有这样一个需求,我想将七原罪的漫画更新制作成即刻主题。首先,我需要寻找信息源,漫画因为版权的问题,在很多主流网站上都找不到,只有万能的百度贴吧上有(而且更新是最快的)。有了信息渠道后,我在Huginn中建立了一连串的Agents,它的功能是分析贴吧中的热门(置顶)帖子,一旦帖子中出现“东立汉化”并且是最新一话时,就会生成RSS中的一个item,最后通过即刻机器人将RSS制作成主题。

Huginn配合即刻创建主题

2. Huginn与IFTTT配合使用(自动发布信息)

IFTTT本身就是一款非常强大的云服务,它可以将几百种应用组合在一起,它自身就有很多地玩法,不了解的可以看看少数派的这篇文章——触发你的智能生活:IFTTT 入门。IFTTT可以接收RSS,因此可以先通过Huginn制作RSS,然后与IFTTT连接起来,但是更好的方式是通过IFTTT提供的Maker服务,这个Recipe可以接收或发起请求(Make/Receive a web request),而Huginn就有相对应的接口(Webhook/Website Agent),因此,两者之间是可以完全相互对接的。通过这样的组合,就极大地扩展了Huginn的第三方应用,也就是说,IFTTT上的几百种第三方服务都可以为Huginn所用
比如我想每天自动在微博上发一张APOD提供的天文图,就可以通过IFTTT将RSS源跟微博连接起来。但是,APOD官网提供的RSS源中的图片尺寸太小,因此我不想使用该源,而是使用Huginn将官网上提供的大图制作成RSS源,然后通过IFTTT将其发布到微博上。如果再结合使用即刻上的微博机器人的话,又可以在即刻上创建一个新的主题——每日一天文图

Huginn、IFTTT、即刻三者配合使用

3. Huginn配合Slack使用(零散私人信息)

Huginn没有自己的app,也就没有自己的信息接收端,因此,需要借助其他app来接收信息。如果是制作成RSS的话,RSS阅读器就是接收端;如果是触发邮件的话,邮箱就是接收端……但是,对于零散的信息,比如提醒你某个电视剧的更新,如果使用RSS或邮箱,显然是很不方便的,而且,如果是将自己私人有关的信息制作成RSS的话,一旦RSS地址被其他人知道了,就很不安全,因此,在这里我推荐使用Slack这个工具。Slack是个非常强大的团队协作工具,它可以聚合非常多的第三方服务,比如,Github、Wunderlist、Trello……Huginn可以借助Slack Agent将信息传递到Slack中的某个频道里。Slack有自己的app,因此你就可以在手机端浏览Huginn推送的定制化信息。

Huginn推送定制化信息到Slack私人频道

4. Huginn配合Pushbullet使用(即时信息)

如果想利用Huginn发送即时(实时)信息的话,经常使用邮箱的人,可以直接通过Huginn的 Email Digest Agent发送到你的常用邮箱;如果你经常使用微信,同时微信绑定了QQ邮箱,你可以发送到QQ邮箱,也能实现非常快的提醒。但是,通过邮箱来传递信息太过于传统,而且也不是完全的即时,因此,在这里推荐大家使用Pushbullet,这是一款用于传递电脑PC与手机端信息的应用工具,我在简书上的这篇文章中也有介绍-【干货】信息(时间)管理之最强工具包(解决方案)Huginn上有Pushbullet Agent,通过它,可以自动地将处理好的信息传递到你的Pushbullet上,如果你的手机安装了该应用,就可以接收到Huginn传递的即时信息

Huginn配合Pushbullet推送即时信息

除了上面我介绍的这些信息解决方案以外,其实还有很多有意思的方案,比如,使用Huginn中的Wunderlist Agent自动创建待办事项,使用Evernote Agent自动生成笔记,使用邮件触发Huginn处理信息,等等。有了Huginn,就像是有了一套万变的积木,通过它,你可以建造一个你自己想要的信息王国,And You are the king !!!

总结

现在这个时代是一个发展特别迅速的信息大爆炸时代,然而,我们平时接收的信息大都来自于朋友圈或其他应用的推荐,但是,我们不应该忘了,真正了解你的人应该是你自己,绝不是其他人或是什么乱七八糟的app。我们应该从源头上清楚自己需要看些什么,同时,用最方便最高效的方式阅读这些信息,这样的话,我们才不会被时代所抛弃,也不会被信息的洪流所淹没。Huginn, your agents are standing by!!!

部署到Cloud9

  • Cloud9 的控制面板上创建一个 rails 环境的工作空间,进入工作空间后,依次执行以下命令:

git clone git://github.com/cantino/huginn.git
cd huginn/
cp .env.example .env
bundle
mysql-ctl start
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

  • 在 .env 文件中更改端口地址和IP地址:

`DOMAIN=locahost:3000` ==> `DOMAIN=$IP:$PORT`
`PORT=3000`==>`PORT=$PORT`

  • 最后,启动 Huginn 网站:

bundle exec foreman start

打开 Cloud9 提供的网址就可以看到 Huginn 网站的首页,你可以注册该网站,注册邀请码为 try-huginn,但是,Cloud9 建立的网站在关闭工作空间之后无法长时间维持,因此,在正常使用时不推荐使用它来运行 Huginn。

本文由 Huginn 中文网 翻译,已经获得项目作者授权,原文请访问 Deploying Huginn on C9 or Cloud 9

部署到 Heroku

如果要将 Huginn 部署到 Heroku 平台,我们推荐你使用最便宜的付费方案,但是,如果你要使用免费方案的话,你需要注意以下几点:

  • 使用 Heroku 免费方案的用户,其每个网站在 30 分钟内无人访问后便会自动关闭,再有人访问时才会自动重新打开,因此为了使 Huginn 网站能长时间运行,可以使用类似 uptimerobot 的网站监控服务,不停地ping你的 Huginn 网站地址;
  • Heroku 免费方案只允许用户所有的 app 每个月运行的总时长不超过 550 个小时(绑定信用卡的用户可额外再获得 450 个小时),这意味着你无法保证部署好的 Huginn 网站每个月每天都在运行,因此,你可选择绑定信用卡,或者让你的 Huginn 网站每天只允许 18 个小时,这样的话,你的网站每天都可以在运行;
  • Heroku免费方案提供给用户的 Postgres 数据库存储的数据不能超过 10000 行,因此你需要控制 Agent 生成的事件的保留周期,同时限制数据库中 Agent 日志文件的长度,比如 heroku config:set AGENT_LOG_LENGTH=20

初次部署到Heroku的操作步骤:

  1. 注册 Heroku 平台账号,然后下载安装 Heroku Toolbelt
  2. 远程登录 Heroku: heroku login
  3. 创建 app:heroku create xxx(xxx 为 app 的名字,下同);
  4. 将 app 下载到本地:heroku git:clone --app xxx
  5. huginn 源代码全部下载拷贝到本地 app 的文件夹内;
  6. 进入 app 文件目录,依次执行命令:cp .env.example .envbundle
  7. 提交代码变更:git add .git commit -am 'commit code'
  8. 最后,执行脚本:bin/setup_heroku,完成部署。

更新已经部署好的 Huginn

Huginn 的功能还在继续开发过程中,在将 Huginn 部署到 Heroku 平台之后,可以通过以下命令来更新 Huginn 的代码:

git fetch origin
git merge origin/master
git push -f heroku master # 更新 Heroku 平台上的 Huginn 代码
heroku run rake db:migrate # 迁移数据库到最新状态的 Huginn(尽管不需要每次更新时都运行该命令,但是安全起见,最好每次更新代码时,都运行该命令)

使用自己的邮箱服务器

在安装过程中默认使用的是 SendGrid 的邮箱服务器(安装后需要自行配置),你也可以使用其他邮箱服务器,下面以谷歌邮箱服务器为例,需要进行以下配置:

heroku config:set SMTP_DOMAIN=google.com
heroku config:set [email protected]
heroku config:set SMTP_PASSWORD=somepassword
heroku config:set SMTP_SERVER=smtp.gmail.com
heroku config:set [email protected] # 指定显示的发件人邮箱地址

备份你的数据

参见 Heroku 的官方文档

本文由 Huginn 中文网 翻译,已经获得项目作者授权,项目原文访问 Deploy to Heroku