在导出文件中查找重复书签

上传书签 HTML 文件,按网址分组查看所有重复项,并下载去重后的副本。全程在浏览器中运行。

重复书签为什么会越积越多

没有人会故意把同一个页面保存两次。重复来自保存这件事本身的机制:你先从邮件通讯里的链接 (带着 utm_source)收藏了一篇文章,几个月后又从地址栏收藏了一次。同步把旧笔记本电脑里的书签合并进了当前的配置。 在新电脑上,你为了保险起见导入了一份导出文件,却没有先删除任何东西。每件事看起来都无伤大雅, 但十年积累下来,导出文件里就有相当大一部分,是同一批页面以略有不同的网址重复出现。

工作原理

整个流程都在这个浏览器标签页里运行,不涉及任何服务器:

  1. 你的书签 HTML 文件在本地读取并解析成文档,其中包含的每个链接,连同标题和保存日期属性都会被提取出来。 非网页链接(任何不是 http 或 https 的链接)会被跳过。
  2. 每个网址都会被规范化:主机名转小写,去掉末尾斜杠,丢弃已知的跟踪参数,忽略片段, 然后作为匹配的键。
  3. 键相同的书签会被分组;成员超过一个的组会出现在结果表格里,按副本数量排序, 并显示该页面被保存时用过的不同标题。
  4. 去重后的下载文件每个唯一页面保留一条:第一次出现的那条,带着原来的标题、保存日期和你保存时的网址。 文件在标签页里生成,再作为下载提供给你。

使用方法

  1. 从浏览器导出书签:打开书签管理器,选择导出选项保存为 HTML 文件。各浏览器的菜单路径见我们的导出与导入指南。
  2. 用书签 HTML 文件选择器选取这个文件。
  3. 状态栏会告诉你检查的总数、有多少个网址重复、以及有多少个副本可以删除, 表格则列出每一个重复的网址。
  4. 点击下载去重后的 HTML,得到一份每个唯一页面只保留一条的文件副本。
  5. 替换旧的那一批:把干净的文件导入一个新文件夹(或者先清空旧书签再导入), 这样在最终确认之前你可以先验证结果。

哪些网址算重复

匹配基于规范化后的网址,而不是原始文本。下面就是哪些会被合并,哪些刻意保持分开:

保存为另一份保存为结果原因
Example.com/articleexample.com/article归为一组比较之前主机名会先转为小写。
/article//article归为一组末尾斜杠会被去掉,深层路径和裸域名根路径都一样。
?utm_source=newsletter没有参数归为一组utm_* 标识的是这次点击,而不是页面。
?fbclid=… / ?gclid=…没有参数归为一组Facebook 和 Google 的点击 ID 同样会被移除。
#comments没有片段归为一组片段只是在页面内滚动,不会改变页面本身。
?page=2?page=3保持分开凡是不属于已知跟踪参数的查询参数都会保留,因为它可能改变页面内容。
http://example.com/ahttps://example.com/a保持分开协议不会被改写或升级。
www.example.com/am.example.com/a保持分开子域名不会被统一。

这种保守是有意为之:把两个真正不同的页面(分页的归档、同一域名下的两个商品)错误地合并,会丢失信息, 而漏掉一个只是写法不同的近似重复项,只会留下一条你可以手动删除的书签。

去重后的文件包含什么

一份标准的 Netscape 书签 HTML 文件,也就是浏览器导出的同一种格式,每个唯一网址一条。 保留下来的副本是在你文件顺序中的第一次出现,保留它的标题、保存日期(导出文件记录了的话), 以及你保存时原样的网址;规范化后的网址只是匹配的键,绝不会写入输出文件。 它是一份扁平列表:文件夹会被展平,因为把“同一个网址分在三个不同文件夹里”合并成一棵树,没有正确答案。 Chrome、Firefox、Edge 和 Safari 都能导入。想在前后检查这份文件,可以用书签文件查看器(英文)把它作为可搜索的表格打开。

什么时候该运行它

  • 迁移之前:换新电脑或新浏览器配置时,先去重,免得把多年同步留下的尘埃带进新环境。 其余步骤见浏览器书签迁移指南(英文)。
  • 同步把书签复制了好几份之后:典型的“同一个标签页存了两次”,是合并旧设备造成的。
  • 导入任何新的管理器之前:大多数工具在导入时没有重复检测,所以重复的文件会一直重复下去。 整理干净之后管理器该做什么,我们在书签整理指南里讲过。
  • 从多个来源收集的研究资料堆:邮件通讯里的链接、搜索结果和别人分享的帖子, 会用不同的推广网址保存同样的页面。如果这堆资料更像一个阅读队列而不是链接清单,稍后阅读的方案会更合适。

