One レンタルサーバー 正式リリース!
15日間無料トライアル実施中今すぐ始める

Obsidian×Copilot(AI連携)×WordPress実践フロー完全解説

User Note

Obsidian × Copilot(AI連携) × WordPress 実践フロー完全解説

はじめに

AIで文章を生成すること自体は、もはや特別なことではなくなりました。
しかし実際の運用では、「生成したあと、どうやって記事として世に出すか」で手が止まるケースが少なくありません。

なぜObsidian×AI×WordPressなのか

Obsidianは思考と下書きを蓄積するための強力な執筆環境です。
AIは、その下書きを一気に“記事の形”まで引き上げる加速装置。
そしてWordPressは、完成した文章を継続的に発信するための実践的な基盤です。

この3つはそれぞれ優秀ですが、単体で使っているだけでは執筆体験は完成しません
「書く」「整える」「出す」を一本の流れとしてつなぐことで、初めて本当の価値が生まれます。

「AIで書いて終わり」ではなく、“投稿まで自動化”する価値

なお本記事でいう「自動化」は、記事の“完成度を上げる工程”と“投稿作業”をできるだけ手離れさせることを指します(完全自動投稿が必須という意味ではありません)。

AIで生成した文章をコピーして、貼り付けて、体裁を整えて、管理画面を開いて…
この一連の作業が残っている限り、執筆はまだ“途中”です。
投稿までを自動化することで、

  • 書くことに集中できる
  • 作業の迷いが減る
  • 更新や再投稿の心理的ハードルが下がる

といった効果が生まれます。
執筆と公開の距離をゼロに近づけることが、AI時代のワークフロー改善の本質です。

この記事の対象読者

本記事は、次のような方を想定しています。

  • 技術ブログを運用している人
    記事作成から公開までの手間を減らしたい方
  • Obsidianユーザー
    メモや下書きを、実際のアウトプットにつなげたい方
  • WordPressを使って発信しているすべての人
    投稿・更新作業をもっとスマートにしたい方

この記事では、実際に構築したワークフローをもとに、「Obsidianで書いたものを、AI経由でWordPressへ出す」実践的な方法を解説していきます。

具体的には、Obsidianで書いた下書きをAIで整え、WordPressへ投稿できる状態にするまでの流れを、手順と注意点つきで紹介します。

全体像:今回構築したWordPress記事への投稿フロー

この記事で扱う投稿フローはシンプルに、以下の3ステップです。

  1. Obsidianで記事を書く
  2. AIで下書きを生成(整形して記事化)
  3. ワンクリックでWordPressに下書き投稿(2回目は「更新」になる)
Obsidianで執筆しAIで下書きを整え、ワンクリックでWordPressに下書き投稿・更新する流れ

使用ツールと役割

本記事の手順はWindows環境を前提に進めます(macOS/Linuxでも近い構成で再現できますが、コマンドや設定名が一部異なる場合があります)。

先に全体像だけ押さえると、必要なのは次の3つです。①Obsidian(執筆)②AI(整形して記事化)③WordPress REST API+Node.js(下書き投稿・更新)。以降は、それぞれの役割を簡単に説明します。

  • Obsidian
    Markdownベースの執筆環境、ローカル完結・高速・拡張性
  • Obsidianのプラグイン
    • Copilot
      記事テンプレートからAI生成、結果はポップアップで取得
      Obsidian内でAIチャットを利用でき、保管庫内のノートを参照しながら執筆補助や要約ができます。
    • Shell Command
      特定の動作(ファイル保存時など)をトリガーにして、OS側のシェルスクリプトや外部プログラムを実行する。
    • Commander
      タブバーやステータスバーなど、画面上のあらゆる場所に自分専用のマクロやコマンドボタンを追加する。
    • Word Splitting for Japanese in Edit Mode
      編集モードでも日本語の単語の区切りを適切に認識させ、カーソル移動や単語選択を快適にする。
  • WordPress
    アプリケーションパスワードの発行、REST APIを使った下書き投稿・更新
  • Node.js
    WordPress連携プログラムpost.jsの実行環境
  • Node.jsのライブラリ
    • marked
      「Markdown(マークダウン)形式のテキストを、HTML形式に変換する」ためのJavaScriptライブラリです

実際の環境の構築

この章では、1.ObsidianのインストールとVault作成、2.必要プラグイン4つの導入、3.Copilotに生成AI(OpenAI等)の接続設定、までを行います。

Obsidianのインストール

1.Obsidian公式サイトからWindows版をダウンロードします。

Obsidianダウンロード画面

2.Obsidian-1.11.x.exeをクリックしてデフォルトインストールします。

Obsidianインストールファイル

3.インストール後、新規Vault(保管庫)を作成
例:保管庫の名称=Blog/ロケーション=C:\work\obsidian(この場合、C:\work\obsidian\Blogが作成されます)

