每天我们会在互联网上获取到各种各样的信息,或许是少数派上某篇文章,又或是某某人说了什么值得记录下来的话。
如何把这些各样各种的信息有效地整合起来,方便今后阅读、查询曾经是困扰我的一个问题。曾经使用了一年的印象笔记,但是由于过于封闭的设计以及无法支持 URL Scheme 最后果断弃用了,转而在 @vanilla2w 的推荐下使用了 DEVONthink + Bear 作为我的信息管理收集系统的代替品,本文将会结合个人生活实际介绍如何用这两个软件来实现合理的信息管理。

注:文章中所涉及的代码在文末会提供 GitHub 下载链接。


软件支持

  1. DEVONthink
  2. Bear Pro
  3. Workflow
  4. Drafts
  5. Keyboard Maestro
  6. iText
  7. OmniFocus
  8. Alfred
  9. WebDAVNav

信息获取

对于要处理的信息第一步所要做的事情就是获取收集信息,我的主要信息来源有微信公众号和 Telegram 订阅号。每天早中晚三个时间段刷新一下朋友圈、公众号、订阅号看看有没有我感兴趣的文章,如果我就拷贝链接然后拉下通知中心运行 Workflow 去抓取文章标题、作者、公众号最后通过 URL Scheme 发送到 OmniFocus 并自动保存。如果 Workflow 匹配到微信的链接格式( 以 https://mp.weixin.qq.com 开头的链接)则会使用 x-success 再跳回微信,演示视频(2.4 MB)。

如图所示这是一篇微信公众号文章的抓取情况,为了一眼就能看出这个任务是需要进行阅读的材料,Workflow 还在标题的前面加上了一个「🔖」,备注信息里面则是对应的链接、公众号、作者。


之所以想到要留着公众号名称和作者是因为可以方便今后的查找,比如我曾经读到过一篇池建强写的文章想分享给朋友但是标题却记不大清了,这是只需要输入公众号名称或者作者名称即可快速找到这个链接分享给朋友。

对于非链接的收集内容,我会使用 Drafts 进行处理。如果是在 Web 浏览器页面选择需要收集的文字再调出 Drafts 的扩展进行 capture 即可。如果是对于微信的聊天内容直接手动收集到 Drafts 中进行处理后再通过 URL Scheme 发送到 OmniFocus 并自动保存。对于这种情况建议再用 TextExpander 添加上一些标签,例如它的上下文、截止时间。

所需要使用到 Drafts 动作是:Alfred、TaskPaper。
Alfred 是一个与 Alfred macOS 相似的动作,其原理也是使用字母缩写 + 内容来执行一些动作, Alfred 的默认动作是 TaskPaper,除了 TaskPaper 以外有其他多种功能,有兴趣的可以自行摸索。

参考文章:《用 Ai Search 和 Drafts 实现 Alfred 的搜索体验》
 TaskPaper 可以将使用 TaskPaper 语法的任务内容转化为 OmniFocus 的任务,可以实现批量添加任务、备注的功能。
参考文章:《用 Drafts 实现 OmniFocus 批量添加任务》
 如果所示,这是一个使用 TaskPaper 批量添加任务并贴上标签后转化为 OmniFocus 任务的效果,中间的一大串英文全部是用 TextExpander 替换的,实际的输入内容大概是这样的:

    • rel UGC PGC
    • Matplotlib 画正态分布 sod
    • 瓦尔伦丁节由来 wwh
    • tk U盘 → 方XX

iOS 方面的收集工作只要 Drafts 和 Workflow 即可搞定,接下来再谈谈 macOS 上的收集。在 macOS 上我主要是需要收集一些网页的文章进行阅读。(为什么不现在就读?现在没时间或者条件不允许。)
 想把一篇文章在 macOS 上添加到 OmniFocus 中需要几步?复制标题、粘贴、复制链接、粘贴吗?效率并不高。这是就需要 URL Scheme + JavaScript 一起来实现快速添加阅读任务了。

这是我的一个书签文件夹「⚙️」,该文件夹下的书签地址实际上都是一段 JavaScript 代码,OmniFocus 的实现代码如下:

javascript:window.location='omnifocus:///add?note='+encodeURIComponent(window.location)+'&name=🔖 '+encodeURIComponent(document.title.replace(/GitHub - |丨.*|-.*|\|.*|【.*】|“|”|……|[.*]|!|–.* |\(|\)|\[|\]|Medium|_.*| |.*|_.*/,""))+'&context=📕📕 Reading Lists'+'&estimate=05 mins&autosave=true'

如果你对 JavaScript 不太熟悉只要按照自己的需求稍微修改一下 &name、&context、&estimate 几处的参数即可。它们分别对应的是标题名称、上下文、持续时间。

PS 1 :如何添加一个 JavaScript 书签?任意收藏一篇文章,例如你现在就在读的这篇,然后打开边栏(shift + command + L)右键编辑地址即可。

PS 2:这个方法对微信公众号文章的标题处理无能为力,因为微信公众号文章把 title 标签赋予给了公众号的名称,真正的标题藏在了 <h2> 这个标签中,今后会想办法再解决这个问题。不过在 Workflow 中已经使用正则提取了正确的标题。

但是这样就够快速了吗?看到一篇文章点一下 ⚙️、OmniFocus、允许?实际上并没有简单多少。
于是请出 Keyboard Maestro 配合 AppleScript 绑定快捷键实现自动点击,最后实现的效果便是按下 option + L 即可全自动添加当前页面的文章到 OmniFocus 中并再激活 Safari 窗口。

参考文章:《手把手教你用 AppleScript 模拟鼠标键盘操作,实现 macOS 系统的自动化操作》
 如图所示,这是我业余折腾的关于短信劫持的参考阅读文章。如果使用传统的复制粘贴来添加这么多的书签,我已经放弃研究这个东西了。但是有了 Keyboard Maestro 加持后我只用了十几秒就把这十几个书签全部保存成了阅读任务并新建了项目。

至于 macOS 上其它一些零碎任务,这下子就老老实实地用传统方法添加即可,我比较少遇到此类任务。至此我们已经完成了信息管理收集的第一步:信息获取。
 参考文章:《用 GTD 的方法结束稍后读》


信息处理

现在陈列在我们面前的就是一条条的阅读任务了,我们所要做的事情就是逐条做完这些任务。对于阅读的材料我有以下几种处理方式:

  1. 某篇文章觉得好的内容/句子摘抄到 Bear 里面。
  2. 少数派上的内容,偏科技类的使用书签 + 文件夹分类收藏。
  3. 重要的内容/具有教育意义/可能被和谐的文章保存到 DEVONthink 中。
  4. PDF 文件下载后由 Hazel 自动移动到 Unread Read 文件夹中。

情况一:摘抄。
 和以往一样,能用键盘解决,就不麻烦到鼠标。于是再次派上 AppleScript + Keyboard Maestro,由于 Bear 官方有 Safari 扩展,所需我们也就无需再去添加 JavaScript 书签了。此处的 AppleScript 代码需要根据你扩展插件摆放的位置自行进行微调。如下图所示:

我的 Bear 扩展插件根据排列顺序应该是排在第 8 个,所以 AppleScript 代码中所对应的 group 就是 8 了。注意,Safari 的搜索栏也算一个 group。
最后实现的效果如下,摘抄句子:选择文本后按下 option + . 即可。

PS:图片也可以直接选择,但是不支持在 Safari 阅读模式下使用。

添加全文:直接在当前页面按下 option + . 即可,至于笔记的没有标签的问题,我会每天晚上要关机前花不到一分钟的时间去给笔记打上标签,不会花很多时间( 拖动笔记到你想添加的标签上即可 )。

情况二:收藏整理
 像少数派这样便科技一点的文章我会考虑直接收藏到书签中,以后需要查阅时直接在 🚀 文件夹下面找到主题进去之后一眼就能看到我需要的材料,非常方便。

对于少数派这种子文件夹比较多的,我选择把它放在了第一个位置,这样我只要通过地址栏左边的 + 号就可以轻松地把它拖进合适的文件夹中,而不是使用 command + D 再去选择文件夹。

情况三:重要的内容/具有教育意义/可能被和谐的文章

这类文章比较有收藏价值,所以我会再将其整理到 DEVONthink 中。同样使用 Keyboard Maestro 激活,我设置的快捷键是 option + ;。

情况四:各类下载文件
 这部分全部使用 Hazel 自动化处理,比如对于 PDF 文件来说它会被添加日期标记、打上标签后移动到文稿下的 Unread PDF 目录下。

这部分本质上应该是属于文件管理的范畴,但是收纳到信息管理这里也算合适。因为接下来对于 PDF 文件我会使用 PDF Expert 进行阅读、摘抄、导出 md 读书笔记。

接着由 Hazel 监控 iCloud Drive 下的 PDF Expert 目录,一旦有新的 md 文本存储到目录下就将其导入到 Bear 中。

最后手动取消 PDF 文件的「Unread PDF」标签,Hazel 再将该 PDF 文件自动移到子目录「已阅」文件夹中并打上新的「Reference」标签,供今后查找参考之用。

参考文章:《除了养成整理文件的好习惯,你还应该具备自动化处理的思维》

BTW:对于 Unread PDF 这个文件夹,我使用了 WebDAVNav 在局域网内开启了 WebDAV 共享,再配合 PDF Expert 的文件夹同步功能,实现了 iOS 和 macOS 上阅读的无缝切换,总体效果还是挺好的。当然,回到现实来说,在 iPhone 上看 PDF 文件可不是一件什么很舒服的事情,这是我偶尔才会做的事情,真正使用起来还是建议在 MacBook 和 iPad 设备间进行同步。

PS:如果你觉得电脑关机之后就无法同步这样不是很方便的话,可以考虑树莓派或者其他支持 WebDAV 的路由器作为你存储 PDF 的地方。我自己的话就是在路由器边上挂着一个树莓派,不过暂时还没有 iPad 就没去进一步折腾了。

参考文章:《使用 WebDavNav 同步 OmniFocus 数据库》

最后再补充三个特殊的情况

  1. 对于比较隐私的文件使用 1Password 的安全备注进行存储,即安全又可以随手取用。比如我把关于高考的一些重要文件都放在这里面了,虽然不知道到时候用不用得到,但是至少我可以保证它是非常安全可靠地存储在 1Password 当中的,需要时我都可以随时取用,比较安心。

2. 结合 Workflow 添加笔记
有时候听到某首歌的某一句/段觉得特别美,我会拷贝它的链接然后下来通知中心获取歌词自动添加到 Bear 中留着慢慢品味, Spotify Lyrics Workflow下载链接
PS:仅支持 Spotify,使用网易云上的歌词数据库进行匹配。

当然这是我个人的一个用法,你也可以结合你自己的生活/工作实际折腾出一个自己需要的 Workflow,比如说我的另一个 Workflow 功能就是直接将链接的内容保存到 Bear,下载链接

3. 图片文字提取
有些时候我需要提取一张图片中的文字内容,使用 iText 进行 OCR 识别后放进 Bear 中即可,虽然用的频率不是很高,但还是提一下,随手就是一个安利。
 如果是在 iOS 上则可以使用 Workflow 识别后再直接通过 URL Scheme 发送到 Bear 中。
 参考文章:《利用Workflow做OCR文字识别》


信息调阅

我们之所以要进行信息处理的目的就是为了在需要的时候能够迅速地找到它,利用起来,否则就是在做无用功。举个例子:前几天去朋友家拿一个材料,这个文件被放在的大约 6 级目录下面,一个个点开去找?太麻烦了,于是 Alfred 就在此时大显身手了。
 信息调阅目前我有以下几种资料需要调阅:

  1. Safari 书签
  2. 某一个文件/文件夹
  3. Bear 的笔记
  4. DEVONthink 的某篇文章

情况一:Safari 书签
只要在 Alfred 的 Features 中 Web Bookmarks 勾选 Safari Bookmarks 即可实现搜索书内容

情况二:某一个文件夹/文件
调出 Alfred 后,先按一下空格会自动添加一个「'」符号,此时就进入了文件搜索模式,可以搜索文件夹、文件名、文件后缀。如图所示左边搜索车队聚会活动照片的存档,右边以后缀的形式搜索我保存的所有 graffle 文件。

情况三:Bear 的笔记
为了能够支持搜索 Bear 的笔记,我们需要先下载一个 Alfred Workflow 然后就可以使用 Alfred 来搜索了。
 主要有以下两个命令缩写:

 bs:搜索文本内容
 bst:根据标签来搜索文章

 虽然它还有一个 bn 新建文章的命令,但是实际使用效果并不好,所以如果是新建笔记的话推荐使用 Bear PopClip 插件实现。
 如下图所示,bs 搜索文章里面含有「也谈钱」的笔记( 我把也谈钱的文章部分收集了一些在 Bear 中,使用前面提到的 Keyboard Maestro 实现),bst 搜索含有「随记」对标签、文章。

Bear 的标签管理功能可能是我目前用到的笔记类软件里面最好用的一个只要使用「/」就可以延伸到下一个子标签。如果需要调整只需右键重命名一下即可对该分类下的笔记批量操作。(仅仅是我个人认为最好用,因为印象笔记用起来太「重」了,都没去管标签这东西,所以可能对印象笔记感觉不是很好。但是 带给我的感觉就是 Bear 的简洁、轻便。)

情况四:DEVONthink 的某篇文章
 为了能够支持搜索 DEVONthink 的文章,我们需要先下载一个 Alfred Workflow 然后就可以使用 Alfred 来搜索了。
 主要有以下两个命令缩写:

 dnk:在所有的数据库中进行搜索
 dnkd:在指定的数据库中进行搜索

 如下图所示:左边是 dnk 搜索经济机器、赫本的结果,右边是指定数据库「University」中搜索「如何高效学习」的结果。

之前在少数派上看到有人说 DEVONthink 对中文的搜索结果支持不够给力,有些问题。但是使用 Alfred 插件搜索的效果就非常好,如图所示分别搜索了三个 PDF 文件中的两个关键词、一个 epub 文件中的人名和两个 html 文件中的关键词,都可以匹配搜索到结果。

关联阅读:《DEVONthink To Go 中文搜索现状讨论》

除此以外我们还可以直接通过 Alfred 管理 DEVONthink 中保存的文章,比如微信翻译这篇文章。当时我在做一个测试多添加了几次这篇文章,如何快速删除这篇文章?难道回车一下到 DEVONthink 里面去删了它吗?其实还有更简单的办法,选中「微信翻译」这篇文章后按一下「►」(向右)进入文件操作界面,直接选择 Delete 即可,当然还有一些其他的实用操作可供选择,例如:Get Info、Reveal in Finder.


总结:

  1. Safari 中设置的键盘快捷键,在不影响原来 command 修饰其他字母的情况下采用了 option 键修饰。由于读文章时多是右手进行操作所以把快捷键放在了键盘的右侧部分,左侧辅助,最后得到这样一个布局。可以根据每个人不同的偏好设置进行修改。

2. 科技类文章保存到 Safari 书签,文章摘抄用 Bear,有收藏价值的文章存 DEVONthink。iOS 上面靠 Workflow,Drafts 辅助,全部使用快捷键自动化收集。

3. 如果你觉得 DEVONthink 价格/学习成本略高时,可以考虑全部使用 Bear 保存笔记,这也是一个不错的选择。不过如果想做到搜索 PDF 文件中的关键词的话,就必须使用 DEVONthink 了。


链接