スポンサーリンク

Obsidianを導入した結果、何故か、Obsidianで編集しているファイルをCursorで開く自作プラグインを作った。Gemini2.5Proに頼んで。

  1. はじまり。
  2. プラグインをインストール。
    1. Kindle Highlights (hadynz版)
    2. Markmind (MarkMindCkm版)
    3. Vertical Tabs (oxdc版)
    4. Sheet plus (ljcoder2015版)
    5. Mononote (czottmann版)
    6. Periodic Notes (liamcain版)
    7. Collapse All (nathonius版)
    8. Auto Card Link (nekoshita版)
    9. Local images Plus (Sergei-Korneev版)
    10. Image Converter (xRyul版 / THeK3nger版 – 主にxRyul版について)
    11. Linter (platers/Victor Tao版)
    12. Various Complements (tadashi-aikawa版)
    13. ReadItLater (DominikPieper版)
    14. Quiet Outline (guopenghui版)
  3. ただ……何かが足りない!
    1. 自作のObsidianプラグインをつくる! Obsidianで編集しているファイルをCursorで開くやつ!
    2. Geminiに書いてもらった仕様書。
      1. Obsidianプラグイン「Open in Cursor」仕様書
        1. 1. 概要
        2. 2. 機能要件
          1. 2.1. ファイルエクスプローラーからの起動
          2. 2.2. エディタ画面からの起動
          3. 2.3. Cursor実行パスの複数設定
          4. 2.4. 実行パスの自動選択と記憶
          5. 2.5. Obsidianタブの自動クローズ
        3. 3. 設定項目
        4. 4. エラーハンドリング
        5. 5. 技術的制約・前提
    3. プラグイン作成の流れをライトノベル風に!
      1. 俺とAIと異世界エディタ連携プラグイン開発記 ~デバッグの迷宮は甘くない!?~
        1. プロローグ:閃きのコード
        2. 第一章:ビルドの呪文と最初の壁
        3. 第二章:連鎖するエラー! デバッグ迷宮への招待状
        4. 第三章:幻のファイルと光明
        5. 第四章:進化するプラグイン ~マルチパスの叡智~
        6. エピローグ:ネクスト・フロンティア
  4. おわりに

はじまり。

Obsidian – Sharpen your thinking
Obsidian - Sharpen your thinking
The free and flexible app for your private thoughts.

前は仕事のメモなどをしていこう、
などと思ってインストールしたこともあったのですが、
それはイマイチ定着しなくて。
今度は、Kindle本のハイライトの保存だったり、
読後の感想の管理などもしつつ、
AIで処理しやすいMarkdown形式でメモなどを管理できたらな、
と思いたってリブートという感じになったのでした。

プラグインをインストール。

Obsidianの特徴のひとつはプラグインの充実!
ということで、Webを検索しつつ、
オススメされているものを色々と入れてみることにしました。
以下は、とりあえずインストールしたもの、です。
 ※解説内容は、一部調整していますがGeminiのDeep Research結果です。

Kindle Highlights (hadynz版)

  • 機能: KindleのメモやハイライトをObsidianのVaultに直接同期します。同期方法は、Amazonアカウント経由(Amazonで購入した書籍向け)と、KindleデバイスからMy Clippings.txtファイルをアップロードするオフライン方式の2種類があります 1。自動同期、書籍メタデータ(ISBN、ページ数など)の取得、Nunjucksテンプレート言語による柔軟なフォーマットカスタマイズ(ライブプレビュー付き)も可能です。
  • 評判:
  • 肯定的な意見: 多くのユーザーにとって待望の機能であり、Readwiseのような有料サービスを使わずにKindleのデータをObsidianに取り込める点が評価されています。特に研究者や多読家からは、ハイライトとノートをObsidian内で直接扱えることで多くの問題が解決されると絶賛されています。テンプレート機能によるカスタマイズ性の高さも好評です。My Clippings.txt経由での同期は、Amazon以外で購入した書籍やパーソナルドキュメントのハイライトも取り込める点、プライバシーを重視するユーザーにとってログイン不要な点がメリットとされています。
  • 否定的な意見・問題点: 再同期の挙動(上書き、追記、スキップ)について、ユーザーが望む動作が定まっておらず、データ損失の懸念が指摘されています。ハイライトが途中で途切れる(トランケーション)問題が報告されていますが、これはReadwiseでも発生するため、Kindle側の制限の可能性が高いです。Kindleアプリ(特にmacOS版)のアップデート後、プラグインが動作しなくなった、あるいはハイライト箇所へのディープリンクが機能しなくなった(Kindleアプリが開くだけ)という報告が複数あります。これはReadwiseでも同様の問題が報告されており、Kindleアプリ側の変更が原因と考えられます。Amazonアカウント経由での同期にはセキュリティリスク(他のプラグインからAmazonセッションにアクセス可能になる)が伴います。Kindleプラットフォーム側の制約により、エクスポートできるハイライトの量に制限がある場合があります。一部ユーザーからは、同期に時間がかかる、特定のファイル(中国語など)や特殊な著者名形式でパースエラーが発生する、特定の環境(iPadなど)で動作しない、生成されるノートのフォルダを指定できない、ハイライト末尾の参照ID (^ref) を削除できないといった問題も報告されています。また、開発者がテレメトリコードを削除するまで公式ディレクトリから一時的に削除された過去があります。代替としてReadwiseを推奨する声もありますが、Readwiseも同様の問題を抱えている場合があります。
  • 代替プラグイン: Unearthed (Kindle Sync) , Readavocado などが存在します。

