Web記事をObsidianにクリップしても、読み切れずに気づけば未読の山ができている状態です。そんな「積読」を解消するために、プロパティ設計・Templater・Dataviewを組み合わせた既読管理の仕組みをつくりました。この記事では、その全体像と手順をまとめます。おそらく仕組みをすっかり忘れる、数ヶ月後の自分への引き継ぎメモでもあります。
つくった仕組み
やりたかったのは、クリップした記事を「読んだ / 読んでない」で管理し、未読の山を可視化することです。最終的にたどり着いた構成は以下のような形です。
- クリップ時にプロパティで初期状態(未読)を自動付与する
- プラグインのTemplaterを利用して、読了時はキー一発でステータスと読了日を記録する
- Dataviewで「未読の一覧」「棚卸し対象」を自動表示する
- 運用ルールはVault内のガイドノートに集約し、各クリップからリンクする
1. プロパティ設計
既読管理はプロパティ(フロントマター)で行います。
最初に悩んだのが status の型で、単純なチェックボックス(true/false)では足りなそうなので、テキストでステータスを管理することに。読書のステータスには段階があるからです。
unread— 未読 ※クリップ直後のデフォルトreading— 読みかけread— 読了skip— 読まないと決めた
最後の skip は大量すぎる未読クリップを整理するためのもの。削除してもいいかもしれないが、そこまで判断できないことが多そうなのでスキップとしました。
最終的なプロパティ構成
---
tags:
- "clippings"
created: 2026-07-14 23:27
modified: 2026-07-14 23:27
aliases:
author:
clipped: 2026-07-14
description:
guide: "[[Clipping運用ガイド]]"
processed: false
published:
read_date:
source: "https://example.com/"
status: "unread"
title: "記事タイトル"
---
既読管理に直接関係するのは status / read_date / clipped の3つです。processed は「読んだかどうか」とは別軸で、「永久ノート化まで消化したかどうか」を管理するためのフラグ。永久ノートとは、ノート管理術のZettelkasten(ツェッテルカステン)の細かい主張をノートにまとめたもの。「読んだけどまだ知識として消化していない記事」と「ノートに昇華済みの記事」を区別できるようにもした。
guide はこの後で触れる運用ガイドノートへのリンク。
2. 運用ガイドノートへテンプレートからリンクする
数ヶ月後に使い方を忘れることが多いので、Vault内に運用ルールを1枚のノートにまとめ、クリップされた各ノートの guide プロパティからそこへ飛べるようにしました。
この構造の良いところは、どのクリップからもプロパティ欄のリンクでガイドに飛べること。
ガイドノートには、プロパティの意味、status の値の定義、読了フロー、Dataviewクエリ、そしてテンプレートのバックアップ手順までを1枚にまとめました。これで、使い方が分からなくなっても、プロパティから直接ガイドのノートに遷移することができます。
3. 読了にはショートカットキーで
読み終わるたびにプロパティ欄を開いて status を書き換え、read_date に日付を入れるという作業を毎回手でやるのは面倒です。そこでTemplaterを使い、キーひとつで両方を書き換えるようにしました。
Templaterは本来「テンプレートの文章をノートに挿入する」プラグインですが、テンプレートの中身をスクリプトだけにすると、文章は挿入されず処理だけが走る、という使い方ができるそう。これを利用しました。
<%*
const file = app.workspace.getActiveFile();
await app.fileManager.processFrontMatter(file, (fm) => {
fm.status = "read";
fm.read_date = tp.date.now("YYYY-MM-DD");
});
%>
getActiveFile() で「いま開いているノート」を取り、processFrontMatter でそのフロントマターを書き換えています。ファイル名で探す方法より、同名ファイルがあっても誤爆しないぶん確実です。
4. Dataviewで未読の山を可視化する
プロパティを整えたら、あとは一覧ビューで記事を呼び出せます。まずは未読一覧。
```dataview
TABLE clipped AS "クリップ日", source AS "元記事"
FROM #clippings
WHERE status = "unread"
SORT clipped DESC
```
そして、「クリップから30日経った未読」のビュー。
```dataview
TABLE clipped AS "クリップ日"
FROM #clippings
WHERE status = "unread" AND date(clipped) < date(today) - dur(30 days)
SORT clipped ASC
```
寝かせすぎた未読をここで棚卸しし、読むかスキップにするかを判断できます。
おわりに
まとめると、この仕組みは以下のような構成でできています 。
- プロパティ設計:
status(4段階)+read_date+clipped+processedで既読と消化を管理 - ガイドノート: 運用ルールを1枚に集約し、各クリップから
guideプロパティでリンク - Templater: 読了マークをショートカットキーで。
- Dataview: 未読一覧と棚卸しビューで閲覧性を高める
最初から全部を揃える必要はない、という気持ちで、まずは status と read_date だけで運用を始めて、面倒を感じたところから自動化や可視化を足していこうと思います。


コメント