日本語を選択して「作成」をクリックします。

Vault(保管庫)を作成

保管庫の名称(例:Blog)、ロケーション(例:C:\work\obsidian)を入力して「作成」を押してください。

Vault(保管庫)を作成2

C:\work\obsidian配下に保管庫の名称でBlogフォルダーが作成されます。

※日本語環境は初期の保管庫作成時に日本語を選択していれば設定済みです。後で言語の変更をする場合はトップ画面左下の歯車アイコン歯車アイコンから「オプション」-「Obsidianについて」-「言語」を日本語にすることで日本語環境になります。

オプション-Obsidianについて

今後各種設定はこの保管庫単位の歯車アイコン歯車アイコンから設定できます。

必要なプラグインのインストール

必要なプラグインは4つあります。

  • Word Splitting for Japanese in Edit Mode
  • Commander
  • Shell Commands
  • Copilot

1.「オプション」-「コミュニティプラグイン」-「コミュニティプラグイン有効化」をクリックします。
オプション-コミュニティプラグイン

2.「閲覧」(検索)を開き、Word Splitting for Japanese in Edit Mode を検索してインストールします。
オプション-コミュニティプラグイン-閲覧

Obsidianプラグイン検索

3.検索結果で表示された「Word Splitting for Japanese in Edit Mode」をクリックしてインストールします。
Obsidianプラグインインストール

4.インストール後に「有効化」ボタンをクリックして有効化してください。Obsidianプラグイン有効化

5.同様の手順で残り3つのプラグインCommander、Shell Commands、Copilotをインストールしてください。インストール後の必要な4つのプラグインが入った状態が以下です。
Obsidianプラグイン一覧

ワンポイントヒントCopilotプラグインとは

Copilotと聞いてGitHub CopilotやMicrosoft Copilotを連想する方が多いと思います。これらは用途が全く異なる別の製品です。Obsidian Copilotは、メモ作成アプリ「Obsidian」の中で、ChatGPTやClaude、GeminiといったAI(大規模言語モデル)を直接利用できるようにするコミュニティプラグインです。ちなみにObsidianにはGitHub Copilotのプラグインも存在します。

ツール名提供元主な目的
Obsidian Copilot(プラグイン)オープンソースObsidian 向けAI補助プラグイン
Microsoft Copilot/
Microsoft 365 Copilot
MicrosoftOfficeやWindowsなど日常作業のAI支援
GitHub CopilotGitHub(Microsoft傘下)ソフトウェア開発者向けのコード補完/生成支援
Copilot名称の製品表

Obsidian Copilot プラグインの設定

AIに補助させるため、連携したい生成AIを設定します。ここではOpenAIを選択しました。
OpenAI APIキーが別途必要になります。この章の後半にOpenAI APIキーの取得方法を記載しておきますので参考にしてください。他の生成AIでGeminiも選択できますので好みに応じて選択設定してください。
OpenAIのAPIを利用する場合は有料となりますが、開発コミュニティーに登録することで制限はありますが無料で利用可能です。(料金や無料枠は変更される可能性があります。)

1.「オプション」-「コミュニティプラグイン」-「Copilot」の歯車アイコン歯車アイコン をクリックします。
Obsidian Copilotプラグイン

2.「Basic」タブ-「Set Keys」をクリックします。
ここで入力するのはOpenAIのAPIキー(Secret key)です。キーは再表示できない場合があるため、発行直後に安全な場所へ控えてください。
Obsidian CopilotプラグインBasic

3.OpenAIのAPIキー(sk-projから始まる)を入力してポップアップ画面の最下部の「Close」をクリックしてください。「Add Model」はdisable状態になっていても問題ありません。再度表示時に有効になります。
OpenAI APIキー入力

4.Default Chat Modelから「gpt-4.1-mini(OpenAI) Vision」を選択します。
※openai/gptx.x(OpenRouter)Visionはここでは別物ですので選ばないでください)
OpenAIモデル「選択


【OpenAI APIキーの取得方法について】
OpenAIのAPIキーの設定欄の下に「Get OpenAI Key」のリンクがありますのでここから案内に従ってAPIキーを取得します。アカウントが無い場合は先にサインアップしてアカウントを作成してください。ログイン後に「API Keys」-「+Create new secret key」でAPIキーが発行されます。
OpenAI APIキーの取得

ただし、このままでは利用できません。クレジットカードを登録して5$~を課金する必要があります。無制限の追加課金を防ぐため自動追加課金は有効にせず、無効のままにしておきます。
OpenAI課金