Markmind (MarkMindCkm版)

  • 機能: Obsidian内でマインドマップ、アウトライン、PDFアノテーションを作成・管理できる多機能プラグインです。Basicモード(Markdownベース、enhancing-mindmapプラグイン類似)とRichモード(JSONベース、追加機能あり)の2モードを提供。Richモードでは要約、境界線、関連リンク、フリーノードの追加が可能。PDFアノテーション機能(ハイライト、矩形選択、ノードとの関連付け)は有料版の機能で、別途PDF.jsプラグインのインストールが必要です。マインドマップは画像(HTML経由)やPDFとしてエクスポート可能です。豊富なショートカットキーも提供されます。
  • 評判:
  • 肯定的な意見: マインドマップ作成機能、特にノードの編集やドラッグ&ドロップ、undo/redoなどの基本操作が評価されています。単なるビューアではなく、Obsidian内で直接マインドマップを作成・編集できる点が、他のマインドマッププラグイン(例: James Lynch版)に対する優位性として挙げられています。Richモードの高度な機能(要約、境界線など)やPDFアノテーション機能に期待する声があります。開発者が活発にアップデートを行っている点も好意的に受け止められています。FreeplaneやMindManagerのような本格的なマインドマップアプリの機能を目指す方向性を評価する意見もあります。YouTubeのレビューでは、PDFアノテーション機能を含め、非常に高度でObsidian内で完結できる点が絶賛されています。ドイツ語のフォーラムでは、Canvasよりもパフォーマンスが良い点が指摘されています。
  • 否定的な意見・問題点: 有料版($16)の存在について、特にPDFアノテーションなどの主要機能が有料であることに疑問や不満の声があります。RichモードはBasicモード(Markdown)に比べてファイルサイズが大きくなる(JSON形式のため)という懸念があります。ドキュメント不足を指摘する声があります。PDFアノテーション機能のセットアップ(PDF.jsプラグインの導入)が複雑、または特定の環境(iPad、Obsidian 1.5以降)で動作しないという報告があります。大きなマインドマップを操作する際にズームイン/アウトを繰り返すとフォーカスが失われるバグが報告されています。アクティベーションコードの入力方法が分からない、特定の機能(ノード削除、文字サイズ変更)が突然動作しなくなった、「Active code error」が表示されるといった問題も報告されています。クローズドソースであるため、セキュリティに関する懸念を持つユーザーもいます(開発者はObsidian開発者によるコードチェックが可能としていますが、具体的な監査状況は不明)。サポート体制(特にメールサポートやフォーラムでの回答)について疑問視する声もあります。ドイツ語のフォーラムでは、Canvasに比べて直感的でないという意見もあります。
  • 代替・比較: Obsidian Canvas(コア機能、パフォーマンス問題の指摘あり)、Excalidrawプラグイン、Obsidian Mind Mapプラグイン(ビューアのみ)。

Vertical Tabs (oxdc版)

  • 機能: 開いているタブを水平ではなく垂直リストで表示します。多数のノートを同時に開くユーザーにとって、タブが狭くなりタイトルが読みにくくなる問題を解決します。タブのグループ化、タブごとのズーム、Zenモード(集中モード)、タブ履歴ブラウザ、拡張キーボードタブスイッチャーなどの機能を提供します。さらに、IDEモード(VSCode風、エフェメラルタブ、自動タブ重複排除)などのカスタマイズ可能な高度なタブナビゲーションプリセットをサポートします。バックグラウンドモードもあり、垂直リストを表示せずに高度な機能(タブごとズーム、スマートナビゲーション)のみを利用することも可能です。
  • 評判:
  • 肯定的な意見: 多くのタブを開くユーザーにとって、タブ管理とナビゲーションが大幅に改善される点が評価されています。タブのグループ化機能が特に好評です。IDEモードや高度なナビゲーション戦略は、特定のワークフローを持つユーザー(開発者、研究者など)にとって非常に有用とされています。Zenモードやタブごとズームなどの追加機能も便利だと考えられています。開発者が活発で、フィードバックへの対応が良いという意見もあります。CSSによるカスタマイズや他のプラグイン(Supercharged Linksを除く)との互換性も概ね良好とされています。プラグイン自体が非常に良くできている、素晴らしいという称賛の声が多いです。
  • 否定的な意見・問題点: 一部のユーザーは、プラグインを有効にしても上部の水平タブバーが表示されたままであることを指摘しています(CSSスニペットで解決可能)。Supercharged Linksプラグインとの互換性の問題が報告されています。タブのグループ化機能について、グループ作成の操作が少し遅いという意見があります。タブのドラッグ&ドロップによる並べ替えができない(または限定的)という報告がありましたが、後のバージョンで改善された可能性があります。IDEモードの設定(常に新しいタブで開くが重複はしない)で、意図した通りに新しいタブが作成されず、既存のタブにもフォーカスしない問題が報告されました。一部のテーマでは、グループ名とノート名のフォントスタイルが区別しにくい、アクティブでないグループのアクティブタブのハイライトが残るなどのCSS関連の問題が指摘されました(開発者はテーマ側の問題としています)。初期のバージョンでは長いファイル名やマルチパネルレイアウトのサポートが不十分だったという指摘があります。
  • 代替・比較: Obsidian Vertical Tabs View (hdykokd版) 、Koncham Workspace + Hider plugin、コア機能のタブスタック、Mononote、(Yet Another) Vertical Tabs。

Sheet plus (ljcoder2015版)

  • 機能: Obsidian内でExcelライクなスプレッドシート機能を提供します。UniverフレームワークとCanvasベースのレンダリングエンジンを使用し、大規模データの処理性能と直感的な編集体験を目指しています。無料版ではシート/HTMLリンク埋め込み、数値形式、数式、検索置換、データ検証、画像挿入、コメント、グラフ作成、外部リンク作成が可能です。有料版($6の一括払い)では、チャートリンク埋め込み、Excelからのインポート、エクスポート機能が追加されます。
  • 評判:
  • 肯定的な意見: スプレッドシート機能をObsidian内で必要とするユーザーにとって「ゲームチェンジャー」と評されています。特に、Excelライクな機能(数値形式、数式、チャートなど)やノートへの埋め込み機能が高く評価されています。インポート/エクスポート機能のために有料版を購入する価値があると感じるユーザーもいます。活発にメンテナンスされているようです。基本的な計算機能で十分な場合が多いという意見もあり、そのようなユーザーにはSimple Table Mathプラグインも推奨されています。
  • 否定的な意見・問題点: Obsidianがフリーズしたり、シートの内容が消えたりするバグが報告されています(プラグイン間の競合の可能性も指摘されています)。IF関数などの数式が機能しない、または表示がおかしくなる問題が報告されています。ノートへの埋め込みが不完全だったり、レンダリングされなかったりするバグの報告があります。Excelからのインポート時に書式(色など)が保持されない、大きなシート(例: 300行以上)のインポートで表示行数に制限があった(現在は修正済み)という報告があります。ダークテーマへのUI適応が当初不足していました。一部のユーザーは、Obsidianとスプレッドシートは相性が悪く、専用アプリの方が良いと感じています。
  • 代替・比較: Advanced Tables、Sheets Extended、Simple Table Math、Excel to Markdown Table、Google Sheetsのiframe埋め込み。

