
Obsidian 1.15のCLIで見出しを指定して追記する
どうも!オペ部の西村祐二です!
作業スクリプトの終了時に、Obsidianの今日のデイリーノートへ結果を1行残す。そんな用途で、追記先を「Log」などの見出しで指定できるようになりました。ターミナルから操作するObsidian CLIの daily:append に heading=Log を付けると、その節の末尾に追記できます。
従来の daily:append や、obsidian://... の専用リンクで操作するObsidian URIの append は、ファイルの末尾に追記する操作でした。これらの操作で見出しを指定するには、Advanced URIなどのコミュニティプラグインを使う方法がありました。
2026年11月2日に一般公開されたObsidian 1.15で、URIとCLIの追記に見出しを指定する heading が加わりました。この記事では、追記される位置、見出しの指定方法、URIで空行を制御する spacing、見出しが見つからないときの挙動を、テスト用のVaultで確かめます。1.14.5との違いも比べます。
1.15で増えたパラメータ
- 対象バージョン / 日付: Obsidian 1.15.0 デスクトップ(2026-10-22に早期アクセス版(Catalyst)として先行公開、2026-11-02に一般公開)
- 変更の要点: 変更履歴に、URIとCLIで見出しへのappend / prependができるようになったことと、追記する内容の前後の改行を制御できるようになったことが書かれています
- 公式ドキュメント: 公式ヘルプのリポジトリのPR #1137で、Obsidian URIとObsidian CLIのページにパラメータが追記されました
| 経路 | 対象 | 1.15で使えるパラメータ |
|---|---|---|
| URI | new / daily アクション |
heading(append か prepend と一緒に指定)、spacing=auto(デフォルト) / newline / inline |
| CLI | append / prepend / daily:append / daily:prepend |
heading=<name>。改行の有無は従来からある inline フラグで切り替える |
見出しの下に追記するCLIとURIの書き方
CLIでデイリーノートの見出しに追記する場合は、次のように書きます。CLIを有効にし、今日のデイリーノートに ## Log と ## Tasks を用意してから実行します。今日のノートがまだない場合は、後述のテンプレートに見出しを設定しておきます。通常のノートを指定する3つ目の例では、Sample.md に ## Log が必要です。
# Log 見出しの節の末尾に追記
obsidian daily:append heading=Log content="- 10:30 レビュー依頼に返信"
# Tasks 見出しの先頭に追記
obsidian daily:prepend heading=Tasks content="- [ ] 見積もりを送る"
# デイリーノート以外のノートを指定する場合
obsidian append path=Sample.md heading=Log content="- 10:30 追記"
obsidian コマンドを使うには、Obsidianの設定(公式ヘルプの表記では Settings → General → Command line interface)でCLIを有効にし、案内に従ってPATHに登録します。macOSでは /usr/local/bin/obsidian が、アプリ内の obsidian-cli へのシンボリックリンクとして作られます。公式ヘルプによると、CLIにはインストーラーのバージョン1.12.7以上が必要で、Obsidianのアプリが起動している必要があります(起動していなければ、最初のコマンドで起動します)。Vaultが複数ある場合は、obsidian vault=<名前> daily:append ... のように vault= を最初のパラメータに付けます。
URIの場合は append=true(または prepend=true)と heading を組み合わせます。既存のノートへの追記も、URIでは new アクションに append=true を付けます。デイリーノートには daily アクションを使います。箇条書きを1行ずつ足すなら、spacing=newline を付けておくと空行が入りません。
open "obsidian://daily?vault=HeadingTest&append=true&heading=Log&spacing=newline&silent=true&content=-%2011%3A00%20%E9%9B%BB%E8%A9%B1"
vault は自分のVault名に置き換えます(この例はテスト用のVault名です)。content などの値はURLエンコードが必要で、上の例は - 11:00 電話 を追記します。silent=true を付けると、追記したノートを開きません。
試した環境
- macOS 26.7.2(Apple silicon)
- Obsidian 1.15.0(インストーラーのバージョンは1.12.7)、比較用に1.14.5
- テスト用のVault「HeadingTest」
- コアプラグインのデイリーノート: フォルダー
Daily、形式YYYY-MM-DD、テンプレートTemplates/Daily
PATHへの登録はせず、アプリ内の obsidian-cli(/Applications/Obsidian.app/Contents/MacOS/obsidian-cli)を直接実行しました。通常のCLI登録では、このファイルへのシンボリックリンクが作られるため、コマンド例は obsidian で書いています。URIの多くは obsidian-cli "obsidian://new?..." のように obsidian-cli に渡して開きました。new と daily の例を1つずつ open コマンドでも開き、同じ位置に追記されることを確かめています。
テンプレートから作ったデイリーノートに追記する
今日のデイリーノートがまだない日に daily:append を実行すると、デイリーノートが作られてから追記されます。テンプレートを設定していないと、空のノートが作られて「見出しが見つからない」エラーになります(後述)。そこで、テンプレートに追記先の見出しを入れておきます。
# {{date}}
## Tasks
## Log
## Memo
今日のデイリーノートがない状態で、CLIを3回実行しました。
obsidian daily:append heading=Log content="- 10:00 定例ミーティング"
obsidian daily:append heading=Log content="- 10:30 レビュー依頼に返信"
obsidian daily:prepend heading=Tasks content="- [ ] 見積もりを送る"
Added to: Daily/2026-11-03.md
Added to: Daily/2026-11-03.md
Added to: Daily/2026-11-03.md
1回目の実行でテンプレートからデイリーノートが作られ、内容はそのまま ## Log の下に入りました。2回目の内容は1回目の次の行に続きました。
# 2026-11-03
## Tasks
- [ ] 見積もりを送る
## Log
- 10:00 定例ミーティング
- 10:30 レビュー依頼に返信
## Memo
テンプレートのように見出しの下が空行だけの節では、内容はその空行の後に入りました。ソースでは、追記した行のすぐ次の行が ## Memo になります。
次の画像は、追記後のノートをObsidianで開いたところです。Tasksにチェックボックス、Logに2行の箇条書きが入っています。

