上一篇文章中,我介绍了什么是 Readwise Reader,以及为什么我推荐使用 Readwise Reader。如果你已经在使用 Reader 了,可能你已经尝试过将一些 RSS 订阅源添加到 Reader 了。通过 RSS 的方式将阅读源添加到 Reader,可以让你在 Reader 一个 app 中就能完成几乎所有网络内容的阅读,而无需安装一堆 app、进行各种跳转,保证了阅读的专注和连贯性。不过,有一些网站是没有提供订阅源的。另外,对于付费媒体(比如财新)而言,即便有订阅源,通常也绕不过“付费墙”,因此 Reader 无法获取全文内容。

对于这些媒体的文章,通常的解决办法是安装他们各自的 app 并接收推送消息,当阅读到认为需要标注的内容,选择使用浏览器打开,再分享到 Readwise Reader,然后再打开 Readwise Reader app 来进行阅读和标注。整个流程体验非常不流畅,并且这个动作每天都要重复,无形之中也减少了我们真正进行阅读的时间

忽视用户需求的媒体们

长久以来,付费媒体们似乎有一种惯性,觉得读者只需要在他们的 app 中阅读,然而 app 中却并没有提供任何的标注和导出能力。我认为这其实是和付费媒体的调性相矛盾的。如果你的内容足够优秀,并不是快餐垃圾,那么你面向的读者也一定是一群善于学习和阅读的读者,他们会对阅读的内容有标记、高亮、整理内化的诉求,而非像刷短视频一样,刷过了就是过了。

一个较为理想的方式是,付费媒体为自己的订户提供全文 RSS 输出,使得读者可以使用自己习惯的方式对内容进行消费。

这当然会有一些实际的问题,比如如何防止 RSS 链接被滥用、共享给多人。不过解决的方式也非常简单,只要每个读者都有自己独特的链接 URL,加上适当的频率控制,就能有效解决滥用的问题。毕竟,即便是强迫用户使用自己的 app,也无法从根本上消除共享账号的存在。只要问题发生的概率降低到一定程度,就是可以接受的。

另外,媒体可能会担心读者使用 RSS 导致对网站的交互减少。这当然是一个可能存在的问题。但在这个提问的背后,我想问的是,交互减少了对付费媒体有什么损害吗?我认为是没有的。

常见的担忧是广告收入和评论等互动行为的减少。由于付费媒体本身靠订阅盈利,而非广告,因此用户不访问网站本身并不会造成收入上的损失。至于评论,据我观察,即便在现有的阅读形式下,付费媒体上的文章评论数也并不算多。而那些喜欢交流的读者即便使用 RSS 进行阅读,也一样会来网站进行评论。因此对互动率的影响也完全可控。

那么,媒体不这么做的原因,就是“没有想到”,或者懒惰。那么,有没有办法来自己解决这个问题呢?有。在这一篇博客中,我将会推荐一个小工具——Readform,使得你可以无需安装这些媒体的 app,直接在 Readwise Reader 中就能完成全文的阅读

强大的 Readform

上面谈到的这个场景,其实是我本人的痛点。因此,我在业余时间建立了 Readform 这个项目。你可以在 GitHub 上找到这个项目Readform 名字的意义是,付费媒体的读者应当有权利以自己喜爱的形式对内容进行阅读。既然这些网站没有提供官方的全文 RSS,那么我就自己实现一个。

这个项目的原理也比较简单。程序运行时,会不断基于官方或第三方的 RSS 源获取付费媒体的最新文章。当有新文章时,它会模拟浏览器(使用 Firefox 和 Selenium)并使用你的用户名和密码登录,并获取文章页面完整的 HTML 内容。 之后使用 Readwise 官方提供的 Reader API,将文章 URL 及其 HTML 内容发送到 Readwise Reader 的 feed 部分,由 Reader 完成正文内容的提取。由于这是一个被设计为长期后台运行的程序,因此你总是可以在你的 Readwise Reader 的 feed 部分中看到你订阅的媒体的最新文章。

当然,作为用户你并不需要懂得原理。只要按照下面的步骤进行配置,就能获得预期的结果。

目前,Readform 已经支持了财新和端传媒两家媒体,并在未来可能支持华尔街日报等其他媒体(欢迎留言)。在更长期的未来,Readform 可能会加入对 RSS 输出的支持。使得你可以获取到你订阅的付费媒体的全文 RSS 链接,让非 Readwise Reader 用户也能享受到这一便利。

开始使用 Readform

Readform 不是基于云的服务,你需要在自己的机器上运行它。这将为你提供最高程度的安全性,因为使用此程序需要你的网站的用户名和密码。你可以在长期开机的本地设备(PC、Mac、NAS 等)上安装 Readform,或将其部署在自己的 VPS 上。

推荐使用 Docker 运行 Readform。Docker 是一个容器平台,它使得软件开发人员可以将程序打包到标准化的“容器”当中,确保用户的运行环境与开发者的保持完全一致,从而降低环境配置问题导致的故障和报错。如果你的计算机上没有 Docker,可以在此处下载