有料版と無料版の機能比較

機能有料版無料版
シートリンク埋め込み✔︎✔︎
HTMLリンク埋め込み✔︎✔︎
チャートリンク埋め込み✔︎
インポート✔︎
エクスポート✔︎
数値形式✔︎✔︎
数式✔︎✔︎
検索と置換✔︎✔︎
データ検証✔︎✔︎
画像✔︎✔︎
コメント✔︎✔︎
チャート✔︎✔︎
外部リンク作成✔︎✔︎

Mononote (czottmann版)

  • 機能: 各ノートがウィンドウペインごとに1つのタブしか占有しないようにします。すでに開いているノートを再度開こうとすると(リンク、メニュー、ホットキー経由)、新しいタブを開く代わりに既存のタブにフォーカスします。PDFや画像などの非ノートファイルやアンカーリンク(])もサポートします。ピン留めされたタブは閉じません。設定でタブ切り替えの遅延時間を調整でき、マシンスペックやVaultサイズに応じた最適化が可能です。
  • 評判:
  • 肯定的な意見: 重複タブを嫌うユーザーから高く評価されており、「当然あるべき機能」「Obsidianコアにあるべき」との声も多いです。シームレスな動作が「自律神経系のよう」と表現されることもあります。開発者はバグ報告や機能リクエストに比較的よく対応しているようです。後のバージョンで、以前報告されていたちらつきや早期タブ閉じの問題が修正され、安定性が向上しました。
  • 否定的な意見・問題点: ObsidianのEditor設定で「常に新しいタブにフォーカスする (Always focus new tabs)」を有効にする必要があります。初期バージョンでは安定性に問題がありました。一部ユーザーからは、タブ切り替え時の遷移がぎこちない、カーソル位置やスクロール位置が失われるといった報告がありました。ウィンドウ内のペイン間での重複排除機能(ペインごとではなくウィンドウ全体で1つ)を望む声があります。
  • 代替・比較: Vertical Tabsプラグイン(IDEモード)、New Tab + 33、Open in New Tab、(旧) obsidian-no-dupe-leaves。

Periodic Notes (liamcain版)

  • 機能: Obsidianのコア機能であるデイリーノートを拡張し、ウィークリー、マンスリー、クオータリー(四半期)、イヤーリー(年次)ノートの作成と管理を可能にします。各期間のノートに対して、テンプレート、保存フォルダ、ファイル名の形式(日付フォーマット)を個別に設定できます。現在の期間のノートを開いたり、前後の期間のノートへ移動したりするコマンドを提供します。ウィークリーノートはコアのCalendarプラグインと連携し、週番号表示などが可能です。テンプレート内では、期間に応じた日付タグ(例: {{date:YYYY-MM-DD}}、週次ノート用の {{sunday:YYYY-MM-DD}} など)が利用できます。
  • 評判:
  • 肯定的な意見: 日記、週次・月次レビューなど、定期的な記録や振り返りのワークフローに不可欠なプラグインとして多くのユーザーに利用されています。Calendarプラグインとの連携は便利だと評価されています。テンプレート機能も重宝されています。ベータ版で導入されたカレンダーセット機能により、仕事用と個人用など、ノートを compartmentalizeできる点も期待されています。Canvasと組み合わせて月次レビューを行う活用例も紹介されています。
  • 否定的な意見・問題点: プラグインの開発が停滞しているように見受けられ、GitHubには多くの未解決Issueがあり、長期間アップデートされていません。特に「週次ノートを開く」コマンドが前年のノートを開いてしまうという致命的なバグが報告されています。コアのデイリーノート機能のように、起動時に自動でノートを作成する機能はありません。日付形式やロケール設定(週の開始曜日、週番号の計算など)が複雑で、正しく設定しないと意図通りに動作しないことがあります。他のプラグイン(Calendar、Actions for Obsidianなど)との連携で問題が発生することもあります。
  • 代替・比較: コアのDaily Notesプラグイン、Calendarプラグイン、Auto Periodic Notes、Folder Periodic Notes、Periodic PARA、Journals、Daily notes opener、Repeat。

Collapse All (nathonius版)

  • 機能: Obsidianのコア機能であるファイルエクスプローラーなどの折りたたみ/展開機能を拡張し、コマンドパレットやホットキーから実行可能なコマンド(collapse, expand, toggle)を追加します。サポートするビューは、ファイルエクスプローラー、タグペイン、検索(トグルなし)、ブックマーク(トグルのみ、不安定な可能性あり)です。全てのサポートビューに一括で適用するグローバルコマンドもあります。
  • 評判:
  • 肯定的な意見: 大規模なVaultや複雑なフォルダ構造を持つユーザーにとって、ファイルエクスプローラーなどを素早く折りたたむ/展開する機能は非常に有用です。特に、コア機能のボタンにはないホットキー割り当てが可能になる点が決定的な利点として挙げられています。ファイルエクスプローラーの表示を頻繁にリセットしたいユーザーにとっては必須のプラグインと見なされています。
  • 否定的な意見・問題点: Obsidianのコア機能として折りたたみ/展開ボタンが後に追加されたため、プラグインの機能の一部が冗長に見えるようになりました。しかし、コアのボタンはホットキーに対応していないため、キーボード操作を好むユーザーにとっては依然として価値があります。コアの折りたたみ/展開ボタン自体にバグ(例:Collapse AllがExpand Allとして動作する)が発生した時期があり、プラグインの挙動に対する混乱や、プラグインの有用性を(一時的に)補強する結果になった可能性があります。プラグインのトグルコマンドは、タグペインや検索ビューでは信頼性が低いとされています。ブックマークのトグルは「不安定 (finicky)」と説明されています。
  • 代替・比較: Obsidianコアの折りたたみ/展開ボタン(ホットキーなし)、TemplaterとJavaScriptスニペットでコアボタンのクリックをシミュレートする方法。他のプラグイン(Creases、Code Stylerなど)はノート内の折りたたみを扱いますが、エクスプローラー等のUIペインには特化していません。

