0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Obsidian には デスクトップアプリやモバイルアプリ上での GUI による操作のみでなく、CLI (コマンドアラインインターフェース) も用意されている。
今回は、CLI を利用して Obsidian を触ってみた。

参考

  • 公式

https://obsidian.md/help/cli

  • 過去関連記事

前提

  • Mac: Apple M1 Pro, Sequioa 15.7.7
  • ターミナル: iTerm2 Build 3.5.10
  • Obsidian: Version 1.12.7 (Installer 1.8.9)

インストール

設定 > Obsidian について > コマンドラインインターフェースをトグルイン

image.png

利用方法

  • TUI(Terminal User Interface)
    • ターミナル上で、obsidian コマンドを実行し、インタラクティブモードを発動する
  • 都度 obsidian + 何かのコマンドを実行する

本記事では、TUI による解説とする。

試したコマンド集

全てのコマンドを網羅するのではなく、有用(だと自分が感じた)なものを紹介していくスタイルとする。

tags

タグ一覧を取得する。
GUI 上からはどんなタグがいくつくらいあるのかが見えにくい。
統計情報を確認する上で使い勝手が良さそう。

file, path

# 指定したファイルに付与されたタグ情報
tags file="カフェテーブル制作"
#dyi
#life

# 同様に、指定したパスに付与されたタグ情報
tags path="Path/to/カフェテーブル制作.md"
#dyi
#life

ちなみに、tags file="Path/to/カフェテーブル制作.md" は OK で逆に tags path=" カフェテーブル制作" は NG で、後者は '.md' も必須。
tags file の方が使いやすそう。

おまけ

![[Pasted image 20260701051234.png]]

total

# 指定したファイルに付与されたタグ数
tags total file="カフェテーブル制作"
#2

# 順番は問わない
tags file="カフェテーブル制作" total
#2

# 何も指定しないと、全タグ数を取得
tags total
#163

counts

# 指定したファイルに付与されたタグと数をセットで
tags counts file="カフェテーブル制作"
#dyi 1
#life 1

# タグ数を降順で表示(デフォルトでは名前順)
tags counts file="🐞k-personal" sort=count
#life	17
#移住	11
#finance	10
#技術検証	5
#tool	3
#trial	2
#output	2
#devenv	2
#learning	1
#dev	1
#gudget	1
#cli	1
#obsidian	1
#生産性向上	1
#contribution	1
#lib	1
#子育て	1
#notion	1
#admin	1

# 何も指定しないと、全タグ情報を取得
tags counts
#<省略>

tag

特定のタグ情報を取得する。

name

# 指定したタグがどのファイルで使われているか?
tag name="life"
#daily/2024-04-20.md
#Kanban/prj-work/cards/年末調整時、住宅ローン控除確認する.md
#Kanban/prj-personal/🐛 k-personal.md
#Kanban/prj-personal/🐞k-personal.md
#Kanban/prj-personal/cards/🍠生育記録2026🍠.md
#Kanban/prj-personal/cards/Codmon データ抽出.md
#Kanban/prj-personal/cards/Home Finance の整理.md
#Kanban/prj-personal/cards/カフェテーブル制作.md
#Kanban/prj-personal/cards/みちの動画視聴用ページ用意する.md
#Kanban/prj-personal/cards/育休中にやったこと・あったことまとめ.md
#Kanban/prj-personal/cards/植物のお手入れ.md
#Kanban/prj-personal/cards/生活のタスク.md
#Kanban/prj-personal/cards/第三子名前候補.md
#notes/Polar Health Tracker.md
#notes/Rhinoceros.md

search

vault 内のドキュメントを検索する。
ファイルのタイトル、中身が検索対象となる。

# キーワード検索
search query="obsidian"
#notes/Obsidian CLI.md
#notes/ぼくの Obsidian.md
#notes/Obsidian タグあれこれ.md
#notes/obsidian を使うにあたっての心構え、Code of Conduct.md
#notes/Obsidian sync -> Dropsync.md
#notes/2025目標.md
#daily/2025-10-06.md
#daily/2024-03-29.md
#daily/2024-03-22.md
#daily/2024-01-04_tmp.md
#Tasks Plugin - Review and check your Statuses 2024-08-05 11-37-29.md
#Tasks Plugin - Review and check your Statuses 2024-08-05 11-37-24.md
..

