Q. お前最初Cursor連携に抵抗を示してなかったか?
A. 結構便利だったんでェ……
> [!info]
> 画像みにくいかも。Obsidian Publishでいい設定できないかなあ。
## 保管庫の話
### 概要
私は主に2つの保管庫を運用・公開しています。
- [[Home]](このサイト/Obsidian Publish)
- [ゆづなメモ](https://dg.ariestechgarden.com/) (Obsidian + Quartz)
どんなものを書いているのかは、この子たちを見ていただければわかるかも。
### ファイル構成
ファイル構成は(一部構成やフォルダー名は違うけど)2つともこんな感じ。
```
- Obsidian構成(隠し)
- Cursor構成(隠し)
- Obsidianファイル
- Inbox(メモを入れる置き場)
- Extra(ブログとメモ供用)
- MOC(他の人がアクセスしやすくするための目次)
- Template(ignore)
- JunkBox(ignoreしたいCanvas・Dataviewファイルなど)
- その他設定ファイル(cursorignore・gitignore)
```
Obsidian保管庫内は5つのフォルダーで運用。Inbox・MOC・Extra内のファイルを公開、TemplateとJunkBoxは非公開にしています。
## 下準備編
連携させるために行ったことは主に2つ。それは「ObsidianとCursorを同時に起動する」ことと、「各種設定・Cursor拡張機能の整備」です。あとはmdcの整備もあるのですが、これについては後述します。
### Windos バッチファイルで同時起動する
ObsidianとCursor同時起動はバッチファイルで解決。適当なテキストエディターで新規作成→下記の項目を記入して保存します。
```cmd
start "" "obsidian://open?vault=<開きたい保管庫名>"
start "" "<Cursor workdpaseのパス>"
```
起動するときに2つとも起動すればええやろの精神。
### Mac ショートカットでアプリを同時起動する
Macはショートカットでやりました。こちらも開きたいCursor Workspaceファイルと保管庫のURIを取得して開くだけの力技仕様。
<img src="https://image.ariestechgarden.com/Extra/image/obsidian_cursor_1.webp">
Macのショートカットには下記の2つを入力します。
- ファイルを開く(保管庫のルートファイルに作成したCursor Workspaceファイル)
- X-Callback URLを使用して開く
まずはCursorでCursor Workspaceファイルを作成し、ルートフォルダーに置きます。WorkspaceファイルをエクスプローラーもしくはFinderでダブルクリックするとWorkspaceを開ける原理を応用し、ショートカットアプリで開くことにしました。
X-Callback URLはObsidianのURLスキームを入力します。`obsidian://open?vault=保管庫名`保管庫名は自分がつけた保管庫名にしてください。
### Cursorの拡張機能を整備する
Obsidian側ではとくに設定はなし。強いて言うなら「デフォルトアプリで開く」にショートカットを設定したくらい。(デフォルトアプリをCursorに指定すると、CursorでMarkdownファイルが開きます)
一方、Cursor側には拡張機能をいくつか入れました。
- Auto Time Stamp(フロントマターに更新日を入れる)
- Markdown All in One(Markdown補完)
- テキスト校正くん
人によってはFoams(Obsidian化できるプラグイン)などを入れてるかも。
## 大まかなフロー
アイディアやまとまった言葉を書くときにObsidianを使います。WebクリップやLLMの回答の保管、読書メモ、デイリーメモなどはしていません(それをやると面倒になるので)。
### 1. メモ・ブログ記事を書く
思いついた言葉・文章をひたすらObsidianで書き綴ります。QuickAddでテンプレートを呼び出してひたすら書いていきます。文章を書くことに関してはAIに頼っていません。ここが楽しいんだもの。
### 2. 文章・フロントマターをCursorで整える
```YAML
---
create: 2024-09-29
updated: 2025-04-01
publish: true
permalink: id240929092311
image: https://image.ariestechgarden.com/Extra/cover/image0001.webp
description: ObsidianのMOC
tags: [MOC]
---
```
```yaml
---
uid: 240505141736
create: 2024-05-05
update: 2025-01-09T08:27:43.4343+09:00
title: &title Obsidian
aliases: [*title]
ogp: image0014.webp
description: ObsidianのMOC
tags: [Contents, MOC]
---
```
ヒツジさんのYAMLはこんな感じです。上がObsidian Publish(ファイル名+パーマリンクID運用)で下がObsidian Quartz(UID運用)。Cursorでいじるのは「update・publish・description」の項目です。`description`はいわゆる概要で、Google検索の時に出てくる小さな説明文みたいなやつです。
Cursorでやっていることはこんな感じ。
1. Cursorで文章を校正
2. メモを読み出して要約し、`description`に記入
3. 公開フラグをTrueにする
4. 手動で保存し、タイムスタンプを今日にする
この辺の細かい設定は後述します。
### 3. 公開する
Obsidian PublishかQuartzで公開します。Obsidian Publishはいったん戻る必要がありますが、QuartzならGitを動かせばいいので比較的楽。
### 4. 過去記事をメンテナンスする
メンテナンスに関してはObsidian・Cursor両方でやっています。Obsidianは内部リンクやMOC周りで大雑把に行い、CursorでAIに尋ねながら文章やリンクを整理しています。この辺りも後述します。
## mdcで快適に
Q. mdcって何よ
A. Cursorのルールファイル。「こうしてほしい」「これを読み込むな」といったルールを書き込む
いわゆる「cursorules」をファイル分割して指示できるようになったものです。毎回チャット欄で説明してもいいのですが、mdcに設定しておくとかなり楽になるのでオススメ。
### mdcファイルの基本
保管庫の中に`.cursor/rules`フォルダーを作成。`rules`フォルダーの中に、`hoge.mdc`ようなファイルを作成します。
ファイルの中身はこんな感じです。
<img src="https://image.ariestechgarden.com/Extra/image/obsidian_cursor_2.webp">
一番上の選択肢を「Always」にしています。(この辺あんまりよくわかってない)そして、Obsidianのフロントマターの感覚で設定を書いていきます。
```
---
description: Markdownファイルの要約を行う
globs: "Inbox/*.md","MOC/*.md"
---
# 指示
ユーザーが「要約して」を言ってきたら50文字以内に要約し、ファイル7行目にあるフロントマター`description`に記入してください。
```
`description`は概要。`globs`はこのルールを適用する対象ファイル・拡張子を記入(複数選択可能)。
本文のところにCursorにやってもらいたいことや説明したいことをひたすら書いていく感じです。ちなみに書いたらCursorの再起動もしくはWorkspaceの再読み込みが必要なので、そこだけ注意が必要。(1敗)
### mdcレシピ集
最後に自分が使っているものをいくつか紹介します。
#### 校正
```
---
description: 校正チェックリスト
globs: "Inbox/*.md"
---
# 指示
ユーザーが送付した文章を校正し、`Check/校正.md`に上書きしてください
上書きする際に、4行目のフロントマター`Publish`を`false`にする
半角括弧`[]`は修正しない
## 校正リスト
1. 文法とスペルの確認
- 文法的な誤りがないか確認する
- スペルミスをチェックする
- 用語で表記揺れ・単語の統一がされている
2. 文の流れ
- 文の構成が論理的か確認
- 文章がスムーズに流れるか確認
3. スタイルとトーン
- 一貫したスタイルとトーンが保たれているか確認
- 個人の備忘録メモなので、文章のトーンはゆるめに
- 間違った言葉遣いを使っていないか確認
- 「てにをは」が間違っていないか
4. 事実確認
- 提供されている情報が正確か確認
- 引用や参考文献が正しいか確認
5. フォーマット
- 見出しや段落のフォーマットが適切か確認する
- リストや箇条書きが正しく使用されているか確認
6. 冗長性の排除
- 不要な繰り返しや冗長な表現を削除
- 簡潔な表現に修正
7. 読者の視点
- 読者が理解しやすい内容になっているか確認
- 読者の興味を引く要素が含まれているか確認
8. 最終確認
- 最後に全体を通して読み返し、全体の印象を確認する。
```
ブログ文章を直してもらうやつ。校正リストはClaudeくんに作ってもらいました。`校正.md`をいったん出力し、Diffで差分を比較・修正しています。
<img src="https://image.ariestechgarden.com/Extra/image/obsidian_cursor_5.webp">
#### descriptionの要約
基本の項目で出したもの。
```
---
description: Markdownファイルの要約を行う
globs: "Inbox/*.md"
---
# 指示
ユーザーが「要約して」を言ってきたら50文字以内に要約し、ファイル7行目にあるフロントマター`description`に記入してください。
```
#### MOCの重複を確認
ヒツジが苦手なやつ。どのくらい苦手なのかは[このページ](https://dg.ariestechgarden.com/01_MOC/240514180153)を見て察してください。
Obsidian PublishやQuartzだと公開ページでDataviewが使えないので、手動で設定しなければいけない。一応Obsidian側で特定のタグを検索→検索結果をリスト化して貼り付ければいいのですが……。
<img src="https://image.ariestechgarden.com/Extra/image/obsidian_cursor_3.webp">
こうなるんですよねー。重複したページを探すのが面倒なので、AIの力を借りることにしました。
```
---
description: MOCの重複を検知
globs: "カテゴリー/*.md"
---
# 指示
ユーザーが指定したファイルから、重複している内部リンク`[[hogehoge]]`を探し、削除してください。
```
これで重複を探すファイルもしくは選択範囲をCursorのチャット欄に送るだけ。
<img src="https://image.ariestechgarden.com/Extra/image/obsidian_cursor_4.webp">
重複を消してリストの中に埋め込んでくれます。あーらくちん。
### その他アイディア・mdcレシピ
実用的じゃないけど思いついたやつを掲載しておきます。
#### タグを付ける
```
---
description: tagをつける
globs: "Inbox/*.md"
---
# 指示
ファイル8行目のフロントマター`tags`にタグを付けてください
## 条件
- 最大5個のタグをつける
- もし読み込んだ際に既存のタグがある場合、既存のタグ+新規タグの合計が5個になるようにしてください
- 他のファイルから読み取り、同じタグをつけてください
## 出力形式
`tags: [tagA,tagB]`
```
タグを自動でつけてもらうやつ。これについてはObsidian側でやった方がいい気もします。(手入れが圧倒的に楽)
#### Canvasに検索結果を出力する
Cursorのcodebaseで検索させて、Canvas形式にエクスポートするやつ。
```
---
description: Canvas出力ルール
---
検索したメモを出力してほしい・canvasに書いてと言ってきた場合、下記のテンプレートを用いて出力する。
## 出力例
{
"edges": [
],
"nodes": [
{
"file": "02_Zettelkasten/{ファイル名}.md",
"height": 0,
"type": "file",
"width": 0,
}
]
}
1ファイル追加する度に、nodesの項目を増やしていく。
追加する際に、wight・heightを50ずつ数を増やす。{
"edges": [
],
"nodes": [
{
"file": "02_Zettelkasten/240705143052.md",
"height": 400,
"type": "file",
"width": 500,
}
]
}
```
大量のファイルを読みきれていない気がするのでいったん保留。
#### Dataviewのドキュメントを読み込ませて作らせる
[Dataview](https://blacksmithgu.github.io/obsidian-dataview/) のドキュメントをCursorに読み込ませて、チャット欄で「この条件で抽出してほしい」と指示すれば作ってくれそう。なお、自分はDataviewをあまり使わない(使えない)ので、実際にできるかは不明です。
## 最後に
すんごい雑に紹介しました。そもそも厳密にObsidianを運用してない?それもそう。ただ、Cursorには色々便利な設定・拡張機能があるので、それを利用するともっと快適になるよ!って言いたいだけだったので……。
まあ、そのうち世の中のObsidian部にはすごい人が色々教えてくれるでしょう!(他力本願)
## 関連リンク
## 参考サイト
- [Dataview](https://blacksmithgu.github.io/obsidian-dataview/)