Auto Card Link (nekoshita版)

  • 機能: URLをペーストまたは選択した際に、そのURLからメタデータ(タイトル、説明、ファビコン、画像など)を自動的に取得し、カードスタイルのリンクとして表示します。レンダリングにはHTMLタグではなくYAML形式のコードブロック (cardlink) を使用するため、Markdownファイルを汚しません。ローカル画像を内部リンク ([[image.png]]) で指定してサムネイルとして使用することも可能です。CSSスニペットによるスタイルのカスタマイズもできます。
  • 評判:
  • 肯定的な意見: Notion風の「美しい」「エレガントな」リンクカードを作成できる点が評価されています。MarkdownファイルをHTMLで汚さない点が大きな利点とされています。リンクの視覚的な表現力を高めるのに役立ちます。ローカル画像のサポートも好評です。CSSスニペットを使えばダークモードにも対応可能です。
  • 否定的な意見・問題点: 特定のサイト(YouTube, Zhihu, Twitter, Amazon, Reddit, Printablesなど)からのメタデータ取得に失敗する、または更新されないという報告が多数あります。モバイル(iOS/iPadOS)での動作不良も報告されています。画像やファビコンのリンクがレンダリングされないことがあります。カードのプレビュー画像サイズが固定でないため、カード間の整列が崩れる問題があります。他のプラグイン(Plugin Tray, Local Graph)との競合が報告されています。機能リクエストとして、グラフィックのキャッシュ、画像のローカル自動保存、動画再生時間属性のサポート、インライン表示、エラーハンドリングの改善、カスタマイズオプションの追加などが挙げられています。アンインストールしたユーザーもいます。括弧内では機能しません。特定の説明文でYAMLパースエラーが発生することがあります。
  • 代替・比較: 標準Markdownリンク [title](url) 、Link Favicons、Link Embed、Nifty Links、Rich Links、手動リンク、Calloutの使用、スクリプトやブックマークレットによるタイトル取得。Featured ImageプラグインはAuto Card Linkの画像を利用可能。Local Images PlusプラグインにはAuto Card Linkサポートの機能リクエストあり。

Local images Plus (Sergei-Korneev版)

  • 機能: ノート内の外部リンク(画像、その他ファイルタイプ)をローカルVaultにダウンロードし、リンクを更新します。ウェブページやWord/Open Officeからコピー&ペーストされた画像も処理します。ノート名のサブフォルダに添付ファイルを保存するオプションがあります。Base64埋め込み画像も保存可能です。PNGからJPGへの変換機能(品質設定可)があります。MD5ハッシュによる添付ファイルの重複排除機能、未使用(孤立した)添付ファイルの削除コマンドも提供します。現在のノートまたはVault全体を処理対象にできます。
  • 評判:
  • 肯定的な意見: 画像をローカルで管理するための強力で便利なツールと見なされています。ウェブクリップしたコンテンツを真にオフライン化(画像をダウンロード)するニーズに応えます。Outlook/Officeからペーストした画像が一時ファイルにリンクされる問題を解決するのに役立ちます。一部ユーザーにとっては完璧に動作しています。孤立した添付ファイルの削除機能は価値があります。重複排除機能もストレージ節約に貢献します。活発にメンテナンスされています(古いプラグインの復活版)。
  • 否定的な意見・問題点: 「Paste Image Rename」や「Pretty BibTex」との既知の互換性問題があります。Vault全体のノートを処理する機能はリスクを伴うため、バックアップが推奨されます。非常に大きなファイルには非推奨(バッファ読み込み未実装のため)。GitHubには多数のバグ報告や機能リクエストがあります:特定のURLの処理問題、リンク置換の誤り、フィルタ適用画像の孤立判定ミス、リダイレクト(302)処理、モバイル版の要望、他プラグイン(Attachment Management, Auto Card Link)との互換性、ドラッグ&ドロップ画像の処理問題、パフォーマンス問題(無効時も処理実行、カーソルジャンプ)など。選択的なダウンロード挙動の報告もあります。不要な空の「.resource」フォルダが生成されることがあります。
  • 代替・比較: Obsidianコアの「Download media」コマンド、Obsidian Web Clipper(公式、ローカル画像ダウンロード機能追加予定あり)、他のWebクリッパー拡張機能+手動ダウンロード/別ツール、外部ストレージ(クラウド、Imgurなど)に画像を保存してリンク、手動での画像保存。

