ブログを書くのが好きな人にとって、快適な執筆プロセスは非常に重要です。
多くのテクノロジー系の著者は、知識管理や執筆ツールとしてObsidianを選んでいます。それは以下のような理由からです:
- ローカルでのMarkdown保存
- 強力なプラグインエコシステム
- 柔軟なノート管理機能
- プラットフォームに依存しない創作環境
しかし、記事を自分のブログに投稿する際には、従来の手順が依然として面倒です:
- ObsidianでMarkdownを書く
- 記事の内容をコピーする
- CMSのバックエンドにログインする
- 画像をアップロードする
- タイトル、カテゴリ、カバー画像を設定する
- 記事を公開する
このような繰り返し作業は時間の無駄であり、執筆の流れを妨げる原因にもなります。
そこで、オープンソースプロジェクト drewlyton/sanity-obsidian-plugin をベースに二次開発を行い、個人のブログ使用シナリオに合わせて改良しました。
プロジェクトのURL: violet27chen/sanity-obsidian-plugin

Sanity for Obsidian:Obsidian、Sanity、ブログの三者間のシンクロナイズされたワークフローを実現
このプラグインの目的は非常にシンプルです:
Obsidianで執筆を行い、ワンクリックでSanityに同期し、自分のブログに自動的に表示する。
全体の流れは以下の通りです:
Obsidian
↓
发布同步
↓
Sanity CMS
↓
博客网站
最終的には、Obsidian ↔ Sanity ↔ Blogの3つの要素が相互に連携する形になります。
なぜObsidian + Sanityを選ぶのか?
Obsidian:執筆に特化
Obsidianの最大の強みは、Markdownとローカル優先の仕組みです。記事は常に自分のデバイスに保存されており、慣れ親しんだMarkdownの書式をそのまま使い続けることができ、複雑なバックエンドエディタに慣れる必要はありません。
Sanity:コンテンツ管理を担当
SanityはモダンなHeadless CMSであり、コンテンツの保存、画像管理、フィールド管理、APIの提供、マルチデバイスでのコンテンツ配信を担当します。ブログのフロントエンドはSanityのデータを読み取るだけで表示できます。
Blog:最終的な表示を担当
Astro、Next.js、Nuxt、その他のフロントエンドフレームワークを使用していても、Sanityを通じて記事のコンテンツを取得できます。執筆、管理、表示の3つのプロセスが完全に分離されています。
プラグインの主な機能
1. ObsidianからSanityへの投稿
Obsidianで記事を書き終えたら、「Publish to Sanity」をクリックすると、プラグインが自動的にSanityのドキュメントを作成し、記事の内容を同期し、画像リソースをアップロードし、ドキュメントIDを保存します。再度コピー&ペーストする必要はありません。
2. SanityからObsidianへの同期
投稿だけでなく、コンテンツの取得もサポートしています。Sanityのバックエンドで記事を編集した後、再び同期して編集を続けることができます。
3. ブログのフィールドマッピングのサポート
ブログの構造は様々ですが、プラグインは固定されたフィールドを使用しません。タイトル、slug、カバー画像、カテゴリなどのフィールドを自由にマッピングでき、テクノロジーブログ、ドキュメントサイト、ナレッジベース、製品サイトなどのシナリオに適しています。
4. 画像の自動処理
記事を書く際に挿入した画像は、公開時にプラグインが自動的にSanityにアップロードし、CDNアドレスに変換されます。CMSのバックエンドに入って再度アップロードする必要はありません。
インストールと設定ガイド
事前準備
始める前に、以下が必要です:
- Obsidian
- Sanity プロジェクト
- Sanity のデータを読み取ることができるブログサイト
Sanity プロジェクトがない場合は、sanity.io にアクセスして登録し、プロジェクトを作成してください。
第1ステップ:Obsidianプラグインのインストール
現時点では、このプラグインはObsidian Community Pluginsにはリリースされていませんので、手動でインストールする必要があります。
方法1:BRATを使用したインストール(推奨)
- Obsidianを開き → 設定 → サードパーティプラグイン → コミュニティプラグインを検索し、BRATを見つけてインストールして有効にします。
- 設定 → BRAT → Add Beta Pluginに進み、
violet27chen/sanity-obsidian-pluginを入力します。 - インストールが完了するのを待ち、設定 → サードパーティプラグインで Sanityを見つけて有効にします。
方法2:手動インストール
Obsidianの.obsidian/pluginsディレクトリに移動し、以下のコマンドを実行します:
git clone https://github.com/violet27chen/sanity-obsidian-plugin.git
ディレクトリ構造:.obsidian/plugins/sanity-obsidian-plugin
Obsidianを再起動し、設定 → サードパーティプラグインで Sanityを有効にします。
第2ステップ:Sanity APIトークンの作成
Sanity Dashboardにアクセス → Project → API → Tokens → Add API Tokenに進み、権限として「Editor」を選択します(「Viewer」は選ばないでください。記事を公開するには書き込み権限が必要です)。生成されたトークンをコピーしてください。
第3ステップ:プラグインの設定
Obsidianを開き → 設定 → Sanityに進み、以下の情報を入力します:
- API Token:前のステップで生成したトークン
- Project ID:Sanity Dashboard → Project Settingsからコピーしたもの
- Dataset:通常は
productionを入力します - Type Name:記事のタイプ。例:
post
第4ステップ:記事フィールドの設定
ブログ記事の構造が以下のようになっていると仮定します:
post:
title
slug
body
cover
categories
プラグインの設定で、タイトル、本文、ファイル名、追加フィールドなどを適切に設定します。
第5ステップ:最初の記事の公開
ObsidianでMarkdownファイルを作成し、内容を書き込んだ後、コマンドパネル(Ctrl + P)を開き、「Publish to Sanity」を選択します。プラグインが自動的に記事を作成し、画像をアップロードし、sanity_idを保存します。
第6ステップ:ブログで記事の表示
同期が完了すると、ブログが Sanityのデータを読み取って記事を表示できるようになります。以降は、Obsidianで記事を書いて「Publish」をクリックするだけで、ブログが更新されます。
よくある問題
公開に失敗:403 insufficientPermissions
トークンの権限が不足しています。トークンを再作成し、「Editor」ロールを選択してください。
画像がアップロードされない
画像のパスが正しいか、Markdown形式の画像を使用しているか、トークンにアップロード権限があるかを確認してください。
プラグインが見つからない
設定 → サードパーティプラグインで Sanityが有効になっているかを確認してください。
なぜこのプロジェクトを行うのか?
私は常にこう考えてきました:
ライティングツールは、作者がそのツールに合わせるのではなく、作者をサポートするものであるべきだ。