Share inputs and outputs with OpenAIを有効にすればこれ以降無料で利用できます。(※条件は変更される可能性があるため、最新情報はOpenAIダッシュボードでご確認ください。)
Share inputs and outputs with OpenAI
gpt-4.1-miniモデルの場合は1日あたり最大250万トークンまで無料で利用可能です。(※2026年3月時点)
注意事項として、この設定を有効にすると、OpenAI に入力・出力データが共有されます。共有されたデータはモデルの品質改善、バグ・異常挙動の検出、評価・分析(人手レビューを含む場合あり)に使用され学習やレビューに使われる可能性があります。
機密情報・個人情報を送る用途には向かないので注意が必要です。

自動投稿フローができたら、次は「継続して安全に公開できる環境」づくりが重要です。独自ドメインの管理はバリュードメイン、運用基盤はコアサーバーのように役割で分けると整理しやすくなります。

Obsidianでの記事作成フロー

この章では、1.記事テンプレートの作成、2.Copilotでの下書き生成、3.プロンプト入力のQuick Command化、4.WordPress連携用ノート(投稿/更新用)の準備、までを順番に解説します。

記事テンプレートの作成

1.最初にテンプレートを保管するフォルダー(例:blog-drafts)を作成します。
記事テンプレートの作成

2.フォルダー(blog-drafts)を右クリックし、新規ノートを作成します。名前を例:「obsidian 記事作成」に変更します。
新規ノート作成

3.WordPress特化・Obsidian用ひな形として以下のテンプレートを作成します。
以下を新規ノート(obsidian 記事作成)にそのまま追加でコピー&ペーストしてください。

---
title: 
slug: 
category: 
tags: []
status: draft
wp_post_type: post
---

# 記事メモ(WordPress用)

## 記事タイトル(仮)
※検索結果に出したいタイトル案  
・

## 想定読者
・どんな人か(ITレベル/立場)
・何に困っているか

## 検索意図(重要)
※このキーワードで検索した人は「何を知りたいか」
・
・
・

## 記事のゴール
※この記事を読み終えたときの状態
・理解できる
・判断できる
・行動できる

## メインキーワード
・

## サブキーワード
・
・
・

---

## 書きたい内容メモ(雑でOK)

### 導入文で触れたいこと
・問題提起
・最近の変化/背景
・この記事で分かること

### 本文で書きたい見出し案(H2想定)
・
・
・

### 比較・表があれば入れたい
・AとBの違い
・メリット/デメリット

### 注意点・デメリット
・
・

### 向いている人 / 向いていない人
・

### よくある質問(FAQ候補)
・
・
・

---

## 参考リンク・一次情報
・
・

## 補足メモ(AIに反映させたいこと)
・断定しすぎない
・初心者向けに
・専門用語は必ず説明

貼り付けるとヘッダー部の---~---はプロパティの項目に自動追加されます。
Obsidian記事ひな形テンプレート

ワンポイントヒントTemplaterを使うと自動化の幅は広がりますが、今回はObsidianの操作、ノートの作成に焦点を当てる為、単純なテンプレートを自身で作成して使います。

テンプレートを使って必要事項を記入

ひな形を設置した後は、このノートに直接書き込んでも、コピーを作成してから記入しても構いません。今回はこのノートをそのまま使い、記事の内容をイメージしながら各項目を埋めていきます。

【記入例:参考】古いMacBook AirをSequoiaにOSアップする方法の記事を書いてみたい場合

ノート:「obsidian 記事作成」の項目

項目内容
記事タイトル(仮)・OCLPを使って古いMacBook AirをSequoiaにOSアップ
想定読者・MacBook Airユーザ
・古いMacBook Airを最新のMacOSにアップグレードしたい人
・古いMacBook Air 機種ID:MacBookAir6,2で記述
検索意図
(重要)
・古いMacBook Airを使いたい
・MacOSにアップグレード方法
・OCLPとは
記事のゴール・OCLPが何か理解できる
・具体的にアップ方法がわかる
メインキーワード・MacBook Air
・Sequoia
サブキーワード・機種ID
・古いMacBook Air
・OCLP
導入文で触れたいこと・古いMacBook Air 機種ID:MacBookAir6,2(13-inch, Early 2014)メモリー8G HDD256Gを持っているが、OSがmacOS11.0(Big Sur)までしか上げられない。
・古いMacBookAir6,2 (13-inch, Early 2014)を廃棄するにはもったいなく、書斎の置くに仕舞い込んだまま埃を被ったままになっているがこれに日の目を当てたい。Windows PCであれば11年前のPCを最新のWindows11にアップできるが動作が重くなり使い物にならないことも多々あるが、Macの場合はまだまだ動く。
・サードパーティ製のOCLPを導入すればmacOS 15.0(Sequoia)まであげられること。
本文で書きたい見出し案(H2想定)・OCLPの導入
・OCLPの使い方
・最新MacOSのダウンロードとUSBメモリーへの書き出し
・OCLP経由で最新MacOSのインストール・OCLPでその他のインストール
比較・表があれば入れたい
注意点・デメリット
向いている人/向いていない人
補足メモ(AIに反映させたいこと)・断定しすぎない
・初心者向けに
・専門用語は必ず説明
テンプレートへの記載項目例