# 検索結果カウント
search query="obsidian" total
#12

# ファイル名にキーワードを含むもの
search query="file:obsidian"
notes/Obsidian CLI.md
notes/ぼくの Obsidian.md
notes/Obsidian タグあれこれ.md
notes/obsidian を使うにあたっての心構え、Code of Conduct.md
notes/Obsidian sync -> Dropsync.md

# 検索結果カウント
search query="file:obsidian" total

# 指定したタグがついたファイル
search query="tag:life"
#notes/Rhinoceros.md
#notes/Polar Health Tracker.md
#daily/2024-04-20.md
#Kanban/prj-personal/🐞k-personal.md
#Kanban/prj-personal/🐛 k-personal.md
#Kanban/prj-personal/cards/第三子名前候補.md
#Kanban/prj-personal/cards/🍠生育記録2026🍠.md
#Kanban/prj-personal/cards/育休中にやったこと・あったことまとめ.md
#Kanban/prj-personal/cards/生活のタスク.md
#Kanban/prj-personal/cards/植物のお手入れ.md
#Kanban/prj-personal/cards/カフェテーブル制作.md
#Kanban/prj-personal/cards/みちの動画視聴用ページ用意する.md
#Kanban/prj-personal/cards/Home Finance の整理.md
#Kanban/prj-personal/cards/Codmon データ抽出.md
#Kanban/prj-work/cards/年末調整時、住宅ローン控除確認する.md
# →これは tag name="life" と同じ結果となる
# ただし、カウント数は異なる
search query="tag:life" total
#15 -> ヒットしたファイル数
tag name="life" total
#131 -> ヒットした箇所数

# 大文字小文字の区別
search query="file:obsidian" total
#11
search query="file:obsidian" case total
#2
search query="file:Obsidian" case total
#9

search:context

# 指定したキーワードで、それを含むファイルの <パス名:行数:該当箇所> を一覧表示
search:context query="obsidian"
#wiki/Obsidian 周り操作リスト.md:3: - obsidian
#wiki/Obsidian 周り操作リスト.md:8: - [x] Obsidian フォルダを google drive などでシンクする 📅 2024-01-12 ✅ 2024-01-27
#wiki/Obsidian 周り操作リスト.md:20: - [/] その日の残タスクを確認できる note と、Day Planner Timeline を別ノートにできないか?📅 2024-01-12 #obsidian
#wiki/Obsidian 周り操作リスト.md:22: - [/] `Note Refactor` をもっとうまく使いたい📅 2024-01-19 #obsidian
...

# json フォーマットにすると少し幸せになれるかもしれない(jq コマンド使うために TUI モードではなく直接 obsidian コマンド叩く)
obsidian search:context query="obsidian" format=json | jq
#[
#  {
#    "file": "wiki/Obsidian 周り操作リスト.md",
#    "matches": [
#      {
#        "line": 3,
#        "text": "- obsidian"
#      },
#      {
#        "line": 8,
#        "text": "- [x] Obsidian フォルダを google drive などでシンクする 📅 2024-01-12 ✅ 2024-01-27"
#      },
#      {
#        "line": 20,
#        "text": "- [/] その日の残タスクを確認できる note と、Day Planner Timeline を別ノートにできないか?📅 2024-01-12 #obsidian"
#      },
#      {
#        "line": 22,
#        "text": "- [/] `Note Refactor` をもっとうまく使いたい📅 2024-01-19 #obsidian"
#      },
#      {
#        "line": 23,
#        "text": "- Obsidian Memos で作成したメモが daily/ note の特定のヘッダー配下 (`Memos`) に溜まっていくが、この特定の箇所のみを別 note に起こすようにする"
#      },
#      {
#        "line": 28,
#        "text": "- [ ] Kanban 以外の カンバンプラグイン見てみる `obsidian projects`, `CardBoard` 📅 2024-01-28 ⏫"
#      }
#    ]
#  },
#  ..
#]

commands

コマンド一覧を取得する。

# コマンド一覧取得(プラグインによるものも含む)
commands