節のどこに入るか
見出しから、次に現れる同じレベルまたは上位レベルの見出しの手前までが1つの節として扱われます。append で足した内容は節の末尾に、prepend では見出しのすぐ下(見出しの直後が空行なら、その空行の後)に入ります。
次の図は自作した概念図で、公式の構成図ではありません。CLIとURIのどちらから指定しても、追記先の範囲は同じです。## Log の節は ## Notes の手前までで、子見出しの ### 午後 も含まれます。

子見出しや既存の行がある場合を見るため、別のノート Sample.md を用意しました。
---
tags: daily
---
# 2026-11-03
## Tasks
- [ ] 既存タスク
## Log
- 09:00 朝会
### 午後
- 13:00 レビュー
## Notes
メモ
次のコマンドを実行しました。
obsidian append path=Sample.md heading=Log content="- 10:30 追記"
## Log の直後ではなく、子見出し ### 午後 の最後の行の後に入りました。
### 午後
- 13:00 レビュー
+- 10:30 追記
## Notes
prepend heading=Tasks では見出しのすぐ下に入り、既存のタスクは1行後ろにずれました。
## Tasks
+- [ ] 先頭に入るタスク
- [ ] 既存タスク
ほかに確かめた条件と結果は次のとおりです。
| 条件 | 結果 |
|---|---|
| 見出しの下に何もない(すぐ次の見出しが来る) | append も prepend も見出しのすぐ下に入る |
| ファイル末尾の節(末尾に改行なし) | 最後の行の次に入り、末尾の改行は追加されない |
CLIで content に \n を含める |
改行として扱われ、複数行が入る |
CLIで inline を付ける |
改行せず、節の最後の行に続けて書かれる(メモ → メモ(inline で追記)) |
headingに書いた名前が一致する条件
heading に何を書けば一致するかも確かめました。
| 指定 | 結果 |
|---|---|
heading=Log |
## Log の節に入る |
heading=log |
大文字小文字を区別せず、## Log の節に入る |
heading="## Log" |
# を付けても ## Log の節に入る |
heading=午後 |
子見出しの ### 午後 の節に入り、## Notes の手前で止まる |
heading="Log#午後" |
Error: Heading “Log#午後” not found in file. になり、ファイルは変わらない |
同じ名前の ## Log が2つあるノートで heading=Log |
1つ目の ## Log の節に入る |
子見出しは名前だけで指定でき、Log#午後 のように親の見出しからたどる書き方は、1.15.0では一致しませんでした。同じ名前の ## Log が2つある場合は、1つ目の節に入りました。
URIではspacingで空行の入れ方を選ぶ
URIは spacing を省略すると auto になり、既存の内容との間に空行を1つ挟みます。CLIのデフォルト(改行だけ)とは結果が違います。
open "obsidian://new?vault=HeadingTest&file=Sample&append=true&heading=Log&content=-%2010%3A30%20%E8%BF%BD%E8%A8%98"
### 午後
- 13:00 レビュー
+- 10:30 追記
+
## Notes
- 13:00 レビュー と - 10:30 追記 の間に空行が入ります。Obsidianの閲覧モードで確かめると、2つの項目は同じリストのままでしたが、各項目が段落(<p>)で囲まれた「ゆるいリスト」として表示されました。spacing=newline を付けると、CLIと同じく直前の行の次に入り、項目は段落になりませんでした。
### 午後
- 13:00 レビュー
+- 10:30 追記
## Notes
spacing=inline では改行が入らず、CLIの inline と同じく節の最後の行に続けて書かれました。
prepend=true で spacing を省略した場合は、見出しのすぐ下に入り、既存の内容との間に空行が1つ挟まりました。
## Tasks
+- [ ] 先頭
+
- [ ] 既存タスク
auto は空行を挟むので、段落を足す用途に合います。箇条書きやログを1行ずつ足すなら newline を使います。
見出しが見つからないとき
見出しが見つからない場合、CLIもURIも追記せず、ファイルを変えませんでした。ただし、エラーの伝わり方が違います。
CLIはエラーを標準出力に表示します。1.15.0では、このときも終了コードは0でした。
obsidian append path=Sample.md heading=Nothing content="- 存在しない見出し"
echo "exit=$?"
Error: Heading “Nothing” not found in file.
exit=0
シェルスクリプトから呼ぶ場合、1.15.0では終了コードで失敗を判定できないため、標準出力が Error: で始まるかを見て判定します。今後のアップデートで終了コードの扱いが変わる可能性はあります。
URIでは、Obsidianの画面に通知が出ます。次の画像は、存在しない見出し Logs を指定してURIを開いたときの画面です。右上に Error: Heading “Logs” not found in file. と表示され、ノートは変わっていません。