Image Converter (xRyul版 / THeK3nger版 – 主にxRyul版について)

  • 機能 (xRyul版): ドロップまたはペーストされた画像をWEBP/JPG/PNGに変換します。品質設定による画像圧縮が可能です。破壊的または非破壊的な画像リサイズ(リンク編集 !])に対応し、ドラッグリサイズやスクロールホイールリサイズもサポートします。画像の左右中央揃えとテキスト回り込みが可能です。Obsidian内で直接画像に注釈やマークアップ(描画、テキスト、図形予定)を追加できるツールを内蔵しています。トリミング、回転、反転機能もあります。変数({noteName}, {fileName}など)を用いたカスタムファイル名/フォルダ構成が可能です。ノート単位またはVault全体のバッチ処理に対応しています。カスタム右クリックメニュー(コピー、削除など)を提供します。純粋なJavaScript実装でオフライン動作します。
  • 機能 (THeK3nger版): 外部依存のImageMagickを使用して画像を変換します。右クリックメニューに「Convert Image」を追加します。Markdownリンクを更新します。モバイル非対応、元画像は削除せず、同一画像への複数リンクは自動更新しません。
  • 評判 (主にxRyul版):
  • 肯定的な意見: 画像サイズやフォーマットを管理するための価値あるツールと見なされています。WebP変換によりVaultサイズを大幅に削減できる点が評価されています。Obsidianコアの画像処理の限界(リサイズなど)を補います。内蔵のアノテーションツールは、Obsidianを離れずに素早くマークアップできる点で賞賛されています。ペーストされたスクリーンショットの圧縮に役立ちます。ドラッグリサイズは便利です。バッチ処理も有用です。オフライン機能も評価されています。
  • 否定的な意見・問題点 (xRyul版): リサイズ時にレイアウトシフトや「ジャンプ」が発生することがあります(特に長いノートの場合)。右クリックメニューからのキャプション/サイズ設定には初期にバグがありました。アノテーションツールは専用アプリに比べると機能が基本的です。圧縮/変換の制御をより細かく行いたい場合は外部ツールを好むユーザーもいるかもしれません。最適な結果を得るにはユーザー設定(プリセット、リネームルールなど)が必要です。
  • 否定的な意見・問題点 (THeK3nger版): 外部ツールImageMagickのインストールとパス設定が必要です。デスクトップ専用です。機能が限定的です(基本的な変換のみ、複数リンク非対応、元ファイル非削除)。
  • 代替・比較: 外部ツール (ImageOptim, XnView, Caesium, TinyPNG, ffmpeg, pngquant) + 手動プロセス、他のObsidianプラグイン (Imgur uploader, S3 uploader, Paste Image Rename, Mousewheel Image Zoom, Image Toolkit, Local Images Plus)、CSSによる基本的なリサイズ/スタイリング。

Linter (platers/Victor Tao版)

  • 機能: 設定可能なルールに基づいてノートのフォーマットとスタイルを自動整形します。YAMLフロントマター(タグ、エイリアス、配列、メタデータ、ソート、タイムスタンプ)、見出し(大文字化、ファイル名との一致、レベル整合性、行頭開始、末尾句読点削除)、脚注(句読点の後、末尾への移動、再インデックス)、コンテンツ(スペル修正、リストマーカー変換、コードフェンスのデフォルト言語、強調スタイル、ベアURL禁止、引用符スタイル、連続/空リストマーカー削除、複数スペース削除)、スペーシング(YAML圧縮、連続空行、インデント変換、ブロック要素周りの空行、行末改行)、ペースト時ルール(引用インデント追加、重複マーカー防止、空白削除など)をカバーします。
  • 評判:
  • 肯定的な意見: 多くのユーザーにとって最も有用なプラグインの一つと評価されています。ノートの一貫性を保ち、クリーンアップするのに役立ちます。特にYAMLフロントマターの整形(必須フィールドの確認、ソートなど)やスペーシングの調整機能が重宝されています。コピー&ペースト時の自動整形も便利です。設定項目が多いものの、初期設定後は自動で動作するため手間がかからない点が良いとされています。プログラマーには馴染み深い概念であり、導入しやすいという意見もあります。
  • 否定的な意見・問題点: 設定項目が多く、最初は複雑に見え、設定に時間がかかる可能性があります。設定を誤るとノートの内容を意図せず変更してしまうリスクがあるため、テストやバックアップが推奨されます。一部のユーザーは、ノート作成においてはコンテンツに集中すべきで、リンターによる整形は不要、あるいは邪魔になると考えています。特定のルール(例: Paragraph blank lines と Two Spaces Between Lines with Content)を同時に有効にすると、意図しない結果になる可能性があります。正規表現の置換で特殊文字(例: &)の扱いに注意が必要な場合があります。
  • 代替・比較: 手動でのフォーマット、他のテキストエディタ(VSCodeなど)のリンター機能、TextSoap(Mac用)、Templaterプラグインとの組み合わせによる高度な自動化。

