iOS12一步打造价值上万的自动化高效APP

大家都知道,想要开发一个APP,没有一两万是绝对无法实现的。更甭说要打造一个最符合你自己操作习惯的,一键操作、自动运行的超高效APP!

 

但这次iOS12 的更新却给了你这样的绝佳机会!来看一下更新后我的手机界面:

 

 

 

页面上所有的APP都是我自己“开发”的!那么,他们有什么用呢?

 

我随便举几个例子大家感受一下:

 

01 扫码付款

 

不知道大家平时在付款的时候有没有遇到这样的困扰:当你打开微信扫码支付的时候发现店里并不支持,当你打开支付宝时又发现支付宝没钱了,还是用 Apple pay 吧。

 

虽然这样低概率的事件很那遇到,但是不同端口的支付扫码确实令人心烦。

 

所以,现在我干脆把这些扫发付款的端口都集中在一起,只需要打开「扫码付款」就可以了。

 

 

从此,我再也没有担忧过到底该用哪个软件扫码,一个就够了!

 

02 快递查询

 

相信很多人也有这样的痛点!市面上有很多查询快递的工具,操作过程相当的复杂。首先要复制快递单号,然后打开工具,选择快递公司,再粘贴快递单号才能查询

 

于是,我就“创造了”这款APP,直接复制快递单号,一秒搜索。

 

 

03 多用途下载

 

对经常刷微博、YouTube 或是Twitter的朋友来说,想要下载其中的视频可不是一件容易事。

 

一来,市面上能下载视频的工具本来就很少,二来相应的软件有相应的下载工具,每次对应打开实在麻烦!

 

所以,我把他们集合到一个APP中,不仅可以快速解决下载难题,而且一个软件用起来又很方便,是不是超赞!

 

 

04 拼写检查

 

emmmmm,先给大家道个歉,上次好多小伙伴提出三岁文章中错别字的问题。我真的太粗心了!

 

不知道有多人和三岁一样粗心,但不管如何,只要你工作中会接触到文字,就一定用得上它。

 

只要将文字复制到「拼写检查」,它就会帮你检查,并给自动修改,如果你对自己不够放心,它将成为你最好的选择!

 

 

 

 

最赞的是,它还支持英文的检查!

 

05 在线影视查询

 

国内很多播放器的电影资源不仅更新巨慢,而且基本上都要收费会员才能看。原来也想过给大家推荐一些网站搜索电影资源。

 

最近,偶然间看到一个作者将一些优质的电影资源网站收集在一起了,非常赞!

 

 

以后再也不用担心找不到想看的电影了!

 

还有好多好多,就不一一给大家介绍了。我知道大家看到现在都急坏了,三岁这葫芦里到底卖的什么药?什么工具这么神奇,到底该怎么用呢?

 

好了,现在告诉大家,它就是「捷径」,前身就是大名鼎鼎的「workflow」,是一个可以把所有操作集合起来,实现流程化自动执行的工具。

 

 

这回,得益于苹果公司的收购,实现了汉化更流畅的操作,真正让我们这些没有学过编程知识的小白,也能轻松体验自动化带来的高效生活。

 

对了,插句嘴,我已为大家精选出30个高效「捷径」,分完类放在后台了。各位回复「捷径」就可获得!

 

回归正题,「捷径」到底该怎么用呢?

 

我先带着大家一起来做一个简单「早上好」的「捷径」

 

首先,我们来思考一下,我们每天早上会做什么事?根据我自己的习惯,我会:

 

  • 关闭勿扰模式
  • 调亮屏幕亮度
  • 关闭所有闹钟
  • 打开微信浏览信息
  • 打开天气应用查看天气情况

 

所以当我睡醒的时候,我希望呼唤Siri ,对它说一声早上好他就可以帮我依次实现以上所有操作。就像这样:

 

 

 

是不是很赞!

 

设置起来非常简单,打开捷径,在捷径库点击右上方的「+」创建一个新的捷径,

 

 

然后在其中依次添加应用即可。

 

在这里要注意一下,捷径中添加系统应用和非系统应用的方式不同。像调节亮度,勿扰模式等系统应用需要在搜索框,选择「脚本」,下滑列表找到相应的点击后进行设置即可。

 

 

但是非系统原装的应用直接在「内容类型」中选择「应用」,然后选取相应的应用即可。

 

 

当你设置好一系列应用后,就可以点击正上方的「播放」按钮,播放整个流程。当然,如果你想要调整每个应用出现的顺序,直接按住调整即可。

 

 

全部动作添加完成后,但是如果你想通过 Siri 来唤起这个捷径,还有一个地方需要设置。点击右上角设置按钮,选择「添加到 Siri」并录制你希望唤起这个捷径的口令就可以了。

当然,上面提到的例子都是非常简单的捷径,而真正实用的捷径,往往是需要一定的计算机专业基础的甚至需要一些编程基础的,感兴趣的朋友可以升入研究一下。

 

不过,前面已经给大家整理过很多高效捷径,大家在后台回复「捷径」就可以获得我为大家精选出30个高效捷径。此外,软件自带的捷径中心也为我们提供了很多高效的流程,我想你一定会喜欢!

好了,当我们拥有了许多高效的「捷径」后,如何能够快速的调用它呢?

 

01 添加到主屏幕

 

也就是说将这一条「捷径」以APP 的形式固定到你的桌面,实现快速的使用。

 

在此过程中,你不仅可以自定义图表的形状,颜色,连名称都能随你的心意,非常赞!

 

 

02 添加小组件

 

如果你嫌这些图标全都固定在桌面比较繁杂,你还可以把他们固定到下拉菜单中。

点击编辑,在小组件中添加即可。

 

这样,你就可以在你的下来菜单中,快捷的使用这些「捷径」了!

 

 

掌握了「捷径」,我们就能用最便捷的方式完成工作,可以说,「捷径」将你iPhone的价值用到了极致!

 

最后说两句

 

自己制作一个APP确实困难,但是「捷径」为打造一个高效私人APP创造了可能。虽然一些编程很复杂,但现在已经有大量程序员编在github上传现成的框架,你完全可以拿来借鉴。

 

最主要的是,它把原来你可能要操作10步的流程1步解决了,还能实现多个复杂工具的集成使用,真可谓是提高效率的神器!

 

最后的最后

 

不瞒您说

不会这些高效操作,

很多人真能把iPhone XS Max用成诺基亚。

 

原文链接:https://www.jianshu.com/p/e3aa41c6558f

用Python每天自动给女朋友发短信

Python 是一个有条理的和强大的面向对象的程序设计语言,类似于Perl, Ruby, Scheme, 或 Java。Python已经成为较受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。

有打算学习Python的同学问,学了Python都能做什么?具备这些技能后薪资能到多少?今天我们就以以为小哥哥的实力来分析一下。

一、今天看到一位小哥哥做的Python项目:

学了一段时间Python,算是有收获,回来答一下,如能帮助有缘人,不胜荣幸!

优先说项目,东西很简单,就是一个能每天早上给女朋友发短信(报告天气预报和撒狗粮)的一个爬虫?脚本?anyway…

项目分为两部分,头一部分获取天气预报,第二部分是调用阿里云短信服务的接口发送短信,over(够简单粗暴),大致步骤如下

1.抓取天气预报。

这里可以写爬虫抓一些在线网的天气信息,实现起来也很容易,算是基础的一些爬虫入门吧。我在学习处理json的时候接触了和风天气的API(需要注册,嫌注册麻烦的可以写爬虫抓天气预报网站的信息),懒人,有API用就不多写代码,直接用了和风天气API,将请求结果返回来处理一下就OK。

2.格式化短信内容。

较后将要发送的短信内容转换为JSON格式就可以了,个人认为这个小项目的难点在于阿里云短信服务的配置上和接口调用(但这也是这个项目的简单部分,不用自己去实现发送短信复杂的请求,适合如我一般的初学者练习做东西)

3.找个地方部署并设置定时任务。

当时做这个的时候,不知道fabric这个库,现在才知道当时自己的部署方式多LOW多笨。。。。

雇个机器人帮你干活

机器人会取代你工作!
计算云会取代你工作!
AI 会取代你的工作!

我相信科技终究有一天会消灭所有工作,但我们这代人的无奈就是很难等到这一天。

等不及了怎么办?

既然还没被取代,那就雇个机器人帮你干活

我每天第一件事是去各个网站看热门新闻、行业资料。以前是用RSS,但RSS 被视为落后,越来越多的网站不再提供 RSS 源。离开 RSS,我就一直没找到更合适的方法去将内容聚合起来,不得不在一个个网站间疲于奔命,逐渐不再看内容。

RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的 XML 应用。简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。

直到遇到了我的第一个机器人雇员 Huginn

Huginn 是一个可以创建为你在线执行自动化任务的系统。Huginn 可以读取网页,监测事件并且执行符合你需求的动作。Huginn 通过 agents 创建并执行任务(事件流)。你可以将它看作是一个运行在你自己服务器上的 IFTTT 或 Zapier。

Huginn 帮我将所有信息聚合成 RSS ,24 小时帮我获取我要的内容。

  1. 网易热门新闻:抓取网易顶贴最多的100条新闻
  2. 百度实时热点:实时更新每天的百度热点
  3. 果壳网:果壳首页推荐,官方更新速度较慢,刚好可以了解些奇思妙想
  4. 工作类:梅花、SocialBeta、数英网、艾瑞网

来源:https://www.jianshu.com/p/f05ef4230cfc

Huginn 是什么呢 ?

在北欧神话中,人们还相信万神殿的主神奥丁有两只黑鸦,一只叫Huginn,另一只叫Muninn,它们替奥丁观察并且聆听世界。

每天早晨,北欧众神之父─奥丁会把他的两只乌鸦─福金 (Huginn) 及雾尼 (Muninn) 送到尘世视察大地。每个玩家会拿取一只乌鸦,并使用他们的飞行卡,在世界上 (也就是我们熟知的地球) 各种不同的地形移动乌鸦。
 
在北欧神话中,奥丁只有一只眼,留着长胡子,手中常握着永恒之枪(Gungnir)。他穿着斗篷,戴着宽檐帽。
 
He is often accompanied by his animal companions — the wolves Geri and Freki and the ravens Huginn and Muninn, who bring him information from all over Midgard — and rides the flying, eight-legged steed Sleipnir across the sky and into the underworld. 
他身边陪伴着两只狼基利和库力奇,还有两只乌鸦福金和雾尼为他报告“中庭”的一切消息。他的坐骑是八条腿的战马斯雷普尼尔,奥丁会骑着它上天入地。
 
背景:北欧神话中的众神之王奥丁(Odin)拥有两只渡鸦,帮助他在人类居住的尘世“米德加德”收集信息。它们的名字分别叫胡金(Huginn)和穆宁(Muninn),在古斯堪的纳维亚语中是“思想”和“记忆”的意思。古代人显然很早就对鸟类的智慧有所体悟。权力的游戏中那种三眼渡鸦大家应该有印象吧。一位新的研究发现,渡鸦能够灵活地为在感官意识之外的事件作出预判和计划,这种认知技能之前一直被认为是灵长类动物独有的。心理学领域有个关于控制力的经典试验,即考验孩子会选择现在吃一颗棉花糖,还是15分钟后吃两颗棉花糖。渡鸦在一个类似的试验中表现上了极强的控制力和预见力,在美味的食物和可以帮助它们在未来觅到更多食物的工具之间,大部分渡鸦都选择了工具。而没有选择工具的那只雌性渡鸦更是令人吃惊,她发现了试验的漏洞,直接偷袭了屋里装食物的容器。
 

乌鸦(crow)世界上最聪明的鸟类之一,遍布世界。在中国大部分地区文化中,人们将乌鸦视为不详的鸟,但是在世界很多地方却恰恰相反,让我们来了解一下世界各地乌鸦的传说吧……

中国民间传说中,乌鸦反哺的故事是最让人感动的一个故事,乌鸦是一种通体漆黑、面貌丑陋的鸟因此人们觉得它不吉利而遭到人们普遍厌恶,但他们却拥有一种真正值得我们人类普遍称道的美德:养老、爱老,在养老、敬老方面堪称动物中的楷模。据说这种鸟在母亲的哺育下长大后,当母亲年老体衰,不能觅食或者双目失明飞不动的时候,它的子女就四处去寻找可口的食物,衔回来嘴对嘴地喂到母亲的口中,回报母亲的养育之恩,并且从不感到厌烦,直到老乌鸦临终,再也吃不下东西为止。这就是人们常说的“乌鸦反哺”

另外无论是非洲还是美洲乌鸦都代表着智慧,有着美丽的黑色羽毛,而且据说这些羽毛曾经是白色的……在凯尔特神话中,乌鸦是非常有灵性的鸟类。据说,众神之父奥丁有两只白色乌鸦(名叫Huginn和Muninn),每天都可以在世界各地飞来飞去,只是为了告诉他所看到和听到的一切,所以奥丁也被称为“乌鸦神”。

在美洲原住民的传统中乌鸦有着神圣的地位,乌鸦是“ 灵魂的渡船”,他将灵魂从这个世界护送到来世。

所以乌鸦寓意着智慧,孝心,成长以及无所不知,无所不及。

 

北欧神话中的众神之王奥丁(Odin)拥有两只渡鸦,帮助他在人类居住的尘世“米德加德”收集信息。它们的名字分别叫胡金(Huginn)和穆宁(Muninn),在古斯堪的纳维亚语中是“思想”和“记忆”的意思。古代人显然很早就对鸟类的智慧有所体悟。权力的游戏中那种三眼渡鸦大家应该有印象吧。一位新的研究发现,渡鸦能够灵活地为在感官意识之外的事件作出预判和计划,这种认知技能之前一直被认为是灵长类动物独有的。心理学领域有个关于控制力的经典试验,即考验孩子会选择现在吃一颗棉花糖,还是15分钟后吃两颗棉花糖。渡鸦在一个类似的试验中表现上了极强的控制力和预见力,在美味的食物和可以帮助它们在未来觅到更多食物的工具之间,大部分渡鸦都选择了工具。而没有选择工具的那只雌性渡鸦更是令人吃惊,她发现了试验的漏洞,直接偷袭了屋里装食物的容器。

In a twist on the famous psychological experiment, scientists have found that ravens are more than a match for chimpanzees and even four-year-old children when they are challenged to put off gratification and plan ahead.


译文: 科学家在这个著名心理学实验的一次改版中发现,渡鸦在面对需要延迟满足感和事先计划的挑战时,表现超过了黑猩猩,甚至比四岁的孩子更强。

A series of experiments with ravens finds that the birds display the ability to think ahead and deliberately prepare for future events,  adding to the growing body of evidence that intelligence has evolved more than once.

译文:针对渡鸦的一系列试验发现,鸟类有意识地为未来事件做准备,展示了预先思考的能力。这也和越来越多的证据一起,证实了智力进化不是一蹴而就的。


 

定制个人全自动化的“最勤劳员工”?

如今信息碎片化时代.各种自媒体平台、微信公众号、知识付费平台、知乎、微博等等社交平台,让人看的眼花缭乱。我每天也有花一部分时间在各个平台阅读自己感兴趣的内容的习惯,由于有点强迫症和完美主义情怀,一直想将自己关心的内容聚合在一个体验感更好的地方阅读

于是我前些天测试了一个可以根据自己需求定制的RSS自动聚合订阅的一站式信息站:

http://www.affow.com

实现了个性化内容聚合定制需求,不需要逐个打开各个平台并登陆翻阅关注喜欢的内容,减少重复性的操作,可以节约不少时间,一定意义上提高了阅读效率。

这个插件还有几个样式可供选择:

Demo1:

RSS订阅wordpress插件采集

Demo2:

RSS订阅wordpress插件采集

Demo3:

RSS订阅wordpress插件采集

要实现这个功能只需要简单的一个Wordpress插件即可完成,这是一个付费的插件,我已经发到社区

但这种被动式的阅读方式跟理想的自动化定制尚远,有没有更主动的阅读方式?

比如以下几个需求场景:

  1. 比别人更抢先一步收到实时新闻,比如股票的波动.
  2. 暗恋的女神微博、ins、推特等….动态一旦更新马上收到通知。其实不止如此,作为公关,你应该希望可以监控大部分主流社交平台,一旦人们讨论某个关键词,比如“Affiliate Marketing”的时候,你将自动第一时间收到通知。是不是很棒?
  3. 跟踪第二天的天气情况,提前预警及时自动推送给你关心的人
  4. 监听电商的商品价格、航班信息,降价及时收到通知,为你省钱!
  5. 抓取网页的内容,有变化了马上通知你。比如监听你的Landing page页面,一旦服务器异常,页面内容变化,自动告诉你需要马上处理,是不是能给你省一打的钞票?
  6. 烧录RSS.让你喜欢的作者、自媒体、公众号都聚合在你的手机App,当然你也可以通过关键词来筛选需要关注的内容.他们一旦更新马上能收到手机通知.相当于一站式为你筛选了最关心最优质的内容.

这些场景基本都可以在Huginn实现.

Huginn是什么?

Huginn 是一个用于构建在线执行自动化任务的系统,它可以监控网页变化、聚合第三方应用并且根据设定的触发条件执行自动化操作。

如何免费打造个人可定制的自动化“最勤劳的员工”?

它名字的由来是传说有两个乌鸦,名为Huginn和Muninn,它们被视为奥丁的左肩右臂。奥丁在黎明时送出Huginn和Muninn,它们飞到世界各地,然后在晚餐时间回来,告诉奥丁它们看到和听到的一切,奥丁则赐予它们食物作为报酬。(奥丁是北欧神话中的主神,在诸神的黄昏一役中战死)

我之前看到到湾区日报也利用Slack+Hubot实现了自动化机器人融入项目工作中。

  • Slack是当下(湾区)公司里最流行的聊天软件!
  • Hubot是Github开源的聊天机器人

两者结合基本可以实现自动处理大部分重复性的繁杂工作,让你真正轻松+愉快地让机器人根据你的指令完成工作,所以湾区称之为“最勤劳的员工”。

Huginn同样可以结合Slack推送通知.选择Slack的理由是:它像国内企业微信一样类似,支持桌面端、Chrome插件、iOS和Android端,界面漂亮,并且可以自己选择把消息推送到哪一个群组。

当然你也可以选择推送到邮件,这个成本最低,但是邮件最容易漏看。pushover是个非常不错的选择,但它是收费产品,30块钱的授权许也算是业界良心了。

比如:我非常喜欢看的一部美剧《权利的游戏》,每周更新必看,但工作一忙确实就忘了今天更新了.这个时候,我们就可以利用Huginn+Slack实现一旦《权利的游戏》更新马上推送给我。

Huginn是一个开源的程序. 下载以及安装使用文档,请到Github上查看官方文档:

https://github.com/huginn/huginn

使用Huginn的要掌握一些小门槛:

  1. Linux基础使用和环境部署
  2. 定制Website Agent规则
  3. XPath(这个我建议使用Chrome的XPath插件即可)
  4. 基本的Html代码总能看懂吧.
  5. Huginn安装比较简单.网上也有教程,不再赘述!

这里我是直接搭建在自己的服务器上,「Affiliate营销圈」的朋友感兴趣可以直接在我搭好的平台上玩,申请开通账户,同时我会不定期在平台上写一些好玩的Scenarios脚本功能共享,大家直接可以拿来主义。

实操个小案例简单了解Huginn是如何运作的:

通过Huginn抓取任意网站RSS并输出全文

以我的博客为例:www.fuyuzhe.com

先创建一个Agent

如何免费打造个人可定制的自动化“最勤劳的员工”?

由于篇幅有限,不再逐个解释每个选项的意义.大家可以到官网查看文档。

解释几个重要概念:

  1. Type必须选对.RSS基于XML的形式.所以选择Website Agent
  2. XPath 可以确定你的网页唯一元素,我是用Chrome自带的开发者工具+Chrome插件:XPath抓取网页元素.
  3. Toggle View是目标网站规则编写区域

如图所示,我使用Chrome+XPath抓取了标题的信息:

如何免费打造个人可定制的自动化“最勤劳的员工”?

其它的链接、日期什么原理是一样的,最后测试结果如图:

如何免费打造个人可定制的自动化“最勤劳的员工”?

接下来我们再创建一个DataOutputAgent,如图:

如何免费打造个人可定制的自动化“最勤劳的员工”?

到这里Huginn会给你生成一个Xml和Json两种格式的文件

如何免费打造个人可定制的自动化“最勤劳的员工”?

后面的烧录你可以使用feedburner,这里不再赘述。以下是我烧录的结果:

如何免费打造个人可定制的自动化“最勤劳的员工”?

这个过程中稍难的部分无非就是获取XPath元素.其实也是使用Chrome插件的XPath简单点选元素自动生成的.所以应该人人都可以操作。

本篇简单介绍了下Huginn最基本的抓取任意网站烧录Rss应用,当然你也可以定制微信公众号、微博、知乎,原理是一样的。其它更多好玩的高级Affiliate应用场景我会共享在平台上,或者你有其它疑问,可以在知识星球里提问交流。

总的来说,Huginn会成为比IFTTT更加强大的自动化平台。它可以无缝自动跟踪推送到QQ、微信、Email等。同时可以将关注的网页进行RSS全文输出,分享自己写好的脚本给其它伙伴,依赖于Huginn完全可以打造一个强大的可定制的个人互联网智能任务系统,让它成为免费的个人可定制的自动化“最勤劳员工”。

高使用门槛的RSS

我大概有资格自称为一个 RSS 的重度用户,几年来一直坚持把 RSS 作为自己最重要的信息获取来源。App Store 上主流的 RSS 客户端工具,我基本都尝试和对比过;Google Reader 以降的各种 RSS 服务,我也先后使用过很多,还曾为其中几种付费。现在,我放在 DigitalOcean 上一台 VPS 服务器的主要职能,就是运行一个自建的 Tiny Tiny RSS 服务端,配合移动设备上的 Fiery Feed 阅读 RSS;这台服务器的剩余性能则用来运行 Huginn,帮我爬取一些不支持 RSS 的网站(包括微信公众号),输出到 RSS 中阅读。

 

 

但即使自己对 RSS 如此依赖,我仍然不认为它就是应当被「复兴」的,更不认为它可以被当作针对算法推荐带来诸多问题的解药。

首先需要检讨的是,RSS 究竟是什么?与算法推荐的本质区别何在?几乎所有介绍 RSS 的文章——《连线》这篇也不例外——都会指出 RSS 的全称是「简易内容聚合」(Really Simple Syndication),是一个能让你在一个地方订阅各种感兴趣网站的工具,但解释也就到此为止了。对于一个从未听说过 RSS 的读者来说,很难相信这样的介绍能让他们理解或感兴趣——哪一个主流的资讯阅读工具不能把用户感兴趣的内容聚集一处呢?

我们不妨啰嗦一点,从头梳理一下 RSS 的工作机制。如果一个网站支持 RSS,就意味着每当它新发布一篇新文章,就会往一个位于特定网址的文件中,以特定的语法(具体而言是 XML 标记语言或 JSON)增加一条记录,列明这篇文章的标题、作者、发表时间和内容(可以是全文,也可以是摘要)等信息。

这样,用户只要搜集所有他感兴趣的网站提供的这种文件的网址,并不时检查这些文件内容的更新,就能知道这些网站是否、何时发布了什么内容。RSS 阅读器的核心功能,就是存储用户订阅的 RSS 地址,以固定的频率自动检查更新,并将其内容转换为易读的格式呈现给用户。

 

RSS 本身具有的功能就是这些了,但这恐怕还是很难说服人去使用。有谁会觉得把一群网站的文章堆在一起是种好的体验呢?的确如此,这就是为什么「现代」的 RSS 阅读器为了增强可用性,都不会囿于 RSS 那屈指可数的几个属性,而必须提供文件夹、标签、过滤器等功能,允许用户按照文章的话题、关键词、热度等属性来进一步整理、排序和筛选。有些阅读器为了增强用户黏性,还会提供部分文章推荐和社交功能。

等一下,这不就是算法做的事吗

没错,RSS 和算法本是殊途同归,都无非是获取信息的工具。它们的存在是为了解决同一个问题:如何从无限的信息中筛选出最有用的那些。严格来说,要判断一则内容是不是对自己有用,唯一的方法就是把它看完。在此之外,诸如标题、梗概、简介、推荐等所有元信息(metadata),都不能准确地反映有用程度。但在有限的时间和精力下,逐一检验显然不现实;因此,人们又不得不用这些元信息或其加权组合作为内容价值的拟制

两种进路的分歧之处就在于此:(原教旨的)RSS 是用文章来源和发表时间作为其价值的拟制,它假定 (a) 之前产生过有价值内容的信息源会继续提供有价值内容,和 (b) 时间越近的内容越可能有价值;而算法推荐是用与浏览历史的相似度来拟制信息价值——与之前看过的内容越类似,就越有价值。

但实践中,这种分歧早已模糊了。RSS 那种纯粹的无为或许是技术伦理上的清流,但一定是用户体验上的灾难,因此活下来的 RSS 产品都在功能上或多或少借鉴了算法阵营。另一方面,算法在判断相似度的时候,也不可能不考虑来源和时效性。因此,空泛地呼唤 RSS 的复兴是没有意义的——你只是在呼唤一个失去了对象的能指。

 

当然,RSS 和算法也有另外一些区别,其中被拿出来说事的最多的,大概是两者一个透明、一个是「黑盒子」,一个完全自治、一个受制于人。但这并不能必然导出 RSS 有益而算法作恶的结论。要判断 RSS 是不是真的比算法更好,还要看它们究竟会对使用者造成怎样的影响

目前,对算法主要抨击来源于其引发的两大问题:

其一是所谓的「回音壁」现象,即算法为了增强用户黏性,会迁就后者的喜好,不断猜测和推荐符合其立场和偏好的内容。这可能使用户接触的内容越来越狭窄,并强化其固有的偏见,因此是不健康的。这是事实,但 RSS 也不是问题的解药。在 RSS 中,每一个订阅源都是需要手动订阅的,这所需要的时间和心理成本远远高于从算法推荐的信息流中随手点开一篇文章的成本。显然,任何人都会倾向于订阅符合自己兴趣和立场的站点;很难想象会有多少人「捏着鼻子」强迫自己订阅厌恶的内容。反倒是算法推荐有时出于纠错、试探等目的,会不时在推荐内容中加入一些「噪音」,刻意推荐一些与用户此前体现出的喜好有所差异的内容;这也为人工干预算法以缓解回音壁效应提供了可能。而在 RSS 上订阅什么则只能由用户自己控制,相比之下在构建偏见方面的问题反而更大。

其二则是「信息过载」的问题。算法推荐常常被诟病的一点就在于它所采用的「瀑布流」模式:无穷无尽,刷完一屏,马上就会生成下一屏内容,让人难以自拔。由此观察,似乎问题的症结在于内容数量的无限性。但只要对 RSS 的相关讨论稍微有所了解就会知道,即使 RSS 上的内容是可计数的(事实上大多数 RSS 阅读器的界面设计都在强调这个数字),其造成的信息过载问题也丝毫不逊于算法。这是因为随着使用时间的推移,用户倾向于不断添加新的信息源;如果同时又疏于清理,很快就会发现自己每天都收到数以百计的新资讯,却无暇阅读。看似「有限」的未读数量逐渐堆积,引发巨大的压力和焦虑,最终导致资讯阅读系统的崩溃。相反,算法生成的信息流如果堆积起来,反而更容易让人「破罐破摔」,「大不了不看了」,放弃的心理成本相对较小。

一句话,算法推荐会导致的问题,即使换用 RSS 一样不能幸免,甚至可能更加严重。归根结底,这些问题的真正成因都不在于工具,而在于我们自己。人类天生有期待认同、排除异己的倾向。回音壁或许是技术建起来的,但终究是人自己躲进去的。信息摄入成瘾则是相对于资讯爆炸进化不足的体现。既然人类在物质过剩的今天,仍然无法摆脱对淀粉和脂肪本能的生理渴望,有什么理由能指望他们在面对信息过剩时,就能轻易跳脱「多一份信息、多一条活路」的狩猎思维呢?

毋须讳言,无论如何鼓吹 RSS,对于大多数人来说,RSS 就是比算法推荐难用。这种难用首先难在技术层面。暂且抛开挑选客户端、设置过滤器这些极客津津乐道、普通用户一头雾水的概念,哪怕只是搜集订阅地址这一最基础的操作,就足以构成很多用户无法逾越的障碍。如果《连线》杂志那篇文章的作者是针对中文群体写作,他一定不敢一边推荐,一边告诉读者如今想用 RSS 看微信公众号需要用到爬虫,否则他的 RSS 怕是没有复兴的希望了。

RSS 之难还难在需要风险自担。是的,它透明、纯粹、自由;但自由越大,责任也越大。如果一个人因为依赖算法推荐的文章而变得沉迷或偏激,他可以责备算法的不完备和邪恶;但如果一个 RSS 用户遇到同样的问题(我们已经证明这一概率并不低),他能责备的只有自己——每个订阅源都是他亲手添加的,每个话题都是他自认为有价值的。

 

当然,从某种程度上来说,RSS 的这种高使用门槛正是它的魅力所在。选择了 RSS,就意味着要强迫自己控制信息源的数量和质量,并压制过度摄入信息的欲望。这种与自我的搏斗不仅是对自制力和判断力的锻炼,也能让人不断摸清自己的需求。

但矛盾在于,如果一个人的自律和理性能帮助他围绕 RSS 建立一套健康的信息获取系统,那么有理由相信,即使强迫他换用基于算法的工具,他也不容易落入算法设置的陷阱。相反,如果一个人会轻易被算法操纵和左右,那么仅仅换用 RSS 也不足以弥补他在智识和判断力上的缺陷。「复兴 RSS」之所以不具有可行性,是因为在多数人需要一粒感冒药的时候,它递过去的却是一瓶蛋白粉。

实际上,《连线》此文所体现和唤起的对 RSS 的怀旧情结,早就不是第一次,也肯定不是最后一次。自从传统 RSS 阅读器的代表 Google Reader 在 2013 年关停以来,挽歌之声就不绝如缕。每遇到一次类似最近 Facebook 丑闻这样的技术公共事件,对 RSS 时代的怀念和倡导就会迎来一波高潮。

这不由让人联想到,几乎所有历史叙事中都存在那么一个人人怀念、却永远回不去的「黄金时代」。古代雅典的黄金时代是伯里克利改革后全民民主的时代。古代中国的黄金时代是尧舜禹治下大道之行的时代。而互联网发展史上的黄金时代,就是 RSS 作为信息聚合阅读主要工具的时代。在网络用户对那个时代的集体回忆里,网站是简单纯粹的,软件是安分守己的,聊天室里微风送客,讨论版上软语伴茶,好一派乌托邦般的理想景象。

但黄金时代的另一个名字是匮乏时代。货不必藏于己、力不必为己的另一面,是本来就没有多少财货可分,只有协力抱团才能生存。类似地,RSS 之所以在当年能普遍应用,是因为那时的网页大多数还是静态的,除了文本和简单的格式之外几乎就没有什么内容,很容易转化成 RSS 支持的统一格式。Web 1.0 时代也没有什么 UGC(用户生成内容)的概念,信息传递的路径还是网站到用户的单项输送,多数人靠浏览个别几个门户网站获取资讯,RSS 提供的一站式方案当然是很大的便利。这些前提在如今都被推翻了。你不能一边享受着 HTML5 和 JavaScript 带来的多彩体验,一边奢望它们能被发明于 20 世纪的 RSS 不失真地运载。你也不能一边抱怨着社交网络的垃圾信息,一边指望着只要「恢复时间线排序」就能药到病除。

 

在我看来,回音壁也好,信息过载也罢,固然是信息社会如今面临的严峻问题,算法也固然起了某种推波助澜的作用,但这都不是只靠怀旧就可以解决的。比起工具问题,它们的更本质的成因是思维问题、观念问题,其解决也只能从改变观念入手。

首先,人们应当意识到,摄入信息和摄入食物一样,并不是越多越好的。如上所述,人类思维并没有与技术同步进化,而还停留在那种面对信息饥不择食的状态。但信息已经提前物质一步迈向了后匮乏时代。继互联网让传播的边际成本归零之后,拜社交网络、内容农场和 AI 所赐,生产内容的边际成本也快被压缩到可以忽略不计。

如果说一篇网络写手为流量和推广而炮制的「标题党」稿件和一篇作家寤寐辗转写出的散文应当得到同样对待,谁都会觉得这是可笑的。可惜,人的本能并没有进化出如此基本的理性:当我们近乎无意识地不断刷新各种时间线的时候,不还是因为相信「下一条可能更有意义」吗?当我们为读不完各种公众号、付费内容而焦虑的时候,不还是出于「漏看一点就是损失」的恐惧吗?

然而,多刷一条不会带来更多意义,少看一篇也算不上任何损失。匮乏式思维的特点在于始终对错过的东西念念不忘,殊不知我们错过的东西是远远多于得到的东西的。举重明轻,如果我们都不遗憾于错过了那么多人、那么多风景,为什么反而要焦虑于没法读完每一条并无新意的新闻,纠结于无力刷遍每一条朝生暮死的热点?

其次,也是更重要的,要认识到无论是处于舆论风口浪尖的算法、还是重新被人想起的 RSS,它们作为筛选工具解决的都只是一个最初级的问题——如何获取信息。但在这之后,如何鉴别价值、去粗存精?如何纵横分析、延伸发散?如何理解吸收、化为己有?

RSS 不能告诉你这些,因为它的功能只是机械地反应信息的原貌。算法则不会告诉你这些,因为它的使命只是招揽流量的手臂。在知识和信息成为消费主义客体的时代,我们过于容易满足于「知乎」,而忘了质问「值乎」、探讨「止乎」、反思「智乎」。如果把关注点集中在后面几个更重要的问题上,工具之争其实根本没有想象的那么重要。

回到我们在文章最初提出的问题,答案是很清楚的。RSS 没法复兴,作为一种标记格式,它已经不适应新的内容量级和呈现技术。RSS 也没有必要复兴,作为一种信息聚合协议,它的本质和思路仍在被无数工具借鉴和继承。历史告诉我们,「复兴」的真正宾语从来不是什么具体的物件。正如启蒙运动是启蒙理性思维而不是文学流派,文艺复兴是复兴人文主义而不是希腊罗马,信息时代要启蒙和复兴的,不是原教旨的技术架构或者特定工具,而是人置身于海量信息而不被其裹挟,与算法、AI 的不确定性相处而不被其左右的能力。如不其然,复兴了 RSS,也只是给假新闻多一个传播的渠道;复兴了开放互联网,也只是给傲慢和偏见多一个活跃的温床。

aws 部署 huginn, 制作微信公众号rss

1. 购买机器。

2.安全组开放3000端口。

3. 安装docker

4. Start your Huginn container using docker run -it -p 3000:3000 huginn/huginn

5.通过ip:3000访问huginn。用户名和密码是默认值

6.导入scenario.

详情:https://www.jianshu.com/p/582ad1400d6e

scenario下载地址: https://pan.baidu.com/s/1jJiEmXK

注意有一点要修改,输出RSS agent中要添加link为你的服务器域名或ip,否则输出rss地址中域名为localhost

{
“type”: “Agents::DataOutputAgent”,
“name”: “输出RSS”,
“disabled”: false,
“guid”: “1ea34bb7e56575e6c007bf2e2f48b990”,
“options”: {
“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}}”
},
“link”: “http://yourdomainOrIP:3000”
}
},
“propagate_immediately”: true

},

7. 运行4个agent .在“输出RSS”agent中,就会有json和xml链接。如果你有域名,可以直接用xml为RSS地址。如果只有ip, 到feedburner.google.com 中去转化一下,将其输出作为RSS地址。

参考链接:

1. 如何高效地订阅微信公众号

2.docker安装 huginn

3.huginn原理简介

原文链接:https://blog.csdn.net/jdk137/article/details/80148622

Huginn实现自动通过slack推送豆瓣高分电影

Huginn实现自动通过slack推送豆瓣高分电影

如果尚未安装 Huginn,可以参考这里

想象下以下场景:每当有正在上映的电影在豆瓣上的评分超过7.8分,则 huginn 自动编辑一条信息并通过 Slack (当然也可以用 telegram 等app)通知到我电脑或者手机上。收到信息后,点击不喜欢忽略,或者点击购票按钮直接进入到购票页面。甚至 Huginn 可以结合 Google Calendar 查询你这几天的行程安排,推送高分电影信息的同时给你选择一个比较合适观看电影的时间点,购买好电影票后,huginn 又自动帮你把日程事件写入到 Google Calendar 中,并设置提醒。是不是很酷?!

Huginn 就如你的贴心管家,按照你的意愿自动帮你完成很多事情。

我们先来实现 每当有正在上映的电影在豆瓣上的评分超过7.8分,则给我推送 Slack 信息 这一部分需求。

最后达到的效果如下:


手机端效果

PC端效果

创建 Agents

首先进入 Huginn 首页(默认localhost:3000),左上角进入 Scenarios

我的理解:Scenario 代表一种场景,一般会包含多个 agent,一个 agent 表示进行一次事件的处理或者变换。拿我们现在的例子来说,自动通过slack推送豆瓣高分电影 这一整个就是一个 Scenario,但是这个 Scenario 会有很多的 agents 组成,比如:

  • 有一个 agent 是用来从豆瓣网页获取当前上映中的所有电影和它们的分数等信息;
  • 一个 agent 是用来从第一个 agent 里面拿到的所有电影进行过滤,过滤的标准就是 score > 7.8
  • 还有一个 agent 是用来把过滤后的电影通过 slack 推送到我们手机上。

看着跟 RxJava 的观察者模式是不是很像?第一个从豆瓣页面拉取数据的过程就像是 Observable,然后其它的 agent 就像很多的 operator 用来把数据进行转换和变化,最终通知到 subscriber,这里的 subscriber 就是我们自己。我们通过 huginn 订阅了 豆瓣高分电影,就是这么简单。

点击左下角的 New Scenario 创建一个名为 douban_high_score_movie 的 Scenario。

创建获取数据 agent

第一个 agent 用来从豆瓣官网获取所有正在上映的电影

douban_high_score_movie 的 Scenario 中点击 + New Agent 来创建第一个 Agent。

如上图,你需要去决定你要创建的 agent 的类型(这里是目前 Huginn 支持的所有的类型)。

我们通过输入 “web” 来进行过滤选择 Website Agent

上图,左边是我们需要去配置的地方;右边是每个设置对应的说明。

  • Name:给这个 agent 取个名字,我们这里取名为 step1_get_douban_playing_movies,表示这个 agent 是 douban_high_score_movie 这个 Scenario 的第一步,是用来从豆瓣获取当前正在上映的所有电影。
  • Schedule:表示调度周期,表示在什么时候自动执行这个 agent,比如 Every 1d 表示每一天执行一次、Every 2h 表示每2小时执行一次、8pm 表示每天下午8点执行等等;这里我们选择 3pm,每天下午3点执行一次。
  • Keep events:表示事件保留的时间;比如我们从豆瓣上获取到所有上映的电影,每一部电影信息都是一个 event,Huginn会把这些 event 保留在本地,你可以通过这个参数来设置这些 events 在本地保留多少时间,超过这个时间,Huginn会把数据清除。我们这里设置1小时(为什么只设置为1小时,下面我们会再讨论)。
  • Sources:表示这个 agent 处理的数据来源是哪个 agent。我们现在创建的 agent 是第一个 agent,是从豆瓣网站上获取正在上映的所有电影,所以不需要从其他 agent 传递数据(也就是上面说的 events)过来,所以这个留空。
  • Receivers:表示这个 agent 处理完数据之后把这些数据传入到哪个 agent。还是用 RxJava 做类比,因为每个 agnet 都有可能只是整个观察者模式中的一个操作符,用来转化数据,数据转化完之后,可能还需要其他 agent 把这些数据做进一步的转化。
  • Scenarios:表示这个 agent 是数据哪个 Scenario 的。
  • Options:这个非常关键,就是通过这个配置文件(JSON)来进行网络请求和豆瓣电影数据解析相关的操作的,这个我们重点讲下。

注意:以上没提到的配置可以留空

Options 配置

Options 配置其实就是一个 JSON 文件。Website Agent 的 Options 主要的元素有如下:

  • url:网站地址,表示我需要从哪个网站获取数据,现在我们是从豆瓣,所以需要输入豆瓣正在上映的网址,这里我们输入 https://movie.douban.com/cinema/nowplaying/hangzhou/,当然最后一个地点可以根据你的常驻地点做相应的修改。
  • type:数据解析的类型,支持的类型有 xmlhtmljsontext 四种,当前豆瓣网址返回的当然是 html 了,所以这里我们填写 html。如果其他场景,比如 调用第三方开放的 api,返回的类型可能就是 json 或者 xml了。
  • mode:表示获取数据的模式,我们这里选择 on_change
    • on_change:在数据有更改时才会获取作为 events。
    • merge:把新数据和输入的数据进行合并。
    • all:获取所有数据。
  • extract:用来配置(JSON)从这个网站解析出真正我们想要的数据。如果 typehtml,则每个数据通过 css 选择器或者 xpath 来解析出真正的数据。

