利用 Huginn 和知乎日报 API 制作全文 RSS

Huginn 是北欧神话里,主神奥丁的一只乌鸦,每天乌鸦都会为奥丁获取全世界的新闻。 这也是基于 ruby 的 Huginn 所希望替用户做到的,在这个碎片化的时代替用户爬取和筛选任何互联网上信息。

利用 Huginn 和知乎日报 API 输出全文 RSS 以减少碎片化阅读。

自从 Google Reader 关闭之后,RSS 已逐渐式微,但这不妨碍它成为一种高效获取信息的手段,RSS 没有推荐和评论等任何干扰性元素(吾之蜜糖彼之砒霜),信息来源掌握在用户自己手里。配合 Tiny Tiny RSS ,所有文章通过 Reeder 阅读而不必在多个 XX 头条,XX News 和 XX 号之间切换以及忍受他们的启动广告。 RSS 已经成为了我获取每日信息的主要途径。

信息聚合flow

  • RSS 信息源
    • 新闻、媒体、博客
    • 微信公众号
    • 即刻
    • Flipboard
    • 希望稍后阅读的文章

大多数主流媒体仍然提供 RSS 摘要作为引流途径,好在可以通过 Mercury 来获取文章全文(虽然开发者从不回复邮件),以省去每次跳转到网站的麻烦。

Website Agent 1 - 获取日报文章链接

通过 izzyleung 的逆向分析所得出的知乎日报 API https://news-at.zhihu.com/api/4/stories/latest ,用 Huginn 创建一个 Website Agent 来接收 API 返回的大爱 JSON 格式。

{
  "date": "20171221",
  "stories": [{
    "images": ["https:\/\/pic1.zhimg.com\/v2-a3a6dc8cceadecc2a7857a4fde489070.jpg"],
    "type": 0,
    "id": 9661975,
    "ga_prefix": "122119",
    "title": "每天都一样,我没有可以发朋友圈的好照片"
  }, {
    "images": ["https:\/\/pic3.zhimg.com\/v2-55a299f36ca56acc4f45977404b73596.jpg"],
    "type": 0,
    "id": 9661999,
    "ga_prefix": "122119",
    "title": "简历不会做,求职信不会写?先学习三个经济模型"
  }]
}

agent 参数 1

Huginn Website Agent 1

  • url 中填入 API 地址
  • type 中填入返回格式 JSON
  • mode 中填入 on_change ,即只存储与上次事件不同的抓取结果
  • extract 中填入我们要抓取的 JSON 键名 ( Huginn 支持 regex 正则式和 Liquid ),这里抓取的是 stories 键下的每一个对象的 idtitle并将事件存储到 idtitle 这两个变量中备用

输出事件

id title
9661975 每天都一样,我没有可以发朋友圈的好照片
9661999 简历不会做,求职信不会写?先学习三个经济模型

Website Agent 2 - 获取日报文章全文

基于上一步的输出事件,ID 代表文章的唯一识别符,创建第二个 Website Agent 进一步通过 API https://news-at.zhihu.com/api/4/news/9661975 可以获取 ID 为 9661975的全文 HTML。