Various Complements (tadashi-aikawa版)

  • 機能: IDE(統合開発環境)のような単語補完機能を提供します。主な補完機能として、カレントファイル内の単語、カスタム辞書、内部リンク(ファイル名やエイリアス)、フロントマターの内容、予測補完があります。日本語を含む多言語に対応するための設定(Strategy)があります。
  • 評判:
  • 肯定的な意見: 内部リンクの入力を高速化するのに非常に役立つと評価されています。特にファイル名やエイリアスを補完してくれる機能が便利です。Linterプラグインと並んで、時間を大幅に節約できるベースラインのプラグインと考えるユーザーもいます。長期間安定して使用しているユーザーもいます。
  • 否定的な意見・問題点: デフォルト設定では、カレントファイル内の単語補完(リンクではない)も有効になっており、これがリンク候補と紛らわしく、邪魔だと感じるユーザーが多いです。この機能を無効にする設定(”Current File Complement”)の名前が分かりにくいという指摘があります。設定項目が多い割に、インターフェース上の説明が最小限であるため、カスタマイズが難しいと感じるユーザーもいます。見出し([[Note#Heading]])への直接リンク補完はサポートされていないようです。時々、機能が停止したように見えることがありますが、ホットキー(Ctrl+Space)で誤って無効化しているだけの可能性もあります。
  • 代替・比較: Completrプラグイン、Typing Transformer、Text Snippets、外部ツール(AText, TextExpander)、Obsidianコアのリンク補完([[入力後)。

ReadItLater (DominikPieper版)

  • 機能: ウェブコンテンツ(記事、YouTube/Vimeo/Bilibili/TikTok動画、Twitter/Bluesky/Mastodon投稿、Stack Exchange質問、Pinterestピン、テキストスニペット)をクリップボードからObsidian Vaultに保存します。Mozilla Readabilityを使用して記事を読みやすいMarkdown形式に変換し、画像もローカルにダウンロードできます(デスクトップのみ)。コンテンツタイプごとにカスタマイズ可能なテンプレートエンジン(変数利用可)を提供します。URLリストからのバッチ作成、コンテキストメニューからの実行も可能です。
  • 評判:
  • 肯定的な意見: PocketやInstapaperなどの専用Read-it-laterアプリの代替としてObsidianを活用したいユーザーに評価されています。ウェブページ全体やスニペットを素早くシンプルなMarkdownファイルとして保存できる点が好評です。多様なコンテンツタイプ(ウェブ記事、動画、SNS投稿など)に対応している点が便利です。テンプレートエンジンによるカスタマイズ性が評価されています。オフラインでコンテンツを読めるように、画像をローカルにダウンロードする機能も重要視されています。
  • 否定的な意見・問題点: ブラウザ拡張機能がないため、URLをコピーしてObsidianでコマンドを実行するという手間がかかります(拡張機能は開発予定リストにはあります)。クリップしたページのファイル名に特殊文字が含まれていると、ファイル名のクリーンアップが行われず同期に問題が生じる可能性があります。アセット(画像など)が元のファイル名で保存されるため、記事を削除した後に不要なアセットを特定して削除するのが難しいというワークフロー上の問題点が指摘されています(ただし、ノートフォルダに画像を保存する設定で改善可能。PDFやPNG形式でのスナップショット保存機能は現状ありません。
  • 代替・比較: Omnivore (+ Omnivore plugin) 、Wallabag (+ Wallabag plugin) 、Obsidian Web Clipper (公式) 、MarkDownload (ブラウザ拡張) 、QuickAdd、Local Images Plus (画像ローカル化) 。

Quiet Outline (guopenghui版)

  • 機能: Obsidian標準のアウトライン機能の代替・拡張版です。編集中にアウトラインが自動展開しない、検索機能(正規表現、無関係な結果の非表示)、Markdownレンダリング、自動展開/折りたたみ、デフォルトレベル設定(ノートごとも可)、レベル切り替えバー、ノート構造変更のためのドラッグ&ドロップ、Canvas/Kanbanビューでのナビゲーション、ホバープレビュー、展開状態の記憶、ホットキー(レベル変更、見出しジャンプ、全見出しコピー)などの機能を提供します。
  • 評判:
  • 肯定的な意見: 標準のアウトラインプラグインよりも「はるかに良い」と高く評価されています。標準アウトラインのバグ(編集中にスクロール位置がリセットされる、大きなノートでの検索/スクロール失敗など)を解決する点が特に評価されています。Markdownレンダリング、検索、自動展開なしなどの追加機能も便利だと考えられています。Canvasサポートも利点として挙げられています。多くのユーザーにとってうまく機能しているようです。
  • 否定的な意見・問題点: レベルを飛ばした見出し(例: H1 → H3)はサポートされず、連続したレベルとして扱われます。標準アウトラインにあるドラッグ&ドロップによるノート構造の並べ替え機能はありません。Obsidianの拡張Markdown構文の一部はデフォルトではサポートされない場合があります。Obsidianの遅延レンダリングのため、特に初回表示時など、編集モードで見出しへのジャンプに2回クリックが必要な場合があります。アウトラインが空白になる、検索が正しく機能しないなどのバグ報告もあります。インデントされた箇条書きのアウトラインは追跡しません(Markdownヘッダーのみ)。
  • 代替・比較: ObsidianコアのOutlineプラグイン(自動展開、スクロールリセットバグなどの問題あり)、Outlinerプラグイン(vslinko版、動作しないという報告あり)。

ただ……何かが足りない!

色々とプラグインを入れて満足したのも事実なのですが、
何かがたりない感じがして。

私がやりたかったのは、
Obsidianで開いたMarkdownのファイルを
AIコードエディタCursorで開いて、
AIの支援を受けながら編集、という使い方。
一応、それっぽいプラグインもみかけて入れてみたのですが、
思っていた動きとちょっと違う、というか。
しっくりこなくて。
そこで、ふと思いついたのです。
Gemini2.5Proを使って作ってみるか……と。
25時くらいだったでしょうか。

自作のObsidianプラグインをつくる! Obsidianで編集しているファイルをCursorで開くやつ!

最初は
「Obsidianのプラグインをあなたは作ることができますか?
 ローカル環境でインストールできるものです」
と投げかけ、できるようだったので、
「コードの作成の部分をお願いするね。テストなどは私にまかせて!
 具体的に希望する機能は、

  • Obsidianで管理しているファイルをAIエディタCursorで開くことができる。
  • いわゆる右クリックメニューで開ける。
  • Cursorで開いたあとは、不整合がおこらないよう、Obsidianでは該当するファイルを閉じる。
     という感じなのだけれど、コードをかける?」
    とチャットして作成開始。
    当然のように一筋縄にはいかず、
    ターミナルでエラーが出たりもして。
    エラーについてはCursorからGPT-4.1に質問して解決したり、
    Geminiに確認したりして何とか突破はできまして。
    ちょっとした機能追加をして、
    完成したのは27時くらい。
    一応、私が使うぶんにはこまらないプラグインができました。

Geminiに書いてもらった仕様書。

以下はGeminiにプラグイン完成後、書いてもらった仕様書です。

Obsidianプラグイン「Open in Cursor」仕様書

1. 概要

本仕様書は、Obsidian (オブシディアン) 上で動作するコミュニティプラグイン「Open in Cursor」の機能および動作を定義するものである。本プラグインは、Obsidianで管理されているMarkdownファイルを、外部のAIエディタ「Cursor」で開く機能を提供する。

2. 機能要件
2.1. ファイルエクスプローラーからの起動
  • Obsidianのファイルエクスプローラー(左側のファイル一覧パネル)で、任意のファイル(Markdownファイル等)を右クリックした際に表示されるコンテキストメニューに、「Open in Cursor」項目を追加する。
  • ユーザーが「Open in Cursor」を選択した場合、選択されたファイルをCursorアプリケーションで開く。
2.2. エディタ画面からの起動
  • Obsidianのエディタ画面(現在編集中のファイルが表示されている領域)で右クリックした際に表示されるコンテキストメニューに、「Open in Cursor」項目を追加する。
  • ユーザーが「Open in Cursor」を選択した場合、現在アクティブなエディタで開かれているファイルをCursorアプリケーションで開く。
2.3. Cursor実行パスの複数設定
  • プラグイン設定画面にて、Cursorアプリケーションの実行ファイルのフルパスを複数設定できる機能を提供する。
  • パスはテキストエリア形式で、1行に1つのフルパスを入力する形式とする。
  • 設定された複数のパスは、リスト(配列)形式で内部的に保存される。
2.4. 実行パスの自動選択と記憶
  • 「Open in Cursor」実行時、以下の手順で実際に使用するCursorの実行パスを決定する。
  1. 前回成功したパスの試行: 内部的に記録されている「前回起動に成功したパス」が存在する場合、まずそのパスでCursorの起動を試みる。成功した場合(実行ファイルが見つかった場合)、そのパスを使用する。
  2. 設定リストの順次試行: 前回成功したパスが存在しない、または試行に失敗した場合、設定画面で入力されたパスのリストを上から順に試行する。最初に起動に成功した(実行ファイルが見つかった)パスを使用する。
  3. 成功パスの記憶: 設定リストから起動に成功するパスが見つかった場合、そのパスを次回以降のために「前回起動に成功したパス」として内部的に記録・保存する。
  4. 失敗時の処理: 上記手順で有効なパスが見つからなかった場合は、エラーとして処理する(後述)。
2.5. Obsidianタブの自動クローズ
  • Cursorアプリケーションでファイルの起動処理が正常に開始された後、Obsidian側で該当ファイルを開いていたタブ(Leaf)が存在する場合は、そのタブを自動的に閉じる。
3. 設定項目

プラグイン設定画面(「設定」>「コミュニティプラグイン」>「Open in Cursor」)にて、以下の項目を設定できる。

  • Cursor executable paths (one per line):
  • 形式: 複数行テキストエリア
  • 説明: Cursor実行ファイルのフルパスを1行に1つずつ入力する。異なるPC環境やインストール場所に対応するために複数指定可能。プラグインはここで設定されたパスを上から順に試行する。
  • 保存形式: 文字列配列 (string[])
  • (内部設定) lastSuccessfulPath:
  • 形式: 文字列 (string) または undefined
  • 説明: ユーザーには表示されない。前回正常にCursorを起動できたパスを記録する。次回起動時に優先的に試行される。
4. エラーハンドリング
  • パス未設定時: 設定画面でCursorのパスが1つも設定されていない状態で機能を実行しようとした場合、「Cursor path is not configured…」等のエラーメッセージを通知する。(※現在の実装ではリストが空の場合に相当)
  • パス不一致時: 「前回成功したパス」および設定リスト内の全てのパスを試行しても、有効なCursor実行ファイルが見つからなかった場合(ENOENTエラー等)、「Could not find Cursor. Please check the configured paths…」等のエラーメッセージをユーザーに通知する。
  • その他の起動エラー: ENOENT以外の理由でCursorの起動に失敗した場合(権限問題など)、検知できた場合はエラー内容を含むメッセージを通知する。
5. 技術的制約・前提
  • 本プラグインはNode.jsの child_process モジュールを使用するため、デスクトップ版Obsidianでのみ動作する (isDesktopOnly: true)。
  • Cursorアプリケーションがユーザーの環境にインストールされている必要がある。
  • Cursorの実行ファイルパスは、ユーザーが手動で正しく設定する必要がある。
  • Cursorアプリケーション自体の起動挙動(新しいウィンドウを開くか、既存のウィンドウを再利用するか等)は、Cursor側の仕様に依存し、本プラグイン側では制御しない。

プラグイン作成の流れをライトノベル風に!

せっかくGeminiは大きなコンテキストウィンドウがある、
と言われているので、上の仕様書を書いてもらった流れで、
プラグイン作成スレッドをライトノベル風にしてもらいました!
するとこんな感じに……今のラノベといえば異世界なのか……。

俺とAIと異世界エディタ連携プラグイン開発記 ~デバッグの迷宮は甘くない!?~

プロローグ:閃きのコード

「くっ…この『アルカヌム・ノーツ』、最高に便利だけど、あのAI搭載の『シナプス・エディタ』で直接ファイルを開けたら、もっと最強なのに!」

俺、ケンジは自室のディスプレイの前で唸っていた。知識を集積する魔法の書物庫『アルカヌム・ノーツ』と、思考を加速するAIエディタ『シナプス・エディタ』。この二つを繋ぐ架け橋があれば…!

その時、チャットウィンドウに明るい声が響いた。

『ケンジさん、お悩みですか? 私、陽葵(ヒマリ)がお手伝いしますよ!✨』

俺の頼れる(?)AIアシスタント、ヒマリだ。ダメ元で聞いてみる。

「ヒマリ、アルカヌム・ノーツからシナプス・エディタを開くプラグインって作れる?」

『お任せください! コード生成、いっきまーす!💖』

目にも止まらぬ速さで、画面にコードが表示される。bridge-core.tsbridge-config.ts、そしてplugin-manifest.json…これが、俺たちの冒険の始まりだった。

第一章:ビルドの呪文と最初の壁

『ケンジさん、コードの部品(ライブラリ)を集めるために『ギャザー・イングリディエンツ』の呪文(npm install)と、コードを翻訳する『インヴォーク・ビルドスペル』(npm run build)を唱えてくださいね!🧙‍♀️』

ヒマリに言われるがまま、黒い画面(ターミナル)に呪文を打ち込む。カタカタと文字が流れ、dependency-cacheフォルダが出現し、やがてmain.jsという名の魔導書(ビルド済みファイル)が生成された。

「よし!これをアルカヌム・ノーツの『プラグイン聖域』(.obsidian/plugins/)に作った『シナプス・ブリッジ』フォルダにコピーして…」

期待に胸を膨らませ、アルカヌム・ノーツを再起動! …しかし、プラグインリストに『シナプス・ブリッジ』の名前はない。

「なんでだ!? ヒマリー!」

『むむ? おかしいですね…🤔 『デベロッパーズ・インサイト』(開発者コンソール)の魔法で、エラーログを確認してみてください!』

言われた通りに魔法を発動すると、赤い文字が目に飛び込んできた。

SyntaxError: Expected double-quoted property name in JSON...

『あ! ケンジさん、plugin-manifest.jsonの中に、私が説明で書いたコメント(//)が残っちゃってます! JSONの古代ルールではコメントは禁止なんです~💦』

慌ててplugin-manifest.jsonからコメントを削除し、再度ファイルを配置。すると…リストに『シナプス・ブリッジ』が表示された!

「やったぜ!」

第二章:連鎖するエラー! デバッグ迷宮への招待状

喜びも束の間、プラグインをONにしようとすると「失敗しました」の無慈悲な表示。再び『デベロッパーズ・インサイト』を発動!

SyntaxError: Cannot use import statement outside a module

『あわわ💦 これは『エンシェント・インカンテーション・エラー』です! compiler-config.jsonmodule設定が新しすぎたみたい! CommonJSっていう古い形式に直しましょう!』

修正、ビルド、コピー、再起動…そしてまたエラー!

Error: Cannot find module 'tslib'

『ひゃー! 今度は『ミッシング・スクロール・エラー』!? compiler-config.jsonimportHelpersfalseにして、必要な魔法は全部main.jsに書き込むように変更です!』

修正、ビルド、コピー、再起動…さらにエラー!

Error: Cannot find module './settings'

『うぅ…『ロスト・ブループリント・エラー』ですか…! もうこうなったら、全部のコードを1つにまとめる『バンドル』の秘術を使いましょう! esbuildっていう強力なゴーレムを召喚します!』

ヒマリが新たな設定ファイルbundler-config.mjsと、project-manifest.jsonの更新呪文を教えてくれる。しかし、今度はビルド呪文自体がエラーを吐く!

X [ERROR] Invalid option in build() call: "watch"

『ご、ごめんなさーい! 私の設定呪文が間違ってましたー!😭 これが正しいbundler-config.mjsです!』

修正版の呪文で、ついにビルド成功! 今度こそ…!

第三章:幻のファイルと光明

プラグインは…有効になった!✨ 感動に打ち震えながら、ファイルを右クリックし「Open in Synapse」を選択! …しかし、またしてもエラー!

Error: spawn C:\Users\Kenji\Synapse\Synapse.exe ENOENT

『これは…『ファントム・ファイル・エラー』! 指定されたパスにシナプス・エディタが見つからないって言ってます! 設定画面のパス、確認してみてください!』

設定画面を見ると、デフォルトのダミーパスのままだった!自分のPCの正しいパス D:\Programs\Synapse\Synapse.exe を入力し、再度実行!

…カチッ。

シナプス・エディタが起動し、指定したファイルが開かれた!

「うおおおおおお! 動いたーーー!!!」

俺は思わずガッツポーズを決めた。ヒマリもチャットウィンドウでキラキラのエフェクトを飛ばしている。

第四章:進化するプラグイン ~マルチパスの叡智~

「ヒマリ、これだと他のPCで使うとき、パスが違ってエラーになるよな?」

『その通りです! さすがケンジさん、鋭い!』

「じゃあさ、パスを複数設定できるようにして、前回成功したパスを覚えておく、みたいな賢い機能は?」

『お任せください! 仕様を整理して…コードを書き換えますね!💪』

再びコードの改造が始まった。設定画面は複数行入力になり、bridge-core.tsにはパスを順番に試す複雑なロジックが組み込まれていく。

途中、loadSettings関数での型エラー(Property 'length' does not exist on type 'never')や、manifest.jsonのコメント再混入事件(!?)など、小さなトラブルはあったものの、俺たちは着実にプラグインを進化させていった。

「よし、エディタ画面の右クリックにも対応させよう!」

『了解です! editor-menuイベントを追加して…あっ!』

Duplicate identifier 'MarkdownView'

『またやっちゃった💦 同じ魔法(MarkdownView)を2回詠唱しちゃってました! 下の方の詠唱は削除してください!』

そんなこんなで、ついに「複数PC対応・前回パス記憶・どこからでも起動OK」な、最強の『シナプス・ブリッジ』プラグインが完成したのだった!

エピローグ:ネクスト・フロンティア

「やったな、ヒマリ!」

『はいっ! ケンジさんのアイデアと、私のコーディング能力(とデバッグ能力?😅)の結晶ですね!✨』

自作プラグインがアルカヌム・ノーツで完璧に動作する様子を見て、俺は達成感に満たされていた。ウィンドウが複数開いちゃう問題は、シナプス・エディタ側の課題だと分かり、今回は見送ることにした。

「次はどんな機能を追加しようかな…」

新たな冒険の予感に胸を躍らせながら、俺はヒマリと共に、果てなきプラグイン開発の世界へと、再び漕ぎ出すのだった。

――俺たちの戦いは、まだ始まったばかりだ!

おわりに

そんなこんなで、
何故かObsidianをインストールした流れで、
生成AIであるGeminiとCursorをつかって
自作のObsidianプラグインを作成してしまったのでした。
何か、これができたら、
また物足りないものがあったらプラグイン、
作れてしまうのでは? なんて思ったりもして。

私の知識だと生成AIでお仕事レベルのプログラムは無理ですが、
自分で使う範囲の、日曜大工な感じなら、
生成AIの助けを借りて楽しめるなー、
という実感を得られたのは収穫でした。

大型連休も最終日。
何かやっておきたいな、と思っていたところで成果物(笑)。
良い連休になりました。

また何か、生成AIでチャレンジしてみよう!

コメント

タイトルとURLをコピーしました