「Obsidian」タグアーカイブ

ObsidianのDailyNoteテンプレートに内部リンクは書かない方がいい(たぶん)

Obsidianを本格的に使い始めて半月くらい。
だいぶ慣れてきた感はある。
そして今まで出会ってきたツールのどれよりも可能性も感じている。
ま、このへんの話はまたあらためて。

ObsidianをやってるとDailyNoteは基本的に毎日書くことになる。
そして起動時にその日のDailyNoteが最初に表示されるっていう設定にしている人は結構多いんじゃないかな(たぶん)。


僕のことだけど、おそらくObsidian入門者は「DailyNoteによく使うノートへの内部リンクがあると便利♪」って思ってその内部リンクをテンプレートに書いちゃう。
まぁそれ自体は悪くないんだけど、時間がたつにつれて悪影響が出てくるだろうところがグラフ。


Obsidianのグラフ機能はノート間のリンクを視覚的に見せてくれるものだけど、DailyNoteに内部リンクが書いてあると、DailyNoteがたくさん貯まった暁にはその内部リンクがどセンターになってるあんまり意味のないグラフが出来上がっていて、意味のあるグラフが見えなくなってしまうはず。

グラフは使わないって人はそれでもいい。
グラフも役立てたいなって人はテンプレートには内部リンクの代わりにコードブロックを書いたら良さそう。
ねずみやも試してみます。

続:Obsidianでランダムノート

今回やりたかったのは、こんな内容。

  • 「Memo」という名前のフォルダに一時的なメモのノートが入ってる
  • その都度エクスプローラを開くのは面倒なので一時的なメモのノートの一覧を表示するノートを作りたい
  • フォルダのノートを列挙するコードブロックを書けばいいじゃん

先日書いたこの記事。


このとき使ったObsidian Query Languageが使えそう、ってことで使ったんだけど、原因不明で難航。

先日の記事では検索するノートのパスは

query: "path:02_HintOfADay"

って書こう&プラグインの公式ページの記述は間違ってるよって得意げに書いたんだけど、今回のコードブロックで以下の書き方では全く動作しなかった。。。

query:"path:Memo"

よく考えたら先日の記事でObsidian Query Languageプラグインを使ったのはソート順をランダムにしたかったから。

今回はアルファベット順にすればいいのでDataviewプラグインで良いんじゃんって気づいたのはずいぶん時間が経ってから。

最終的に書いたコードブロックはこちら。

```dataview
LIST
FROM "Memo"
WHERE file.name != "MemoIndex"
```

ちょ~シンプルでした。

Obsidianでフォルダ・ノートの並べ替え

Obsidianのエクスプローラでは基本的にアルファベット順でフォルダが並ぶ。フォルダのあとにノートという順。

だからフォルダを自分の使いやすい順に並べようと思うと、頭に番号を振ったりすることになる。こんな感じ。

まぁBASICみたいで悪くはないんだけど、まだ自分はObsidian初心者なので順番を変えたくなったりするわけです。
そうすると頭の番号を振り直すことになる。

単に順番が変わるだけなら大した問題ではないんだけど、プラグインも増えてくると諸々の設定でフォルダとかノートへのパスを指定することも少なくないのでパスが変わるのはメンテナンスの面からいただけない。

意図通りの順番に並べたいけど連番は振りたくない。
そんなときに見つけたのがこのプラグイン。

コミュニティプラグインで「Custom File Explorer Sorting」でみつかるかな。

これを使ったら、下の画像みたいな感じでフォルダの並び替えは意のまま。

フォルダとかノートがガンガン増えるフォルダには向かないけど、全体の構成の骨組みを連番無しで管理できるのはたぶん便利なはず。
しばらく使ってみることにする。

Obsidianでランダムノートを表示するコードブロック

なかなかはまった。

僕のObsiianのとあるフォルダには「判断のヒント」とか「気をつけたいこと」とか「こういうことをしてみよう」みたいな、1日の最初に見てその日の過ごし方の意識付けができるような言葉が列挙されている。
朝テレビでやってる占いコーナーの「今日のラッキーアイテム」みたいな感じかな。もしくは「今日の要注意ポイント」みたいな。

そんなノートがいっぱいあるから、ほぼ毎日見るであろうDaily Noteにその日のヒントになる言葉や文章をランダムで表示したかった。

結論から言うと、これを実現できたのはObsidian Query LanguageっていうプラグインでDaily Noteのテンプレートに書いたコードブロックがこれ。

```oql
name: Hint of a day
query: "path:02_HintOfADay"
template: "list"
limit: 3
sort: "random"
badge: false
```

ここまでたどり着いた経緯はこんな感じ。

「obsidian random note」とかで検索をすると見つかるのは

  • Random note(コアプラグイン)
  • Smart Random Note(コミュニティプラグイン

あたりなんだけど、どれもコマンドでノートをランダムに開く機能で、Daily Noteのテンプレートにコードブロックを置いて毎日ランダムにノートを表示させて確認するような使い方ができない。

そんな中で見つけたのがこの記事。

なるほど、Obsidian Query Languageってプラグインを使うのね。
で、記事通りにコードブロックを作ってみたらなかなか良さげ。
ただ記事にもある通りDaily Noteもリストに出てきちゃう。
プラグインのバグなのかとも思ったんだけど、よく観察したら

query: "~~"

の「~~」での検索はノートのパスに対しても行われるんだけど、ノートの中の文字列に対しても行われてるらしい。
テンプレートにこのコードブロックを書いて毎日のDaily Noteにこのランダム表示をだそうって考えてるわけだから、今後毎日作成するDaily Noteにはこの「~~」っていう文字列が入ることになって、そうなると本来ランダム表示に入ってほしくないDaily Noteが今後どんどん入ってくることになる。

プラグインの公式ページには

query: "'folder1/" 

って書けば「Render a list of 10 random notes in folder1/.」だって書いてあるけど、これは間違いってことね。ノートの中の文字列も検索対象です。ノートの中に「folder1/」っていう文字列があるノートも検索に引っかかります。

ということで調べたのが、queryでパスを指定することができないのかということ。
公式ページのReadMeには

query: path: "'notes"

って書けばパスの指定ができるらしいんだけど、これもうまくいかない。

色々試行錯誤してわかったのは以下。

  • 「path:」もダブルクオーテーションの中に入れる必要がある
  • パスの指定はルートから書く必要はなくてフォルダ名だけでいいらしい

Obsidian内では表示させたいノートは「05_ThemeOfLife/02_HintOfADay」にあるんだけどコードとしては

query: "path:02_HintOfADay"

ということらしい。
情報収集とか試行錯誤でほぼ1日費やしちゃった。