Obsidian の Daily notes に繰り返しタスクを自動挿入する
Table of Contents
2024年のタスク管理で書いたとおり、 Obsidian の Daily notes でタスクの管理を行っている。 その中の、繰り返しタスクに関する小ネタ。
繰り返しタスクの管理 #
先に参照した記事にも書いているとおり、繰り返しタスクの管理には Silhouette というプラグインを利用している。
Daily note を開いて Silhouette: Insert tasks
を実行すると、
設定されたルールに基づいて繰り返しタスクリストを挿入してくれるすぐれもの。
曜日指定の繰り返しや、「月内最後の平日」のような指定もできるので、たいていのケースに対応できる。
ただ、Daily note を開くたびに上記のコマンドを手動で実行するのは面倒だ。 毎日のことなのでなおさら。 これを自動化したい。
タスクリストを自動挿入する #
Silhouette には、挿入対象のファイル名を見てどの日のタスクを挿入するかを判定する機能がある。 これとおなじみの Templater を組み合わせれば、 Daily note を開くと同時にその日のタスクを挿入することができるようになる。
まずは Silhouette の設定から、ファイルの日付フォーマットを入力する。
今使っている Daily note のパスは ./2025/02/20250222.md
(YYYY/MM/YYYYMMDD
) のような形式なので、設定値は以下のようになる。

なお、ここに入力するフォーマットは、ファイルの basename 部分のみを表せばでよい。 つまり、ディレクトリ名と拡張子を考慮する必要はない1。
次に、テンプレートファイルを用意する。
コアプラグイン Daily notes
で設定したテンプレートファイルに、
以下のように Silhouette のコマンドを呼び出すコードを追加する。
<% tp.file.cursor() %>
<%* app.commands.executeCommandById("obsidian-silhouette:insert-tasks") -%>
tp.file.cursor()
でカーソル位置を移動し、 app.commands.executeCommandById()
でコマンド obsidian-silhouette:insert-tasks
を呼び出している。
このとき注意しなければいけないのが、 tp.file.cursor()
は <%* ... -%>
ではなく <% ... %>
を使わなければならない点。
前者を使うとカーソル位置が移動しないので、意図した場所にタスクリストが挿入されない2。
これで Daily note を開くと同時に、Silhouette によるタスクリスト挿入が自動実行される。 未来や過去の Daily note を開いた場合も、その日のタスクが適切に挿入される。
まとめ #
これでまたひとつ toil を減らすことができた。 ちょっとしたカスタマイズで不便を無くせるのが Obsidian の良いところだ。
-
コードで言うとこの辺 https://github.com/tadashi-aikawa/silhouette/blob/068004c0c8b04cdcc47a2026a0ec3d77236daf96/src/commands.ts#L22-L26 ↩︎
-
<%* ... -%>
と<% ... %>
の使い分けについては https://silentvoid13.github.io/Templater/commands/whitespace-control.html を参照。 ↩︎