URIで heading を append / prepend なしで指定した場合も、ノートは変わらず、The “heading” URI parameter requires “append” or “prepend.” という通知が出ました。
追記先のノートがまだないと、空のノートが作られたうえでエラーになります。
デイリーノートなら、最初の例のようにテンプレートに見出しを入れておけば、その日の1回目の追記から見出しの下に書き込まれます。URIの daily アクションで、今日のノートがない状態から追記する場合は試していません。
1.14.5ではheadingが無視される
比較のため、1.14.5で同じCLIコマンドを実行し、同じURIを開きました。CLIはエラーを出さずに Appended to: Sample.md と表示し、どちらも heading が無視されてファイルの末尾に追記されました。CLIとURIのどちらも、次の差分になりました。
## Notes
メモ
+
+- 10:30 追記
\ No newline at end of file
1.14.5の obsidian help append には heading の行がありません。複数の端末でObsidianを使う場合は、スクリプトに組み込む前に各端末で obsidian version を実行し、1.15以上か確かめます。
obsidian version
1.15.0 (installer 1.12.7)
まとめ
- Obsidian 1.15で、見出しの節を指定して追記できる
headingが加わりました。対象はCLIのappend/prepend/daily:append/daily:prependと、URIのnew/dailyアクションです appendで足した内容は子見出しを含む節の末尾に、prependでは見出しのすぐ下に入ります。見出し名は大文字小文字を区別せず、子見出しは名前だけで指定します。同じ名前の見出しが複数あると、1つ目に入ります- URIは
spacingを省略すると空行を挟みます。箇条書きを1行ずつ足すならspacing=newlineを付けると、CLIと同じ結果になります - 見出しが見つからないと追記されません。1.15.0のCLIは終了コード0のまま標準出力にエラーを表示し、URIは通知を出します
- 未作成のデイリーノートに追記するなら、テンプレートに見出しを用意します
- 1.14.5では
headingが無視されてファイル末尾に入ります。使う前にobsidian versionで1.15以上か確かめます
誰かの参考になれば幸いです。









