在日常的技術研究與情資搜集過程中,我們經常會不知不覺在瀏覽器中累積上百個分頁。這些稍後閱讀的清單,往往變成了永遠不會讀的資訊債。面對大量的資訊輸入,把資料交給雲端服務雖然方便,但對於重視隱私與資料自主權的開發者與資安人員來說,將知識庫建立在自己的伺服器上,才是最安心的選擇。

比方說這樣如上圖所示,如果有 472 個分頁,就顯然開太多分頁而沒有做知識管理。CyberQ 將帶你走通一套完全離線、高度可控的個人知識管理(PKM)工作流,利用 QNAP NAS 自建 Wallabag 作為資訊過濾的防波堤,並透過 Obsidian 搭配 Dataview 外掛,打造專屬的知識儀表板。
為什麼你需要這套工作流?
過去,我們可能會把網址丟進書籤,或是使用常見的雲端稍後閱讀服務。但這套架構解決了三個核心問題。
首先是資料自主權 (Data Sovereignty), 你想要收集和標註精華地所有文章、筆記與快取圖片都存放在自己的 NAS 與硬碟中,不用擔心那些雲端知識庫、書籤標記等第三方服務倒閉或更改收費模式導致資料遺失。
其次是過濾雜訊,精準閱讀, 透過 Wallabag 自動剝除網頁廣告,保留純粹的圖文閱讀體驗,並在第一線完成重點標註。
再來則無縫整合自己需要的知識網, 透過 API 介接,將畫過重點的文章自動轉化為 Markdown 檔案進入 Obsidian,成為自己求學、研究和日常工作的絕佳素材。
不但如此, Wallabag 有自己不錯的生態系,可以搭配很多服務來使用。Obsidian 也是跨平台,Android、iOS 兩大平台手機、Linux、Mac 與 Windows 三大平台電腦都能夠使用。
核心架構與部署策略
這套系統分為收集端與大腦端兩個層次。
1、資訊防波堤 QNAP NAS + Wallabag (Docker)
強烈建議透過 Container Station (Docker) 來部署 Wallabag。這不僅隔離了環境確保系統安全,未來備份也只需針對掛載的資料夾進行處理。
架構重點在於使用 docker-compose.yml 將 data(資料庫)與 images(快取圖片)目錄掛載至 NAS 的實體路徑中。記得先在 QNAP File Station 到 container 目錄下開好一個 wallabag 資料夾,並設定權限為可讀取和寫入。
以下是 CyberQ 寫的 yaml,貼到 Container Station 中就可以部署這個應用程式到 NAS 中了。
version: '3'
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
environment:
# 請把下方的 IP 換成你 QNAP NAS 的區域網路 IP
- SYMFONY__ENV__DOMAIN_NAME=http://192.168.x.x:8088
- SYMFONY__ENV__FOSUSER_REGISTRATION=false # 關閉對外開放註冊以策安全
ports:
- "8088:80" # 左邊的 8088 是 NAS 對外的 Port,若與其他服務衝突可自行更改
volumes:
# 左側路徑請確認符合你 NAS 的實際路徑(通常是 /share/Container/...)
- /share/Container/wallabag/images:/var/www/wallabag/web/assets/images
- /share/Container/wallabag/data:/var/www/wallabag/data
restart: unless-stopped權限提醒, 若遇到資料庫無法建立的錯誤,務必檢查掛載目錄是否給予了容器內部使用者正確的讀寫權限。

點擊「建立」或「驗證後套用」,Container Station 就會開始下載映像檔並執行服務。等待幾分鐘啟動完成後,打開瀏覽器輸入 http://你的NAS_IP:8088。 預設的帳號與密碼都是 wallabag。登入後,請務必第一時間到設定中更改密碼,比較安全。

2、批次消化資訊債,Python API 自動化匯入
如果你一開始就有高達數百個未處理的瀏覽器分頁,千萬不要嘗試透過網頁介面一次匯入巨型的 HTML 書籤檔,這極容易觸發伺服器 逾時當掉,直接噴錯誤訊息給你。
最穩健的作法是直接在 NAS 中安裝好 Wallabag 的容器後,在 Wallabag 的後台頁面中產生一組 Wallabag 的 OAuth2 API 憑證,並透過簡單的 Python 腳本批次寫入。


