「AIで記事は書けるようになったが、WordPressに貼り付ける作業が毎回残る」「アイキャッチを上げて、カテゴリーを選んで、下書き保存して、を繰り返している」。記事づくりをAIに任せても、最後の投稿作業が手作業のままだと、1本ごとに10分前後が消えていきます。
この作業は、WordPressに標準で備わっているREST APIとアプリケーションパスワードを使えば、プラグインを追加せずに自動化できます。当サイトは運営している3つのサイトすべてを、この仕組みで投稿しています。AIが本文とアイキャッチを用意し、コマンド1本で下書きが作られ、人がやるのは確認と公開ボタンだけです。
この記事では、設定の手順、投稿スクリプトの考え方、安全に運用するための決まり、うまくいかないときの対処をまとめます。
本記事における当サイトの立場
・当サイトはこの仕組みを実際に3サイトで運用しています。記事内の手順は、その設定をもとにしています
・特定のプラグインや有料ツールを紹介する記事ではありません。WordPress標準の機能だけで完結します
・サーバーやセキュリティ設定によっては動かない場合があります。その際の確認先も後述します
REST APIとアプリケーションパスワードとは
WordPressには、管理画面を開かずに外部から記事や画像を操作できる窓口があります。これがREST APIです。https://サイトのドメイン/wp-json/wp/v2/posts のようなアドレスに対して、プログラムからデータを送ると、記事が作られます。
この窓口を使うには本人確認が必要で、そのために用意されているのがアプリケーションパスワードです。WordPress 5.6以降に標準で搭載されており、ログイン用のパスワードとは別に発行します。
| ログインパスワード | アプリケーションパスワード | |
|---|---|---|
| 用途 | 人が管理画面に入る | プログラムがAPIを使う |
| 発行数 | 1つ | 用途ごとに複数発行できる |
| 取り消し | 変更が必要 | 1つだけ無効化できる |
| 管理画面へのログイン | できる | できない |
重要なのは最後の2行です。アプリケーションパスワードが漏れても、それで管理画面にログインすることはできず、気づいた時点でそのパスワードだけを無効化できます。ログインパスワードをプログラムに渡さないことが、この仕組みを安全に使う前提になります。
設定の手順(初回だけ・5分ほど)
- 投稿用のユーザーを決める
権限は「編集者」以上が必要です。管理者アカウントをそのまま使うこともできますが、投稿専用のユーザーを別に作っておくと、あとで権限を絞りやすくなります。 - アプリケーションパスワードを発行する
管理画面の「ユーザー → プロフィール」を開き、ページ下部の「アプリケーションパスワード」で名前(例:ai-post)を入れて追加します。空白で区切られた24文字の文字列が1回だけ表示されるので、この画面を閉じる前に次の手順へ進みます。 - 認証情報をファイルに保存する
サイトのURL、ユーザー名、発行された文字列の3つを、スクリプトと同じ場所の設定ファイル(.envなど)に書きます。空白はそのままで問題ありません。このファイルはチャットやログに貼らないようにします。 - 動作確認をする
自分の情報を返す/wp-json/wp/v2/users/meにアクセスして、ユーザー名と権限が返ってくれば準備は完了です。
コマンドラインで確認する場合は、次のような形になります(ユーザー名とパスワードは自分のものに置き換えます)。
curl -u "ユーザー名:xxxx xxxx xxxx xxxx xxxx xxxx" https://example.com/wp-json/wp/v2/users/me
投稿スクリプトに持たせる4つの動き
スクリプトの言語は何でも構いません。当サイトはPythonで書いていますが、やっていることは次の4つだけです。
押さえておきたいポイント
- カテゴリーの一覧を取る…
/wp/v2/categoriesを読み、IDと名前の対応を確認する。投稿時はIDで指定する - アイキャッチを先に上げる…
/wp/v2/mediaに画像を送ると、メディアIDが返る。記事本文より先に処理する - 記事を作る…
/wp/v2/postsにタイトル・本文HTML・スラッグ・カテゴリーID・メディアIDをまとめて送る - 既定は下書き…
statusをdraftにしておき、公開はオプションを明示したときだけにする
本文はHTMLのまま送れます。AIに記事を書かせるときは、最初からWordPressに貼れるHTMLで出力させておくと、変換の工程がなくなります。見出し、表、ボックスの装飾もHTMLで指定できるため、テーマの機能に頼らずに記事の型をそろえられます。
AIエージェントと組み合わせる場合
Claude Codeのように、ファイルを読み書きしてコマンドを実行できるAIエージェントを使っている場合、この投稿スクリプトをAI側から呼ぶ形にできます。「◯◯というテーマで記事を書いて、下書きまで入れて」という指示から、本文の執筆、アイキャッチの生成、投稿まで一続きになります。当サイトの運用の実際は、下の関連記事にまとめています。
安全に運用するための決まり
自動投稿は便利な反面、間違った内容がそのまま公開される事故と隣り合わせです。当サイトでは次の4つを固定のルールにしています。
- 新規投稿は下書きで作る
公開は人が本文を読んでから行います。AIが書いた数値や固有名詞の誤りは、ここで止めます。 - 公開中の記事を書き換えるときは、事前に内容を確認する
更新用の処理は公開状態を変えませんが、本文は即座に置き換わります。差し替え前の本文を保存しておくと戻せます。 - 認証情報はチャットとログに出さない
AIとのやりとりにパスワードを貼らない、スクリプトの出力にも表示しない、という2点を守ります。 - 使わなくなったら無効化する
アプリケーションパスワードは管理画面から1つずつ取り消せます。外注先やツールごとに分けて発行しておくと、切り離しが簡単です。
うまくいかないときの確認先
| 症状 | 原因として多いもの | 確認すること |
|---|---|---|
| HTTP 401 | ユーザー名かパスワードの誤り | 発行し直して、空白を含めてそのまま貼る |
| HTTP 403 | 権限不足、またはサーバーの防御機能 | ユーザーの権限が編集者以上か。レンタルサーバーのWAF設定 |
| HTTP 404(wp-jsonが開かない) | REST APIが無効化されている | セキュリティ系プラグインの設定。パーマリンク設定の保存し直し |
| 画像だけ415で弾かれる | WebP形式が許可されていない | PNGやJPEGで試す。またはWebPのアップロードを許可する |
注意したいケース:セキュリティプラグインがREST APIを止めている
不正アクセス対策として、REST APIをまとめて無効化する設定を持つプラグインがあります。全部を有効に戻すのではなく、ログイン済みユーザーのみ許可する設定にできるかを先に確認してください。アプリケーションパスワードでの認証は「ログイン済み」として扱われるため、その設定で動きます。
よくある質問
Q. プラグインを入れるのと、何が違いますか。
A. 投稿の自動化プラグインも同じREST APIを内部で使っていることが多く、仕組みは変わりません。標準機能だけで組むと、プラグインの更新停止や有料化の影響を受けない点が利点です。
Q. 無料のレンタルサーバーでも使えますか。
A. WordPressが動いていてREST APIが有効なら使えます。ただし一部のサーバーでは外部からのAPIアクセスが制限されていることがあり、その場合はサーバー側の設定で許可が必要です。
Q. 複数のサイトを1つのスクリプトで扱えますか。
A. サイトごとに設定ファイルを分け、実行時にどのサイトかを指定する形にすれば1本で済みます。当サイトは3サイトをこの方法で運用しています。
Q. AIが書いた記事をそのまま公開しても大丈夫ですか。
A. 数値や固有名詞の誤りが混ざることがあるため、当サイトでは人が読んでから公開しています。下書き止まりにしておく設計は、そのための安全装置です。
まとめ
- WordPress標準のREST APIとアプリケーションパスワードで、プラグインなしに投稿を自動化できる。ログインパスワードはプログラムに渡さない
- スクリプトの動きは、カテゴリー取得・アイキャッチ送信・記事作成・下書き固定の4つ。本文はHTMLのまま送れる
- 新規は下書き固定、認証情報はチャットとログに出さない、使わなくなったら無効化する。この3つを守れば、事故は起きにくい


コメント