{
 "body": "<div class=\"main-wrap content-wrap\">\n<div class=\"headline\">\n\n<div class=\"img-place-holder\"><\/div>\n\n\n\n<\/div>\n\n<div class=\"content-inner\">\n\n\n\n<div class=\"question\">\n<h2 class=\"question-title\">怎么在非常平凡的环境里拍出好照片?| 再说陌生感<\/h2>\n<div class=\"answer\">\n\n<div class=\"meta\">\n<img class=\"avatar\" src=\"http:\/\/pic3.zhimg.com\/v2-be72a3471a5b9a246313cca944dd7d62_is.jpg\">\n<span class=\"author\">原画册韩松,<\/span><span class=\"bio\">IPPA,MPA,MIRA手机摄影获奖,公众号:原画册<\/span>\n<\/div>\n\n<div class=\"content\">\n<p>文 \/ KKM<\/p>\r\n<p>摄 \/ 韩松<\/p>\r\n<p>看到这个问题我第一个想到的依然是三个字——<strong>“陌生感”<\/strong>。<\/p>\r\n<p>即一个在我们眼中很路人的地方,通过摄影师构图和后期,呈现出<strong>“这是什么?”<\/strong>的第一观感,和琢磨琢磨之后<strong>会心一笑<\/strong>的结果。这种迷人的,被延长的审美时间,构成了读片乐趣。这种乐趣我理解为是一种“好”照片。<\/p>\r\n<p>-<\/p>\r\n<p>陌生感大法是就<strong>形式<\/strong>上而言的,核心在于让照片看起来和我们平时肉眼所见的有所不同,就手法而言还可以细分为“局部大法”“对焦大法”“角度大法”“曝光大法”“结构大法”“讲故事大法”“组照大法”等。<\/p>\r\n<p>提供几张尬图来论述。手机拍摄。<\/p>\r\n<p>-<\/p>\r\n<p>首先看这组最近我最近发布在微博的照片,其中用到了很多对局部和场景片段的捕捉:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-4ed10ecd2b4b2e5bacce5d58b24da7e5_b.jpg\" alt=\"\"><\/figure><p><strong>1\/“局部大法”<\/strong><\/p>\r\n<p>其实是一种讨巧的做法。因为它以最简单的方式规避了人直接看到的东西,将人从平凡而无聊的视觉体验中抽离出来。<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-f16f1d659c9c6bc2a23e746672f48d33_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 潮湿的地面<\/figcaption><\/figure><p>而这张照片的“真实场景”如下,可以看到没有陌生化的处理,显得平庸无趣:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-6f1ba5abc19e16fbb53a64374a52f369_b.jpg\" alt=\"\"><figcaption>“真实场景”对比<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic2.zhimg.com\/v2-02a9303d61de079c1fc94d626a1c7376_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 城市局部<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-c05945f75dfa503044d64f03ad634c33_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 油画般的水面<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-905d3ad258bcc6e3e5b1f72f73733f84_b.jpg\" alt=\"\"><figcaption>“真实场景”对比<\/figcaption><\/figure><p><strong>2\/“角度大法”<\/strong><\/p>\r\n<p>我反复用了这个栗子:京都火车站站前广场,普通的角度只能带来平凡的照片:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic3.zhimg.com\/v2-6bbd41cb62ac7636f3c53982642c235a_b.jpg\" alt=\"\"><\/figure><p>在上图所示的角度拍摄,可以获得这种效果:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-4d03f0063dd705e601f201cf38c89e2a_b.jpg\" alt=\"\"><figcaption>谭凌飞/摄 iPhone6s。京都火车站。MPA 手机摄影大赛建筑类荣誉奖<\/figcaption><\/figure><p>当然,局部、角度二法一脉相承,靠的都是观察力和归纳能力。要说一些操作上的技巧,可以从对焦和曝光说起:<\/p>\r\n<p><strong>3\/“对焦大法”<\/strong><\/p>\r\n<p>自然是运用对焦的一点雕虫小技,来制造肉眼难以达到的视觉体验。这种感觉像是<strong>用一句诗表达了一句大白话<\/strong>,意思还是那个意思,表达却完全不同。下面两张照片的拍摄很简单,用手机对着近处某个东西对焦,并按住屏幕锁定焦点,然后对着远处,便会有失焦的效果。<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-c7ad99ef483c2d938b660211b121d69d_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 城市局部<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-b7b96b98613b7d1ade925b4e12a4ed63_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 河流<\/figcaption><\/figure><p>而这张我也准备放出没有经过“陌生化”处理的场景,一条普通的河流,实在乏善可陈:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-ddc3b84577ed98efcb098ac8108148ce_b.jpg\" alt=\"\"><figcaption>“真实场景”对比<\/figcaption><\/figure><p>最近对虚焦的拍摄比较着迷,再举几个例子:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-04463008b0c6fa8aafdfe994daade978_b.jpg\" alt=\"\"><figcaption>韩松 \/ 摄 iPhone7p 北京,回家的路上<\/figcaption><\/figure><p>这张照片还可以通过这个视频感受:<\/p>\r\n<p><strong>4\/“曝光大法”<\/strong><\/p>\r\n<p>其本质是制造了人眼感受不到的“错误曝光效果”,下面这组《灯》拍摄于莫斯科地铁,通过<strong>降低曝光<\/strong>的调节营造了一组简单、节制、具有抽象美的图像。<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-73dde9149680f79b5a9abe993dff90c0_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,《灯》。2017 年平遥国际摄影大展中,这组照片在“自然生长”联展中展出<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-1e8e1bb8872a40dd9380951cbc0c851b_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,《灯》。2017 年平遥国际摄影大展中,这组照片在“自然生长”联展中展出<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-15e310fd71a23f3e8e7a07568e8a8af1_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,《灯》。2017 年平遥国际摄影大展中,这组照片在“自然生长”联展中展出<\/figcaption><\/figure><p>很多朋友觉得莫斯科地铁并不属于平凡的环境,实际上,华丽的莫斯科地铁站最不起眼的就是这些通道里的日光灯了。这个案例还让我感到,很多惯常意义上的美好和华丽,其实蒙蔽了真正的平凡之美。同样的手法,自己在某宜家也进行了演示。<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-bb144c732ad3f39838018a3acea38e1e_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,天鹅<\/figcaption><\/figure><p><strong>5\/“组照大法”<\/strong><\/p>\r\n<p>找到日常\\旅行中一些线索,组合起来,用有力的主题来改变平凡场景的意义。这时候,我们不再只关注照片“好看与否”,而是通过照片传达“我看到了什么”。<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic5.zhimg.com\/v2-1c7c1367c2e5e176f5d51ca2612dd3b1_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,云层<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic3.zhimg.com\/v2-045ddd9efa37f1b02c7b53a5b78b96a9_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,没有蓝天白云的海边<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic2.zhimg.com\/v2-839678667afdcc5cd7816b1a7f657a83_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,half and half<\/figcaption><\/figure><p>当然,组照的存在并不是为了掩饰平凡,单看其中很多照片,可以感受到另一种手法:<\/p>\r\n<p><strong>6\/“结构大法”<\/strong><\/p>\r\n<p>日常真实场景是柔软而混沌的,通过构图强化结构感和几何感,能让一些“路人”的场景变得不一般。看这几个例子:<\/p>\r\n<figure><img class=\"content-image\" src=\"https:\/\/pic4.zhimg.com\/v2-2fac137677fc008131444a3421394c1b_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,有意制造了对分的明暗结构<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-213375fcc8d9eb58a2a6b35a53ea7bea_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,有意捕捉了倒三角的结构意向<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic1.zhimg.com\/v2-d4717332497d394368e2d98afebb11c8_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,空间<\/figcaption><\/figure><figure><img class=\"content-image\" src=\"https:\/\/pic2.zhimg.com\/v2-9e7d5bb663816887324eba16b46c8449_b.jpg\" alt=\"\"><figcaption> 韩松 \/ 摄 iPhone 7p,建筑和玻璃上的灯<\/figcaption><\/figure><p>-<\/p>\r\n<p>不得不说,<strong>陌生感<\/strong>的思想 \/ 手法对自己拍照有着很深的影响,也是自己反复提到的。<\/p>\r\n<p><a class=\"internal\" href=\"https:\/\/zhuanlan.zhihu.com\/p\/24671113\">手摄观念提升:视觉上的陌生感<\/a><\/p>\r\n<p><a class=\"internal\" href=\"https:\/\/zhuanlan.zhihu.com\/p\/31885152\">手摄意象集 | 我从初冬的日本提取颜色,得到了这组色卡。<\/a><\/p>\r\n<p>以上是我浅显的理解,以及继续追求的基石。<\/p>\r\n<p><em>声明:本文所有文字及照片为原画册工作室原创,版权归韩松、谭凌飞、张薇所有,仅供知乎专栏、原画册微信公众平台发布,若需转载请后台联系。违者必究。<\/em><\/p>\r\n<hr><p>欢迎关微信注公众号:原画册<\/p>\n\n<div class=\"view-more\"><a href=\"http:\/\/zhuanlan.zhihu.com\/p\/32200493\">查看知乎讨论<\/a><\/div>\n\n<\/div>\n<\/div>\n<\/div>\n\n\n<\/div>\n<\/div><script type=“text\/javascript”>window.daily=true<\/script>",
 "image_source": "原画册韩松 \/ 知乎",
 "title": "每天都一样,我没有可以发朋友圈的好照片",
 "image": "https:\/\/pic4.zhimg.com\/v2-ef4853ad22c5a5aa1d315ee2bb647c43.jpg",
 "share_url": "http:\/\/daily.zhihu.com\/story\/9661975",
 "js": [],
 "ga_prefix": "122119",
 "images": ["https:\/\/pic1.zhimg.com\/v2-a3a6dc8cceadecc2a7857a4fde489070.jpg"],
 "type": 0,
 "id": 9661975,
 "css": ["http:\/\/news-at.zhihu.com\/css\/news_qa.auto.css?v=4b3e3"]
}