# 指定したコマンドの取得
commands filter=workspace
#workspace:close
#workspace:close-others
#workspace:close-others-tab-group
#workspace:close-tab-group
#workspace:close-window
#workspace:copy-full-path
#workspace:copy-path
#workspace:copy-url
#workspace:edit-file-title
#workspace:export-pdf
#workspace:goto-last-tab
#workspace:goto-tab-1
#workspace:goto-tab-2
#workspace:move-to-new-window
#workspace:new-tab
#workspace:new-window
#workspace:next-tab
#workspace:open-in-new-window
#workspace:previous-tab
#workspace:show-trash
#workspace:split-horizontal
#workspace:split-vertical
#workspace:toggle-pin
#workspace:toggle-stacked-tabs
#workspace:undo-close-pane

command

コマンドを実行する。

# 指定したコマンドを実行する(現在のアクティブなタブのトグル切り替え)
command id=workspace:toggle-pin
#Executed: workspace:toggle-pin

tasks

タスク一覧を取得する。

# タスク一覧取得
tasks

# 指定した状態のタスク一覧
tasks status=x
tasks status=/
tasks status=-

# 未着手タスク
tasks todo
# これでも良い?
tasks status=

# タスク数をカウント
# 全タスク数
tasks total
# ->1167
# 完了タスク数
tasks total done
# ->592
# 未完了タスク数
tasks total todo
# ->575

wordcount

単語数と文字数をカウントする。

# 指定したファイルの単語数と文字数を取得
wordcount file="xxxx.md"
#words: 112
#characters: 283

# GUI の方で現在アクティブなタブで開いているファイルの単語数と文字数を取得
wordcount
#words: 1858
#characters: 3130

plugins

プラグイン一覧を取得する。

# 全プラグイン一覧取得
plugins
# コアプラグイン一覧取得
plugins filter=core
# コミュニティプラグイン一覧取得
plugins filter=community
# 有効化されたコミュニティプラグイン一覧取得(バージョン付き)
plugins:enabled filter=community versions
#calendar	1.5.10
#cm-editor-syntax-highlight-obsidian	0.1.3
#dataview	0.5.66
#github-embeds	1.0.7
#github-sync	1.0.3
#markwhen	0.0.7
#note-refactor-obsidian	1.8.2
#obsidian-icon-folder	2.11.5
#obsidian-kanban	1.5.3
#obsidian-linter	1.30.0
#obsidian-memos	2.3.47
#obsidian-minimal-settings	7.5.0
#obsidian-outliner	4.8.1
#obsidian-tasks-plugin	6.2.0
#obsidian-to-notion	0.7.6
#periodic-notes	0.0.17
#templater-obsidian	2.2.3
#terminal	3.24.0

plugin

プラグイン情報を取得したり、有効無効化を行う。

# 指定したプラグイン情報の取得
plugin id=terminal
#type	community
#name	Terminal
#version	3.24.0
#author	polyipseity
#enabled	true
#description	Integrate consoles, shells, and terminals.

# 指定したプラグインを有効化する(無効化されている前提)
plugin:enable id=markwhen
# Enabled: markwhen

property

Obsidian にデフォルトで用意されている tags プロパティについての操作を行う。
プロパティそのものについての説明は こちら

# GUI でアクティブなファイルに対して指定したプロパティに単一の値を設定する
property:set name=tags value=foo type=text
# tags: foo

# GUI でアクティブなファイルに対して指定したプロパティに複数の値を設定する
#  value はスペースなしカンマ区切りであることに注意
property:set name=tags value=foo,bar type=list
# tags:
#   - foo
#   - bar

アーキテクチャ

  • Obsidian CLI は、Obsidian Desktop App と連動して動く
    • CLI -> Desktop App にリクエスト
      • App 側で受け取ったリクエストは、Terminal プラグインで確認できる
    • そのため、CLI を使用するには App が起動している必要がある (Headless Mode の場合を除く)

CLI からのリクエスト確認

Headless Mode

Obsidian CLI には、デスクトップアプリを立ち上げなくても動作する環境が用意されている。
ただし、それには、有料の Obsidian Sync サービスの利用が必要となる。
今回はスキップ。

Obsidian CLI の使い所

自動化や AI との親和性が高いと感じている。具体的には

  • 管理業務
    • タグ、コマンド、ホットキー、プラグイン、プロパティ等の情報確認
  • 何らかの自動化、パイプライン処理
    • 大量のドキュメントから一気に検索をかけて情報収集、それを何かに利用
    • プログラムや AI エージェントからコマンドを実行させる
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?