ワンポイントヒントなぜこの構成が「WordPress特化」なのか

①Copilotが「記事構造」を理解しやすい、見出しの役割が明確、SEO要素(検索意図・KW)が明示的。
②WordPressブロックに自動変換されやすい。
H2/H3前提、FAQ→そのままFAQブロック化可能、比較→表ブロックにしやすい。
③人間の修正ポイントが減る。
タイトル、導入文、断定表現の調整だけで済む。

記事投稿のQuick Command化

記事をOpenAIと連携させるため一連の操作をCopilotでQuick Command化します。
一連の操作は以下のようになりますが、2〜4は毎回の操作が多く、慣れるまでミスも起きやすいので、右クリック1回で実行できるコマンドにまとめます。

  1. Ctrl+Aで全体を選択します。(プロパティーは自動的に対象外になります)
  2. Ctrl+PCopilot: Add selection to chat context
  3. Ctrl+PCopilot: Open Copilot Chat Window
  4. プロンプトの貼り付け実行

1.Ctrl+Pでコマンドリストを表示して、Copilot: Add new custom commandを選択する。
Copilot:Add new custom command

2.編集画面でName(例:Generate WordPress Draft)とPromptを入力します。Modelはgpt-4.1-mini(OpenAI)を選択します。Show in context menuにチェックが入っていることを確認してください。
Prompt(プロンプト)は以下を貼り付けてください。

今チャットの文脈に追加されているノート内容を元に、
WordPress向けの記事ひな形を作成してください。

条件:
・日本語
・導入文→本文→まとめ
・見出しはH2/H3のみ
・WordPressブロックエディタを意識
・FAQセクション必須
・Markdown形式
・下書きレベルでOK

Copilot Custom Command化

3.以上入力できたら「SAVE」します。記事内で右クリックしてCopilotを選択して一覧リストに作成したGenerate WordPress Draftがあることを確認してください。
Generate WordPress Draft作成