注意: on_change 这个设置在我们现在的场景下其实用处不大,这个下面我们会再讨论

最后的 options 如下:

{
  "expected_update_period_in_days": "2",
  "url": "https://movie.douban.com/cinema/nowplaying/hangzhou/",
  "type": "html",
  "mode": "on_change",
  "extract": {
    "title": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-title"
    },
    "score": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-score"
    },
    "star": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-star"
    },
    "release": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-release"
    },
    "region": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-region"
    },
    "actors": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-actors"
    },
    "director": {
      "css": "li[@data-category='nowplaying']",
      "value": "@data-director"
    },
    "detail_url": {
      "css": "li[@data-category='nowplaying']/ul/li/a[@data-psource='poster']",
      "value": "@href"
    },
    "image_url": {
      "css": "li[@data-category='nowplaying']/ul/li/a[@data-psource='poster']/img",
      "value": "@src"
    }
  }
}

以上可以看出,我们从豆瓣的每部电影中获取了以下信息:

  • title:电影名字
  • score:电影分数,满分10分
  • star:电影分数,满分50分
  • release:上映日期
  • region:地区
  • actors:演员
  • director:导演
  • detail_url:详细 url
  • image_url:电影封面

注意:获取具体 xpath 比较简单的方法:通过 chrome 右键的 inspect 来复制拿到。

以上配置完毕后,点击下面的 Dry Run,应该就会出现以下页面

最后进行保存。第一个 agent 就创建完毕了。

同时,这个 agent 在运行的过程中会生成以下 events:

创建过滤 agnet

step1_get_douban_playing_movies 把所有正在上映的电影数据从豆瓣上拉取下来并解析好,生成一个个 events。然后我们第二个 agent 就需要从这些 events 里面进行过滤筛选出所有分数大于 7.8(具体的标准可以自己定) 的电影。相当于 RxJava 的 filter 操作符吧。

同样创建 agent,选择为 TriggerAgent,名字为 step2_pick_high_score_movies。这是把 Sources 填写为第一个 agent 的名字,即 step1_get_douban_playing_movies,表示我要创建的 agent 处理的数据(events)是从 step1_get_douban_playing_movies 来的。

然后重点还是在 Options 中

  • keep_event:表示是否把我从 step1_get_douban_playing_movies 这个 agent 收到的 events 原封不动地再传给下一个 agent(下一个 agent 我们还没创建),我们设置为 true。因为下一个 agent 我们是用来把数据通过 slack 发送到给我们自己的,那肯定需要第一个 agent 中获取到的例如电影名字、分数等信息。
  • rules:表示我们过滤的规则,可以多个,具体下面说。
  • must_match:表示 rules 中我必须要满足几个规则,如果是1,则意味着 rules 中所有的规则是或关系(只要满足 rules 中的1个规则即可);默认不填写的话是必须要满足 rules 中所有的规则。,因为我们这里只需要满足一个分数大于7.8就可以,所以可以不填写。

最后 Options 的配置如下:

{
  "expected_receive_period_in_days": "2",
  "keep_event": "true",
  "rules": [
    {
      "type": "field>=value",
      "value": "7.8",
      "path": "$.score"
    }
  ],
  "message": "Looks like your pattern matched in '{{value}}'!"
}

如上,在 rules 中添加一个规则,type 表示匹配规则,field>=value

  • field: 通过下面 path 从 events 匹配出来的数据,这里是 $.score,所以表示的是电影的分数;
  • value:表示下面 json 的 value 字段的值,这里为 7.8

通过简单的表达式 field>=value 来设定匹配规则:电影分数 >= 7.8分。

至此,第二个 agent 创建完毕。

你同样可以通过下面的 Dry Run 来进行测试,测试时因为有 Sources,需要你构造一些假数据作为输入来运行。

创建去重 agnet

step2_pick_high_score_movies用来把 step1_get_douban_playing_movies 中从豆瓣官网获取的电影信息进行高分的过滤(分数>=7.8)。

我们还需要创建一个去重的 agent,来避免重复给我们自己推送高分电影(因为我们现在获取的频率是每天进行获取检测,但是电影总不可能是每部电影只上映一天吧,第二天获取的时候肯定有第一天获取的数据)。

这里大家可能会有个问题,因为我们在配置第一个 agent 的时候,已经把 mode 已经设置为 on_change 了,为什么还是会有重复数据呢?因为这里的电影信息中,有诸如 分数 这类的数据,这些数据是随时可能会有变化的,虽然是同一个电影,但是分数从 8.1 上升到 8.2,那 Huginn 也会认为满足了 on_change 条件,所以会造成重复推送。所以,我们还需要单独做去重处理。

注意: 之前提到过 on_change 等设置在第一个 agent 其实用处不大,同样也是由于上面说的原因,我们也不知道同样的电影什么时候分数会发生变化,就算用了 on_change,也可能会把之前获取过的数据拿到。所以第一个 agent 的 keep_event 设置的时间比较短,因为这些 events 提供给 on_change 匹配意义不大,所以还是节省空间,设置短一点。

创建 agent,type 选择 DeDuplicationAgent,名字取为 step2_1_deduplication_high_score_moviesSources 填写为上一个 agent 的名字,即 step2_pick_high_score_movies

注意:这里 keep_event 设置了90天,因为一旦经过我们这个 agent 去重后,events 假设保留1小时,那下一天我再去获取所有上映的电影并高分过滤后,因为昨天的数据(events)已经被清空了,所以就没办法做比较去重了,所以会导致重复数据。所以这里保存时间应该要>=电影上映的时长,所以这里设置为90天,即3个月左右。

DeDuplicationAgent 的 Options 填写就比较简单了

  • Property:填写你要去重依据的字段,我们这里根据电影名字来去重,也就是 title
  • Lookback:表示去重的时候跟之前的多少条历史 events 做比较,同一时期一起上映的电影应该不会超过100部,所以设置为100了。

创建 slack 通知的 agent

Huginn 自带有一个 SlackAgent,用来发送 slack 消息。

它使用了 incoming-webhooks 来实现消息的发送。

但是为了有更多的可玩性,我们这里选择,自己创建一个 slack app,然后通过它的 open api 实现。

因此,我们需要创建一个 PostAgent。但是在此之前我们先来配置好 Slack 环境。

配置 Slack 环境

安装 Slack:https://slack.com

创建自己的 workspace(单独创建一个自己私有的,注意不要使用公司、团队的 workspace),比如我的是 https://wangjie.slack.com

在自己私有的 workspace 中创建一个私有的 channel:#huginn-movie

这个 channel 就是用来接收高分电影的数据了,当然你也可以使用 #general

然后我们创建一个自己的 app,用来发送电影信息。进入 https://api.slack.com/

点击 Start Building

  • App Name:可以随意填写
  • Development Slack Workspace:选择你刚刚创建的私有的 workspace

Add features and functionality 中点击 Permissions 进入权限配置。

Scope 中添加如下权限:

添加完以上所有权限后,点击保存,然后重新打开 Permissions,点击下面按钮安装我们的这个 app 到 slack。


安装完毕之后,再次进入 Permissions,拷贝 OAuth Access Token

然后,我们就可以使用我们的 token 来访问 slack 的 open api 了,具体文档在这里:https://api.slack.com/web

我们需要的发送消息到 #huginn-movie channel 的接口文档:
https://api.slack.com/methods/chat.postMessage

有了 api 文档,有了 token,一切就好办了。

由上述文档,我们可以通过 post 请求,把我们要发送的电影信息封装到 attachments 参数中执行请求即可。

而且 attachments 参数可以参考文档 https://api.slack.com/docs/message-attachments 来封装信息。

Slack 环境一切就绪,接下来,回到 Huginn。

创建 Agent 发送 Slack 消息

创建 PostAgent(注意,不是 SlackAgent),取名为 step3_high_score_movies_to_slack_postSources填写为 step2_1_deduplication_high_score_movies,因为这个 agent 需要把去重后的电影信息通过 slack 发送给我们。

最终的 Options 配置如下:

{
  "post_url": "{% credential slack_huginn_url_post_message %}",
  "expected_receive_period_in_days": "1",
  "content_type": "json",
  "method": "post",
  "payload": {
    "channel": "huginn-movie",
    "username": "Douban Movie",
    "icon_url": "https://img3.doubanio.com/pics/douban-icons/favicon_48x48.png",
    "attachments": [
      {
        "fallback": "Required plain-text summary of the attachment.",
        "mrkdwn_in": [
          "text",
          "pretext"
        ],
        "color": "#36a64f",
        "pretext": "Hi~ <@{% credential  slack_at_user_id %}>, There is *high score* movie.",
        "author_name": "{{director}}",
        "author_link": "{{detail_url}}",
        "author_icon": "",
        "title": "《{{title}}》",
        "title_link": "{{detail_url}}",
        "text": "*Actors*: {{actors}}",
        "fields": [
          {
            "title": "Score",
            "value": "{{score}}",
            "short": true
          },
          {
            "title": "Star",
            "value": "{{star}}",
            "short": true
          },
          {
            "title": "Region",
            "value": "{{region}}",
            "short": true
          },
          {
            "title": "Release",
            "value": "{{release}}",
            "short": true
          }
        ],
        "image_url": "",
        "thumb_url": "{{image_url}}",
        "footer": "Slack",
        "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
        "ts": "{{\"now\" | date: \"%s\"}}"
      }
    ]
  },
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "{% credential slack_huginn_token %}"
  },
  "emit_events": "false",
  "no_merge": "false",
  "output_mode": "clean"
}

需要注意的是:

  • {\% credential slack_huginn_url_post_message %\}:此类的表达式为 Liquid-interpolated,具体的值配置在Credentials 中,可以理解为全局定义,在 Credentials 中配置好 key-value 之后,可以在其它地方以诸如 {\% credential key \%} 的方式来使用,这里不做过多介绍了。
  • 在消息中使用Slack 中的 @ 某人的功能时,需要拿到对应用户的 ID,可以的获取方式可以通过在 slack 中选中名字然后 Copy link 的方式拿到用户链接,用户连接的最后就是 ID。

保存该 Agent,至此,所需的所有的 Agent 都已经创建完毕了。

总结

整个 Scenario 的事件流程图如下:

Huginn 还支持公开你创建的 Scenario,提供给其它人使用,以上的代码也已经公开:

http://h.wangjiegulu.com/scenarios/8/export.json

大家可以直接下载使用,不过需要在 Credentials 中配置如下参数:

  • slack_huginn_token:你创建的 Slack App 的 OAuth Access Token,具体方式可以参考这里
  • slack_at_user_id:你需要 @ 的 slack 用户 ID,填写你自己的,拿到你 ID 的方式可以参考这里
  • slack_huginn_url_post_message:填写 https://slack.com/api/chat.postMessage 即可。

除了以上例子,Huginn 还可以完成更多奇思妙想,限制你的只有你的想象力。

Huginn 浅尝——通过 Rss 看小说

传说有两个乌鸦,名为 Huginn 和 Muninn,它们被视为奥丁的左肩右臂。奥丁在黎明时送出 Huginn 和 Muninn ,它们飞到世界各地,然后在晚餐时间回来,告诉奥丁它们看到和听到的一切,奥丁则赐予它们食物作为报酬。—— Huginn 命名的由来

Huginn

Huginn

不记得什么时候 Star 的了,只记得当时看 README 很厉害的样子,类似一个个人监控助理类的软件。大概就是一个加强版的 IFTTT,可以监控各种信息,然后通知你。比起即刻App可订制化更高点,需要的一些基本知识也更多些:Linux基本操作、CSS基本使用、Xpath基本使用、JSON最基本知识……当然比起自己写爬虫还是简单些。

春节折腾了好久,主要麻烦在搭建,配置要求也比较高,至少要 0.5GB RAM + 0.5GB swap,但是在 VPS 上装了很多次总是有各种各样的问题(其实就是配置不够),还是用 docker 省事,有域名的再随便开个 Nginx 转发就好了。

Install Script

docker 安装脚本

# Show commands executed
set -x

# Setup swap file so it works better on lower memory VMs
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile   none    swap    sw    0   0" >> /etc/fstab

sysctl vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf

useradd -s/bin/bash -m huginn

# Run the huginn docker container on port 3000, map the MySQL data to the host machine in /home/huginn/mysql-data
# So the data is persisted across runs/updates (handy)
mkdir /tmp/docker-huginn/
cd /tmp/docker-huginn/
docker run -d -p 3000:3000 -v /home/huginn/mysql-data:/var/lib/mysql cantino/huginn

Nginx 配置

server {
        listen 0.0.0.0:80;
        listen [::]:80 ipv6only=on;
        server_name huginn.yourdomain.com;;
        server_tokens off;

        access_log  /var/log/nginx/huginn-access.log;
        error_log   /var/log/nginx/huginn-error.log;

        add_header Strict-Transport-Security max-age=63072000;
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;

        gzip on;

        rewrite_log on;

        # use the application's 500.html page
        error_page 500 502 503 504 /500.html;

        # allow clients to upload large files (if necessary)
        client_max_body_size 4G;

        location / {
                proxy_pass        http://XXX.XXX.XXX.XXX:3000;
                proxy_redirect    off;

                proxy_set_header  Host                $http_host;
                proxy_set_header  X-Real-IP           $remote_addr;
                proxy_set_header  X-Forwarded-Ssl     on;
                proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
                proxy_set_header  X-Forwarded-Proto   $scheme;
                proxy_set_header  X-Frame-Options     SAMEORIGIN;

                client_max_body_size        100m;
                client_body_buffer_size     128k;

                proxy_buffer_size           4k;
                proxy_buffers               4 32k;
                proxy_busy_buffers_size     64k;
                proxy_temp_file_write_size  64k;
        }

        add_header Strict-Transport-Security max-age=2592000;
}

利用 Huginn 为小说生成 Rss

抓取的笔趣阁的,手机版格式简单点,更好设置 Web Agent 一些。

My Scenario

终于没有迷人的小广告了,不过用 Feedly 有些延时。

Twitter,商品价格监控什么的有空在研究吧。

尝鲜

虽然自用第三方平台上总是有各种限制,但是作为尝鲜还是很不错的选择。
如果你对 Huginn 有兴趣,不妨可以先到我在樱花 docker 开的 Huginn 上试试。
当然熟人我也可以在自用的上面给你多开一个帐号。

Reference

  • Huginn Wiki
  • Huginn中文指南:搭建自己的iFTTT
  • Huginn: 烧录RSS的神器
  • 让所有网页变成RSS —— Huginn
  • Automated deployment on DigitalOcean with Fodor.xyz

原文链接:https://www.jianshu.com/p/35b6d06530fe

Huginn 环境搭建

什么是 Huginn ?

Huginn 是一个可以通过构建 agents 来帮你实现在线自动化任务的系统。它们可以理解 web,监听事件,按你所需地去执行一些行为。Huginn 的 agents 创建和消费事件,通过有向图表来进行转播。你可以把它当作部署在你自己的服务器上的破解版本的 IFTTT 或 Zapier。

你可以用 Huginn 做什么?

  • 追踪天气并在明天下雨(雪)的时候邮件通知给你(明天不要忘记带伞)。
  • 列出你关心的条目,并在 Twitter 发生改变的时候电子邮件通知给你。(例如,想知道在机器学习领域发生了什么有趣的事情吗?Huginn 将在 Twitter 上观察“machine learning”这个词,并告诉你什么时候讨论会高高峰。)
  • 帮你观察旅游机票和购物优惠信息。
  • 抓取任意网站并在发生变化时电子邮件通知你。
  • 连接到 Adioso, HipChat, Basecamp, Growl, FTP, IMAP, Jabber, JIRA, MQTT, nextbus, Pushbullet, Pushover, RSS, Bash, Slack, StubHub, translation APIs, Twilio, Twitter, Wunderground, and 微博等第三方.
  • 发送和接收 WebHooks。
  • 其它很多很多你能想到的。

环境搭建

Debian 服务器为例,进行环境搭建(大家可以选择购买VPS)。

概述

Huginn 的安装主要包括以下组件:

  1. Packages / Dependencies
  2. Ruby
  3. System Users
  4. Database
  5. Huginn
  6. Nginx

1. Packages / Dependencies

Debian 中 sudo 并没有默认安装。确保你的系统是最新的,然后安装它。

# run as root!
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y

注意:在安装过程中,需要手动编辑一些文件。如果你熟悉 vim,请使用下面的命令将其设置为默认编辑器。如果你对 vim 不熟悉,请跳过此操作并继续使用默认编辑器。

# Install vim and set as default editor
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

导入 node.js 库 (如果是 Ubuntu 或者 Debian Jessie 的话可以跳过):

curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

安装需要的 packages:

sudo apt-get install -y runit build-essential git zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs graphviz

Debian Stretch

由于 Debian Stretch 的 runit 不会自动启动,但是这会被init系统处理。另外,Ruby需要 OpenSSL 1.0 开发包而不是 1.1的。对于默认安装使用这些包:

sudo apt-get install -y runit-systemd libssl1.0-dev

2. Ruby

在生产中使用带有 Huginn 的 Ruby 版本管理器(如 RVMrbenvchruby)会频繁导致难以诊断的问题。版本管理器不受支持,我们强烈建议所有人按照以下说明使用系统 Ruby。

如果存在的话,删除旧版本的 Ruby:

sudo apt-get remove -y ruby1.8 ruby1.9

下载 Ruby,然后编译:

mkdir /tmp/ruby && cd /tmp/ruby
curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2 | tar xj
cd ruby-2.4.2
./configure --disable-install-rdoc
make -j`nproc`
sudo make install

安装 bundler 和 foreman:

sudo gem install rake bundler foreman --no-ri --no-rdoc

3. System Users

为 Huginn 创建一个用户:

sudo adduser --disabled-login --gecos 'Huginn' huginn

4. Database

安装数据库

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

# 选择一个 MySQL root 密码 (可以任意), 输入并按回车,
# 重复输入 MySQL root 密码 然后按回车

对于 Debian Stretch, 替换 libmysqlclient-dev 为 default-libmysqlclient-dev。

检查你安装的 MySQL 版本:

mysql --version
sudo mysql_secure_installation

登录 MySQL:

mysql -u root -p

# 输入 MySQL root 密码

为 Huginn 创建一个用户,替换 命令中的 $password 为你真实的密码:

mysql> CREATE USER 'huginn'@'localhost' IDENTIFIED BY '$password';

支持 long indexes,你需要确保可以使用 InnoDB engine:

mysql> SET default_storage_engine=INNODB;

# 如果失败,检查你的 MySQL 配置文件 (e.g. `/etc/mysql/*.cnf`, `/etc/mysql/conf.d/*`)
# 设置 "innodb = off"

给予 Huginn 用户必要的数据库相关权限:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `huginn_production`.* TO 'huginn'@'localhost';

退出 database 会话:

mysql> \q

尝试使用新的用户链接到新的数据库

sudo -u huginn -H mysql -u huginn -p -D huginn_production

# Type the password you replaced $password with earlier

你应该回看到 ERROR 1049 (42000): Unknown database 'huginn_production',这是正常的,因为我们会稍后创建数据库。

5. Huginn

Clone 源代码

# We'll install Huginn into the home directory of the user "huginn"
cd /home/huginn

# Clone Huginn repository
sudo -u huginn -H git clone https://github.com/huginn/huginn.git -b master huginn

# Go to Huginn installation folder
cd /home/huginn/huginn

# Copy the example Huginn config
sudo -u huginn -H cp .env.example .env

# Create the log/, tmp/pids/ and tmp/sockets/ directories
sudo -u huginn mkdir -p log tmp/pids tmp/sockets

# Make sure Huginn can write to the log/ and tmp/ directories
sudo chown -R huginn log/ tmp/
sudo chmod -R u+rwX,go-w log/ tmp/

# Make sure permissions are set correctly
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
sudo -u huginn -H chmod o-rwx .env

# Copy the example Unicorn config
sudo -u huginn -H cp config/unicorn.rb.example config/unicorn.rb

配置它

# Update Huginn config file and follow the instructions
sudo -u huginn -H editor .env
DATABASE_ADAPTER=mysql2
DATABASE_RECONNECT=true
DATABASE_NAME=huginn_production
DATABASE_POOL=20
DATABASE_USERNAME=huginn
DATABASE_PASSWORD='$password'
#DATABASE_HOST=your-domain-here.com
#DATABASE_PORT=3306
#DATABASE_SOCKET=/tmp/mysql.sock