请注意,在进行以下操作前,你需要确保程序所处的网络环境可以顺畅访问你希望订阅的网站。

要启动 Readform,只需要在终端中使用如下的一条命令。运行后,你将看到一个 docker container ID 的输出:

docker run --restart=always -d \
    -e READFORM_WEBSITES=the_initium,caixin\
    -e THE_INITIUM_USERNAME=[你的用户名] \
    -e THE_INITIUM_PASSWORD=[你的密码] \
    -e CAIXIN_USERNAME=[你的用户名] \
    -e CAIXIN_PASSWORD=[你的密码] \
    -e READWISE_TOKEN=[你的token] \
    -v [你本地的某个空文件夹]:/var/app/data fr0der1c/readform:latest

其中,-e 表示给容器添加环境变量。通过环境变量,你可以控制 Readform 的各项功能。在未来,(如果我有时间的话),可能会考虑出一个可视化的配置界面。目前,有以下环境变量可用:

  • READFORM_WEBSITES:你要订阅的网站。必填。 允许值:the_initiumcaixin,使用英文逗号分隔。
  • READFORM_SAVE_FIRST_FETCH:是否保存 RSS feed 的第一次提取。 允许值:yesno。 默认值为“yes”,这意味着程序运行后将立即将第一批文章保存到 Reader。如果你之前已经自己将这些网页保存到了 Reader,这些项目将会蹦到你的 library 的顶部。若更改为 no,则之后程序启动后发布的新文章才会保存到 Reader。
  • THE_INITIUM_USERNAME:用于登录端的用户名。 如果 the_initium 在 READFORM_WEBSITES 中,这是必需的,否则是可选的。
  • THE_INITIUM_PASSWORD:用于登录端的密码。 如果 the_initium 在 READFORM_WEBSITES 中,这是必需的,否则是可选的。
  • CAIXIN_USERNAME:用于登录财新的用户名。 如果 caixin 在 READFORM_WEBSITES 中,这是必需的,否则是可选的。
  • CAIXIN_PASSWORD:用于登录财新的密码。 如果 caixin 在 READFORM_WEBSITES 中,这是必需的,否则是可选的。
  • READWISE_TOKEN: 你的 Readwise 的 token,可在此处获取
  • READWISE_READER_LOCATION:文章保存的位置。可选,默认为 feed。 有效值如下:newlaterarchive 或 feed

-v 参数将本地文件夹绑定到容器中的数据存储文件夹,这是持久化数据所必需的,Readform 需要知道哪些文章已经保存到 Reader 过了,因此不用再次提交。该路径必须为绝对路径而不是相对路径,例如,在 macOS 下可能为 /Users/fr0der1c/readform_data

在你输入完上面的命令并敲击完回车键,看到了输出的一长串 container ID 后,一切就已就绪了。新文章将自动出现在你的 Reader 的 feed 流中。

如果程序并没有如期工作,你可以使用 docker logs [container-id] 命令检查日志,因为本项目仍处于萌芽阶段,并且可能包含 bug。 如果你看到任何异常日志/崩溃/文章不全的情况,请随时通过 GitHub issue 反馈!

一些常见问题

使用此程序需要订阅吗?

这个项目是完全免费和开源的。 但是,你需要成为网站的订户才能获得完整的文章内容。 我们不直接提供帐户或完整的文章内容,因为媒体网站和作者都需要获得经济支持以继续前进。

这个项目可以绕过付费墙吗?

不能。这个项目的目的是为了改善专业阅读者的工作流程,而不是打破付费墙。你需要使用自己的用户名、密码登录网站。

交出我的密码安全吗?

是的。该程序在你的计算机上运行,你的密码将始终保留在本地。项目不会收集用户名和密码。该程序仅对你订阅的站点进行必要的网络请求,并且你的密码将仅在这些站点上使用。

如果 Readform 当前不支持我想要的网站怎么办?

我并无计划支持所有付费网站,因为这是一个旨在改善我个人的阅读工作流程的项目。 但是,该项目提供了易于使用的接口,如果你有一些 Python 基础的话,可以轻松地添加新网站的支持。 欢迎提交 Pull Request!如果你没有代码能力,也可以在 GitHub Issue 中提出请求,也许社区中的其他成员会进行跟进。


我自己使用了 Readform 一个多月的时间,明显感觉阅读体验流畅了许多。如果你也有类似的烦恼,不妨马上开始使用 Readform 吧!

0 0 投票数
喜欢这篇文章吗?
订阅评论
提醒
guest
2 评论
内联反馈
查看所有评论
园丁猪

感谢博主的brilliant work和清晰的说明,等下部署试试看。 想问一下,财新的获取是否包含财新周刊的内容呢

你也许会喜欢
阅读更多

工作、消费主义和新穷人

由于自我记事以来,现代性构筑的一切已经尘埃落定,我便非常好奇世界是何以发展成如今这般模样。这本书对工作伦理的诞生和发展、消费主义对社会的影响作出了深入讨论,揭示了社会福利体系衰败的原因。