Claude CodeでWordPress記事作成を半自動化する – NPC
「ブログを書かなきゃ、でも時間がない」──そう感じているWordPress運営者は多いと思う。記事構成を考えて、書いて、整形して、投稿して。毎回それを繰り返すのは思った以上に重労働だ。
自分もそのひとりで、記事更新が後回しになりがちだった。そこで導入したのが Claude Code を使ったブログ記事の半自動化ワークフローだ。AIに丸投げ!完全に自動化!、、、するわけではなく、「AIがドラフトを作り、人間が確認・編集して投稿する」という流れを整えることで、作業時間を大幅に削減できた。
この記事では、Claude Code と WordPress REST API を組み合わせた半自動化の仕組みを、実際のワークフローと簡単なコード例を交えて解説する。WordPress 運営者やブロガーで「記事更新の効率を上げたい」と思っている人に届けばうれしい。
Claude Code とは何か
Claude Code は Anthropic が提供する CLI(コマンドライン)ベースの AI コーディングツールだ。ターミナルから直接 AI と対話しながら、コードの生成・修正・レビューができる。VS Code のような GUI ではなく、コマンドラインで動作するのが特徴で、ファイルの読み書きやシェルコマンドの実行もできる。
※「CLI(コマンドライン)」とは、マウスや画面上のボタンではなく、キーボードでテキスト命令を打ち込んでコンピュータを操作する方式のこと。「ターミナル」や「コマンドプロンプト」がその代表で、慣れると処理を素早く自動化しやすいのが特徴。
自分はこれをメインの開発パートナーとして使っている。コードをゼロから書くより、「こういう処理を書いて」と指示して出てきたコードを読み・確認・調整するほうが自分のスタイルに合っているからだ。ブログ記事の生成にも同じ感覚で使える。
ポイントは 「AIが書いたものをそのまま使わない」 こと。Claude Code はあくまで作業の補助ツールであり、最終的な判断と編集は自分で行う。それが「半自動化」という表現にこだわる理由でもある。「半自動化」というのは、料理で言えばミールキットのようなイメージだ。食材のカットや下ごしらえはキットが担ってくれるが、最終的に火を入れて味を整えるのは自分。AI が初稿を用意してくれるが、事実確認・トーン調整・公開判断という肝心なところは人間が責任を持って行う。
WordPress REST API で記事投稿を自動化する仕組み
WordPress には標準で REST API が備わっており、外部からHTTPリクエストを送ることで記事の作成・更新・削除ができる。複雑なプラグインを追加しなくても、認証さえ通れば curl や PHP からでも記事を投稿できる。
※「REST API」とは、WebサービスをHTTPリクエスト(URLへのアクセス)で操作するための仕組みのこと。たとえば「このURLにデータを送ると記事が作成される」という約束事が決まっており、プログラムやツールから外部でWordPressを操作できる。郵便で言えば「宛名の書き方ルール」が統一されているようなイメージで、誰でも同じルールに従えばやり取りできる仕組みになっている。
認証の準備
REST API 経由で記事を投稿するには認証が必要だ。最も手軽なのは「アプリケーションパスワード」を使う方法で、WordPress 5.6 以降であれば標準で使える。
※「アプリケーションパスワード」とは、通常のログインパスワードとは別に発行できる専用の認証キーのこと。REST API や外部ツールからWordPressへアクセスするときだけに使うパスワードで、万が一漏洩しても通常ログインには影響がなく、個別に無効化できるため安全に管理しやすい。
設定手順はシンプルだ。
- WordPress 管理画面 → ユーザー → プロフィール
- 「アプリケーションパスワード」セクションで任意の名前を入力して生成
- 表示されたパスワードをメモしておく(一度しか表示されない)
生成したパスワードは ユーザー名:アプリケーションパスワード の形式で Base64 エンコードして使用する。
※「Base64エンコード」とは、バイナリデータやテキストを英数字と記号のみで構成された文字列に変換する方式のこと。HTTP通信でパスワードなどの情報を安全に送るために使われる。暗号化ではなくエンコード(変換)なので、デコードすれば元に戻せる点に注意が必要。
curl での投稿例
まず動作確認として、curl でシンプルに記事を下書き投稿してみる。
※「curl」とは、ターミナルからHTTPリクエストを送信できるコマンドラインツールのこと。URLを指定してデータの送受信ができ、APIの動作確認や自動化スクリプトに広く使われている。
curl -X POST https://your-site.com/wp-json/wp/v2/posts \
-H "Authorization: Basic $(echo -n 'username:app-password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"title": "テスト記事",
"content": "<p>これはテスト投稿です。</p>",
"status": "draft"
}'
status を "draft" にすることで下書き保存になる。いきなり公開 ("publish") にするのではなく、必ず下書きで確認する習慣をつけておこう。
PHP での投稿例
PHP から実行する場合は wp_remote_post() を使う方法が WordPress 環境では安定している。外部スクリプトとして動かすなら curl 関数でも問題ない。
<?php
$username = 'your-username';
$app_password = 'xxxx xxxx xxxx xxxx xxxx xxxx';
$credentials = base64_encode($username . ':' . str_replace(' ', '', $app_password));
$response = wp_remote_post('https://your-site.com/wp-json/wp/v2/posts', [
'headers' => [
'Authorization' => 'Basic ' . $credentials,
'Content-Type' => 'application/json',
],
'body' => json_encode([
'title' => '記事タイトル',
'content' => '<p>記事の本文をここに入れる</p>',
'status' => 'draft',
]),
]);
if (is_wp_error($response)) {
echo 'エラー: ' . $response->get_error_message();
} else {
$body = json_decode(wp_remote_retrieve_body($response), true);
echo '投稿ID: ' . $body['id'];
}
アプリケーションパスワードはスペース区切りで表示されるが、リクエスト時はスペースを除去してから使う。この点でハマる人が多いので注意してほしい。
curl と PHP の使い分けは用途によって異なる。以下を参考にしてほしい。
- ターミナルで素早く動作確認したいとき
- WordPress 外部のスクリプトから実行する場合
- シェルスクリプトに組み込む場合
- WordPress テーマ・プラグイン内から実行する場合
- WordPress の HTTP API を活用できるため安定
- エラーハンドリングが wp_error で統一できる
Claude Code を使った実際のワークフロー
仕組みがわかったところで、自分が実際に使っているワークフローを紹介する。全体の流れを整理するとこのようになる。
- Claude Code に記事の構成とドラフトを生成させる
- 生成された内容を確認・編集する
- REST API 経由で WordPress に下書き投稿する
- 管理画面で最終確認をして公開する
ステップ1: Claude Code でドラフト生成
Claude Code のターミナルから、記事のテーマや要件を伝える。たとえばこんな感じだ。
「WordPressのカスタム投稿タイプについて、初心者向けの記事を書いてほしい。
SEOキーワードは「WordPress カスタム投稿」。
H2を4つ、2000字程度で。HTML形式で出力してほしい。」
Claude Code はこの指示をもとに HTML 形式の記事ドラフトを生成する。あわせてメタディスクリプションや X 投稿文なども一緒に出力させるようにしている。
生成されたドラフトを content フィールドに渡す際、データは JSON 形式で送信する。
※「JSON(JavaScript Object Notation)」とは、データを「キーと値のペア」で表現するテキスト形式のこと。プログラム間でデータをやり取りするときによく使われる。たとえば {"title": "記事タイトル", "status": "draft"} のように書く。人間にも読みやすく、多くのAPIがこの形式を採用している。
ステップ2: 確認・編集
生成されたドラフトを必ず自分の目で読む。ここは省略できないし、省略してはいけない。
チェックポイントは主に以下の4点だ。
- 事実の誤りや古い情報が含まれていないか
- 自分の実体験や意見として書けている部分はあるか
- npcブランドのトーン(カジュアルだが軽すぎない)に合っているか
- 読者の課題解決につながる内容になっているか
確認時に見るべきポイントをまとめるとこうなる。
特に技術記事は、コードの動作確認・バージョン情報の確認を必ず自分で行うこと。
ステップ3: REST API で下書き投稿
編集が終わったら、REST API 経由で WordPress に下書き投稿する。自分は Claude Code 内のワークフローとして、投稿用の簡単なスクリプトを組んでいる。生成されたHTMLをそのままリクエストの content に渡す形だ。
status は必ず draft にしておくこと。万が一おかしな内容が入っていても、公開前に止められる。
ステップ4: 管理画面で最終確認して公開
WordPress 管理画面を開いて、下書きの状態で記事を確認する。フォーマットの崩れ、カテゴリ・タグの設定、アイキャッチ画像の追加などを行ってから公開する。このステップだけは手動だが、記事の品質を守るために外せない。
ハマりどころと注意点
認証エラーが出る場合
アプリケーションパスワードのスペースを除去し忘れている場合が多い。また、サイトのセキュリティプラグインが REST API へのアクセスをブロックしていることもある。Wordfence などを使っている場合は REST API のアクセス制限設定を確認してほしい。
HTML がそのまま表示される
REST API 経由で投稿した場合、WordPress のブロックエディター(Gutenberg)が HTML を正確にパースしないことがある。Classic Editor を使っているなら問題ないが、Gutenberg 環境では投稿後の見た目を必ず確認すること。
※「Gutenberg(ブロックエディター)」とは、WordPress 5.0 から標準搭載されたビジュアルエディターのこと。コンテンツを「ブロック」という単位で組み立てる方式で、直感的にレイアウトを編集できる。REST API 経由でHTML を直接流し込む場合、ブロック形式との兼ね合いで表示が崩れることがあるため注意が必要。
AI が書いたコンテンツをそのまま公開しない
これはツールの問題ではなく運用の問題だが、大事なことなので改めて書いておく。AI が生成した文章は流暢に見えても、情報の正確性は保証されない。特に技術記事は、コードの動作確認・バージョン情報の確認を必ず自分で行うこと。
認証情報の管理に気をつける
アプリケーションパスワードやサイトの URL は環境変数(.env ファイル)に書いておき、スクリプトにハードコードしない。誤って Git にコミットすると認証情報が漏洩するリスクがある。
まとめ
- Claude Code は CLI ベースの AI ツールで、記事ドラフトの生成に使える
- WordPress REST API のアプリケーションパスワード認証で外部から記事投稿できる
- 投稿ステータスは必ず
draftにして、公開前に人間がチェックする - AI が生成した内容は事実確認・トーン確認を必ず人間が行う
- 「AIに丸投げ」ではなく「AIと協働」するスタンスが品質を守る
この仕組みを導入してから、記事を書くハードルが確実に下がった。「構成を考えるのが億劫」「書き出しでつまずく」という状況が減り、AI に初稿を出してもらってから自分の言葉で整える、というリズムが作れている。
ゼロから全部自分で書かなくていい。でも最終的な責任は自分が持つ。そのバランスが、自分にとってちょうどいい使い方だと感じている。
WordPress REST API の詳細な仕様は WordPress Developer Resources に整理されているので、併せて参照してほしい。
※この記事はNPCの中の人の実務経験をもとに書いています。