接著來寫 Python 程式碼來進行匯入的動作,以下是 CyberQ 的範例程式碼,你可以自己修改 IP 位置、 api 與 secret 後使用。
import requests
import time
# --- 設定區塊 ---
WALLABAG_URL = "http://192.168.2.2:7088"
USERNAME = "wallabag"
PASSWORD = "wallabag"
CLIENT_ID = "你在WALLABAG後台產生的CLIENT_ID"
CLIENT_SECRET = "你在WALLABAG後台產生的SECRET"
FILE_PATH = "urls.txt" # 你的網址清單檔案
def get_token():
print("正在取得存取權杖...")
data = {
"grant_type": "password",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"username": USERNAME,
"password": PASSWORD
}
response = requests.post(f"{WALLABAG_URL}/oauth/v2/token", data=data)
response.raise_for_status()
return response.json()["access_token"]
def add_article(url, token):
headers = {"Authorization": f"Bearer {token}"}
data = {"url": url}
try:
response = requests.post(f"{WALLABAG_URL}/api/entries.json", headers=headers, data=data, timeout=30)
if response.status_code == 200:
print(f"[成功] {url}")
else:
print(f"[失敗] 狀態碼: {response.status_code} - {url}")
except Exception as e:
print(f"[錯誤] {url} - {str(e)}")
if __name__ == "__main__":
token = get_token()
with open(FILE_PATH, 'r', encoding='utf-8') as f:
urls = [line.strip() for line in f if line.strip()]
print(f"準備匯入 {len(urls)} 篇文章...")
for idx, url in enumerate(urls, 1):
print(f"進度: {idx}/{len(urls)}", end=" ")
add_article(url, token)
# 暫停 2 秒,避免 NAS 瞬間負載過高或被目標網站阻擋
time.sleep(2)
print("匯入完成!")這支腳本能讓你在背景安靜地把數百篇到上萬篇文章轉移到 NAS 中,不佔用任何前端資源。
瀏覽器的眾多分頁,可以使用如 Copy All Tab URLs 這樣的外掛套件,把所有的分頁連結,複製成一份讓你貼成如本範例中的 urls.txt 檔案。Chrome 瀏覽器版請點這裡安裝,Firefox 瀏覽器版則點這裡安裝。

把 urls.txt 和寫好的 importscript.py 程式碼放在同一個目錄下,透過 Windows 或 Linux 的終端機畫面,去執行 importscript.py,來完成將大量資料匯入到 QNAP NAS 或你電腦 Docker 上的 Wallabag 任務。

很快地就會將這些網址逐一截圖和複製匯入到 Wallabag 完畢,這對個人、學校和辦公室應用來說都是適用的。

匯入 Wallabag 袋鼠後的大量資料會長這樣,可以再自行建立標籤類與標註等等。也可以用去官方網站下載瀏覽器或電子書的外掛程式,在外用手機、筆電看到有好資料時,點一下加入就匯入到 NAS 或容器中的Wallabag 中。也支援各家主流的 RSS reader RSS 閱讀器。
要注意的是,如果要在外網也能存取將資料匯入 Wallabag ,如果不是在雲端租用主機自己架的話,就會需要在Cloudflare Tunnel (Zero Trust) 去定可外網存取,藉由 Cloudflare Tunnel,不需要在路由器的防火牆上開 Port (Port Forwarding),就能自動獲得合法的 HTTPS 憑證,而且出門在外也能隨時把文章存進 NAS。
採用的方式是進入 Cloudflare 儀表板,切換到 Zero Trust 面板。 移動至 Networks > Tunnels,建立一個新的 Tunnel。 Cloudflare 會給你一段安裝指令。打開 QNAP 的 Container Station 或透過 SSH,把這段指令用 Docker 執行起來(建立 cloudflared 容器)。 隧道連通後,在 Cloudflare 介面上設定一組子網域,將該子網域的目標 (Service) 指向你的本地 IP 與 Port:http://192.168.2.2:7088。 完成後,你只要在瀏覽器和外掛中輸入你 Wallabag 用到的子網域網址,Cloudflare 就會幫你處理好所有的 SSL 憑證與 HTTPS 加密,流量會安全地穿透回你家中的 NAS。
Obsidian 深度整合,讓資訊產生連結

文章存進 NAS 只是第一步,真正的價值在於後續的消化與提取。我們需要手動安裝社群的 Wallabag 外掛給 Obsidian 用,下載最新版本的 main.js、manifest.json 與 styles.css 放入外掛目錄。打開你的 Obsidian 知識庫資料夾,找到隱藏資料夾 .obsidian。進入 .obsidian/plugins/,在裡面建立一個新資料夾命名為 obsidian-wallabag。將剛才下載的檔案放入該資料夾中。

