これは何?
Obsidian 1.12からObsidian CLIが使えるようになった。
Obsidian CLIがあることでノートの管理をLLMに任せるのがやりやすくなりそうなのでいろいろ試してみる。
環境
cat /etc/os-release| head -n 1
PRETTY_NAME="Ubuntu 24.04.4 LTS"
obsidian version
1.12.4 (installer 1.12.4)
Obsidianが1.12以下の方はアップデートが必要
とりあえず、Obsidian CLIを動かしてみる
Obsidian CLIを有効化する。
ObsidianのデスクトップアプリからCLIを有効にする。General --> Advanced --> Command line interface
有効にすると~/.local/bin/obsidianが作成されPATHが通る。
which obsidian
/home/sigma/.local/bin/obsidian
CLI経由でdaily noteを編集してみる
obsidian daily:append content="- [ ] test"
Skillsに使うファイル検索系のコマンド
obsidian search query=TDD path=Clippings limit=3 format=text
Clippings/論理的思考力と論理的検証力は違うかもという話.md
Clippings/自動テストとテスト駆動開発、その全体像.md
Clippings/低スキル志向な現場とは何か.md
obsidian search:context query=Haskell
Clippings/Algebraic data type.md:76: - [Concrete data type](https://wiki.haskell.org/index.php?title=Concrete_data_type "Concrete data type")
Clippings/Algebraic data type.md:77: - [Concrete view](https://wiki.haskell.org/index.php?title=Concrete_view "Concrete view")
Clippings/Algebraic data type.md:78: - [Indirect composite](https://wiki.haskell.org/index.php?title=Indirect_composite "Indirect composite")
公式ドキュメントに明記されていないですが、tag検索とかも効きそう。
obsidian search query=tag:関数型言語 format=text | wc -l
18 # tag検索
obsidian search query=関数型言語 format=text | wc -l
29 # 文字列検索
SkillsにしてCodexから使ってみる
曖昧検索用のSkillsを作ってみた。
- ユーザがファイルの探索を依頼
-
obsidian search及びobsidian search:contextを使ってファイルを探す -
obsidian readを使い、ファイルの中身を見て検索 - タイトルとファイルPathを返す
人間がコードを書く時間よりもレビューに費やす時間が長くなってきているという内
容が書かれているノートをローカルのobsidianから探して あいまい検索skillsを
使ってほしい。@./skills/配下にある
• 依頼内容は「/home/sigma/obsidian のローカルノートから、“人間がコードを書く時
間よりレビュー時間が長くなってきている”内容を含むノートを、./skills 配下のあ
いまい検索スキルを使って探す」ですね。まず ./skills の実体と利用可能なスキル
を確認して、使える形で検索を実行します。
total 128
… +22 lines
drwxrwxr-x 15 sigma sigma 4096 Mar 1 13:50 ..
drwxrwxr-x 3 sigma sigma 4096 Mar 1 13:32 obsidian-cli-fuzzy-search
• Explored
└ List rg --files
Search SKILL\.md$|skill
───────────────────────────────────────────────────────────────────────────────
• ./skills/obsidian-cli-fuzzy-search が見つかったので、このスキルの SKILL.md を
読んで手順どおりに検索します。
• Explored
└ Read SKILL.md
• Ran obsidian --help
└ Obsidian CLI
… +414 lines
eval Execute JavaScript and return result
code=<javascript> - JavaScript code to execute (required)
───────────────────────────────────────────────────────────────────────────────
• スキル手順に沿って、まず広めの search:context を複数クエリで回し、特徴語が出
る候補を絞り込みます。
• Ran obsidian search:context query='書く 時間 より レビュー' limit=20
└ (no output)
• Ran obsidian search:context query='human code writing review time longer'
│ limit=20
└ Clippings/reference/The End of Programming as We Know It.md:19: It is not
the end of programming. *It is the end of programming as we know it today*.
… +575 lines
evaluation of a conversational agent for mobile information tasks,” IEEE
Transactions on Human-Machine Systems, vol. 47, no. 6, pp. 1017–1028, 2017.
───────────────────────────────────────────────────────────────────────────────
• 候補がかなり多いので、search で厳密化して上位1〜3件に絞り、最後に read で本文
照合します。
• Ran obsidian search query='コードを書く時間よりも レビューに費やす時間が長く'
• Ran obsidian search query='コードを書いている時間よりも コードレビュー'
│ format=json limit=10
└ No matches found.
───────────────────────────────────────────────────────────────────────────────
• 一致候補は1件に絞れたので、obsidian read と行検索で本文中の該当記述を確認しま
い|ボ
トルネック in AIエージェント時代に、テスト駆動開発(TDD)は「ガード
レー
ル」になる.md
• Ran obsidian read path='Clippings/AIエージェント時代に、テスト駆動開発(TDD)
│ は「ガードレール」になる.md' | sed -n '360,430p'
└ **── 極端な話、それが1人になることはありえるでしょうか?**
… +80 lines
レビューでいられるかというと、現時点のAIにはそこまでの能力はなさそうに思え
ます。
• Explored
└ Search レビューに費やす時間|レビュー.*時間.*長|コードを書く時間.*レビュー|
書
く.*より.*レビュー|レビューして返せばよい
───────────────────────────────────────────────────────────────────────────────
• 追加で全文検索したところ、より直接一致する候補が2件見つかりました。obsidian
read で両方確認して、最適な1件を確定します。
• Ran obsidian read path='Permanent/conversation/20251023-spz-colab-1on1.md' |
│ sed -n '88,108p'
└ ---
… +18 lines
- 何かしらエンジニア領域以外のドメインに詳しくなる
結論:
• Ran obsidian read path='Clippings/reference/Beyond the IDE.md' | sed -n
│ '60,84p'
└ ---
## **Coding with Genies**
… +22 lines
IDEの次のツールに期待
───────────────────────────────────────────────────────────────────────────────
• {
"title": "20251023-spz-colab-1on1",
"path": "Permanent/conversation/20251023-spz-colab-1on1.md"
}
でも、Skills使わないほうが精度よくね??
自分のObsidianのVaultには1000くらいしかファイルがないため、ファイル検索に関してはSkillsを使わないほうが短い時間で、関連するファイルをヒットさせることができた。
もっと別の領域に対してskillsを作ったほうが良いのかも知れない。
おまけ: 他に気になるコマンド
タグのカウント
AIにタイポしたtagを探してもらったり、マージできそうなtagを提案してもらうとか良さそう。
obsidian tags counts
#松下幸之助 5
#気象衛星 1
#海外 1
#生産性 1
#産総研 2
#発信 2
#発表資料 1
#登山 1
#白濱美兎 1
#研究 1
#神道 1
#科学 1
#秘密計算 1
#競技プログラミング 16
#組合 2
#統計 1
#翻訳 1
#育児 2
#脳科学 3
#自動運転 1
#自己啓発 5
#英語 1
#裁縫 1
#計算量 4
#論文 3
#転職 24
#辞書 2
#退職エントリー 1
#週刊SPA! 1
#関数型言語 18
#集中力 2
#雑学 1
#面接 1
ファイル一覧表示してrename
一覧表示してタイポしているものやファイル名がイケてないものをrenameしてもらうとか良さそう。
obsidian files
Permanent/おみやげ.md
Permanent/生成AIの時代こそ、自分用のメモを作ろう.md
README.md
template/annotator.md
template/clipping.md
template/cook.md
template/daily.md
template/effectivejava.md
template/kindle_old.md
template/permanent.md
template/良いコード悪いコード.md
obsidian rename file='貪欲法とは アルゴ式.md' name='貪欲方とは.md'
(テンプレートからファイル作成)
これはAI関連なくやりたいこと。
自分は技術書のメモを取る際には内容ごとにObsidianのノートを分割している。
本に対応するtemplateを指定してShell Scriptでノートを作るとかに良さそう。
obsidian create template=effective_java path=Literature name=Static Factoryメソッド open


