研究

当你的书签导出文件无法导入:我们测量了什么

更换书签工具,结局总是相似:你导出、上传,然后导入器提示「未找到书签」,或者全部导入了,但文件夹塌成一团、日期也没了。我们不再靠猜,而是用真实的公开导出文件做了测量。

免费使用 · 无需信用卡 · 方法与数据公开 · Chrome, Edge, Firefox, Safari, iOS, Android

作者:Marqly Team · 更新于 2026 年 10 月 6 日 · 我们如何测试(英文页面)

更换书签工具,结局总是相似:你导出、上传,然后导入器提示「未找到书签」,或者它把所有内容都导入了,却让你的文件夹塌成一团、日期也消失了。我们不再靠猜,而是用真实的、公开发布的导出文件跑了一遍书签导入器,精确测量了什么能加载、什么会出问题。文件、解析器和这次运行都是可复现、有日期记录的。

主要发现

  • 0/261。 Pocket 真正的 ril_export.html 什么也没解析出来:它是一个 <ul> 列表,而不是导入器读取的 Netscape 格式。
  • 43/43。 Chrome 的 HTML 导出导入得完美无缺:文件夹完好,标签为零(Chrome 不导出标签)。
  • 306/412。 一份 Raindrop 导出的全部条目都被解析了,但一个描述归属的缺陷让大约 74% 带批注的保存条目的备注位置错了,该缺陷已修复。
  • 日期不会保留。 添加日期被读取,然后在插入时被丢弃,导出文件仍然是唯一的时间记录。
  • 安全失败是有效的。 有问题的文件会得到明确的错误提示,绝不会导入一半的书签库。

方法:把已部署的解析器原样复制进 jsdom 测试环境,针对按哈希固定的公开导出文件运行,node run.mjs 可以复现每一个数字。完整方案见我们如何测试(英文页面)。

核心结论:只说「是 HTML」是不够的

人们以为任何 .html 书签文件都可以互换。其实不然。现实中至少有两种不同的 HTML 形态,而导入器通常只读其中一种。

我们测试了什么

我们让六份由文件主人自己公开发布的真实导出文件(用 SHA-256 固定,确保字节确凿无疑),通过我们产品所使用的同一个 Netscape-<DL> 解析器。语料库和哈希可以在下方下载:我们没有收集任何人的数据,用的是人们自己在代码仓库里已经公开的文件。

实测结果(2026-09-26 运行,Netscape-DL 导入器):

来源应用 文件类型 条目数 导入器做了什么
Chrome(扩展导出) Netscape <DL> 43 43/43 全部解析。文件夹完好;Chrome 不带标签,所以没有标签过来。
Raindrop.io(用户导出) Netscape <DL> 412 412/412 全部解析。但一个描述归属的缺陷让 306/412(约 74%)带批注的条目备注设置有误,已修复;详情见下文。
Pocket(官方 ril_export.html) UL/LI 列表,不是 <DL> 261 0/261 解析。这个文件在结构上是有效的 HTML,但不是导入器读取的书签格式。它会安全地失败,提示「未找到书签」。
两个标错名或已损坏的压缩包 损坏的 HTML — 0 条书签,外加明确的校验错误。没有崩溃,也没有导入一半的书签库。

来源核对截至 2026 年 10 月 5 日:Raindrop 自己的导入帮助写明它接受「Pocket:导出为 HTML 文件」,这对 Raindrop 的解析器来说是正确的;它与我们的导入器是两套不同的导入器,而我们要说的恰恰是,「HTML」涵盖了多种互不兼容的形态。Firefox 的导出文档描述的是我们能干净读取的 Netscape HTML。我们只测量了自己的导入器,没有测试其他厂商是否会在同样的文件上失败,也不声称它们会。

三个容易被忽略的失败

  • 描述落在了错误的链接上。 Raindrop 的导出把一个 <DD> 备注嵌套在每个书签下面。我们已部署的解析器把一些备注挂到了相邻的条目上:306/412 条记录的描述字段不一致。一个文件可能「导入得很好」,却又有细微的错误,这是最糟糕的一类迁移缺陷,因为你根本察觉不到。修复让 258/412 条记录得到了纠正,其余的确实没有备注。
  • 原始保存日期被丢弃。 解析器确实会读取 ADD_DATE/created 时间戳,然后我们的插入步骤把它们丢掉了,所以每个导入的条目都取导入日期。这个文件是你唯一的时间记录。我们直接把话说明白,而不是让你自己发现:导入到 Marqly 不会保留保存日期。(上文提到 Raindrop 自己的 CSV 规范显示 created 在那里是可以导入的,这又说明了不同的格式和工具确实各不相同。)
  • 安全失败是一项特性。 Pocket HTML 的 0/261 结果和损坏压缩包的运行,得到的都是「未找到书签」,而不是写入一部分。悄悄导入半个书签库的导入器,比直接拒绝的导入器更危险。

如果你正在换工具,这意味着什么

  • 如果你要离开 Pocket,不要把它的 ril_export.html 交给导入器就以为成功了。请导出压缩包,找到 list.csv,导入它;也可以先用我们的书签文件查看器或 Pocket 导出转换工具预览这两个文件。具体机制见Pocket 导出文件里到底有什么(英文文章)。
  • 浏览器的 Netscape HTML 导出(Chrome/Edge/Firefox/Safari)是你能携带的最通用的东西,几乎所有工具(包括 Marqly)都读取这种格式。
  • 无论你怎么选,都请保留那份导出文件。日期和原始的确切结构,往往无法在一次往返之后保留下来。

方法与可复现性

方案遵循我们的测试标准(英文页面):被测的解析器是我们生产环境书签解析器的原样副本;测试用例是真实的、公开发布的导出文件(第三方的 dotfiles 和语料库),用 SHA-256 标识,确保精确的字节被固定;每个条目都对照文件所声明的内容,逐字段(网址、标题、标签、描述、文件夹、日期)检查。这是用真实输入对一个导入器做的保真度测试,而不是供应商之间的比拼。如果语料库或方法有变化,我们会在这一页上以带日期的更新说明记录。

下载语料库清单(CSV,按 SHA-256 固定)

想要这些问题修好之后的书签库?

Marqly 读取浏览器的 HTML 导出和 Pocket 的 list.csv,然后让你用 Pro 的 AI 语义搜索(英文文章)按含义找到任何一条保存。指南:从 Pocket 迁移、从 Raindrop 迁移、迁移浏览器书签。

关于这项研究

这项研究测量了什么?

我们把六份真实、公开发布的导出文件,通过与产品中相同的 Netscape-DL 解析器,逐字段检查导入结果(网址、标题、标签、描述、文件夹、日期)。结果是:Chrome 导出 43/43 全部解析,Raindrop 导出 412/412 全部解析但有描述错位,Pocket 的官方 ril_export.html 为 0/261。

为什么 Pocket 的 HTML 文件导入不了?

它在结构上是有效的 HTML,但不是导入器读取的书签格式:它是一个 ul 列表,而不是 Netscape 格式。导入会以「未找到书签」的提示安全地失败。离开 Pocket 的话,请找到导出包里的 list.csv 并导入它。

这是在说其他工具也会在同样的文件上失败吗?

不是。我们只测量了自己的导入器,没有测试其他厂商是否会在同样的文件上失败,也不声称它们会。

保存日期能保留吗?

不能。解析器会读取 ADD_DATE/created 时间戳,但插入步骤会丢弃它们,所以每个导入的条目都以导入日期为准。导出文件是你唯一的时间记录,请保留它。

首页 · Marqly