回到 Obsidian,重開程式,到「設定 > 第三方外掛程式」列表中,你就會看到 Wallabag 出現了,將其啟用即可按照填寫 API 填入同一組在 Wallabag 中建立好的 API 憑證,設定好 Markdown 範本,就能一鍵將 Wallabag 中的文章與重點同步回本機的 Obsidian 知識庫中。

為了讓匯入的資料整齊好管理,建議在 Wallabag 外掛的設定頁面中調整以下項目,比方說 Article Folder 輸入你要存放這些文章的資料夾名稱(例如:Wallabag Inbox)。如果資料夾不存在,同步時 Obsidian 會自動建立。 Sync on Startup建議打勾,這樣每次打開 Obsidian 就會自動把最新的文章抓下來。
Article Template (文章範本) 這是最重要的地方,決定了文章匯入後的長相。你可以自訂 Markdown 格式,建議可以使用以下範本(直接貼上替換預設值):
---
title: "{{title}}"
url: {{url}}
reading_time: {{readingTime}}
---
# {{title}}
🔗 **原始連結:** [點擊閱讀]({{url}})
---
## 📝 重點與筆記 (Highlights)
{% for annotation in annotations %}
> {{annotation.text}}
> *(筆記: {{annotation.quote}})*
{% endfor %}
---
## 📄 文章內容
{{content}}接著點選 Obsidian 畫面中左上角的匯入按鈕即可將資料都匯入進來。
打造自動化的待辦儀表板 (Dataview 實戰)
當數百篇文章湧入 Obsidian 時,你需要一個有系統的方法來消化它們。這時就是優秀外掛 Dataview 登場的時候。

我們可以在 Obsidian 中建立一個名為個人知識中心的筆記,並寫入以下 Dataview 語法。這段語法會自動抓取 Wallabag Inbox 資料夾中,還沒有被加上任何標籤的最新 10 篇文章。

Markdown
TABLE url as "原始連結", created_at as "加入時間"
FROM "Wallabag Inbox"
WHERE length(tags) = 0 OR !tags
SORT created_at DESC
LIMIT 10實戰工作流
每天早上打開這個儀表板,你會看到一份乾淨的待處理清單。點擊進入文章閱讀,留下你的見解,並在屬性區塊加上對應的標籤(例如 #Security 或 #AI)。

一旦加上標籤,這篇文章就會自動從這個清單中消失,實現清空收件匣 (Inbox Zero)的成就感。

陸續加上標籤和關鍵字後,你的個人知識圖譜就會逐步建立起連結,方便你查找相關資訊和自己的筆記。
進階技巧,何時該用 Web Clipper?
Obsidian 近期推出了非常強大的官方瀏覽器外掛 Web Clipper,支援一鍵將網頁轉為 Markdown 存入本機。那麼,我們還需要 Wallabag 嗎?
答案是,兩者並行,依情境分流。
廣泛收集與稍後閱讀這類事情, 針對日常滑手機看到的各種新聞、工作上會用到的專案網頁資料,先送入 Wallabag。在這裡進行初步過濾,避免垃圾資訊污染 Obsidian。
精準擷取與深度研究, 當你正在找念書、工作上會需要處理的文件或方法,明確需要原廠文件或電子商務產品頁面當素材時,直接使用 Obsidian Web Clipper 精準截取並套用範本,馬上就能投入專案的工作中,方便你彙整資料和實作。
可以用 AI 產知識圖譜,為何還要自己做 ?
從建立 Docker 容器、撰寫 API 批次匯入腳本,到最後透過 Dataview 打造動態儀表板,這套工作流的建置過程本身,就是一次不錯的系統整合實踐。類似的平台和工具還有很多,可以找到適合自己的方式來完成。
CyberQ 認為,隨著 AI 模型和 AI 代理人的強大化,並不代表自己就不能夠好好地把自己的知識圖譜建立起來,畢竟透過 AI 產生的和自己有意識處理過的資訊流,在融會貫通上還是有差異。我們能做的就是可以再把一些標註的工作,給 n8n 或 AI 代理人再來協助,也是一個不錯的方式,但不論是哪一種,你放在 Wallabag 和 Obsidian 地端的東西,就會是你擁有的,放在 NAS ,同時又做好備份的話,別人也帶不走喔。
在這個資訊爆炸的時代,最好的知識管理不是把所有的東西都存下來,而是建立一套符合自己邏輯的過濾與消化機制。現在,就打開你的 NAS,開始建造屬於你的知識中心吧!