4.これで、記事内でCTL+Aで全選択した後に右クリックでGenerate WordPress Draftを選択すれば別小窓で実行結果が得られます。```markdownより下の全行をコピーしてWordPressの新規記事に貼り付ければ、WordPressの記事の初稿ができます。
Generate WordPress Draft実行

ワンポイントヒント作成したGenerate WordPress Draftを再編集するには?

コミュニティプラグイン「Copilot」歯車アイコン-「Command」の一覧リストのGenerate WordPress Draftの鉛筆マークを押せば編集できます。実はこの画面の「+Add cmd」からも新規コマンドが作成できます。

ワンポイントヒントPrompt(プロンプト)とは?

一言で言えば、「AIに対する『指示』や『問いかけ』の言葉」のことです。
AI(ChatGPTやGemini、Obsidian Copilotなど)は、人間のように自ら考えて動き出すことはありません。あなたが入力するテキスト(プロンプト)を受け取って初めて、「何をすべきか」を理解し、回答を生成します。

WordPressへ自動連携させるためにWordPress用の新規ノートを作成

1.WordPressへの貼り付けなどの操作が必要で面倒ですので、WordPressへ自動連携させるためにWordPress用の新規ノートを作成します。
例ではフォルダー名:ai_output、記事名:articleとします。
WordPress連携用ノート

2.articleにプロパティを追加します。下記の内容をコピー&ぺーストして貼り付けてください。自動的にプロパティとして設定されます。

---
wp_post_id:
wp_status: draft
wp_edit_url:
---

OpenAIで生成された記事を2の部分にコピー&ペーストします。
articleノート内容

プロパティ(1の部分)の説明

  • wp_post_id
    WordPressの記事IDです。投稿が成功した時にJsプログラムが書き込みます。
  • wp_status
    draft(文字固定)仮登録を意味します。JsプログラムでWordPressの仮登録用ノートして判断します。
  • wp_edit_url:
    WordPressの記事編集URLです。投稿が成功した時にJsプログラムが書き込みます。

2の部分はAIで生成した記事の全行をコピーして貼り付けます。(この操作は手動になります。自動化はできません)
現段階での物理フォルダー構成は以下のようになっています。
Obsidian物理フォルダー構成

3.WordPress連携用のアプリケーションパスワードをWordPress側で事前作成しておきます。WordPressに管理者でログインし、「ユーザ」‐「プロファイル」画面の一番下にアプリケーションパスワードの作成欄があるので新しいアプリケーションパスワード名(適当)を入力して「新しいアプリケーションパスワードを追加」をクリックしてください。

アプリケーションパスワードによる認証はHTTPS(SSL)が必須です。HTTP環境では通信が暗号化されず、認証情報が盗聴されるリスクがあります。WordPressサイトがhttps://で運用されていることを必ず確認してください。

WordPressアプリパスワード

4桁区切りで24桁のパスワードが発行されるのでメモをしておいてください。(画面を閉じるとパスワードは表示されません。不明になった場合は再発行してください。)このアプリケーションパスワードは文字通りアプリケーションから接続するためのパスワードで、管理画面にはログインできません。

次章よりWordPress連携用のプログラムを作成していきます。Node.jsで動作するようにします。

Obsidian-WordPress連携(post.js)の設計

Node.jsのインストール

本記事では、Node.js v24(Active LTS)を前提にします。古いバージョン(例:v18)はすでにEOLのため、依存ライブラリ側で動作しない可能性があります。

WordPressと連携させるプログラムにはJavaScriptを使用します。このプログラムを動かすための土台となる「Node.js」を、まずはパソコンに導入します。

1.Webブラウザーを開き、Node.js の公式ウェブサイトにアクセスします。
2.Windows Installerボタンをクリックして、インストーラー(node-v24.xx.x-x64.msiファイル)をダウンロードします。
3.ダウンロードしたnode-v24.xx.x-x64.msiファイルをダブルクリックしてインストールを開始します。デフォルトインストールで構いません。使用したnodeのバージョンはv24です。今回はv24に合わせてプログラミングしていますので、古いバージョンv18等ではエラーします。

4.プログラムフォルダ(例:C:\work\wp-post)を作成します。正しくインストールできたか、cmd画面で確認します。
C:\>cd \work\wp-post
C:\work\wp-post>node -v
C:\work\wp-post>npm -v

nodeライブラリのインストール

5.nodeのライブラリmarkedをインストールします。
C:\work\wp-post>npm install marked@latest
C:\work\wp-post>npm list marked
nodeバージョンの確認
インストールバージョンはmarked@17です。(nodeのバージョンはv24を想定しています。v18等低い場合はmarked@4の低いバージョンを入れる必要があります。)

WordPress用投稿プログラムpost.jsの作成

1.メモ帳でpost.jsを作成して、C:\work\wp-postフォルダーに保存します。
以下のプログラムをpost.jsにコピー&ペイストしてください。

const fs = require("fs");

// ===== 設定読み込み =====
const config = JSON.parse(
  fs.readFileSync("C:\\work\\wp-post\\config.json", "utf-8")
);

// ===== 設定 =====
const FILE = "C:\\work\\obsidian\\Blog\\ai_output\\article.md";
//↑最終的には固定ファイルではなくて開いているノートを自動で対象に変更します。

const USER = config.wp_user;
const APP_PASS = config.wp_app_pass;
const WP_BASE = config.wp_base_url;
const WP_API = `${WP_BASE}/wp-json/wp/v2/posts`;

// ===== メイン処理(async 必須)=====
(async () => {
  // ===== marked(ESM)読み込み =====
  const { marked } = await import("marked");

  marked.setOptions({
    gfm: true,
    breaks: false
  });

  // ===== article.md 読み込み =====
  let md = fs.readFileSync(FILE, "utf-8");

  // Copilotが付ける ```markdown を除去(1行目のみ想定)
  md = md.replace(/```markdown\s*\n?/, "");

  // ===== frontmatter 解析 =====
  let frontmatter = {};
  let body = md;

  const fmMatch = md.match(/^---\n([\s\S]*?)\n---\n/);
  if (fmMatch) {
    fmMatch[1].split("\n").forEach(line => {
      const [k, ...v] = line.split(":");
      frontmatter[k.trim()] = v.join(":").trim();
    });
    body = md.slice(fmMatch[0].length);
  }

  // ===== WordPress向けノート判定 =====
  if (frontmatter.wp_status !== "draft") {
    console.log("WordPress向けノートではありません");
    process.exit(0);
  }

  // ===== タイトル抽出(H1)=====
  const titleMatch = body.match(/^#\s+(.+)$/m);
  const title = titleMatch ? titleMatch[1] : "タイトル未設定";
  // 本文先頭のH1はWordPressタイトルと重複しやすいので削除
  body = body.replace(/^#\s+(.+)\r?\n/, "");

  // ===== Markdown → HTML =====
  const html = marked.parse(body);

  // ===== 新規 or 更新 判定 =====
  const isUpdate = !!frontmatter.wp_post_id;
  const url = isUpdate
    ? `${WP_API}/${frontmatter.wp_post_id}`
    : WP_API;

  const method = isUpdate ? "PUT" : "POST";

  // ===== WordPress 投稿 =====
  const res = await fetch(url, {
    method,
    headers: {
      "Authorization":
        "Basic " + Buffer.from(`${USER}:${APP_PASS}`).toString("base64"),
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      title,
      content: html,
      status: frontmatter.wp_status || "draft"
    })
  });

  const data = await res.json();

  console.log(
    isUpdate
      ? `更新成功 記事ID: ${data.id}`
      : `投稿成功 記事ID: ${data.id}`
  );
  //編集URLを wp_edit_url に設定
  const editUrl = `${WP_BASE}/wp-admin/post.php?post=${data.id}&action=edit`;

  // ===== 初回のみ wp_post_id を書き戻す =====
  if (!isUpdate) {
    frontmatter.wp_post_id = data.id;
    frontmatter.wp_status = frontmatter.wp_status || "draft";
    frontmatter.wp_edit_url = editUrl;

    const fmText =
      "---\n" +
      Object.entries(frontmatter)
        .map(([k, v]) => `${k}: ${v}`)
        .join("\n") +
      "\n---\n\n";

    fs.writeFileSync(FILE, fmText + body, "utf-8");
  }
})().catch(err => {
  console.error("投稿エラー");
  console.error(err);
});

2.メモ帳でconfig.jsonを作成し、C:\work\wp-postフォルダーに保存します。ローカル運用でパスワード等は別設定ファイルから読み込むようにします。以下の認証情報をconfig.jsonにコピー&ペーストしてください。

config.jsonは機密情報を含むため、取り扱いに注意してください。

  • Gitで管理する場合は.gitignoreに追加し、リポジトリに含めない
  • 共有フォルダやクラウド同期対象に置かない
  • 万一漏洩した場合は、WordPress管理画面からアプリケーションパスワードを即時無効化し、再発行する
{
  "wp_user": "username",
  "wp_app_pass": "tOmx xxxx xxxx xxxx xxxx",
  "wp_base_url": "https://www.example.jp"
}

3.WordPress投稿連携テスト
cmd窓からnode post.jsを実行します。連携データはObsidianで作成したC:\work\obsidian\Blog\ai_output\article.mdを自動で読み込みます。
Wordpress連携テスト

成功すれば“投稿成功”と”記事ID”が表示されます。再度実施した場合は対象記事を更新します。
post.jsによって記事IDと記事編集URLがそれぞれwp_post_id:、wp_edit_urlに追記されます。新規記事にしたい場合は、wp_post_id:番号を空白にすると新規作成となります。
実際のWordPressの管理画面の投稿一覧は次のようなものになっています。
記事投稿結果

markdown形式で書かれた内容も正しくHTMLに変換されています。
【変換様式】
# → H1
## → H2
### → H3
|  |  |→テーブル変換
記事内容

ここまでできればpost.jsをObsidiannで実行できるようにすればObsidian上で完結できます。

post.js実行のQuick Command化

仕上げまであと一歩です。「記事投稿のQuick Command化」では、CopilotでCommand化(一部)しました。

post.jsをワンクリックで実行するには、Shell CommandsとCommanderを使ってコマンド登録します。

Shell Command の設定

1.「コミュニティプラグイン」‐Shell commandsの歯車アイコン歯車アイコンをクリックし設定画面を出し、「New shell command」をクリックします。
Shell commandsの新規作成

cmd /c "cd /d "C:\work\wp-post" && node post.js"を設定します。
※C:\work\wp-postはpost.jsのある場所です。適宜自環境に合わせて変更してください。
コマンド設定

2.作成したコマンドのalias(別名)を付ける為にShell command without aliasの右にある歯車アイコン歯車アイコンをクリックして、「General」‐alias名:Post to WordPressを入力します。
Alias設定

コマンド内容

「Output」‐「Output channel for stdout」‐Notification balloonを選択します。
※ignoreのままだとCommander経由で実行した場合の結果表示がでません。
OUTPUT設定

3.作製したコマンドが正しく実行するか確認してみます。
「Post to WordPress」の右横にあるSHELL実行アイコン実行アイコンをクリックしてください。post.jsが結果出力した文字列が通知バルーンに表示されていればObsidianから正しく実行できています。
コマンド実行
※post.jsが見つからない等cmd自体のエラーの場合は日本語環境でエラー表示が文字化けする場合があります。

Commanderでリボンに実行アイコンを登録

1.「コミュニティプラグイン」‐Commanderの歯車アイコン歯車アイコンをクリックし設定画面を出します。
次に「Ribbon」‐「Add Command」をクリックします。
Commanderに登録

2.「Shell commands:Execute: Post to WordPress」を選択します。※一覧リストにない場合は、Postで検索すれば出てきます。
コマンド登録

3.Ribbon(画面左)に表示するアイコンを選択します。適宜選択設定しSAVEしてください。
リボン登録アイコン選択

4.Ribbon(画面左)の一番下にが追加されました。分かりやすいようにアイコンの色も設定できますので、適宜色を変えてください。
登録完了画面

※投稿前に、対象ノートを保存(Ctrl+S)して最新内容がファイルに反映されていることを確認してください。

Ribbonに追加したアイコンをクリックして、post.jsが結果出力した文字列が通知バルーンに表示されれば成功です。ブログが更新または新規登録できていれば一連の操作は完了です。

一連のWordPressへの仮登録までの操作のまとめをしておきます。

  • 1.「obsidian 記事作成」ノート内の各項目を記入する。
    書きたいことをイメージしながら記載する。
  • 2.「obsidian 記事作成」の内容をCtrl+Aで全選択する。
  • 3.マウス右クリックでCopilot:Generate WordPress Draftを選択する。
    OpenAIで記事が生成されます。
  • 4.生成文章をCtrl+Aで全選択しCtrl+Cでコピーする。
  • 5.「article」ノートにCtrl+Vでペーストする。
  • 6.RibbonのPostWordPressのアイコンをクリックする。
    post.jsが実行されWordPressに記事が仮登録されます。
    「article」ノートのwp_post_idには新規の場合に記事IDが書き込まれます。wp_edit_urlには編集URLが書き込まれます。
    記事IDが同じ場合は更新となり、記事IDを空欄にすれば新規作成となります。

ワンポイントヒント4、5の部分も自動化できないか

Copilotは「生成結果をObsidianのノートとして確定保存する権限を持っていません。そのため「生成別ノートへ自動貼り付け」はできません。(もしかして何かいい方法があるかもしれませんが今回は見つかりませんでした)

改良「今開いているノート」を投稿

作成したpost.jsはプログラム中でコメントしたとおりarticle.mdを固定で参照しています。これでは不便ですので、今開いているノートを投稿できるように改造します。(これができればpost.jsの完成形となります)

1.CommanderのShell command内容を変更
cmd /c "cd /d "C:\work\wp-post" && node post.js"から
cmd /c "cd /d "C:\work\wp-post" && node post.js "{{file_path:absolute}}""
に変更します。ノートのファイルパスをpost.jsに渡すようにします。

2.post.jsの引数対応

以下の内容にpost.jsを書き換えてください。

const fs = require("fs");

// ===== 設定読み込み =====
const config = JSON.parse(
  fs.readFileSync("C:\\work\\wp-post\\config.json", "utf-8")
);

// ===== 設定 =====
const FILE = process.argv[2];
if (!FILE) {
  console.log("ファイルパスが渡されていません");
  process.exit(1);
}

const USER = config.wp_user;
const APP_PASS = config.wp_app_pass;
const WP_BASE = config.wp_base_url;
const WP_API = `${WP_BASE}/wp-json/wp/v2/posts`;

// ===== メイン処理(async 必須)=====
(async () => {
  // ===== marked(ESM)読み込み =====
  const { marked } = await import("marked");

  marked.setOptions({
    gfm: true,
    breaks: false
  });

  // ===== article.md 読み込み =====
  let md = fs.readFileSync(FILE, "utf-8"); 

  // Copilotが付ける ```markdown を除去(1行目のみ想定)
  md = md.replace(/```markdown\s*\n?/, "");

  // ===== frontmatter 解析 =====
  let frontmatter = {};
  let body = md;

  const fmMatch = md.match(/^---\n([\s\S]*?)\n---\n/);
  if (fmMatch) {
    fmMatch[1].split("\n").forEach(line => {
      const [k, ...v] = line.split(":");
      frontmatter[k.trim()] = v.join(":").trim();
    });
    body = md.slice(fmMatch[0].length);
  }

  // ===== WordPress向けノート判定(★追加)=====
  if (frontmatter.wp_status !== "draft") {
    console.log("WordPress向けノートではありません");
    process.exit(0);
  }

  // ===== タイトル抽出(H1)=====
  const titleMatch = body.match(/^#\s+(.+)$/m);
  const title = titleMatch ? titleMatch[1] : "タイトル未設定";
  // 本文先頭のH1はWordPressタイトルと重複しやすいので削除
  body = body.replace(/^#\s+(.+)\r?\n/, "");

  // ===== Markdown → HTML =====
  const html = marked.parse(body);

  // ===== 新規 or 更新 判定 =====
  const isUpdate = !!frontmatter.wp_post_id;
  const url = isUpdate
    ? `${WP_API}/${frontmatter.wp_post_id}`
    : WP_API;

  const method = isUpdate ? "PUT" : "POST";

  // ===== WordPress 投稿 =====
  const res = await fetch(url, {
    method,
    headers: {
      "Authorization":
        "Basic " + Buffer.from(`${USER}:${APP_PASS}`).toString("base64"),
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      title,
      content: html,
      status: frontmatter.wp_status || "draft"
    })
  });

  const data = await res.json();

  console.log(
    isUpdate
      ? `更新成功 記事ID: ${data.id}`
      : `投稿成功 記事ID: ${data.id}`
  );

  // ★ 編集URLを wp_edit_url に設定
  const editUrl = `${WP_BASE}/wp-admin/post.php?post=${data.id}&action=edit`;
 
  // ===== 初回のみ wp_post_id を書き戻す =====
  if (!isUpdate) {
    frontmatter.wp_post_id = data.id;
    frontmatter.wp_status = frontmatter.wp_status || "draft";
    frontmatter.wp_edit_url = editUrl; // ★ 追加

    const fmText =
      "---\n" +
      Object.entries(frontmatter)
        .map(([k, v]) => `${k}: ${v}`)
        .join("\n") +
      "\n---\n\n";

    fs.writeFileSync(FILE, fmText + body, "utf-8");
  }
})().catch(err => {
  console.error("投稿エラー");
  console.error(err);
});

3.動作確認をします。元のarticleをコピーしてarticle2を作ってをクリックして正しくWordPressに投稿されたか確認してください。
記事投稿

以上で完成です。Obsidianで記事テンプレートを使い生成AIで記事が作成できます。またWordPressと連携していますので記事作成が容易になります。

まとめ:AI時代の「書く」と「出す」をつなぐ

初期構築に多少時間がかかりますが、Obsidianで生成AIの利用、WordPressへの連携の方法が理解できるようになり、スキルの向上もできます。今回の仕組みづくりで見えてきたのは、「ツール単体」ではなく役割分担と接続こそが生産性を高めるということです。

  • Obsidianは「執筆OS」
    思考を貯め、構造化し、育てる場所。下書きも履歴も文脈も、すべてを受け止める“書くための基盤”。
  • AIは「下書き加速装置」
    白紙を恐れず、叩き台を瞬時に作る相棒。人は判断と編集に集中できる。
  • WordPressは「発信基盤」
    完成した文章を、世界に届ける出口。公開・更新・管理を担う実戦の場。
  • つなぐことで初めて武器になる
    書く → 整える → 出す、が分断されている限り、効率は頭打ち。
    しかしこの3つを滑らかにつなげた瞬間、執筆は“作業”から“流れ”に変わる

AI時代に求められるのは、魔法のツールではありません。自分の思考と発信を、一気通貫で運べる導線です。その導線を自分の手で組めたなら、それはもう立派な「書く人のための制作環境」です。

次にやること:まずはテンプレを1本埋めて生成→下書き投稿まで一度通し、動いたら「今開いているノートを投稿」まで仕上げて、更新運用を回してみてください。

発信を続けるほど効いてくるのが「固定費」です。コアサーバーなら、以下のメリットがあります。

  • サーバー+ドメイン同時申し込みで、ドメイン永久無料(対象あり)
  • 500GBの大容量
    ※画像多めの記事や蓄積型メディアでも余裕が持てる
  • 月額390円~
    ※長期運用のランニングコストを小さくできる

固定費をできるだけ抑えたい方は、コアサーバー をチェックしてみてください。

残り8日!30周年30%OFFセール中

コアサーバー公式サイトをみる
▽キャンペーン開催中!
コアサーバーでは、V2プランとドメインの同時申し込みで
ドメインが実質0円(年間最大3,889円お得)になるサーバーセット割特典、
V2プランが初期費用無料30
%OFF(月額390円→273円)
30周年 3連勝・感謝キャンペーン
を展開中です。
お得なこの機会にご利用ください!
最新のキャンペーンは
こちらから

超高速化を実現するレンタルサーバー CORESERVER

▽キャンペーン開催中!
バリュードメインでは、
【 .com1個目 790 】のドメインセール、
ドメイン・サーバー同時契約でドメイン費用永久無料(年間最大3,889円お得)
などお得な特典やキャンペーンが盛りだくさん!
是非、お得なこの機会にご利用ください。最新のキャンペーンはこちらから

ドメイン取得ならValue Domain

ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。

執筆者:苗場 翔様

医療メーカーで新素材研究開発後、電機メーカーで制御器系システム開発を経てIT系マルチエンジニアをしています。またデザイン思考を実践し、アート思考などのいろんな思考方法に興味があります。

Posted by admin-dev


おすすめ関連記事

service

Value Domain
ドメイン取得&レンタルサーバーなら
Value Domain
ドメイン登録実績600万件を誇るドメイン取得・管理サービスと、高速・高機能・高品質なレンタルサーバーや、SSL証明書などを提供するドメイン・ホスティング総合サービスです。
目次へ目次へ