← 返回部落格

用 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 而不是 Reactreactjs。不一致的標籤會破壞 Dataview 查詢。

閱讀後更新狀態

當你讀完一個剪藏時,花 10 秒將 status: unread 改為 status: read 並新增評分。

保留來源 URL

source 欄位讓你總能回到原始內容。

為什麼乾淨的 Markdown 在這裡很重要

Dataview 查詢你的 frontmatter,但你也會定期搜尋剪藏內容。這正是 Save 乾淨提取的價值所在。乾淨的 Markdown 意味著乾淨的搜尋結果。

開始使用

  1. 在 Obsidian 中安裝 Dataview 外掛(社群外掛 → 搜尋「Dataview」)
  2. 安裝 Save 進行乾淨的網頁剪藏
  3. 使用上面的範本為你接下來的 5 個剪藏新增 frontmatter
  4. 建立一個帶有閱讀佇列查詢的儀表板筆記
  5. 看著你的知識庫從一堆檔案轉變為可查詢的知識庫