用 Obsidian Dataview 查詢你儲存的網頁內容
· Save Team
obsidiandataviewpluginsmarkdownpkmpower-user
你已經向 Obsidian 儲存網頁內容好幾週了。你的知識庫有 50 篇,甚至 100 篇剪藏的文章。但要找到合適的那篇,你只能在資料夾中捲動瀏覽,或依賴全文搜尋。
Dataview 改變了這一切。它將你的 Markdown 檔案視為資料庫——按元資料查詢、按標籤篩選、按日期排序,並建構自動更新的儀表板。
以下是如何為你的網頁剪藏設定它。
Dataview 能做什麼
Dataview 是一個 Obsidian 外掛,讓你可以使用類 SQL 語法查詢你的筆記。每個 Markdown 檔案成為一行。每個 frontmatter 欄位成為一列。每個查詢返回一個即時自動更新的表格。
基礎:Frontmatter
Dataview 的威力依賴於剪藏檔案中一致的 frontmatter。當你用 Save 儲存網頁內容時,新增這些元資料:
---
title: "React Server Components: 完全指南"
source: "https://example.com/rsc-guide"
clipped: 2026-03-15
type: article
status: unread
tags: [react, server-components, performance]
rating:
---
讓網頁剪藏可查詢的欄位:
- clipped — 儲存時間
- type — article、tutorial、documentation、paper、thread
- status — unread、reading、read、processed
- rating — 閱讀後的 1-5 評分(初始留空)
- tags — 涵蓋的主題
基本查詢
閱讀佇列
查看所有未讀剪藏,最新的排在前面:
```dataview
TABLE title, type, clipped
FROM "clips"
WHERE status = "unread"
SORT clipped DESC
```
最近閱讀
過去 30 天內處理的內容:
```dataview
TABLE title, rating, tags
FROM "clips"
WHERE status = "read" AND clipped >= date(today) - dur(30 days)
SORT rating DESC
```
按主題的最佳內容
查找某個特定主題中評分最高的剪藏:
```dataview
TABLE title, rating, source
FROM "clips"
WHERE contains(tags, "react") AND rating >= 4
SORT rating DESC
```
需要處理的剪藏
查找你還沒有回顧的儲存內容:
```dataview
TABLE title, type, clipped
FROM "clips"
WHERE !rating
SORT clipped ASC
LIMIT 10
```
建構研究儀表板
建立一個名為 Dashboard.md 的筆記來匯總所有查詢:
# 研究儀表板
## 閱讀佇列({{date}})
### 未讀文章
(dataview 查詢放這裡)
### 進行中
(dataview 查詢放這裡)
## 本週儲存
(dataview 查詢放這裡)
## 評分最高的內容
(dataview 查詢放這裡)
每次你開啟它時,這個儀表板都會自動更新。無需手動維護。
進階:內聯查詢
Dataview 還支援筆記內的內聯查詢:
本月我已讀了 `= length(filter(pages("clips"), (p) => p.status = "read"))` 篇文章,
平均評分為
`= round(average(filter(pages("clips"), (p) => p.rating).rating), 1)`。
DataviewJS 處理複雜查詢
```dataviewjs
// 顯示過去 8 週每週的剪藏數量
const clips = dv.pages('"clips"')
.where(p => p.clipped)
.sort(p => p.clipped, 'desc');
const weeks = {};
for (const clip of clips) {
const week = clip.clipped.toFormat("yyyy-'W'WW");
weeks[week] = (weeks[week] || 0) + 1;
}
dv.table(
["週", "儲存的剪藏"],
Object.entries(weeks).slice(0, 8).map(([week, count]) => [week, count])
);
```
保持資料乾淨的技巧
使用範本
為剪藏建立一個預填 frontmatter 的範本:
---
title: ""
source: ""
clipped: {{date}}
type: article
status: unread
tags: []
rating:
---
規範化你的標籤
選擇一套標準並堅持使用。react 而不是 React 或 reactjs。不一致的標籤會破壞 Dataview 查詢。
閱讀後更新狀態
當你讀完一個剪藏時,花 10 秒將 status: unread 改為 status: read 並新增評分。
保留來源 URL
source 欄位讓你總能回到原始內容。
為什麼乾淨的 Markdown 在這裡很重要
Dataview 查詢你的 frontmatter,但你也會定期搜尋剪藏內容。這正是 Save 乾淨提取的價值所在。乾淨的 Markdown 意味著乾淨的搜尋結果。
開始使用
- 在 Obsidian 中安裝 Dataview 外掛(社群外掛 → 搜尋「Dataview」)
- 安裝 Save 進行乾淨的網頁剪藏
- 使用上面的範本為你接下來的 5 個剪藏新增 frontmatter
- 建立一個帶有閱讀佇列查詢的儀表板筆記
- 看著你的知識庫從一堆檔案轉變為可查詢的知識庫