你是否也有瀏覽器書籤雜亂無章的困擾?資料夾一層又一層,想找個網站卻要翻找半天?本文將分享一個實用的書籤整理方法,讓你輕鬆管理數千筆書籤!

問題背景

在日常使用瀏覽器的過程中,我們常常會儲存各種有用的網頁。隨著時間推移,書籤數量暴增,資料夾結構也越來越複雜。就像我遇到的情況:

  • 4,000+ 筆書籤
  • 400+ 個資料夾
  • 多層巢狀結構
  • 找尋特定書籤耗時費力

解決方案概述

為了徹底解決這個問題,我設計了一個完整的書籤整理流程:

  1. 匯出所有書籤
  2. 使用 Python 程式將書籤結構扁平化
  3. 重新匯入瀏覽器
  4. 使用擴充功能找出重複書籤
  5. 透過 JavaScript 批次處理重複項目

詳細步驟說明

1. 匯出書籤

在 Chrome 書籤管理員(chrome://bookmarks/)右上角點三點選單 → 匯出書籤,會下載一個 .html 檔案,包含所有書籤的網址、標題、加入時間等資訊。

2. Python 程式處理

先安裝相依套件:

1
pip install beautifulsoup4

使用 BeautifulSoup 處理匯出的 HTML 檔案,把所有書籤拉到同一層:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from bs4 import BeautifulSoup
import re

def process_bookmarks(html_content):
# 解析 HTML 內容
soup = BeautifulSoup(html_content, 'html.parser')

# 找出所有書籤項目(注意:只抓 <a> 連結,原有的資料夾名稱與書籤描述會一併捨棄)
bookmarks = soup.find_all('a')

# 建立新的 HTML 結構
# 這個結構符合瀏覽器書籤檔案的標準格式
new_html = """<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 ADD_DATE="1685050416" LAST_MODIFIED="1732586801" PERSONAL_TOOLBAR_FOLDER="true">書籤列</H3>
<DL><p>"""

# 將所有書籤新增到頂層(標準格式:<DT> 直接包 <A>,無閉合 </DT>)
for bookmark in bookmarks:
bookmark_html = str(bookmark)
if bookmark_html.strip():
new_html += f" <DT>{bookmark_html}\n"

# 關閉 HTML 結構
new_html += """ </DL><p>
</DL><p>"""
return new_html

# 讀取匯出的書籤 HTML 檔案(從瀏覽器匯出後的 .html 路徑)
with open('bookmarks_export.html', 'r', encoding='utf-8') as f:
content = f.read()
print("讀取到的內容長度:", len(content))
print("內容的前100個字元:", content[:100])

# 處理並儲存結果
processed_html = process_bookmarks(content)
with open('bookmarks_flattened.html', 'w', encoding='utf-8') as f:
f.write(processed_html)
print("已處理完整內容並儲存。")

注意: 腳本中 <H3>ADD_DATELAST_MODIFIED 是範例中的固定值,匯入後書籤列資料夾的時間戳會顯示為這個時間點,但每一筆 <a> 連結本身的 ADD_DATE 屬性會從原始檔保留下來,個別書籤的新增日期不受影響。

3. 重新匯入瀏覽器

在 Chrome 書籤管理員(chrome://bookmarks/)右上角點三點選單 → 匯入書籤,選取 bookmarks_flattened.html。匯入後所有書籤都在同一層,方便後續整理。

4. 使用 Bookmarks clean up 尋找重複

安裝 Bookmarks clean up 擴充功能後,可以自動找出重複的書籤。但是這個工具沒有批次處理功能,如果重複項目很多(像是超過 2,000 個),一個個點選會非常耗時。

5. JavaScript 批次處理

開啟 Bookmarks clean up 擴充套件頁面,按 F12 開啟 DevTools,切到 Console 分頁,貼入以下程式碼執行。

腳本會找出路徑包含特定字串的重複項目並自動勾選。使用前請先把 '//書籤列/已匯入' 改成你自己匯入書籤所在的資料夾路徑,否則過濾結果會是 0 筆。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 批次勾選指定路徑下的重複書籤
async function checkDuplicateBookmarks() {
const folderUrls = document.querySelectorAll('.folder-url');
let count = 0;

// ⚠️ 將下方路徑字串改成你的目標資料夾路徑
const targetUrls = Array.from(folderUrls).filter(url =>
url.textContent.includes('//書籤列/已匯入')
);

console.log(`找到 ${targetUrls.length} 個項目需要處理`);

for (const url of targetUrls) {
const listItem = url.closest('.list-group-item');
const checkbox = listItem?.querySelector('input[type="checkbox"]');

if (checkbox) {
// 直接呼叫 .click() 比 dispatchEvent(MouseEvent) 相容性更好
// 部分以 React/Vue 渲染的擴充套件 UI 不會接收合成的 MouseEvent
checkbox.click();

count++;
console.log(`已處理 ${count}/${targetUrls.length} 個項目`);

// 加入延遲避免處理過快
await new Promise(resolve => setTimeout(resolve, 100));
}
}

console.log('處理完成!');
}

checkDuplicateBookmarks().catch(console.error);

實用擴充推薦

書籤管理常用擴充功能

Bookmarks clean up:本文流程的核心工具。可自動找出重複書籤、偵測失效連結、刪除空資料夾、合併資料夾,支援多種比對模式。書籤量大時搭配上面的 JavaScript 腳本批次勾選,比手動一個個點省事很多。

Sprucemarks:整理完結構後,用它依名稱、日期或網域自動排序,支援資料夾內部排序。對習慣用鍵盤搜尋書籤的人幫助有限,但如果你常在書籤欄瀏覽,排序後會清楚很多。

TAB SORTER:管理分頁而非書籤。開了幾十個分頁時可依網域分組、快速找出重複分頁,跟書籤整理流程是不同層面的需求。

幾個後續維護的建議

書籤整理完之後,資料夾層級盡量壓在 2-3 層以內,分類越粗越好維護。書籤量重新累積到失控之前(大概 3-6 個月),跑一次 Bookmarks clean up 清重複、清失效連結,比等到 4,000 筆再一次大掃除省力得多。