DATABASE_ENCODING=utf8
# MySQL only: If you are running a MySQL server >=5.5.3, you should
# set DATABASE_ENCODING to utf8mb4 instead of utf8 so that the
# database can hold 4-byte UTF-8 characters like emoji.
#DATABASE_ENCODING=utf8mb4

重要: 取消注释 RAILS_ENV 设置,以便于在生产环节运行 Huginn。

RAILS_ENV=production

如果需要改变 Unicorn 配置:

# Increase the amount of workers if you expect to have a high load instance.
# 2 are enough for most use cases, if the server has less then 2GB of RAM
# decrease the worker amount to 1
sudo -u huginn -H editor config/unicorn.rb

重要:确保 .envunicorn.rb 都符合你的配置。

安装 Gems

sudo -u huginn -H bundle install --deployment --without development test

初始化 Database

# Create the database
sudo -u huginn -H bundle exec rake db:create RAILS_ENV=production

# Migrate to the latest version
sudo -u huginn -H bundle exec rake db:migrate RAILS_ENV=production

# Create admin user and example agents using the default admin/password login
sudo -u huginn -H bundle exec rake db:seed RAILS_ENV=production SEED_USERNAME=admin SEED_PASSWORD=password

编译 Assets

sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production

安装初始脚本

Huginn 使用 foreman 来生成基于 Procfile 的初始化脚本。

编辑 Procfile 来针对生产选择一个推荐的版本。

sudo -u huginn -H editor Procfile

注释这两行

web: bundle exec rails server -p ${PORT-3000} -b ${IP-0.0.0.0}
jobs: bundle exec rails runner bin/threaded.rb

取消注释这几行或者这些

# web: bundle exec unicorn -c config/unicorn.rb
# jobs: bundle exec rails runner bin/threaded.rb

Export 初始化 scripts:

sudo bundle exec rake production:export

注意:每次你修改了 .env 或者你的 procfile 文件,你都必须要重新 export 出事 script。

设置 Logrotate

sudo cp deployment/logrotate/huginn /etc/logrotate.d/huginn

确保你的 Huginn 实例正在运行

sudo bundle exec rake production:status

6. Nginx

注意:Nginx 是 Huginn 官方支持的 web 服务器。如果你不会或者不想使用 Nginx 作为你的 web 服务器,参考 wiki 的文章来使用配置 apache

安装

sudo apt-get install -y nginx

网站配置

复制示例网站配置:

sudo cp deployment/nginx/huginn /etc/nginx/sites-available/huginn
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/huginn

确保编辑配置文件以匹配你的设置,如果你正在运行多个nginx站点,请从 listen 指令中删除 default_server 参数:

# Change YOUR_SERVER_FQDN to the fully-qualified
# domain name of your host serving Huginn.
sudo editor /etc/nginx/sites-available/huginn

如果 huginn 是唯一可用的 nginx 网站,删除默认的 nginx 网站:

sudo rm /etc/nginx/sites-enabled/default

Restart

sudo service nginx restart

完成。

参考

  1. https://github.com/huginn/huginn
  2. https://github.com/huginn/huginn/blob/master/doc/manual/installation.md

 

原文链接:

https://www.cnblogs.com/tiantianbyconan/p/8719441.html

社会化 RSS 阅读器 Feeds Pub 限时送永久会员

更新:

已用完

我发文的时候还有名额的

https://feeds.pub/pro

 

Feeds Pub

  • 分享你 follow 的 feed.比如你可以 看到我 follow 的 feed
  • 了解具体是谁 follow 你的博客

当然首先,Feeds Pub 是一个好用的 RSS Aggregator

  • 简洁的 Web App
  • Mobile friendly
  • 可以安装到手机或者电脑的 PWA

背后的故事

Feeds Pub 的想法来自于我自己的一个小小需求:我希望看到我订阅的博客的主人订阅了什么。但现有的 RSS 阅读器都做不到这一点

利用 Huginn 打造一站式信息阅读平台

Huginn其实非常适合像我这样的RSS阅读重度“用户”。很多RSS阅读器因为赚不到钱逐渐被公司所抛弃——商人嘛,无利可图自然不可持久。同时,一些新闻资讯类的网站也讨厌RSS,因为RSS用户对于他们来说不会带来流量——没有流量,自然没有收入。

目前来看,RSS的地位非常地“尴尬”,它在RSS开发者和RSS内容输出者面前非常不受欢迎,甚至有极端者“恨不得RSS已死”。幸好,RSS还有一大批忠实用户,一直支撑着RSS的发展,即便是移动APP的出现,也未能直接将RSS判定为“死亡”。

另外,对于微信公众号重度“患者”Huginn也有很好的“药方”。利用搜狐微信平台,Huginn可以帮助我们定时抓取微信公众号的文章更新,然后生成RSS,你可以将所有的公众号文章聚合到一个平台。Huginn可以为你抓取RSS全文,从此解放你的双手。

Huginn还可以监控天气预报,如果明天下雨,则给你发送提醒;监控某款商品的网页,一旦降价,通知你;监控某款商品的网页,一旦降价,通知你……官方还有非常多的应用实例,网友们也写出了非常多的Huginn脚本,帮助你打造一个只属于自己的IFTTT服务。

有人说,在某种程度上讲,Huginn比IFTTT还强大,因为Huginn可以与Slack、Pushbullet等进行整合,这样无论在身处何地何时,你都可以通过手机接收到Huginn给抓取的网站RSS更新、微信公众号文章、天气提醒、行程安排、待办事项、新闻动态……

利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台

 

一、Huginn安装部署方法

Huginn安装部署官网推荐有两种方式,一种是将Huginn安装部署在自己的VPS主机上,过程比较繁琐,但是成功率还是非常高,这主要归功于Huginn官网的教程已经做到了傻瓜式。另一种则是部署在Heroku平台,免费的,适合没有自己的服务器的朋友。

1.1  VPS部署Huginn

Huginn部署VPS主机支持Ubuntu (16.04, 14.04 and 12.04)和Debian (Jessie and Wheezy),你只要按照官网的教程一步一步地复制执行命令,基本上可以成功了:Huginn在Debian/Ubuntu手动安装教程-抓取全文RSS和微信公众号开源软件。

1.2  Heroku部署Huginn

需要的东西

  1. Codeanywhere 账号:https://codeanywhere.com/
  2. Heroku 账号:http://herokuapp.com/

部署步骤

登陆 Huginn Github 主页的 Deployment 部分:https://github.com/huginn/huginn#deployment,找到 Heroku 的按钮。然后点击,就会跳转到你的 Heroku 了。

Huginn部署按钮

点完按钮之后会跳转到你的 Heroku 界面去起个名字。直接拉到最后点 Deploy 的按钮,之后它就会开始 build 了。

Huginn开始安装

创建好了后,点击 View 就直接跳转到已经建立好的应用了。Manage App 会跳转到 Heroku 管理界面。点击 View后可以看到 Huginn 很人性化的把步骤贴出来了。由于我们用的是自动安装,所以没有创建管理员用户,也有一些东西需要配置。(可以看到已经可以访问域名了)

Huginn查看界面

现在我们对照着 Huginn 的说明来做。登陆 Codeanywhere,点击右上角的 Editor。会进入一个选择界面,如截图。

Huginn新建一个空间

第一次的话点完 Create 会让你验证邮箱,验证完邮箱对着上图再做一遍就可以了。我们首先要下载新版本的 ruby 环境。

Huginn下载环境

打开huginn.sh:https://github.com/tesths/tesths.github.com/blob/master/images/huginn/huginn.sh,复制到 Codeanywhere 的文件编辑器里。然后点击右上角保存。保存到根目录下,文件名保存为 huginn.sh。

Huginn新建文件

然后在你的 Heroku 界面找到下图的地方,在以下地方将code-huginn换成你自己的名字。(点击放大)

Huginn修改代码

然后执行脚本 huginn.sh,命令:bash huginn.sh。执行完毕之后,进行如下操作即可:

  1. 先进入 cd code-huginn/(这里的 code-huginn 输入你刚替换的名字就好)。
  2. 在命令行登陆你的 heroku ,就是在命令行输入 heroku login
  3. 之后执行 heroku git:remote -a code-huginn
  4. 最后执行 bin/setup_heroku。剩下的就是开始自动配置了。

heroku空间几点说明:

  1. heroku免费账户的网站在30分钟内无人访问后会自动关闭(休眠),可以使用网站监控服务来防止其休眠,例如:uptimerobot:https://uptimerobot.com。
  2. heroku免费用户的所有app运行总时长为每个月550小时,也就是说你的APP无法保证30X24X7小时全天候运行,建议让网站每天只运行18小时。当然添加信用卡之后,会再赠送450小时。
  3. heroku免费账户只有5M的 Postgres 数据库,只允许在数据库中记录10000行,因此,作者建议设置heroku config:set AGENT_LOG_LENGTH=20
  4. Huginn安装在heroku的过程中默认使用的是SendGrid的邮箱服务器,但是heroku非信用卡用户无法使用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邮箱地址>

二、Huginn抓取任意网站RSS并输出全文

2.1  抓取文章RSS

进入到Huginn,点击新建Agent,类型选择Website Agent,名字随便取,其它的保持默认。

Huginn新建一个

填写选项内容。在选项中就是我们填写抓取规则的地方了。

  1. url填入需要解析的页面,例如:wzfou.com
  2. type表示格式,可以有html, xml, json, text多种格式
  3. mode表示信息的输出处理方式,“on_change”表示仅输出下面的内容,”merge”表示新内容和输入的agent内容合并。
  4. extract是我们要提取的信息。

extract内容。主要就是标题、链接、内容和时间等,我们只需要填写相关内容的Xpath路径,另外对于链接的话加入值:value: @href,标题加入:value: normalize-space(.)。如下图:(点击放大)

Huginn设置选项

关于获取网页的Xpath的方法,直接使用Chrome,右击我们要获取的内容,然后选择“审查元素”,再到控制面板右击,选择复制Xpath。例如wzfou.com的最新文章的url的Xpath是://*[@id=”cat_all”]/div/div/div[2]/div/h2/span/a。

Huginn复制Xpath

另外,由于我们获取到的Xpath往往是某一个具体的元素的,想要匹配所有的符合要求的元素,我们还可以借助Chrome的Xpath插件:XPath Helper。例如我们获取一般是://*[@id=”cat_all”]/div[1]/div/div[2]/div/h2/span/a。通过插件我们测试出去年第一个divr的1,也就是变成我上面的://*[@id=”cat_all”]/div/div/div[2]/div/h2/span/a。于就匹配了所有的最新文章链接地址了。

其它的标题、内容、时间等都可以参考上面的方法获取到。

Huginn匹配XML

预览抓取结果。点击“Dry Run”,你就可以预览抓取结果了。注意到“事件”中看到抓取了结果,就表示该Website Agent设置成功了。

Huginn预览结果

2.2  获取RSS全文

还是点击新建Agent,类型选择Website Agent,来源选择你刚刚创建的Website Agent。

Huginn获取全文

然后在选项设置处,URL填写:{{url}},即抓取你刚刚获取RSS的链接地址,mode选择“merge”,xpath就是本文的Xpath,value填入“.”,即原样输出全文并合并原先的输出。

Huginn获取RSS全文

2.3  生成RSS地址

点击新建Agent,类型选择Data Output Agent,Sources中填入第二步的Agent名称。

Huginn输出RSS

在选项中填入你的RSS的标题、描述、链接等信息,同时在Item中填写标题、描述、链接等,即输出RSS全文的标题、内容与链接地址等等。

Huginn输出设置

最后,你就可以看到RSS订阅地址已经生成的。

Huginn生成了RSS地址

复制该RSS订阅地址到RSS阅读器,就可以订阅文章更新了。

Huginn订阅更新

如果你没有RSS输出,请检查以下三点:

  1. WebsiteAgent接受到的Event,是否有url这个字段?
  2. 如果event里url字段,用 url_from_event 就行了
  3. dry run 时会提示你输入Event作为输入,这是要输入一个带url的event,否则当然没输出了。

三、Huginn抓取微信公众号并输出RSS

抓取微信公众号的文章更新,首先需要一个网页。这里我们需要利用的就是搜索微信平台了,例如挖站否的微信是这样的:

Huginn微信平台

原理还是和上面一样的,创建Website Agent,去抓取搜狐微信页面,通过Xpath获得“最近文章”内容,然后得到最近文章的URL,继续抓取,最终获得微信公众号文章全文。

这里有一个抓取微信公众号生成RSS输出的scenarios,你可以直接下载导入:https://www.ucblog.net/wzfou/weixin.json。

Huginn导入脚本

导入完成后,你只需要修改“从搜狗微信搜索公众号,获取最新文章标题”和“获取公众号最新文章的链接地址”两个Agent的URL,换成你想要订阅的微信公众号URL即可。

Huginn修改脚本

最后,确保所有的Agent正常运行。

Huginn正常运行

然后,你就可以使用RSS阅读器订阅微信公众号更新了。

Huginn得到公众号更新

四、Huginn一站式信息阅读

PC电脑端。自然是用RSS阅读器了,不管你是用RSS订阅软件,还是使用RSS在线订阅平台,你只要有一个RSS订阅源,你可以享受在任意电脑上查看自己的RSS信息了。国内的可用一览(目前有 100 个订阅数的限制),国外用Inoreader(无限制但有广告)。

Huginn选择RSS阅读器

手机移动端。手机上可以安装RSS阅读器的APP,但是更强大的是Huginn可以结合IFTTT、Pushbullet、Slack等将图片、超链接、文件、文字等内容发到你自己的手机上,或者直接发到你的微信、QQ、邮箱等。

Huginn手机接收

五、总结

Huginn可以订阅任意你想要订阅的网站与平台,例如微信公众号、简书、知乎、博客、图虫、Lofter……,只要有网页同时生成了CSS,你就可以派出你的“Agent”去把他们抓回来,然后将他们“分门别类”,任意处置了。

看完此文的朋友,一定知道Huginn的门槛就在于环境的部署以及Website Agent规则的制定。虽然说Huginn有scenarios可供导入导出,但是目前为止还没有一个像油猴那样大规模的scenarios库,所以Huginn普及是非常困难的。

目前,大家可以在这里找到几个可供使用的脚本库:http://huginnio.herokuapp.com/scenarios。另外,Heroku部署Huginn也不是长久之计,一是Heroku基本上打不开,二来免费服务还不能运行24小时,不差钱的朋友可以购买一个VPS主机部署Huginn。

原文链接:https://wzfou.com/huginn-rss/

实现RSS全文,邮箱和手机APP提醒

上次挖站否分享了利用Huginn抓取任意网站RSS和微信公众号更新,不少的朋友留言说Huginn配置太难,并且还没有现成的scenarios库,很多的抓取规则都需要自己摸索和自定义,难度比较大。最重要的是搭建Huginn还需要自己支付一笔主机费用。

今天就分享的Feed43就是相当于Huginn的RSS抓取订阅功能了。Huginn功能强大,如果你只是想用用Huginn的RSS订阅,不妨换成Feed43这个免费的订阅任意网站更新的在线服务。无论是使用网站,只是可以用浏览器访问的网页就可以被Feed43订阅到。

Feed43有免费套餐,6个小时抓取一次,所以Feed43不适合更新特别频繁网站订阅。Feed43可以将任意网站生成RSS订阅源,然后你可以将这个订阅源放在自己的RSS阅读器,或者你也可以配合iFTTT、fivefilters、freefullrss实现RSS全文阅读、邮箱通知和手机APP提醒。

 

更多的实用工具,你还可以看看:

  1. 三个命令工具Rsync,SCP,Tar-快速解决VPS远程网站搬家与数据同步
  2. 利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台

PS:2018年1月31日更新,除了使用第三方的RSS订阅服务,有自己的服务器或者主机的朋友也可以深度自建RSS阅读器,参考:两款优秀的开源RSS阅读器工具:Miniflux和Tiny Tiny RSS-自建在线RSS阅读器。

一、用Feed43订阅任意网站RSS方法

官网:

  1. http://feed43.com/

进入网站先注册一个账号,Feed43支持随时管理和编辑自己的订阅源。

 

接着,你就可以添加自己想要订阅的网站了。 如果有乱码的话,在后面的Encoding填入:utf-8或者gbk。

 

然后,Feed43会输出网页Html源码了。在 Item (repeatable) Search Pattern*: 处填写你要抓取的规则。有两个参数:{%}{*}{%}代表变量,{*}表示省略。仔细观察一下,如果我们要抓取标题,复制标题的Html标签,替换变量,不要的就省略。

参考我抓取的wzfou.com首页的最新文章的规则,如下图:

 

点击Extract后如果显示没有内容,你可以先从最简单的标签开始,例如先只抓取H标签的,然后再添加其它内容标签。确定之后,就是确定RSS模板了,主要就是标题、内容、链接了。根据上面抓取的{%}内容分别填入。

 

最后点击预览一下你就可以看到RSS订阅源已经成功了。

 

用浏览器打开这个.xml地址,我们就能看到RSS更新的内容了。你可以用RSS阅读器订阅此RSS地址了。

 

当然,你也可以随时修改或者删除此RSS订阅源。

 

二、免费与自制实现RSS Feed全文阅读

2.1  RSS全文订阅在线网站

只要你填写RSS订阅地址,就可以使用以下几个网站将实现RSS全文订阅了:

  1. http://fetchrss.com
  2. http://fivefilters.org
  3. http://fullcontentrss.com/
  4. https://www.freefullrss.com/

其中,freefullrss是完全免费的,输入你的RSS订阅地址。

 

然后,freefullrss就会生成RSS全文了。

 

这个地址你又可以拿给RSS阅读器订阅了,在RSS阅读器看到的就是我们订阅的全文了。(点击放大)

 

2.2  自制RSS全文订阅服务

项目地址:

  1. bitbucket:https://bitbucket.org/fivefilters/full-text-rss
  2. Github:https://github.com/Dither/full-text-rss

Full-Text RSS的bitbucket的项目貌似有更新,你可以直接使用git clone https://bitbucket.org/fivefilters/full-text-rss.git来下载最新的。Full-Text RSS就一个PHP程序,也不需要数据库。所以你下载Full-Text RSS后,解压直接上传到服务器发即可。

接着,打开网址,你就可以进入到Full-Text RSS界面了,输入你想要获取全文的RSS地址。

 

解析后,就会在浏览器看到RSS全文内容了。

 

Full-Text RSS还提供了抓取任意网站RSS的功能。不过,你需要先制定好抓取规则,Full-Text RSS官网也提供了网友自己做好的上千个网站规则,有些是中文的,我们可以直接拿来用。方法是:

    1. 进入到目录:site_config/standard/
    2. 删除目录内所有的内容
    3. 执行命令: git clone https://github.com/fivefilters/ftr-site-config.git .
    4. Git 会开始下载最新的 site config 文件
    5. 想要更新重复上面的操作即可, 也可以使用 git pull .

当然,我们也可以使用Full-Text RSS提供的在线生成RSS订阅源:http://createfeed.fivefilters.org/,输入你想要订阅的网站地址。

 

然后选择网页更新内容,这时fivefilters就会生成网站抓取规则了,你直接点击下载即可。

 

将下载下来的配置文件上传到site_config/standard/ 即可。

 

三、IFTTT:实现RSS邮件通知和APP提醒

RSS订阅与IFTTT结合起来就会变得十分强大了,IFTTT可以将RSS订阅的内容推送到你的邮箱、手机、电脑等任意终端设备中。

 

在IFTTT中添加了RSS订阅地址后,然后就可以在手机APP中接收提醒了。

 

另外,Blogtrottr支持关键字筛选并推送RSS,这样你只会收到自己感兴趣的RSS订阅内容了:https://blogtrottr.com/。

 

四、总结

Feed43是一个非常强大的抓取工具,它可以订阅到任意网站并转成RSS地址,只可惜免费用户只能每6个小时更新一次。免费的RSS Feed全文阅读服务限制都比较多,在些服务还不是很稳定,还不如自建一个。

到目前来看,唯一的问题就是希望Feed43不要关闭了。毕竟是免费的第三方服务,况且现在RSS也不景气。一劳永逸的办法挖站否建议还是利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台。

文章出自:挖站否 https://wzfou.com/rss-any/

在Linux上手动安装教程Huginn抓取全文RSS和微信公众号

