nakaoka3の技術ブログ

2023年中に52本なにか書きます

Obsidianの最近開いたメモをターミナルでタイムラインみたいに表示したい

Twitterにつぶやくような感覚でObsidianにメモをためているので、タイムラインのような感じで最近書いたメモをターミナルからざっと連結して眺められると便利だろうなと考えた。そこで以下のようなシェルスクリプトを使ってターミナルから確認できるようにした。

#!/bin/bash
set -euo pipefail
# ObsidianのVaultのパス
OBSIDIAN_VAULT="PATH/TO/YOUR/VAULT"
cat "$OBSIDIAN_VAULT/.obsidian/workspace.json" \
| jq -r '.lastOpenFiles | reverse | .[]' \
| grep ".md$" \
| tail -5 \
| xargs -I {} glow "$OBSIDIAN_VAULT/{}"

Obsidianのvaultには .obsidian/workspace.json というJSONファイルがあり、そこを参照すれば最近開いたファイルがわかる。

下に新しいファイルがあったほうが見やすいので jqで逆順にしている。Twitterのタイムラインとは逆の並びになる。

Obsidianではmarkdown以外のファイルも開けるので、grep.md拡張子がつくファイルのみに絞ってしている。Obsidian Canvasファイルなんかもここに入ってくるので、取り除いてMarkdownファイルだけにする。

逆順にしたので head ではなくて tail で最新5件を取得している。

glowmarkdownレンダリングして色付けして表示するコマンド。

nakaoka3.hatenablog.com

あとは .zshrc などにalias に追加しておけばいつでも使える。1

alias notes="~/obsidian-last-open-notes.sh"

  1. ワンライナーでもできると思うけどしんどいのでやめた