agent 参数

Huginn Website Agent 2

  • url 中填入 https://news-at.zhihu.com/api/3/news/{{id}} ,这里 {{id}} 即为上一步我们存储的变量 id ,也就是9661975
  • type 中填入返回格式 JSON
  • mode 中填入 merge即把上一步存储的变量 idtitle 合并到这一次的输出事件中
  • extract 中填入我们要抓取的 JSON 键名 ,这次抓取的是 bodypath 键,并将内容存储到 bodylink 这两个变量中备用

输出事件

id title body link
9661975 每天都一样,我没有可以发朋友圈的好照片 <div class="main-wrap content-wrap">\n<div class="headline">\n\n<div class="img-place-holder"><\/div>\n\n\n\n<\/div>\n\n<div class="content-inner">\n\n\n\n<div class="question">\n<h2 class="question-title">怎么在非常平凡的环境里拍出好照片?…… http://daily.zhihu.com/story/9661975
9661999 简历不会做,求职信不会写?先学习三个经济模型 同上, 一串 HTML 代码 http://daily.zhihu.com/story/9661999

Data Output Agent - 输出 RSS

前两步已经抓取了所有需要的内容,这一步就可以通过 Data Output Agent 输出 RSS 源。

Huginn Data Output Agent

agent 参数

  • template 中填入任意想要的 titledescription 作为 RSS 源的标题和描述。item 中, titledescription 则是作为单独一条内容的标题和正文, link 则是该内容的链接。在前两步已经分别将对应的内容存储在了变量中。

所有 agent 的串联及更新频率

在 agent 选项中,有一项为 Sources ,将第二个 agent 的 sources 指定为第一个,第三个 agent 的 sources 指定为第二个,如下图所示:

Link agents

Schedule 代表这个 agent 自动运行的频率,将第一个 Website Agent 设置为每天早上7点自动运行(或更高频率如每5小时)。 第二个 Website Agent 设置为 never ,但勾选 Propagate immediately ,代表每当新事件输入即自动运行

大功告成

Huginn 会输出两个 RSS 源地址,分别为 XML 和 JSON 格式。

在 Reeder iOS 中的效果和知乎日报的对比:

Feed rendered in Reeder Feed rendered in Reeder
Zhihu Daily Zhihu Daily

可以看出 RSS 形式的文章省略了封面和尾部的 “客官,我又来送二维码了”(顺便吐槽下知乎的 logo 图片什么的和 js 资源居然还是用 http 传输的,浏览器都不让加载),仍然保留了查看原文的超链接(在 Reeder 中点击文章标题也可以跳转到原文),正文显示效果则是一样的

配置文件下载

附上三个 agent 的配置文件

  1. 其他非重要的对应选项请参照 Huginn 官方 wiki 

Last updated