Huginn是一个神器,它是一个私人IFTTT,例如搭建任务采集触发平台,自动跟进实时提醒(用Email Slack Telegeram QQ 微信接受推送),全文 RSS 输出(把你关注的所有网页进行 RSS 全文输出),同时可以把各种app,软件,网络服务,网络设备等链接在一起做任务触发。

Huginn比起iFTTT,它更加强大,更加自动化,当然更加难以搞定。这是来自Huginn官网的一篇非常详细的关于Huginn手动安装教程,不要看这篇文章很长,但是老外写教程就是很认真,只要按照Huginn的官方教程成功在Debian/Ubuntu上安装Huginn的概率几乎就是100%。

网上也有一些Huginn安装的中文教程,但是Huginn的英文教程一直不断更新中,本篇文章就来记录一下Huginn手动在Debian/Ubuntu上安装的过程,参考的是Huginn最新的英文教程。由于英文原文非常长,所以只对关键地方作中文说明。

如果有不明白的可以在本文留言,更多的站长实用工具,还有:

  1. 三大免费工具助你检测VPS服务器真伪-VPS主机性能和速度测试方法
  2. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
  3. 学习编程的神器 SoloLearn : 多终端免费学习编程软件 充分利用碎片时间

PS:2017年8月30日更新,Huginn操作教程可以参考:利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台

一、Huginn准备条件

操作系统要求:

Supported Unix distributions by this guide

  1. Ubuntu (16.04, 14.04 and 12.04)
  2. Debian (Jessie and Wheezy)

Ruby 版本

Huginn requires Ruby (MRI) 2.2 or 2.3. You will have to use the standard MRI implementation of Ruby. We love JRuby and Rubinius but Huginn needs several Gems that have native extensions.

Hardware requirements

CPU

  1. single core setups will work but depending on the amount of Huginn Agents and users it will run a bit slower since the application server and background jobs can not run simultaneously
  2. dual core setups are the recommended system/vps and will work well for a decent amount of Agents
  3. 3+ cores can be needed when running multiple DelayedJob workers

内存

You need at least 0.5GB of physical and 0.5GB of addressable memory (swap) to install and use Huginn with the default configuration! With less memory you need to manually adjust the Gemfile and Huginn can respond with internal server errors when accessing the web interface.

  1. 256MB RAM + 0.5GB of swap is the absolute minimum but we strongly advise against this amount of memory. See the Wiki page about running Huginn on systems with low memory
  2. 0.5GB RAM + 0.5GB swap will work relatively well with SSD drives, but can feel a bit slow due to swapping
  3. 1GB RAM + 1GB swap will work with two unicorn workers and the threaded background worker
  4. 2GB RAM is the recommended memory size, it will support 2 unicorn workers and both the threaded and the old separate workers
  5. for each 300MB of additional RAM you can run one extra DelayedJob worker

Unicorn Workers

For most instances we recommend using: CPU cores = unicorn workers.

If you have a 512MB machine we recommend to configure only one Unicorn worker and use the threaded background worker to prevent excessive swapping.

小结:Linux系统Debian/Ubuntu,内存最好是在1GB以上,CPU核心=unicorn workers,这个在后面的设置要用到。

二、Huginn安装过程

The Huginn installation consists of setting up the following components:

  1. Packages / Dependencies
  2. Ruby
  3. System Users
  4. Database
  5. Huginn
  6. Nginx

1.   安装包/依赖

sudo is not installed on Debian by default. Make sure your system is up-to-date and install it.

# run as root!
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y

Note: During this installation some files will need to be edited manually. If you are familiar with vim set it as default editor with the commands below. If you are not familiar with vim please skip this and keep using the default editor.

# Install vim and set as default editor
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

Import node.js repository (can be skipped on Ubuntu and Debian Jessie):

curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

Install the required packages (needed to compile Ruby and native extensions to Ruby gems):

sudo apt-get install -y runit build-essential git zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs graphviz

Debian Stretch

Since Debian Stretch, runit isn’t started anymore automatically, but this gets handled by the init system. Additionally, Ruby requires the OpenSSL 1.0 development packages instead of 1.1. For a default installation use these packages:

 sudo apt-get install -y runit-systemd libssl1.0-dev

2.   Ruby

The use of Ruby version managers such as RVM, rbenv or chruby with Huginn in production frequently leads to hard-to-diagnose problems. Version managers are not supported and we strongly advise everyone to follow the instructions below to use a system Ruby.

Remove the old Ruby versions if present:

sudo apt-get remove -y ruby1.8 ruby1.9

Download Ruby and compile it:

mkdir /tmp/ruby && cd /tmp/ruby
curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2 | tar xj
cd ruby-2.3.4
./configure --disable-install-rdoc
make -j`nproc`
sudo make install

Install the bundler and foreman gems:

sudo gem install rake bundler foreman --no-ri --no-rdoc

3.   系统用户

Create a user for Huginn:

sudo adduser --disabled-login --gecos 'Huginn' huginn

4.   数据库

Install the database packages

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

# Pick a MySQL root password (can be anything), type it and press enter,
# retype the MySQL root password and press enter

For Debian Stretch, replace libmysqlclient-dev with default-libmysqlclient-dev. See the additional notes section for more information.

Check the installed MySQL version (remember if its >= 5.5.3 for the .env configuration done later):

mysql --version

Secure your installation

sudo mysql_secure_installation

Login to MySQL

mysql -u root -p

# Type the MySQL root password

Create a user for Huginn do not type the mysql>, this is part of the prompt. Change $password in the command below to a real password you pick

mysql> CREATE USER 'huginn'@'localhost' IDENTIFIED BY '$password';

Ensure you can use the InnoDB engine which is necessary to support long indexes

mysql> SET default_storage_engine=INNODB;

# If this fails, check your MySQL config files (e.g. `/etc/mysql/*.cnf`, `/etc/mysql/conf.d/*`)
# for the setting "innodb = off"

Grant the Huginn user necessary permissions on the database

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `huginn_production`.* TO 'huginn'@'localhost';

Quit the database session

mysql> \q

Try connecting to the new database with the new user

sudo -u huginn -H mysql -u huginn -p -D huginn_production

# Type the password you replaced $password with earlier

You should now see ERROR 1049 (42000): Unknown database 'huginn_production' which is fine because we will create the database later.

You are done installing the database and can go back to the rest of the installation.

5.   Huginn

Clone the Source

# We'll install Huginn into the home directory of the user "huginn"
cd /home/huginn

# Clone Huginn repository
sudo -u huginn -H git clone https://github.com/cantino/huginn.git -b master huginn

# Go to Huginn installation folder
cd /home/huginn/huginn

# Copy the example Huginn config
sudo -u huginn -H cp .env.example .env

# Create the log/, tmp/pids/ and tmp/sockets/ directories
sudo -u huginn mkdir -p log tmp/pids tmp/sockets

# Make sure Huginn can write to the log/ and tmp/ directories
sudo chown -R huginn log/ tmp/
sudo chmod -R u+rwX,go-w log/ tmp/

# Make sure permissions are set correctly
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
sudo -u huginn -H chmod o-rwx .env

# Copy the example Unicorn config
sudo -u huginn -H cp config/unicorn.rb.example config/unicorn.rb

Configure it

# Update Huginn config file and follow the instructions
sudo -u huginn -H editor .env

If you are using a local MySQL server the database configuration should look like this (use the password of the huginn MySQL user you created earlier):

DATABASE_ADAPTER=mysql2
DATABASE_RECONNECT=true
DATABASE_NAME=huginn_production
DATABASE_POOL=20
DATABASE_USERNAME=huginn
DATABASE_PASSWORD='$password'
#DATABASE_HOST=your-domain-here.com
#DATABASE_PORT=3306
#DATABASE_SOCKET=/tmp/mysql.sock

DATABASE_ENCODING=utf8
# MySQL only: If you are running a MySQL server >=5.5.3, you should
# set DATABASE_ENCODING to utf8mb4 instead of utf8 so that the
# database can hold 4-byte UTF-8 characters like emoji.
#DATABASE_ENCODING=utf8mb4

Important: Uncomment the RAILS_ENV setting to run Huginn in the production rails environment

RAILS_ENV=production

Change the Unicorn config if needed, the requirements.md has a section explaining the suggested amount of unicorn workers:

# Increase the amount of workers if you expect to have a high load instance.
# 2 are enough for most use cases, if the server has less then 2GB of RAM
# decrease the worker amount to 1
sudo -u huginn -H editor config/unicorn.rb

Important Note: Make sure to edit both .env and unicorn.rb to match your setup.

Note: If you want to use HTTPS, which is what we recommend, see Using HTTPS for the additional steps.

Note: For configuration changes after finishing the initial installation you have to re-export (see Install Init Script) the init script every time you change .env, unicorn.rb or your Procfile!

Install Gems

Note: As of bundler 1.5.2, you can invoke bundle install -jN (where N the number of your processor cores) and enjoy parallel gem installation with measurable difference in completion time (~60% faster). Check the number of your cores with nproc. For more information check this post. First make sure you have bundler >= 1.5.2 (run bundle -v) as it addresses some issues that were fixed in 1.5.2.

sudo -u huginn -H bundle install --deployment --without development test

Initialize Database

# Create the database
sudo -u huginn -H bundle exec rake db:create RAILS_ENV=production

# Migrate to the latest version
sudo -u huginn -H bundle exec rake db:migrate RAILS_ENV=production

# Create admin user and example agents using the default admin/password login
sudo -u huginn -H bundle exec rake db:seed RAILS_ENV=production SEED_USERNAME=admin SEED_PASSWORD=password

When done you see See the Huginn Wiki for more Agent examples! https://github.com/cantino/huginn/wiki

Note: This will create an initial user, you can change the username and password by supplying it in environmental variables SEED_USERNAME and SEED_PASSWORD as seen above. If you don’t change the password (and it is set to the default one) please wait with exposing Huginn to the public internet until the installation is done and you’ve logged into the server and changed your password.

Compile Assets

sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production

Install Init Script

Huginn uses foreman to generate the init scripts based on a Procfile

Edit the Procfile and choose one of the suggested versions for production

sudo -u huginn -H editor Procfile

Comment out (disable) these two lines

web: bundle exec rails server -p ${PORT-3000} -b ${IP-0.0.0.0}
jobs: bundle exec rails runner bin/threaded.rb

Enable (remove the comment) from these lines or those

# web: bundle exec unicorn -c config/unicorn.rb
# jobs: bundle exec rails runner bin/threaded.rb

Export the init scripts:

sudo bundle exec rake production:export

Note: You have to re-export the init script every time you change the configuration in .env or yourProcfile!

Setup Logrotate

sudo cp deployment/logrotate/huginn /etc/logrotate.d/huginn

Ensure Your Huginn Instance Is Running

sudo bundle exec rake production:status

6.   Nginx

Note: Nginx is the officially supported web server for Huginn. If you cannot or do not want to use Nginx as your web server, the wiki has a page on how to configure apache.

Installation

sudo apt-get install -y nginx

Site Configuration

Copy the example site config:

sudo cp deployment/nginx/huginn /etc/nginx/sites-available/huginn
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/huginn

Make sure to edit the config file to match your setup, if you are running multiple nginx sites remove the default_serverargument from the listen directives:

# Change YOUR_SERVER_FQDN to the fully-qualified
# domain name of your host serving Huginn.
sudo editor /etc/nginx/sites-available/huginn

Remove the default nginx site, if huginn is the only enabled nginx site:

sudo rm /etc/nginx/sites-enabled/default

Note: If you want to use HTTPS, which is what we recommend, replace the huginn Nginx config withhuginn-ssl. See Using HTTPS for HTTPS configuration details.

Test Configuration

Validate your huginn or huginn-ssl Nginx config file with the following command:

sudo nginx -t

You should receive syntax is okay and test is successful messages. If you receive errors check yourhuginn or huginn-ssl Nginx config file for typos, etc. as indicated in the error message given.

Restart

sudo service nginx restart

Done!

Initial Login

Visit YOUR_SERVER in your web browser for your first Huginn login. The setup has created a default admin account for you. You can use it to log in:

admin (or your SEED_USERNAME)
password (or your SEED_PASSWORD)

Enjoy!

You can use cd /home/huginn/huginn && sudo bundle exec rake production:start and cd /home/huginn/huginn && sudo bundle exec rake production:stop to start and stop Huginn.

Be sure to read the section about how to update your Huginn installation as well! You can also useCapistrano to keep your installation up to date.

Note: We also recommend applying standard security practices to your server, including installing a firewall (ufw is good on Ubuntu and also available for Debian).

三、Huginn高级设置

Using HTTPS

To use Huginn with HTTPS:

  1. In .env:
    1. Set the FORCE_SSL option to true.
  2. Use the huginn-ssl Nginx example config instead of the huginn config:
    1. sudo cp deployment/nginx/huginn-ssl /etc/nginx/sites-available/huginn
    2. Update YOUR_SERVER_FQDN.
    3. Update ssl_certificate and ssl_certificate_key.
    4. Review the configuration file and consider applying other security and performance enhancing features.

Restart Nginx, export the init script and restart Huginn:

cd /home/huginn/huginn
sudo service nginx restart
sudo bundle exec rake production:export

Using a self-signed certificate is discouraged, but if you must use it follow the normal directions. Then generate the certificate:

sudo mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out huginn.crt -keyout huginn.key
sudo chmod o-r huginn.key

四、Huginn问题解决

If something went wrong during the installation please make sure you followed the instructions and did not miss a step.

When your Huginn instance still is not working first run the self check:

cd /home/huginn/huginn
sudo bundle exec rake production:check

We are sorry when you are still having issues, now please check the various log files for error messages:

Nginx error log /var/log/nginx/huginn_error.log

This file should be empty, it is the first place to look because nginx is the first application handling the request your are sending to Huginn.

常见的问题:

  1. connect() to unix:/home/huginn/huginn/tmp/sockets/unicorn.socket failed: The Unicorn application server is not running, ensure you uncommented one of the example configuration below the PRODUCTION label in your Profile and the unicorn config file (/home/huginn/huginn/config/unicorn.rb) exists.
  2. 138 open() "/home/huginn/huginn/public/..." failed (13: Permission denied): The/home/huginn/huginn/publicdirectory needs to be readable by the nginx user (which is per default www-data)

Unicorn log /home/huginn/huginn/log/unicorn.log

Should only contain HTTP request log entries like: 10.0.2.2 - - [18/Aug/2015:21:15:12 +0000] "GET / HTTP/1.0" 200 - 0.0110

If you see ruby exception backtraces or other error messages the problem could be one of the following:

  1. The configuration file /home/huginn/huginn/config/unicorn.rb does not exist
  2. Gem dependencies where not installed

Rails Application log /home/huginn/huginn/log/production.log

This file is pretty verbose, you want to look at it if you are getting the We're sorry, but something went wrong. error message when using Huginn. This is an example backtrace that can help you or other huginn developers locate the issue:

NoMethodError (undefined method `name' for nil:NilClass):
app/controllers/jobs_controller.rb:6:in `index'
config/initializers/silence_worker_status_logger.rb:5:in `call_with_silence_worker_status'

Runit/Background Worker logs /home/huginn/huginn/log/*/current

Those files will contain error messages or backtraces if one of your agent is not performing as they should. The easiest way to debug an Agent is to watch all your log files for changes and trigger the agent to run via the Huginn web interface.

The log file location depends your Procfile configuration, this command will give you a list of the available logs:

ls -al /home/huginn/huginn/log/*/current

When you want to monitor the background processes you can easily watch all the files for changes:

tail -f /home/huginn/huginn/log/*/current

我遇到的问题:unicorn workers设置导致Huginn502错误。上面已经说过CPU cores = unicorn workers,所以我们在执行:sudo -u huginn -H editor config/unicorn.rb时一定要根据自己的VPS的CPU来修改对应的数值。

 

五、Huginn面板使用

打开你的域名或者IP地址,你就可以访问到Huginn登录页面了,如果你按照上面的方法操作的话,登录账号是:admin,密码是:password,你可以进入到Huginn修改。

 

这就是Huginn的操作界面了,对应的就是Agents、Scenarios、Events、Credentials、Services。(点击放大)

Agents就是你的派出去搜索情报的“小兵”了。

 

Events会记录“小兵”出去回来都带了什么东西。

 

scenarios是“小兵”组团称呼,一个团可以放好多协作的“小兵”

scenarios方便之处就在于你可以直接导入别人已经写好的脚本,自己只要修改对应的参数就可以直接上线运行了。这里有一个公共脚本库:http://huginnio.herokuapp.com/scenarios,常用的知乎话题监控、
知乎编辑推荐、豆瓣高分科幻电影提醒、微信公众号等都可以在这里下载到。

 

文章出自: https://wzfou.com/huginn/

实现给 huginn 发条消息就能自动重启服务器

需求

有时候重启 vps,需要登录在网页上操作,很麻烦,查了下有相关的 api 做这个事,最好是我在 slack 里发条消息(重启 xx 主机),然后自动重启.

重点

实现的重点是 怎么让 Huginn 收到 slack 的消息,huginn 上的 slack agent 是发送消息到 slack, 而不能反过来,查了下 slack 文档,能实现的是 botapp,决定采用 app

实现

首先在 huginn 创建 WebhookAgent,options 如下:

{
  "secret": "123456",//这里随便填
  "expected_receive_period_in_days": 1,
  "payload_path": ".",
  "code": "200",
  "response": "{{challenge}}"
}

response 必须是{{challenge}},然后创建,可以看到 webhook api url ,一般是这种形式 http://1.2.3.4/users/1/web_requests/1/123456, 记下来,下一步会用.
然后在 slack 创建 app, 然后创建 Event Subscriptions,

然后填上上一步的 url, 添加 event, 填写 url 后会检查,如果失败,请检查上一步创建的 agent.

install APP, 然后授权下

以上步骤就 ok 了,然后你在公共 channel 里发条消息,检查下 agent events 有没有相关 event,类似这样:

然后写一个 trigger agent 过滤出重启 的消息,然后传递给一个 Post agent去调用 vps 的 API,测试下就 ok 了.

作者:Blankeer
链接:https://www.jianshu.com/p/6a964717cc4e

NAS 服务器的上搭建 huginn

最近为了安装 huginn,在aws和 aliyun 上都尝试部署了,发现性能过差,服务很不稳定,就有了自己搭一台服务器的想法,恰好金华老师向我安利了一把 nas 服务器,在调研后,发现正好能满足我的要求。于是开始折腾,这个系统是对这次折腾的记录。

用NAS服务器来做什么

NAS服务器能做的事情很多,比如:

文件服务

  • 私有文件云,类似于百度云盘,但是不用担心文件会忽然被和谐
  • 文件共享服务,可以把所有的文件存放在同一个地方,并在不同的设备之间共享
  • 文件备份服务,如mac的time machine,可以在连接wifi时自动开始同步
  • 灵活的文件备份策略,可以定期把文件压缩加密后存到其他公有云盘
  • 其他的服务,如远程下载功能,在公司启动下载服务后,自动在家开始下载

其他服务

  • 在线工具服务
  • 脚本和爬虫服务
  • 私有git服务等其他服务
  • 开发工具服务器,如mysql、监控等服务

再开始选择之前,想清楚自己的需求,是作为一个简单的文件服务器,还是希望有更多的灵活性。

备注

huginn,一个IFTTT工具,利用它可以做很多很酷的事情,比如在几个网站监控某件商品,当有比较优惠的活动时,会自动发送通知,再如像葡萄PT只在特定的时间开放注册

群晖的机器对我而言太贵了,HP gen8勉强够用,但是考虑到他的拓展性,还是选择自己组装一台机器。

NAS服务器的要点

NAS服务器不同于一般的机器,它有以下特点:

  • 7*24小时开机,要稳定
  • 盘位较多,最好是6盘位以上,一块系统盘,两块主数据盘,加一块工作盘,同时考虑到以后的拓展,预留两个盘位
  • 安静
  • 功耗低

综合以上的特点,参考以上特点,选择自己想要的配置即可。

我的配置

关于硬件的选择,别人已经说得很详细了,我就不在啰嗦,有兴趣的可以参考:

我的配置:

cpu: intel j3455,备选的有n3160, 都是连主板一起的,399元
内存: 金士顿 ddr3 1600 4g,150元
机箱: 酷冷至尊特警365,165包邮
电源: 鑫谷核动力-巡洋舰c5 300w 109元
共823元

关于硬盘
硬盘需要单独拿出来说,一般建议买一块固态硬盘作为系统盘,大部分时间是没有数据操作的,这时机械硬盘可以休眠,单独使用固态硬盘即可

NAS软件方案

NAS服务器的软件,有几种方案:

  • 方案一:NAS裸机安装Windows,可在虚拟机中安装Linux,群晖,软路由。推荐。Windows对硬件兼容性好,驱动普遍支持,能无需配置充分发挥显卡性能,平时可做上网机,观影机,HTPC高清电视。
  • 方案二:NAS裸机安装Linux,可在虚拟机中安装Windows,群晖,软路由。技术宅推荐。Windows还是有些缺陷的,系统及某些流氓软件会莫名其妙唤醒全部硬盘。只要能驱动,Linux多媒体不是问题。没有迅雷下载有点问题,移植的也麻烦,可以在Win虚拟机里面迅雷。
  • 方案三:NAS裸机安装群晖,可在虚拟机中安装Windows,Linux,软路由。不推荐。NAS的显卡都浪费了。NAS中集成的功能当然做得很用户友好,非常方便。但是没有的功能很多需要自己编译源码,没有Linux发行版的软件仓库方便,很鸡肋。

注1:以上群晖都可以换成其他NAS操作系统。
注2:不推荐裸机安装NAS操作系统。

以上内容来自:搭建家庭 NAS 服务器有什么好方案?

NAS裸机安装Linux方案

选择NAS裸机安准Linux是因为我要跑脚本,用Linux会方便很多。同时,网上说的驱动问题我没有碰到,用最新版本的系统应该可以解决这个问题,毕竟Linux对Intel的支持还是很好的。我用的是Ubuntu 17.04.

对现有主流的NAS操作系统做了一个调研,发现NAS操作系统太重了,除openmeidavault外,都需要组Raid,对我而言没有必要。

其中,freenas和nas4free,都使用了ZFS文件系统,而ZFS文件系统依赖ECC内存,同时要求8G以上内存。
考虑以上原因,决定不上NAS操作系统。

类似于百度云等云盘的私有云服务

主流的方案有 owncloud和seafile。评测:
https://www.zhihu.com/question/46318905

网上对seafile的评价较高,所以选择了seafile.具体如何,等我试用一个月再说~~

文件共享

  • ftp/sftp文件协议。使用不方便,pass
  • SMB协议。操作方便,速度很快,推荐使用

下载

留坑待填~~

DLNA服务

留坑待填~~

iTunes媒体共享

留坑待填~~

time machine等备份服务

mac

  • Netatalk。它是AFP协议的开源实现
  • Avahi。它是Apple’s Zeroconf 协议的开源实现
    安装使用方式请自行百度。
    *** 注意文件的权限,建议可以先设成777,等没问题后再恢复  ***

和百度云盘等公有云同步


作者:听风过隙 链接:https://www.jianshu.com/p/ce57a1a9b52b

Huginn 监控天气情况

需求

监控天气是入门 agent 了,官方例子也有,我使用国内天气源,实现每两个小时通知我天气情况(温度,天气, pm2.5等)

API

天气情况当然得找 API 了,使用了这个 repo 里的

实现

{
  "expected_update_period_in_days": "2",
  "url": "http://tj.nineton.cn/Heart/index/all?city=替换成自己城市 code",
  "type": "json",
  "mode": "on_change",
  "extract": {
    "city_name": {
      "path": "weather[0].city_name"
    },
    "now_info": {
      "path": "weather[0].now.text"
    },
    "temperature": {
      "path": "weather[0].now.temperature"
    },
    "pm25": {
      "path": "weather[0].now.air_quality.city.pm25"
    },
    "air_quality": {
      "path": "weather[0].now.air_quality.city.quality"
    }
  }
}

通知

通知到 slack / email 就可以了.

作者:Blankeer
链接:https://www.jianshu.com/p/3537ba139a96

对于资讯过载的一点思考和实践

  • 背景交代
    工科小女子一枚,手账2年级生,混微博,不喜微信,RSS 轻度患者,中度折腾患者。
  • 关于咨询过载
    兴趣广泛,少数精通,因此平常会关注很多方面的讯息,颇有种看不过来的赶脚。给自己定下一个小目标后,一段时间内会依靠时间管理约束自己,达成目标。
  • 最近的小目标
    工作和学习是为了什么,作为贫农来说,就是好好赚钱,实现财务自由。
    最近也在反思自己的财务问题,作为一个花钱不过脑子的人,短线目标是财务自由。目前在反思自己的花钱问题,花钱可是个技术活儿啊!这个按下不表,以后再说。另一方面也在逐步学习投资理财。
    期间,朋友推荐,加上自己也有所耳闻,关注了三公子。奈何三公子更新的比较勤快的是公众号,我选择狗带。
  • 梳理自己的资讯阅读问题
    自己对微信这个 IM 软件真的是喜欢不起来,用户体验真是差到我根本不想用。看个公众号文章,要深入下去三层,刷个朋友圈深入下去三层,而且生态圈封闭,而且逐渐沦为工作工具,已经丧失了微信内测时候的那种感觉。但是有一点不可否认,微信的使用人群的确是太广了,连我家上网都弄不清楚的父上母上大人,也能溜溜的玩微信,佩服。
    为了能舒服的看微信公众号文章,开始在网上搜索教程。怎么样能像刷微博刷 Twitter 一样舒爽的刷公众号呢?
  • 探索的过程
    1. Google 起来,在知乎和各大 IT 类网站都有相应的介绍和教程。比如说以下这一篇:
      可否用rss订阅微信公众平台上的文章?如果可以,如何做到?
    2. 由这篇知乎,我选择了自己比较喜欢的方式,RSS 订阅。然后就开始倒腾 RSS。
      RSS阅读器里的极简主义者:Unread【福利】
      观点:不可替代的 RSS,比 Feedly 更好用的 Inoreader
      为什么 NewsBlur 是我最喜欢的 RSS 服务
      利用 Feed43,将任意网页制作成 RSS 订阅源 | 一日一技
    3. RSS 工具根据自己的需求,选择了InoReader。主要是跨平台,RSS 源不限数量,各种小细节也很贴心。
      InoReader
    4. 迁移自己从前的 RSS 源。
      我没用过 Google 的 RSS 服务,无从比较,小白的时候就用的是 QQ邮箱自带的阅读空间,后来听闻 Google 关闭了 RSS 服务,考虑到自己阅读资讯的需求,也尝试性的迁移过,迁移到了鲜果。emmm,又关了,只能迁回 QQ 邮箱。之后,也逐渐不常用了,彼时微博类资讯也流行起来,加之QQ 邮箱里的 RSS 阅读并不方便,所以 RSS 这种阅读状态,基本已不用。
      现在再翻开自己的 RSS 订阅源,很多在14、15年都失效了,导出服务也已不可用,手动加了几条仍然在更新的。
      正式开始 InoReader 之旅。
    5. 寻求微信公众号文章订阅化的方法。
      InoReader 设置不详述了,感兴趣的朋友大家自己摸索。
      自己的重点来了,怎么把微信公众号的文章用 RSS 的方式订阅。
      知乎上给出了很多种方案,其中利用第三方聚合网站的自产 RSS 的这种方法,随着大部分网站的关闭已经失效了,唯一存在的微口网是摘要订阅,且我自己要看的公众号没收录。
      最后的完美替代方案应该是RSS+Huginn。详细的说明可以参考【干货】如何高效地订阅微信公众号这篇文章。
    6. 作为一个以前从来没接触过Huginn的小白,说实话一开始看完攻略也是懵逼的,完全不懂准备一个Huginn是什么意思。爬上了Huginn的中文论坛,终于弄懂了是需要架设服务器的,后续的设置比较简单。准备第二天开搞。
    7. 睡一觉过来总有新花样。
      晚上躺在床上,反复的思考初衷。我只是想像刷微博一样的刷公众号的,要不要搞的这么复杂。想起文章里有推荐其他的方法,自己其实一直都在用,只不过以前没往公众号阅读去拓展。就一个番茄的事儿,决定逐一尝试。

      1. 轻芒APP
        xzonepiece所说:

高效且优雅

      认真的用了一下,阅读体验真的非常好,从图文排版到字体的选择,个人认为甩了InoReader好几条街。作为一个轻度的聚合阅读工具真的是非常不错,阅读标记功能若能再完善,就更好了。
轻芒阅读

2. 即刻APP
自己的话只把它当做兴趣点消息的一个通知工具,看微信文章,emmm,感觉不太行。

  • 最终结果
    折腾下来,我选择了轻芒+InoReader的组合,轻芒为主,InoReader为辅的节奏。先用起来,有什么使用体验,再来分享。
作者:Dongjisi
链接:https://www.jianshu.com/p/bdf2855a84d9

Huginn 监控数字尾巴物品

需求

当数字尾巴的甩甩尾巴有指定物品发布时,通知我!

实现

  1. 甩甩尾巴首页:http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=1,page 参数是页码,可以同时抓取2-3页,以免时间间隔过大发布的物品太多导致爬不到.
  2. 抓取每个物品的标题,url,地址,价格,时间,是否交易完成,提取这几个属性,使用 xpath 或者 css selector,在 w3c 上都有相关教程,推荐两个 chrome 插件,可以检查表达式的结果,CSS Selector Tester,XPath Helper
  3. 提取数据,通过 chrome 开发者工具,可以粗略提取下,然后自己修改下表达式,基本就可以了,通过上面的插件测试下,基本就差不多了.
  4. 贴上我写好的配置文件,新建一个 Website Agent 导入就可以了.
{
  "expected_update_period_in_days": "2",
  "url": [
    "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=1",
    "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=2",
    "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=3"
  ],
  "type": "html",
  "mode": "on_change",
  "extract": {
    "title": {
      "css": "div.tradetop > p.tradetitle > a",
      "value": "string(.)"
    },
    "info": {
      "xpath": "//*[@id=\"wp\"]/div[3]/div/p[1]/.",
      "value": "normalize-space(.)"
    },
    "state": {
      "css": "div.tradepic",
      "value": "not(contains(@class,'comp'))"
    },
    "date": {
      "css": ".tradedateline",
      "value": "string(.)"
    },
    "img": {
      "css": ".tradepic > a > img",
      "value": "@src"
    },
    "url": {
      "css": ".tradepic > a",
      "value": "concat('http://trade.dgtle.com',@href)"
    }
  }
}
  1. 过滤指定物品,需要创建一个Trigger Agent,过滤出小米相关物品,只要标题包含这个关键字就可以了,代码:
{
  "expected_receive_period_in_days": "2",
  "keep_event": "true",
  "rules": [
    {
      "type": "regex",
      "value": "小米",
      "path": "title"
    }
  ],
  "message": "甩甩尾巴有关 `小米` 的物品更新了"
}
  1. 将 event 通知到 Slack, 也可以邮件或者其他.
作者:Blankeer
链接:https://www.jianshu.com/p/5586f4205a0c

Huginn 安装笔记

安装

我用的 ubuntu + mysql, 按照教程安装,中途出现了很多问题,遇到问题搜索,好不容易才解决.
机器配置是 1核+ 2G,日常CPU占用<5%,内存50%,内存用的比较多, cpu 用的比较少,可能是我的 agent 不多吧.

使用

通知

通知尝试过 email slack pushbullet, 最终选择了 slack, 主要原因是: 便于管理,同类型的 event 放在同一个 channel 里,而且网络通畅

编写

可以先在这里看下,有一些共享出来的scenarios,就算需求不同,也可以学习下 agent 编写的语法,很有帮助.

遇到的问题和解决

  • bundle install error “invalid byte sequence in US-ASCII (ArgumentError)”可以先执行这个设置语言
    export LC_ALL=C.UTF-8
    export LANG=en_US.UTF-8
    export LANGUAGE=en_US.UTF-8
    
  • An error occurred while installing nokogiri (1.6.7.1), and Bundler cannot continuesudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
  • 需要 swap 分区搜索”阿里云开启 swap”,https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
  • diagram加载不出来,挂掉原因是访问不了 google 的 api,办法是下载离线的graphviz安装,.env修改USE_GRAPHVIZ_DOT=dot,重新执行sudo bundle exec rake production:export

    参考:https://github.com/huginn/huginn/issues/2109

  • css 资源挂掉,界面很丑先编译资源,sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production,直接重启,sudo bundle exec rake production:restart
  • Mysql 设置 Innodb 出现 Unknown system variable ‘storage_engine在/etc/mysql/my.cnf 中设置 [mysqld] default-storage-engine = InnoDB
  • 时区设置Schedule 的时间不是北京时间,.env修改 TIMEZONE=”Beijing”
作者:Blankeer
链接:https://www.jianshu.com/p/3a78a4af7ba3

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

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

微信公众号订阅

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

  • 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(4) > dd > a",
      "value": "string(.)"
    }
  }
}

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(4) > 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

更新

通过Phantom JsCloud Agent的流程如下:

通过PhantomJsCloud Agent将微信公众号的文章制作成RSS

详细设置的使用文件见链接

5. 总结

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

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

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

作者:xzonepiece
链接:https://www.jianshu.com/p/582ad1400d6e


打造你的私人云端小助手

什么是信息自动化?

打造你的云端私人小助手

你可以想像一下:
1.一站式阅读

微信公众号,知乎,简书,36kr,新浪微博,得到,喜马拉雅FM等等
所有内容媒体 和 网页信息
自动更新
都聚合在一个app里,没有广告,分类清晰,点击即可阅读

2.即时提醒

  • 学校教务信息有新的通告
  • 某市发布自住房申购通知
  • 电商优惠卷开放活动提醒
  • 商品价格下降到理想区间
  • Python或者XX领域在亚马逊图书又有新书上架
  • 美剧权利的游戏更新了1集
  • 豆瓣又有了高分电影

3.私人助理

  • 出门时自动提醒天气,下雨带伞
  • 追踪位置轨迹
  • 自动发微博/邮件,微信/slack
  • 营销机器人自动发送有价值的群消息:微信群/QQ群
  • 亲朋好友过生日了
  • 女朋友的纪念日~~
  • 你可以理解为:

    • RSS一站式阅读
    • 定向即时提醒通知
    • workflow:事件的触发和联动

    主动检索只是我们获取信息的方式之一

    所有想要的信息资料自动推送到一个中心

    可以极高的提升学习效率

    在heroku平台上部署huginn也是一键安装的事儿

    别人做好的事件,可以直接导入使用,比如

    • 学校教务信息有新的通告
    • 某市发布自住房申购通知
    • 电商优惠卷开放活动提醒
    • 商品价格下降到理想区间
    • Python或者XX领域在亚马逊图书又有新书上架
    • 美剧权利的游戏更新了1集
    • 豆瓣又有了高分电影
    
    作者:冰释小子
    链接:https://www.jianshu.com/p/7c544a8ad1d5
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目前的信息流有哪些弊端?

阅读渠道包括且不限于
知乎,微信公众号,博客,新浪微博,媒体官网等
有没有发现,当你需要检索一个信息的时候
你需要:

  • 打开不同的app客户端
  • 打开各种网址
  • 忍受各种不堪入目,低劣脑残的广告
  • 在应用内,寻找,并手动点击对应模块
  • 主动搜索和打开

具体的场景可联想到微信公众号

  • 订阅号都汇总在二级页面

  • 进入二级页面后,再找到特定公众号

  • 点击进入

  • 点击文章

你看明白了,感受到了吗??

如此繁琐的阅读流程
还有很明显的弊端:主动搜索和操作

    这仅仅是微信公众平台啊
    那么,知乎,简书,微博,官网,等等呢?  
    你不也是一个一个去打开,忍受繁琐的步骤吗
    信息源极其分散
    每一家都竭力权力的保护自己的城池
    比如反爬虫,版权保护  

在信息大爆炸的时代
学习效率是基本生存法则
如果你还没有建立自己的知识体系和信息框架
就会被新生代远远丢在身后


什么是Huginn?

Huginn是北欧神话中奥丁肩膀上的乌鸦,它会帮助奥丁收集全世界的信息

而在这里,Huginn是一个在线自动化任务系统或者是云端私人助手
有兴趣的可以查看官方github
https://github.com/huginn/huginn


基本的信息框架

本文不是一个具体的操作教程,提供框架关键词供了解

首先申明:有人说rss不死,rss永生
个人觉得信息自动化不只是用RSS[简易信息聚合]来简单代表
是一种被动中心化的高效率方式
题外话:
区块链这种去中心化的思维和技术也是各个应用领域的未来

主要包括以下关键词

  • RSS,Feed43
  • huginn,IFTTT,,phantomjscloud,Pushbullet
  • slack,即刻,一览
  • 营销机器人wechat /QQrobot /telegram bot 等等
  • 邮件/短信

主要的流程是:

  • 将网页/App体提取解析特定的信息,
  • 设置过滤器,,对数据进一步结构化操作
  • 生成Fedd源,用于导入阅读器
  • 结果手机app,自动提醒通知,交互指令

这样一看,好多陌生词,比较难上手吧?
并不是
千万,别没开始,就把自己吓着了!

  • huginn可以一键安装
  • 网上有各种脚本可以直接导入使用
  • 你自己一旦创建好规则,收益无穷
  • 官网的文档和各个博客文章,已非常详细简单

Huginn云端小助手可以实现哪些功能?

主要有以下几种应用:

  • 一站式阅读
  • 定向即时通知提醒
  • 设置自动化的workflow

可以参考这篇 新奇 | 打造你的云端私人小助理


以一个博客网站例子

网址http://hackorgeek.com/

背景:博客只有web网页版
在手机/电脑查看,需要:

  • 输入网址
  • 单击标题查看全文
  • 关闭返回,重复点击另一个标题

这个孤零零的信息源
只有在想起的时候,才会主动去看,还要记住网址
对于快节奏,信息爆炸的时代
繁琐的操作和体验必然不好

我们要实现的效果

当作者在博客发表一篇文章

  • 1.手机阅读器立即更新

  • 2.slack app即时通知提醒

 

单刀直入,Huginn运行流程

主要有以下的步骤

  • 1.解析并结构化一个web网页:获取特定的内容,如标题,url,文章
  • 2.设置过滤器,筛选结果:比如只要标题中含有微信的内容
  • 3.生成RSS源:导入到阅读器
  • 4.自动用slack app通知提醒
  • 5.你也可以选择邮件/短信提醒

后台界面

这是后台建立的事件

事件会触发下一个事件只执行
彼此相互关联

云服务器Heroku

huginn免费搭建在heroku服务器上
一键部署

Huginn信息自动化3

mark

信息爆炸的时代

把所有想看的信息,都放在一个应用APP里

没有广告,没有泛娱乐化的垃圾推送

不必每次启动切换一个软件,寻找相应的栏目

把想看的

  • 微信公众号,知乎日报
  • 简书豆瓣,新浪微博
  • 博客,论坛,官方网站
  • 视频教程,有声FM

都集中起来更新通知,点击即可阅读

mark

具体的三个案例

用了3天的时间来了解Huginn这个项目

其中由于heroku的服务器bug以及搜狗的验证码反爬虫机制

严重影响了进度

直接说说3个小案例

  • 微信公众号聚合
  • 义工有新活动就立即用Slack app通知
  • 亚马逊有python的书立即通知,并检索书城的书架编号,查询京东的价格

heroku服务器

mark

事件面板 :24小时运行

mark

微信公众号

微信公众号聚合阅读

推荐一些订阅号

  • 硬派健身 / 简七理财 /利器 / mactalk / 彭小六
  • 一本黑 / 全频带阻塞干扰 / 懒人在思考 /King大王 / 灰产圈
  • 无极领域 / 差评 /老徐有话说 /phodal

阅读器更新效果,全部聚合更新阅读:

mark

活动通知

一些通知公告仍在官方论坛发布

比如武汉义工联盟论坛

mark

将其直接订阅到app里

mark

slack即时提醒

mark

亚马逊新书提醒

书很好的学习方式之一

想要的学习的领域,要及时更新资料

比如设计,编程,创业,电商,金融等等

生活比较忙碌,往往手动检索书籍的时候,已距离上市好几个月

这时可以自动更新亚马逊新书,比如python的类目

mark

自动检索该城市书城的实体书架库存以及编号

放个美女吸引眼球

mark

顺便自动查询豆瓣对比

  • 各个电商平台的图书价格
  • 电子书版本:kindle /edpu /pdf
    mark

最后依旧最slack通知消息


愿文链接:
http://mp.weixin.qq.com/s?timestamp=1514954060&src=3&ver=1&signature=q6*JoLNwP7zqrNhrDFD3wahTusYy334p3AHihVoytcySF6EDJo6-eK9evH6NEOyRVQJ5RiXPpvUwaWkcKF6pRAtb5TSDPznWo00dCLipMCnlRNkQGFuKG3C3dbWSb-U1AiXzCu7AsK4QeBR7XnmN3mNByFvW3dfUQgh1wN5ObrE=
作者:
Hack与geek微信公众号

利用 Feed43 制作什么值得买众测产品的RSS订阅链接

痛点

作为长期关注什么值得买 众测的一名普通用户,我一直有个痛点,就是众测一旦上了新的产品可以申请,既没有通知,也没有RSS订阅功能,只能手动打开众测的首页查看,不仅效率低,而且一旦忘了看还很容易错过。
直到我发现了 Feed43这个神器,这个工具的作用就是把没有提供 RSS 订阅的网页,变成可以通过 RSS 订阅来查看页面上的更新。原理其实很简单,就是根据用户自定义的规则,去过滤出网页源代码里变化的部分和忽略的部分。这么良心的一款工具,居然还是免费的。Feed43 也有付费版,不过免费版已经够用了。

Feed43 怎么用

具体怎么用我不打算在这里讲解,因为已经有人写了很详尽的图文教程。如果懂一点 HTML 的知识,其实不用看教程也很容易搞明白 Feed43 是怎么用的。

实际效果

我是通过监控众测产品这个页面来生成的,因为这个页面不像首页有那么多乱七八糟的东西。像我这种经常扫 InoReader的人,就可以不费力气地把所有 RSS 订阅在一处集中处理了。在 InoReader 里的订阅后效果如图:

很方便,浏览一眼标题就能判断是不是自己感兴趣的东西。正文是申请截止日期,方便判断过期了没有。点击标题就可以跳转到产品详情页,直接申请。

链接分享

我可以把我做好的什么值得买众测产品 RSS 订阅链接直接共享出来,有相同需求的人就直接拿去用吧:
http://feed43.com/1332165470266178.xml

原文链接:

https://aoxuis.me/bo-ke/li-yong-feed43-zhi-zuo-shi-yao-zhi-de-mai-zhong-ce-chan-pin-de-rssding-yue-lian-jie

自动下载U盘数据

期末了吧,什么?!老师不给答案?凑!不鸟~

大家都在想着怎么考试作弊什么的是吧?弱爆了,为啥?liuse今天给大家讲的是做一个自动下载U盘数据的VBs脚本,简单粗暴!

期末了,老师习惯性的都把数据放在U盘里,每次上课都得插上U盘吧,嘿嘿,那我们将计就计就做一个脚本呗~下面放代码教程

——————————–

这是liuse提前做好的,大家可以直接下载下来用。

链接: http://pan.baidu.com/s/1bYAlcy 密码: uwwk

源代码:

 

运行效果:

输入计算机U盘磁盘符

输入你要复制文件到哪里

输入你要下载的类型,如幻灯片就是ppt

运行后它会自动隐藏,如果想结束,到任务管理器,结束wscript


好了,liuse就说这么多啦。在此说明这工具是方便大家使用的,不是用来偷窥别人隐私的!以上仅仅是参考。

声明:本教程仅供渗透测试参考,大家且自行搭建渗透环境,严禁做违法犯罪的事情,如有不良行为后果自负,与本教程无关!

 

原文链接:

https://mp.weixin.qq.com/s?src=3&timestamp=1511941244&ver=1&signature=KiPxEDWxycvHeohyCuhfOLPdBEu9ErfGA2tp2PvF4Iz-lIZ0hbCKgmgCe9n4Kdlh0z2sunTdIZDLFwALK-Kknb0HznK*B2a2WuveVVhAiw6bGCymYlPMU7VK7zZyumZKQMHQlcEu7SYKJ-y6zJHJYOt3RuQBUBaoHctCCXzmA2c=

利用RS订阅自动下载你想要的资源

点击“获取RSS”按钮

1、点击网站右上角的“获取RSS”按钮

 

2、在弹出的页面填写你要订阅的内容(这里以美剧为例)

 

如果要过滤指定类型,勾选对应分类即可,如果都不勾选默认全选

3、获取RSS下载链接并复制第二条链接

 

注意不要泄露你的RSS链接,里面包含有你的passkey!

在uTorrent中添加RSS订阅

1、打开uTorrent,点击“添加RSS订阅”按钮

 

2、在“订阅链接”里输入上面复制的链接地址,一般如果前面复制了RSS链接了,“订阅链接”那里就会自动填充

为了区别不同的订阅,可以把“自定别名”改成“美剧”

注意要选择“不自动下载所有项目”,然后“确定”

 

3、返回uTorrent主界面,在左侧订阅栏右键“美剧”,选择“更新订阅”,此时会出现你订阅的相关资源。

 

订阅列表里可能会有一些我们不需要资源,接下来我们设置自动下载规则来过滤掉不需要的资源

设置自动下载规则

1、在左侧订阅栏右键“美剧”,选择“RSS订阅

 

2、首先点击“添加”新增一条下载规则,重命名“新建过滤”为“美剧”,然后进行过滤设置

 

过滤:填上自己想要的自动下载的资源的关键词,比如*The Big Bang Theory*|*The Walking Dead*,格式*关键词1*|*关键词2*|*关键词3*…可以随时添加关键词

* 匹配任意长度的字符

? 匹配任意一个字符,包括空格

|  或

排除:排除不想下载的,格式同“过滤”。比如The Big Bang Theory,要想只下载0day的720p(每次最先发布的那个版本),可以排除掉诸如*WiKi*|*HDChina*这样的合集压制组

保存:选择你想保存的目录,如果不填会下载到uT默认的下载目录(默认目录一般在C盘,推荐大家另选下载保存的目录)

订阅:选择你在第二步“自定别名”中命名的订阅,可选择全部或一个特定订阅

剩下的按照图示勾选就可以了在进行更改时,所有更改会自动保存

最后一步

点击“关闭”,在左侧订阅栏右键“美剧”,选择“更新订阅”。如果现在开始下载了一些不需要的资源,右键对应任务移除掉就可以了,以后就只会过滤新种子了

或者为避免上述情况出现,可以先把过滤设置里的“不要自动开始下载”勾上,点击“关闭”,这时候匹配到的资源会加到任务列表中,但是不会自动开始下载,移除掉不需要的任务,然后再把过滤设置里的“不要自动开始下载”勾掉

至此自动下载设置完毕,今后不需要人工干预,uTorrent就会自动下载你订阅的资源啦~

uTorrent的RSS下载器可以完成许多自动下载任务,本文介绍的仅仅是一个非常简单的例子,还有其他很多强大的过滤功能, 大家可以参考这个例子,根据自己的需要,创造更多的自动下载方法出来。如果你有什么心得,欢迎分享出来哦!

以后就可以愉快地追剧啦~

原文链接:

https://mp.weixin.qq.com/s?src=3&timestamp=1511941228&ver=1&signature=i5IYU1SV96cfQWtPk872jyhvaNRaTuQLiVmjf9MmuGoR0qIm8T9MkohF16zztjaCEeuwFiGywy8JNbHSc4tdt4k27cILhRgJcUN2u6fSFqmTdDhZ18d2vRKl5OZxvVtkNrHMEX8IrEnxMfmlW2erWzViktjxj0z8UPHV3e0nq3U=

 

树莓派自动发送邮件

树莓派接一上电就一直运行着,如果运行出现什么问题我们可能无从得知,所以希望把这种突发信息发送至手机。我们可以配置一个邮件客户端并且编写一个脚本自动发送。本文将实现开机时自动发送一封邮件到指定邮箱,这样如果断电或者机器重启,即便出门在外也能接收到通知。

实验环境

硬件:树莓派3b一台

操作系统:Raspbian with desktop

安装软件:mutt、msmtp

前期工作

树莓派程序开机自启动方法总结

安装步骤

1、安装mutt、msmtp

pi@raspberry:~ $ sudo apt-get install mutt

pi@raspberry:~ $ sudo apt-get install msmtp

msmtp是Linux下的一款邮件客户端,mutt通过调用msmtp来收发邮件。关于这两个软件详细说明请自行百度。

2、配置msmtp

在当前用户目录下新建.msmtprc

pi@raspberry:~ $ ~/nano .msmtprc

内容如下:

account default

host smtp.yeah.net

from 填写你的邮箱

auth plain

user 填写你的邮箱

password 密码

logfile /var/log/msmtp.log

需要特别说明的是host字段,这个需要填写你使用邮箱的SMTP服务器地址,比如QQ邮箱应该填写:smtp.qq.com

替换填入自己的邮箱密码,ctrl+o保存,ctrl+x退出。

3、配置mutt

在当前用户目录下目录下新建.muttrc

pi@raspberrypi:~ $ nano ~/.muttrc

.muttrc内容如下:

set sendmail=”/usr/bin/msmtp”

set use_from=yes

set realname=”RaspberryPi”

set editor=”nano”

realname字段会显示在发件人一栏,可以任意替换。保存并退出。

至此,邮件客户端配置完成。

4、发送邮件测试

在终端下输入:

pi@raspberry:~ $ echo “hello pi” |mutt -s “hello” 接收的邮箱

这里会提示出错,意思是除了当前用户外不允许其他用户有读写权限。

所以需要强制将读写权限设置为当前用户

pi@raspberry:~ $ chmod 600 .msmtprc

再一次发送邮件就能成功了,成功发送没有任何提示,如果有以下警告提示:

这个问题的原因是msmtp没有权限操作log目录,我们需要手动去创建日志文件并设置好权限让msmtp可读写。

pi@raspberry:~ $sudo touch /var/log/msmtp.log

pi@raspberry:~ $sudo chmod 666 /var/log/msmtp.log

设置启动自动发送邮件

1、编写邮件发送脚本

pi@raspberry:~ $ nano sendmail.sh

sendmail.sh内容如下:

#!/bin/sh

sleep 1m

echo “hello pi” |mutt -s “hello” 接收的邮箱

sleep 1m,表示等待一分钟,是因为启动执行这段脚本时网络未必已经连接。

给脚本增加执行权限

pi@raspberry:~ $ chmod +x sendmail.sh

2、将脚本设置为开机自启动

编辑/etc/rc.local文件

pi@raspberry:~ $ sudo nano /etc/rc.local

在exit 0之前加入一行代码:

su pi -c “exec ~/sendmail.sh” &

代码末尾的“&”表示不等待脚本执行完毕就返回,事实情况会创建新的进程去执行这条命令。

重启,测试,1分钟后查看邮箱就会收到邮件了。

另外

如果发送邮件是成功的,但是邮箱始终收不到邮箱,请检查下邮箱设置或者查看下垃圾箱,看看是否邮件是否被过滤到垃圾箱里面去了。

原文链接:

https://mp.weixin.qq.com/s?src=11&timestamp=1511940867&ver=543&signature=2lS14NCq4QHMXMs8czuE8cxMjx1gwRkhU1VhhIeBtOBE8X7joJ6wdrRzeV139R6WXLZUjO3006FEaEcMbNSNi9d5dKZ1xld3btp1C9CR2mBAOVSvjr0qza2G5sF7j6Qr&new=1

用 IFTTT 让 Telegram 变得更加「聪明」

Telegram 作为中文互联网圈难得热络起来的小众 IM,在少数派早已耳熟能详。而 IFTTT 这一个多年来不温不火的服务,也被许多国外社交平台党熟练使用。在前些天 Telegram 的移动端 3.1.5 更新说明中,Telegram 已宣布引入 IFTTT 支持。

snipaste20161209_183201.png

IFTTT 是一个有趣的互联网自动化平台,名字意指「If This Then That」,通过各种平台的开放 API 特性,以 applet 为单位设置 trigger 和 action,IFTTT 能使你的互联网变得更加智能,关于 IFTTT 派内曾有多篇文章介绍过。而如果你是一个 Telegram 用户却从未或很少使用 IFTTT,或许现在是你熟悉一下这个简单高效的互联网自动化工具并用他让你的 Telegram 变得更聪明的时候了。

通过 @IFTTT 连接你的 Telegram 和 IFTTT

与诸多 Telegram 服务接入方式相同,IFTTT 是通过 @IFTTT 这个 bot 接入 Telegram 的。要将你的 Telegram 用户绑定到 IFTTT 上,只需登录 IFTTT 后访问 IFTTT 的 Telegram 页面点击「Connect」来跳转到 Telegram 启动 bot @IFTTT,启动后按照 bot 提示点击「Authorize IFTTT」跳转回 IFTTT 即可完成绑定步骤。

snipaste20161209_183645.png

绑定完 IFTTT 后,你就可以拿 @IFTTT 实现一堆自动化任务了。

首先一大票 feed 订阅 bot 都可以洗洗睡了

IFTTT 支持 Telegram 之后,一堆 feed 订阅 bot 都可以下岗了,因为对于 IFTTT 而言 feed 订阅提醒是再简单不过的,而且 IFTTT 有更高的可定制性。

在 IFTTT 中选择 New Applet,按照 IFTTT 的「If This Then That」逻辑,将 This 设置为 Feed 中的 New feed item,填入你要订阅的 RSS/Atom feed 地址然后 Create trigger,将 That 设置为 Telegram 中的 Send message,设置一下目标会话和消息内容即可。

channel.png

到这里,你大概可以知道 IFTTT 的好处在于可以随意定制自己想要的规则和输出方式。由此引申出去,你可以通过 Telegram 的 @IFTTT 订阅内容源远不止 feed,也可以是某个 YouTube 频道、一个 Spotify 播放列表、一个 GitHub 项目。

甚至是备用机短信。

通过 Telegram 接收备用机短信通知

没错,我使用 IFTTT 通过 Telegram 提醒我 Android 备用机收到的新短信。我的主力 iOS 设备一般只用来上网,而 Android 用于接受短信、校园宽带密码和接打电话,相比此前经常 Android 一响两只手机掏来掏去地看消息通知,如今只需通过 Telegram 接收来自备用机的新短信提醒和内容了。

snipaste20161209_201458.png

而设置步骤也并不困难,在 Android 上安装 IFTTT 的 app,创建 applet,将 Android SMS 中的 Any new SMS received 设置为 trigger,That 部分的设置则与上文类似,仅仅几步便实现了 Android 新短信的转发至 Telegram 的转发规则。

通过 Telegram 获取校园有线宽带密码

作为一个常年被欺压的校园网用户,日复一日的上网流程是通过电信捆绑的手机发送短信指令到指定号码获取 PPPoE 拨号密码。而每天拨号时手忙脚乱地寻找备用机实在并不方便,于是我们也可以将这个任务通过 Telegram 交给 IFTTT。

同样是 Create applet,将 This 设置为 Telegram 的 New message with key phrase to @IFTTT,在 Key phrase 中设置你的触发语句(比如我设置为 xykdmm),并设置是否需要回复。在 That 部分设置 Android SMS 中的 Send an SMS 并设置号码为 10001,短信内容 XYKDMM。(这里对应坑爹电信校园的密码获取指令)

snipaste20161209_183956.png

设置完成并启用 applet 后,只需在 Telegram 中对 @IFTTT 发送 xykdmm,Android 备用机将会自动发送一条内容为 XYKDMM 的短信至 10001,之后电信返回的密码短信将会按照上一条 applet 由 @IFTTT 自动转发至我的 Telegram。

发挥你的想象力

目前为止,我使用 IFTTT 做了这些事,然而 Telegram 上的 @IFTTT 远不止这一点用处,IFTTT 上的 Telegram 服务不但可以在 Telegram 私聊,也支持将群组和频道作为 trigger 或是 action。

充分发挥你的想象力,IFTTT 可以将你的 Telegram 变得更加聪明。

原文链接:https://sspai.com/post/36503

利用DropBox自动备份服务器文件

最开始选择存储对象的时候选了挺久的,因为要选可以和linux进行数据同步的存储空间,最好还是命令行版的,备选的有multcloud,七牛云,百度云,DropBox等等。multcloud实在太慢了,免费版还不能用计划任务;七牛云要实名认证,pass;百度云限速太恶心,把备份文件下下来都要半天;权衡之下选了DropBox。但是DropBox的免费容量才2G,还好我的备份文件也不多,每天备份一次一个多月才能塞满。

DropBox有一个第三方的脚本Dropbox-Uploader,可以实现基本的文件操作,简单介绍下它的用法

第一次运行的时候会要求你填入DropBox Access token

你可以访问https://www.dropbox.com/developers/apps新建个app,然后生成token,填入就可以了

为了验证是否成功授权,可以执行以下命令来查看授权信息

sh dropbox_uploader.sh info

文件基本操作

上传

sh dropbox_uploader.sh upload 本地文件/目录 远程文件/目录

下载

sh dropbox_uploader.sh download 远程文件/目录 本地文件/目录

删除

sh dropbox_uploader.sh delete 远程文件/目录

移动

sh dropbox_uploader.sh move 远程文件/目录 远程文件/目录

复制

sh dropbox_uploader.sh copy 远程文件/目录 远程文件/目录

新建文件夹

sh dropbox_uploader.sh mkdir 远程目录

文件列表

sh dropbox_uploader.sh list 远程目录

分享文件

sh dropbox_uploader.sh share 远程文件

离线下载

sh dropbox_uploader.sh saveurl 文件url 远程目录

搜索

sh dropbox_uploader.sh search 搜索规则

配置完DropBox后把本地文件打包后就可以上传了。上传速度还挺快的,基本上6s以内搞定。


最后再配置下计划任务,让他每天自动备份。完美解决

 

原文链接:

https://blog.xesygao.com/2017/07/16/%E5%88%A9%E7%94%A8dropbox%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%96%87%E4%BB%B6

Tasker 实现转发短信和远程给指定号码发短信

远程发送短信的方法为设置%NUM 变量后将收到指定号码的短信后按格式发送
10010:cxll
就是将 cxll 发送给 10010

https://gist.github.com/codexss/3bf7369e7ef40372f5ea93b26692141b

点击 RAW 下载把这个文件导入到 tasker 后修改%NUM 变量即可
然后把手机的 WIFI 跟数据流量关了开省电模式一天只用%1 到%2 的电

联通网龄计划一个月送三百条不用白不用

发送到邮箱可以省点短信费

用转发的小心点啊,如果转发到了澳门赌场短信或者其他垃圾短信会导致手机号被封的!!!其他垃圾短信也可能会被封的,之前看了好几个了

短信转发效果最好的应该是苹果自带的 iMessage,两个手机都登录同一个 appleID,然后就 OK 啦。短信自动同步。甚至可以用另一个手机号码发短信哦。无缝迁移好么。

我有 root,然后把 ifttt 改成了系统软件,他就自动常驻后台

手机号三年了没收到过赌场的短信,希望以后有更好的方案……之前插 3g 王卡挂路由器里老是出问题…… ifttt 延迟严重……

我也用 ifttt,+skype 效果也很不错,不过还是有点延迟,忍了

 

 

断舍离_如何用RS订阅一切

我的一天,曾经从手机Zaker客户端开始,到十余个微信公众号,到微博,再在公司刷虎嗅、腾讯新闻、行业新闻,然后到知乎日报结束。所有的这些都只为了回答:今天发生什么新鲜事儿了?曾经还下了新浪新闻客户端、新浪博客客户端,后面发现真是无暇顾及。

为了不被骚扰,关掉了所有媒体类APP的提醒。但不时地,还是疲于在各个网站和应用间切换。

终于有一天忍无可忍,决定回归RSS。RSS简介 有人说,RSS早就out了,毕竟有抢内容平台流量的嫌疑,但也有人说RSS符合去中心化的趋势,未来不可能依靠一个或几个平台就能获得充足信息。其实观点不重要,重要的是我这样的懒癌恨不得信息直接打碎了用勺子送到嘴边。

内容平台有多重形式:网站、博客、微博、微信公众号、订阅平台等等,而RSS一般有全文和摘要两种形式,各平台与RSS的关系如下:

1 网站、博客:可能有RSS也可能没有,多数是摘要RSS,少数有全文RSS。

2 微博、微信公众号:没有RSS。

3 订阅平台如Zaker/鲜果:都是新闻聚合平台,与RSS是竞争关系。

我的目标只有一个–把他们都变成全文RSS,也就是在阅读器中点一下就能美美地看完。但是…

首先,要找到一款合适的阅读器

想要完美的链接集合怎能没有完美的RSS阅读器,而想要找到合适自己的阅读器,明确需求是非常重要的,比如我对于阅读器有以下的期望:

1 兼容iphone/ipad/windows,也就是有IOS APP和Windows Web版(如果你是安卓用户可能又会另有选择)

2 体验好、速度快、不像Google reader说翻船就翻船

3 最重要的,在公司不被墙,天朝你懂的(如果你没有这个烦恼,那么选择余地就大多了)

下面是主流阅读器的简单对比,一家之言仅供参考。

Reeder

这是个好评如潮的阅读器,包括完美的UI和体验、较快的同步速度,并且能够关联其他网络RSS账号,免去迁移的麻烦。个人亲身体验,用了换不了。但是这款阅读器也有两个显著缺陷:1)它是收费的,并且每次升级要重新付费,更坑爹的是Iphone/Ipad和Mac的版本不一样要分别购买…当然版本更新频率并不高,我的Iphone/Ipad 2.0用了大半年没升级也挺好使。其实也就几十块钱,收费的服务更稳定可靠,何况它值得你拥有。2)只支持IOS、并且没有Web版。用安卓的同学只能Pass了;上班时候不能总刷手机吧,有个web版还是很必要的。好就好在,它除了能够添加本地RSS源,还支持添加Feedly, Inoreader, Feedbin, the Old Reader, Readability等诸多网络RSS,只需添加账号,就可轻松同步。当然这也限制了你的网络RSS阅读器选择,比如国内的中文版本就使不得了。

添加账号后作简单地设置就可以使用,非常方便。

Feedly

有IOS和Windows版本,推荐还挺多。但亲试iphone APP和web速度都慢得惊人,还经常刷不出内容,也许是服务器没放对地方,也许收费版速度会有所提升,但我认为速度这一重度影响体验的基本需求不应成为免费版使用瓶颈,网上也有很多吐槽稳定性不好,直接枪毙。

Inoreader

从各方面来说Inoreader都是很理想的选择。免费功能完善,一些重度功能才收费;支持各个系统,可以不用购买reeder;内置搜索功能非常强大,甚至可以直接搜索出微信公众号的订阅源;支持Pocket/Instapaper这样的网络收藏夹;整合了Readability可以将摘要转为全文输出;分享评论社交功能比较完善,完美支持中文界面。我一度已经选定它成为我的理想阅读器,结果…它在公司被墙!!刷了N次都只刷出502 Bad Gateway,只好含泪转向了The Old Reader。

The Old Reader

比起Inoreader,The Old Reader就像其名字一样,有种要被时代淘汰的感觉。首先没有APP版本;速度并不快一般切换个源要等3秒,试过付费的版本也并没有显著提升;搜索源的功能不够强大;中文界面翻译非常狗血,而且名字也很老旧呀。

但是它也有它最大的好处:没什么致命缺点,Reeder支持,在公司不会被墙,UI清爽好看易上手胜过Inoreader,属于无过便是功的稳扎稳打型。据说它的创始人是前Google员工,一度因为用户量过大被关闭,2013年私有化之后才又重新开放的。付费版本去广告,增加了订阅源数量和保存时间,能够支持分享到Evernote,Google+, Linkedin等更多的社交平台,甚至可以自定义分享平台,还支持将标星文章同步到Instapaer/Readability/Pocket网络收藏阅读器…可是,付费版速度还是不够快,广告也不碍眼,于是付费了2个月又退回免费了。总之目前用得也还算满意。

其他阅读器

下面再列举几个常见的阅读器,以及为什么放弃他们。

FeedDemon, 广受推崇的阅读器,但只有本地离线版,2013年停止更新了。

鲜果阅读器,唯一一个尝试过的国内阅读器,但由于与鲜果平台的竞争关系已经被关闭了,国内创业能否创收毕竟是个重要考量,RSS这种相当于公益的事业做不下去也能理解,只有一声叹息。

BazQux,据说最大的好处是速度快,首页有详细的介绍,因为在公司被墙就没有深入研究。

Minimal Reader,因为Reeder支持也去尝试了一下,注册后发现 “There are182 people in front of you waiting for their free account”,竟然要排队也是醉了。

还有一些其他受推荐的阅读器,有心的话可以货比三家逐一尝试。 NewsblurAOL Reader中文版

稍后阅读 Read it later

提到RSS阅读器,就不得不说说网络收藏阅读器(Read it later)。

相信不少人都使用过微信或者QQ的“收藏”功能,就是在浏览网页的过程中,发现一篇好文想要存起来或稍后再读,这时候收藏的功能就派上用场了。网络收藏阅读器就是为这类需求应运而生,并且致力于跳出系统、应用的限制,支持尽可能多的收藏场景。

最常用的这类阅读器分别是Readability, Pocket和Instapaper。附赠一篇简单比较

就免费版的个人使用体会,Instapaper的抓取功能确实最强大,Pocket的APP版体验是最好的,而Readability同步速度慢不说UI还不好使,但最大的好处是Reeder支持–也就意味着无需打开Readability应用就可以轻松在Reeder中阅读,堪称懒癌界的良心。

关于抓取功能,不得不多说两句,想要完美将源文的格式、图片甚至视频抓取到网络收藏阅读器是一件几乎不可能完成的任务,下面附上一篇源文和在三个应用中的对比,可见源文的阅读体验是无可替代的。所以私以为这类阅读器用来存个链接,实际读的时候跳转到源网页更好。

源文的排版是这样的,还附了个GIF:

三个应用抓取的效果是这样的:

可以看到,只有Instapaper把GIF抓出来了,遗憾的是下文的诸多图片也未能抓成功,只有Image框在那儿瑟瑟发抖。

综合以上经验,我选择了“IOS用Reeder关联Readability和The Old Reader,Windows用The Old Reader网页版”的组合,基本覆盖日常阅读所需(其实是经常积压一堆未读),再也不用收藏一堆网址下载一堆应用了。

那么,如何全文订阅不同平台的新闻、文章和消息呢?请看如何用RSS订阅一切(下)

工欲善其事,必先利其器。上篇介绍完阅读器的选择,利器有了,可以磨刀霍霍向猪羊了。

各类网站提供的信息源还不一样,需分门别类地处理。

1 业界良心,有全文RSS输出。例如知乎日报,糗事百科,以及大部分的博客。

2 心机门户,只提供RSS摘要换点击率。如腾讯新闻、新浪新闻。

3 小器平台,不提供RSS链接。如微信、微博、简书(会被和谐嘛?)。

直接添加RSS订阅

对于第1类和不需要全文输出地第2类,一个快捷的方法,是度娘上搜索“网站名称RSS”,绝大部分都能快速找到RSS源地址,将地址添加到订阅器即可。

另外一个方法,是在网站上寻找RSS图标或者订阅链接,例如新浪个人博客的首页就有“订阅”链接,点击后复制地址即可。

还有一个方法,就是利用阅读器内置的搜索引擎,比如上篇提到Inoreader内置的搜索引擎就很强大,the Old Reader就一般般了。

如果你奇葩到上面都还不够用,那么额外提供一个专业的RSS搜索引擎:Ctrlq.org。这是 google下的专业RSS搜索引擎,但经常不可用,所以不推荐。

RSS摘要转全文输出

对于只提供RSS摘要的网站,每看一篇文章都要跳转到网页也是很恼人的事,如果有工具能够将摘要转换为全文那真是喜大普奔。这样的在线工具还真不少,下面这两篇文章描述得很详细,就不再赘述了。使用方法也非常简单,把摘要RSS地址贴到转换网站的输入框,等它生成新的地址并进行订阅即可。

五种获取RSS全文输出的方法

4+1个RSS强制全文输出工具

不过要注意的是,各个工具生成全文输出的能力和稳定性是不同的,例如同样是虎嗅网huxiu.com/RSS, FulltextRSSfeed就无法正常生成全文,而Feedex轻松无压力。总的来说个人体验Feedex是最好用的,抓图毫无压力,所以目前所有的摘要转全文都用Feedex。当然,不能指望有完美的格式,够看就行。

另外友情提醒,备受推崇的Yahoo pipes已经在2015年8月30日停止创建新的pipe,并且很快会停止运营。这件事给我们的教训是,不要过度依赖在线工具,随时做好另觅新欢的准备。当然,对无私奉献的旧爱也要心存感激。

为网页生成RSS链接

本来想自豪地写一篇微信、微博、简书等“用RSS订阅一切”的牛文,可是理想很丰满,现实骨缺钙,此前找到的微信公众号抓取工具,因为是国内的牛人自己搭的服务器,很快就支撑不下去,用了一段时间后都关闭了。所以吹牛的标题还在,内容却不攻自破–小女子是技术小白,无力自建,不过代码在GitHub上是公开的,如果有哪位牛人心血来潮想发下福利一定举四肢鼎力支持。

微信没戏了,微博的希望还在:新浪微博转RSS如果你是不刷微博发鸡汤晒自拍睡不着觉的重度使用者,可以直接跳到下一段。如果由于微博的沉寂、你只想关注三五个特定的账号更新并且只潜水不发文,那么就可以直接卸载微博用RSS订阅这些账号,完美契合断舍离的洁癖精髓。这个在线工具使用也很简单,搜索账户名,在左下角就会生成RSS地址,亲测排版不是那么优美,但图文抓取都没有问题,视频会转为链接。

那么,其他网页或者简书这样的平台如何生成RSS链接呢? 下面这篇文章有简要介绍。

给任意网页制作一个RSS Feed的七个工具 (其中第6个Ponyfish已关闭)

个人的建议,可以先用简单的一键生成工具(比如Page2RSS,Feedity)尝试一下,不过成功率不会太高,至少目前我用的订阅没有用到的。不行的话再使用 FEED43 – 为没有 Feed 的网页生成 RSS 格式订阅源 。Feed43的原理,是从网页的Html代码中直接截取你想要的部分生成RSS,对于看不惯代码的技术小白,还是要稍微费点精力。但如果真的是很想追更新的网页,比如简书某个作者、某些网页特定的新闻等等,又不想频繁登陆网站,Feed43是很理想的选择。

需要注意的是,Feed43抓取出来的结果很有可能只是摘要,我也尝试过将摘要用全文输出工具转全文,但是成功率很低。稳定的更新是好的阅读体验的前提,所以就忍忍只看摘要吧。

最后,附赠百度新闻关键词RSS订阅介绍。如果你和我一样关注某个特定关键词比如行业、公司、甚至个人的新闻,那么百度提供的关键词订阅是一个不错的选择。

百度RSS新闻订阅 这里提供了详细的教程,你可以方便地订阅关键词新闻、分类新闻和地区新闻。就使用前两者的经验来看,关键词搜索取决于词的区分度,会出现不少重复或不相关的新闻,但扫一眼标题大都能完成判断,还是有一定帮助;而分类新闻覆盖面就比较全,例如订阅“互联网焦点新闻”,基本每天各大媒体的热点都能覆盖到。输出的链接是摘要,因为更新量大看看摘要会比较节省时间,所以就没有尝试全文输出。

总结

什么是RSS?看到这儿都还不知道请收下我的双膝,我真讲不清楚可以问问度娘。

为什么要用RSS? 定向获取信息、聚合信息、减少各种应用的信息干扰,还你一个清静的世界。

如何订阅RSS?寻找一个跨平台、合适自己的订阅器或订阅器组合,添加需要的RSS源,可以利用不同的工具实现定制。

有哪些好的RSS源?这个见仁见智,与个人的兴趣专业相关,可参考 知乎:你必读的 RSS 订阅源有哪些?

希望以上信息对你有帮助。

原文链接:http://www.jianshu.com/p/363aee710c88
作者:duduparaT

RSS 我所希望你获取信息的方式

我现在上网冲浪时觉得最有意思的事情是去翻别人的博客了。如今的时代,坚持写博客的是越来越少了,不过还是有一大批人坚持着,其中大部分我猜应该都是程序猿,再或是对编程、互联网感兴趣的人。我在一篇篇博文跳转着,阅读着他们的文字,经常会有一种感觉就像是自己切身实地在与一群新鲜活泼的人儿交谈。
在这群人里,有十几岁的但是思想成熟会让你感到自愧不如的中学生,有刚进入大学不久的与我同龄的大学生,有律师 、老师、设计师、程序猿,有事业有成的 Boss ,有刚步入社会经历生活的磨炼的,有失恋痛苦的,有暗恋未果的,有建情侣博客秀恩爱的。这都是我所见到过的。从他们那里我可以得到很多。
随着我的浏览量的增大,意味我每天要打开几十个网站,看看博主有没有更新,这样花费的时间或许还可以接受,那当网站数量增长的上百个时,再这样做就不是一件令人愉悦的事了。RSS 就是解决这一项问题的利器。
RSS 是英文 Really Simple Syndication 的缩写。大多数网站都会提供类似以下的链接:
再结合一个阅读器,这样我们就可以将所有网站信息聚合在一个容器里,这样就节省我们的时间和精力了。
像类似知乎、简书、微信公众号的平台并未提供 RSS 订阅链接的平台,在网上已经有网友抓取好制作成现成的链接了,我们拿来直接就可以用了。如果你找不到,还可以利用「feed43」、「Huginn」等自己制作。我们还可以利用 RSS 来完成一些有趣的事,比如抓取学校教务处的通知,及时获取二手市场商品的消息等等。
这里,我有一个经验想要分享给大家,刚开始使用 RSS 的时候,在 Inoreader (一个阅读器)里,没过一会儿未读文章数都会蹭蹭涨到 99 + ,这让我对文章阅读产生恐惧。这是因为我先前订阅了一些新闻站点和其他更新比较频繁的站点,其实这里面的信息并不是我想要的,反而会造成阅读障碍,后来我便删去这些订阅源,一切终于回到正轨。
其实我们现在所接触「微信公众平台」、「轻芒阅读」、「今日头条」、「即刻」、「Zaker」等都是 RSS 另一种形式的体现。目前大部分社交、视频网站,订阅、关注、更新,其本质上就是 RSS 所秉承的理念:聚合信息,动态更新。
https://sspai.com/feedhttps://yeahwu.github.io/atom.xml
http://blog.iljw.me/feeds/posts/default
我真的不想看到,当我打开 APP 时,看到是某某的绯闻,谁的花边新闻,我不感兴趣。最可怕的是,有一些文章,三观歪曲的可怕,我想,如果长期在这种阅读环境下,那我的人生观可能就要被扭曲到哪几个次元去了。假设给自己一天,远离这些新闻,你会发现其实自己根本不依赖这些东西,不要让这些东西强加在你的身上。我希望你能对这些东西有清楚的判断,不能见到风就是雨

打造高效信息获取与阅读小系统

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

一、解决问题

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

  1. 信息获取途径分散,阅读平台分散。现下越来越多依靠微信、微博、新闻客户端来获取信息。来源分散,无法集中阅读。
  2. 收集信息依靠人工,浪费时间。永澄老师在前天的公众号文章中提到,重复的事情一定要自动化。信息获取与收集每天重复,必定可以自动化。
  3. 手机、电脑、Kindle阅读工具多,无法无缝对接。电子设备越来越多,信息同步也成为问题,不同的场景应用不同的工具,但内容应该相对稳定,保持一致。

二、系统设计

依据问题导向,重点实现:信息收集可定制、信息收集自动化、信息内容同步化、信息阅读集中化四大目标。

(一)信息收集可定制

无论是微信、微博、博客还是网站内容,都有Web端的展现渠道。只要可以呈现,即可抓取。只要找到信息源,采用统一规则,即可实现定制化。

统一规则就是RSS。简易信息聚合(也叫聚合内容)是一种基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。

这一技术最早出现于1995年的苹果。在博客时代被广泛运用。但因期内容简洁,无法插入广告,不具商业价值,逐渐被各大平台所放弃。但在崇尚分享的极客界,RSS是信息交换的基本语言。至今我的博客仍然保留了RSS订阅功能。

实现思路:找到所有需要获取信息的RSS源,即可实现自己过滤信息的目标。通过RSS订阅,在一个RSS阅读器中阅读所有信息源提供的内容,包括微信公众号、简书、知乎、博客、图虫、Lofter。。。

1、订阅微信公众号

其实,订阅微信公众号是非常麻烦的,在这里我强烈推荐大家使用微广场,它提供微信公众号的全文RSS,免费用户可以订阅10个公众号,而且基本上热门的公众号都能找到; 最重要的是,如果成为VIP会员,可以自行提交订阅的公众号。我就直接提交了永澄老师的公众号,得到了公众号的RSS订阅源。

2、订阅简书

至于简书,推荐一个网站Jianshu RSS,使用方法非常简单,直接将你想订阅的简书专题或作者主页的网站粘贴到输入框中,点击GO就可以生成对应的RSS源。
但是,有一点我需要先声明的是,在简书APP或WEB上的阅读体验是非常不错的,而且简书不单单是一款阅读类应用,它也是一款社交应用,通过阅读别人的文章,然后与他人交流想法也是很有必要的。

3、订阅知乎专栏

订阅知乎专栏可使用这个网站提供的服务,但是,因为知乎上的图片好像有图片防盗链设置,为了让图片能够正确显示,浏览器上需要安装一些插件,比如:RefControl,或My Webrequest,使用方法参见插件自身的教程。

4、订阅博客

大部分博客都是提供RSS订阅的,图虫、Lofter这类图片类轻博客也是支持的,但是如果网站不提供怎么办,在这里你可以使用feed43,使用教程可以参见小众软件,操作也比较简单。

5、订阅微博

如果你需要将微博上的一些账号变成RSS的话,可以试试微博档案

6、订阅任意网站

上文我提到,只要是呈现出来内容,都可以通过技术手段实现抓取。如果你想将任意网站变成RSS的话,通过HTML和任意的Web动态语言简单编程即可实现。极客的世界永远充满惊喜,连这样的事情都已经有国外的极客做成了开源的平台,而它的名字就是那只乌鸦:Huginn。它的功能非常强大,不仅仅是能将任意网站变成RSS,还可以实现很多自定义功能,有点类似IFTTT。前面我提到微口网只提供摘要RSS,这样的话,你就可以使用Huginn将摘要RSS变成全文RSS,你也可以将传送门或爱微帮上的公众号变成RSS。

如果你在这里遇到困难,可以私信给我,我们一起来玩这只牛B的乌鸦。

通过以上的方法和工具,可以做到,我要的信息我做主,高度定制化的信息源,彻底告别注意力被别人收割的囧境。

(二)信息收集自动化

有了高度定制化的信息源,下一步就是收集的自动化。可以不用再手工的收藏到云笔记系统。主要任务是实现多个分集的RSS订阅源集中管理,集中收集。

推荐一款工具:一览。通过Web端,在后台管理订阅功能,添加所有的信息RSS订阅源。每有更新,一览都会帮我们自动收集,并显示更新数。

这里有个技巧,可以使用导入&导出功能,手动快速添加RSS订阅源,并且可以自动实现分组。

(三)信息内容同步化

其实有了统一的RSS订阅源,就已经实现了内容的同步化,因为,一旦对应的订阅有更新,所有订阅都会自动更新,自动同步。因此,宝宝再也不用担心我的同步问题了。

(四)信息阅读集中化

有了统一的订阅源,下一步就是选择RSS阅读工具。这里包括各个场景,各个平台,各个工具的内容一致,可以轻松无缝切换阅读。

我的电子设备如下:

1、MacBook Pro

在Mac系统下,最强大的RSS阅读器是Reader,没有之一。界面漂亮,分组简单。直接上图,所有Mac用户,绝对值得拥有。

2、Android手机

一览有APP可用,无缝衔接。可以在手机上使用该APP阅读所有的订阅。

3、Kindle

最难同步的是Kindle,之所以选择一览,是因为它可以在后台设置是否推送RSS订阅源到Kindle,这个太靠谱。从此,Kindle就不仅仅是看小说这么简单了。当然,通过微信关注Amazon的公众号,可以实现单篇文章推送到Kindle,但这仍然需要手动推送,而且单篇文章推多了,你的Kindle就花了。一览可实现每日一推,按日期分专辑,简洁,全面。所以,我仍然推荐使用一览推送。

三、总结

当你使用RSS阅读的话,一个RSS阅读器就能阅读所有关注的信息,而且可以很快速的筛选信息;当你养成RSS阅读的习惯,你也不会再遗漏那些你关注的信息更新,总之,很方便很有用。之前读过《断舍离》这本书,突然发现,其实,使用RSS是现代社会断舍离的一种方式,我们应该将阅读和社交分离开来,微信只用来与朋友聊天,微博只关注自己的朋友。。。

面对这个信息大爆炸的世代,为了高效地阅读,赶紧使用RSS吧!!!

如果你有这方面的需求,欢迎和我联系,专业的人做专业的事。

如果你有这方面的特长,欢迎和我联系, 让极客在一起改变世界!

极客崇尚分享,科技改变世界!

我是成长中的极客,萧宇宸,你的支持是我分享的动力之一!

 

原文链接:

萧宇宸的博客 http://blog.xiaoyuchen.com/20170315/kindle/