Truy Vấn Nội Dung Web Đã Lưu Với Obsidian Dataview
Bạn đã lưu nội dung web vào Obsidian được vài tuần. Vault của bạn có 50, có thể 100 bài viết đã clip. Nhưng để tìm đúng bài cần phải cuộn qua thư mục hoặc dựa vào full-text search.
Dataview thay đổi điều này. Nó xử lý các file Markdown của bạn như một database — truy vấn chúng theo metadata, lọc theo tags, sắp xếp theo ngày, và xây dựng dashboard tự động cập nhật.
Đây là cách cài đặt cho web clips của bạn.
Dataview Làm Gì
Dataview là plugin Obsidian cho phép bạn truy vấn notes bằng cú pháp giống SQL. Mỗi file Markdown trở thành một hàng. Mỗi trường frontmatter trở thành một cột. Mỗi truy vấn trả về bảng trực tiếp, tự động cập nhật.
Nền Tảng: Frontmatter
Sức mạnh của Dataview phụ thuộc vào frontmatter nhất quán trong các file đã clip. Khi bạn lưu nội dung web với Save, thêm metadata này:
---
title: "React Server Components: Hướng Dẫn Đầy Đủ"
source: "https://example.com/rsc-guide"
clipped: 2026-03-15
type: article
status: unread
tags: [react, server-components, performance]
rating:
---
Các trường giúp web clips có thể truy vấn:
- clipped — khi bạn lưu nó
- type — article, tutorial, documentation, paper, thread
- status — unread, reading, read, processed
- rating — 1-5 sau khi bạn đọc (để trống ban đầu)
- tags — các chủ đề được đề cập
Các Truy Vấn Cơ Bản
Hàng Đợi Đọc
Xem tất cả clips chưa đọc, mới nhất trước:
```dataview
TABLE title, type, clipped
FROM "clips"
WHERE status = "unread"
SORT clipped DESC
```
Đã Đọc Gần Đây
Những gì bạn đã xử lý trong 30 ngày qua:
```dataview
TABLE title, rating, tags
FROM "clips"
WHERE status = "read" AND clipped >= date(today) - dur(30 days)
SORT rating DESC
```
Nội Dung Tốt Nhất Theo Chủ Đề
Tìm clips được đánh giá cao nhất về một chủ đề cụ thể:
```dataview
TABLE title, rating, source
FROM "clips"
WHERE contains(tags, "react") AND rating >= 4
SORT rating DESC
```
Phân Loại Theo Kiểu Nội Dung
Bạn đã lưu bao nhiêu từng loại:
```dataview
TABLE length(rows) AS Count
FROM "clips"
GROUP BY type
SORT length(rows) DESC
```
Clips Cần Xử Lý
Tìm nội dung đã lưu nhưng chưa xem lại:
```dataview
TABLE title, type, clipped
FROM "clips"
WHERE !rating
SORT clipped ASC
LIMIT 10
```
Xây Dựng Dashboard Nghiên Cứu
Tạo note có tên Dashboard.md tổng hợp tất cả truy vấn của bạn:
# Dashboard Nghiên Cứu
## Hàng Đợi Đọc ({{date}})
### Bài Chưa Đọc
(dataview query ở đây)
### Đang Đọc
(dataview query ở đây)
## Saves Tuần Này
(dataview query ở đây)
## Nội Dung Được Đánh Giá Cao Nhất
(dataview query ở đây)
## Theo Chủ Đề
(dataview query ở đây)
Dashboard này tự động cập nhật mỗi lần bạn mở nó. Không cần bảo trì thủ công.
Nâng Cao: Inline Queries
Dataview cũng hỗ trợ inline queries trong notes của bạn. Tham chiếu số lượng clip hoặc metadata ở bất cứ đâu:
Tháng này tôi đã lưu `= length(filter(pages("clips"), (p) => p.status = "read"))` bài viết,
với đánh giá trung bình là
`= round(average(filter(pages("clips"), (p) => p.rating).rating), 1)`.
Hiển thị dưới dạng văn bản thuần: “Tháng này tôi đã lưu 23 bài viết, với đánh giá trung bình 3.8.”
DataviewJS Cho Các Truy Vấn Phức Tạp
Để phân tích phức tạp hơn, dùng DataviewJS (JavaScript):
```dataviewjs
// Hiển thị số clips mỗi tuần trong 8 tuần qua
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(
["Tuần", "Clips Đã Lưu"],
Object.entries(weeks).slice(0, 8).map(([week, count]) => [week, count])
);
```
Mẹo Để Dữ Liệu Sạch
Dùng Template
Tạo template clip với frontmatter được điền sẵn để mỗi lần lưu đều nhất quán:
---
title: ""
source: ""
clipped: {{date}}
type: article
status: unread
tags: []
rating:
---
Chuẩn Hóa Tags
Chọn một bộ tiêu chuẩn và gắn bó với nó. react chứ không phải React hay reactjs. performance chứ không phải perf hay web-performance. Tags không nhất quán làm hỏng truy vấn Dataview.
Cập Nhật Status Sau Khi Đọc
Trường status chỉ hoạt động nếu bạn cập nhật nó. Khi bạn đọc xong một clip, mất 10 giây để đổi status: unread thành status: read và thêm đánh giá.
Giữ URL Nguồn
Trường source cho phép bạn luôn quay lại trang gốc. Dataview có thể hiển thị chúng dưới dạng link có thể nhấp:
```dataview
TABLE title, "[Link](" + source + ")" AS Source
FROM "clips"
WHERE status = "read"
SORT clipped DESC
LIMIT 20
```
Tại Sao Markdown Sạch Quan Trọng Ở Đây
Dataview truy vấn frontmatter của bạn, nhưng bạn cũng thường xuyên tìm kiếm nội dung clip. Đây là lúc việc trích xuất sạch của Save phát huy tác dụng.
Khi bạn tìm kiếm trong vault cho “server components streaming,” bạn muốn tìm đoạn văn liên quan trong các clips — không phải menu điều hướng, cookie banners, hay sidebar widgets. Markdown sạch có nghĩa là kết quả tìm kiếm sạch.
Bắt Đầu
- Cài plugin Dataview trong Obsidian (Community Plugins → Tìm “Dataview”)
- Cài Save để web clipping sạch
- Thêm frontmatter vào 5 clips tiếp theo của bạn bằng template trên
- Tạo note Dashboard với truy vấn hàng đợi đọc
- Xem vault của bạn biến đổi từ đống file thành cơ sở kiến thức có thể truy vấn