隐私:你的文件会发生什么

没有任何东西会离开你的电脑。这个工具没有服务器端组件:你的文件被读入页面内存, 在你的浏览器标签页里完成解析、分组和重新生成。没有任何一部分被上传,没有任何请求携带它的内容, 没有账号也没有额度,关闭标签页就会丢弃一切,因为没有发送出去,所以也没有任何东西被保留。 如果在把书签文件交给任何网页工具之前你想先看到证据,请在选择文件之前打开浏览器的网络检查器: 去重过程不会产生任何网络请求。

限制与特殊情况

  • 近似重复项不会被发现。不同的子域名、AMP 版本、协议变化, 以及展开后指向别处的短网址,都会保留为单独的条目,见上面的表格。
  • 第一份副本优先。如果最先保存的那份标题最差(比如“无标题页面”),那它就是留下来的那条。 可以重新导出、重新排序,或者导入之后再修改标题。
  • 文件夹会被展平,这是有意的设计。请把输出当作去重后的链接集合,而不是重新整理好的书库。
  • 下载的文件会保留原来的保存日期,但如果你把这个文件导入 Marqly, 条目会使用导入日期,原来的保存日期不会通过导入保留下来。标题和标签则会一起带过去。
  • 只处理 http(s) 书签。导出文件里的其他条目会被忽略, 所以统计数字可能与浏览器管理器显示的略有出入。

清理之后

去重解决的是冗余,不是可查找性:两千条唯一链接的扁平列表,仍然是两千条链接。 把整理好的文件导入 Marqly 会保留标题和标签,在 Pro 方案里 AI 会自动为每个导入的链接打标签, 语义搜索则能找到“那篇讲怎么谈加薪的文章”,你不需要记得标题,也不需要记得归在哪里。 Marqly 有免费版(英文)可以开始使用;参见我们的如何导入 Chrome 书签指南, 也可以在保存之前,先用网址清理工具把单个链接里的跟踪参数清理掉。

相关工具与指南

常见问题解答

它是怎么判断两个书签重复的?

比较之前会先规范化网址:主机名转为小写,去掉末尾的斜杠,移除跟踪参数(utm_*、fbclid、gclid),并忽略 #片段。所以同一篇文章,无论是从邮件通讯里的链接保存的,还是从地址栏保存的,都算同一个页面。而真正会改变页面内容的不同查询参数,则会被区分开。

去重后的文件会保留我的文件夹吗?

不会。下载的是一份扁平列表,每个唯一网址一条,保留第一次出现的那条及其标题和保存日期。把原本分在不同文件夹里的条目合并后再重建文件夹树,没有标准答案,所以我们选择了诚实而简单的做法。所有浏览器都能正常导入这份扁平文件。

我的书签文件会被上传到服务器吗?

不会。解析、规范化、分组和生成去重文件,全部在你的浏览器里完成,文件不会离开你的电脑。没有账号,没有额度,关闭标签页后什么都不会保留。想要证据的话,可以打开浏览器的网络检查器看看。

去重后的文件该怎么处理?

可以把它导回浏览器(先删掉旧书签,或者导入到一个新文件夹),也可以导入 Marqly。Marqly 能直接读取标准的书签 HTML,标题和标签会随文件一起带过去。在 Pro 方案里,Marqly 还会自动为导入的链接打 AI 标签,让整理干净的书签堆真正变得能找到。Marqly 有免费版,可以直接开始。

为什么同一个页面的两个书签没有被归为一组?

匹配基于规范化后的网址,而规范化刻意保持保守:不同的协议(http 与 https)、不同的子域名(www 与 m),或不属于已知跟踪参数的查询参数,都会被视为不同的页面。“哪些网址算重复”一节列出了哪些会被合并、哪些会保持分开,漏掉的情况可以到那里对照。

下载的文件会保留重复副本中的哪一个?

每个唯一页面保留第一次出现的那一条,顺序与你的导出文件一致,保留它的标题、保存日期,以及你保存时原样的网址(包括跟踪参数)。规范化后的网址只是用来匹配的键,绝不会写入输出文件。

← 免费工具

首页 · Marqly