今天我又陷入了无限折腾之中,从下午一直整到晚上。最后发现实在没精力了,才猛然意识到:我压根就没有必要再去这么折腾。

我折腾的起因,是要导出一篇文章到本地。之前我习惯用 Keyboard Maestro 的动作,但总是会陷入老问题:比如导出的网页只有一行代码,又或者是动作卡在某个环节。我越想修复它,后来就越想到应该去寻找更成熟的方案。可转了一圈发现,还是没能逃过之前的路子。甚至我发现,自己在去年就写过一篇文章讨论过这件事,就是用小书签(Bookmarklet)来打印文章。

于是我开始扪心自问:我导出文章的目的究竟是什么?

是为了更好的阅读?还是为了留存?又或者是为了 AI 知识分析?

不同的需求,意味着你所需要的保存格式是不一样的。现在导出文章最常见的格式,在我梳理下来一共有三种:Markdown、PDF 和 HTML。这三者并非取舍关系,而是需求不同,造成你所需要的文件不同:

  • Markdown:保存的是文章内容本身,适合后续的摘录、整理和改写;
  • PDF:为了维持良好的阅读体验,方便后续的阅读、批注和打印;
  • HTML:纯粹是为了归档,保存网页本身,并且不丧失大量的网页结构。

Markdown

Markdown 本质上是一种带有轻量标记的纯文本格式,比如用两个星号包裹一段文字,在支持 Markdown 的工具里就会显示为粗体。这比 Microsoft Word 更为简洁,不必让人去费心太多格式问题。

优点是内容保存为纯文本,可编辑可引用,你可以借助 Obsidian 的属性做剪藏库,打标签是常规操作;缺点是原网页格式表格过于复杂,或者包含一些互动元素,可能会丢失。

至于图片,默认保留的还是原来的图片地址,但你可以在 Obsidian 的设置-快捷键,将Download attachments for current file(下载当前文件内的所有附件)绑定一个快捷键,比如 Ctrl-Shift-D,保存文章后按快捷键,就能保存图片等附件到本地,不受网络影响。

目前最常用的剪藏工具是 Obsidian Web Clipper 插件,它是免费使用的,导出的格式非常完美。以前我保存文章基本上都用它,但后来发现导出一堆后自己压根不看,就基本不再做这件事了。

但在现在的 AI 时代下,Markdown 重新有了重要的意义,你保存的文档也有了新的作用。现在很多本地 AI 工具读取纯文本是最方便的,所以你可以导出一堆文章,然后让 AI 帮你分析并给出建议。毕竟有的链接你直接发给 AI,它是读不出来的;如果导出为 PDF,AI 可能又要花时间去解析。甚至像之前卡帕西(Karpathy)说的大模型知识库(LLM Wiki),也是基于 Markdown 文件。

PDF

我相对来说会更喜欢 PDF,因为它的排版固定,加上分页的结构就像一本书一样。随便打开一个 PDF 阅读器,你就能在上面划线、批注,也不依赖太多工具,甚至可以直接打印。

至于怎么导出为 PDF,我主要用这几种方式。

Safari 阅读模式后导出

这应该是 macOS 上面最简单的一个方式,它会自动帮你清理掉一堆不必要的元素(比如导航栏、广告、侧栏等),只给你一个白底黑字的界面,非常干净,适合阅读。

但缺点也有,因为它几乎重构了整个页面,会导致原网页的排版和部分链接消失。此外还有一个问题:有的博客作者会写一些脚注,你开启阅读模式之后,脚注虽然还在,但它跳转和返回正文的功能可能会失效,而且一旦启用该模式,你再点击其他小书签基本上也是无效的。

另外一点就是 Windows 用户没办法用这个功能。好在 Windows 上的部分浏览器也有阅读模式,比如 Microsoft Edge 和 Firefox,Chrome 我则不清楚。

调整网页后导出

如果你并不满足于阅读模式本身的格式,还有另外一些方法,可以调整网页之后再导出。主要有以下几种方法:

1、网页修剪与排版调整

打开一篇正常的文章,用一个「修剪网页」的小书签,删掉你觉得没有必要的元素(比如导航栏、二维码、作者卡片、广告等)。必要时,还可以用「图片缩小」小书签来调整图片尺寸,或者调整到你喜欢的字体,比如锐利且适合打印阅读的思源宋体。

2、使用分页优化小书签(我今天刚折腾出来的脚本)

它可以局部智能地判断文章图片尺寸,并调整到一个合适的大小,尽量避免 PDF 里的图片被拦腰截断,盖因网页被排进固定尺寸的 PDF 页面后,很容易出现上一页只有图片上半部分、下一页才出现下半部分的情况。

分页优化小书签(开启前后对比).png
分页优化小书签(开启前后对比)

你可以用这些小书签处理好网页,然后再打印导出为 PDF。优点是保留原网页排版,以及部分链接和脚注锚点,还可以针对图片、代码、引用和表格「分页保护」;缺点是需要多点几下鼠标,不同网页的结构不一样,实际效果可能会有区别,脚本是基于特定规则制定的,无法非常智能地理解每页具体还剩多少空间。

HTML

相比 Markdown 和 PDF,HTML 更偏向归档,所以我平时使用得比较少。

这方面最全面的插件就是 SingleFile,它可以直接把网页保存为一个 HTML 文件,而且还包含里面的图片、样式和各种网页资源。离线打开,非常适合长期归档和保存网页原貌。它不需要你懂得太多脚本,也不需要做什么自动化维护,只要点开就能保存,偏向于原汁原味。

我之前是用 Keyboard Maestro 动作,它可以在 Safari 开启阅读模式之后导出为一段 HTML,但是格式经常会有问题。所以我今天痛定思痛,干脆放弃了,没必要,直接导出为 PDF 就好。

我的方案

现在我导出文件的方式,其实主要还是以前两者(Markdown 和 PDF)为主。

工作相关文章我会导出为 Markdown,方便后续交给 AI 分析解读并留存;个人阅读内容我更愿意导出为 PDF,方便我进行划线和批注;HTML 格式则只有在网页格式比较复杂的时候才会使用。

但我也不是每篇文章都保存,而是按需选择。比如一些我觉得会看第二遍的文章,或者担心有一天在互联网上消失的内容,我才会愿意保存到本地。至于大部分普通文章,我直接阅读就好,还有回顾价值的就保存为超链接到本地,否则读完就走。

去年我把我自己的那套方法称之为「终极文章打印方案」。现在我已经没有了打印的需求,那个方案也称不上「终极」,今天我想继续优化调整,却发现之前的方案其实已经足够,没必要再整个「究极」版本。

不依赖太多工具、格式简单、结果够用,就是我现在最好的方案。