皆さんこんにちは、ライブチューブスターの屈辱です。
今回はかなり本気で、ChatGPTからWordPressに直接記事を自動投稿する仕組みを作ってみました。
しかも、ただ「できるらしい」で終わった話ではなく、実際に自分のWordPressサイトとつないで、本当に記事が公開されるところまで完成しています。
最初に結論を書くと、今回作ったのはこういう仕組みです。
自分がChatGPTに記事内容を指示する
↓
ChatGPTが記事を整える
↓
GPT ActionsがWordPressの独自APIを呼ぶ
↓
WordPressに記事が公開される
つまり、今までみたいにWordPress管理画面を開いて、タイトルを入れて、本文を貼って、公開ボタンを押して……という流れをかなり省略できるようになりました。
今回は、この仕組みをどうやって作ったのか、どこで詰まったのか、何を直したのか、そして今後どこまで拡張できそうかまで、かなり細かくまとめていきます。
そもそも何をやりたかったのか
今回やりたかったことは、単純に言うと「AIに記事を書かせる」だけではなく、「AIに記事を公開までやらせる」ことでした。
AIで文章を作るだけなら、今はもう珍しくないです。
- ChatGPTで記事本文を作る
- Claudeで長文を書く
- Geminiで整理する
このあたりは、もう多くの人がやっていると思います。
ただ、自分が欲しかったのはその先でした。
自分が本当にやりたかったのは、「記事を書いたあとにWordPressへコピペする手間」ごと消すことです。
つまり、理想はこうです。
- ChatGPTに「こういう記事を書いて」と言う
- AIが記事を整える
- そのままWordPressに投稿する
- できれば公開まで終わる
ここまでできたら、ブログ運営の速度がかなり変わります。
特に、自分みたいに「思いついたらすぐ形にしたい」「AIを使ってサイト運営をどんどん効率化したい」と考えているタイプには、かなり相性がいいです。
最初に考えた構成
最初に考えたのは、ざっくりこんな構成でした。
- ChatGPTのCustom GPTを作る
- そこにGPT Actionsを設定する
- WordPress側に独自APIを作る
- ChatGPTからそのAPIを呼ぶ
図にするとこうです。
ChatGPT(Custom GPT)
↓
GPT Actions
↓
WordPress独自API
↓
記事公開
ここでポイントなのが、WordPress標準のREST APIをそのまま使うのではなく、自分用の独自APIを作ることでした。
なぜなら、標準のWordPress APIにそのまま投稿しようとすると、認証や権限周りでややこしくなりやすいからです。
しかも今回は、Custom GPTのActions側の認証仕様とも噛み合わせる必要がありました。
最初にやったことはWordPressプラグイン作成
まず最初にやったのは、WordPress側に独自APIを生やすためのプラグインを作ることでした。
最初は「プロフィール更新」のような簡単なAPIから始めました。
これは、機能として本当に必要だったというより、APIがちゃんと動くか確認するためのテスト用です。
いきなり記事投稿APIから入るより、まずは簡単なデータ更新で
- APIが叩けるか
- WordPress側で保存できるか
- 認証が通るか
を確認したかったわけです。
結果としてこのプロフィール更新APIは最終的に不要だと分かりましたが、最初の確認用としては意味がありました。
最初に作ったプロフィール更新API
まずはこんな感じのものを作りました。
/wp-json/lts/v1/profile- プロフィール文の保存
- XのURL保存
- YouTubeのURL保存
これで、独自APIをWordPress側に追加できることは確認できました。
次に詰まったのは認証まわり
ここからが地味に大変でした。
最初はWordPressのApplication Passwordを使って、Basic認証でいけるかなと思っていました。
WordPress単体のAPIテストでは、ReqBinなどを使えば、Application Passwordで認証してPOSTできることは確認できました。
つまり、WordPress APIとしてはBasic認証で動くんです。
ただ、問題はChatGPTのCustom GPT Actions側でした。
Actionsの認証設定を見たときに、思っていたのと違いました。
- なし
- APIキー
- OAuth
という形で、自分が想定していたWordPressのBasic認証をそのまま素直に使う構成ではなかったんです。
ここで一回、「あれ、じゃあこのままではダメか」となりました。
ここで方針転換した
そこで方針を変えました。
WordPressのユーザー認証に乗せるのではなく、自分の独自API側でAPIキー認証を実装する方式です。
つまり、WordPressプラグインの中で
- 特定のヘッダー
X-API-Keyを見る - そこに入っている秘密キーが一致したら許可
- 一致しなければ401エラー
という仕組みを自前で持たせるようにしました。
この変更がかなり大きかったです。
なぜなら、Custom GPT Actions側はAPIキー認証を普通に設定できるので、ここが噛み合うようになったからです。
実際の流れは試行錯誤の連続だった
今回の作業で面白かったのは、まさにAIと相談しながら一歩ずつ作っていったことです。
かなりざっくり書くと、実際のやりとりはこういう流れでした。
最初の相談
自分:
ChatGPTからWordPressのAPIを使って、サイドバーの設定とかトップページの設定とかってできたりしますか
ここから話が始まりました。
最初は記事投稿だけではなく、サイトの設定そのものもAIでいじれないか、という興味から入っています。
そこからChatGPT側に「WordPressに専用プラグインを入れて、独自APIを作って、それをGPT Actionsから呼ぶ形が現実的」という方向性を教えてもらって、実際に作り始めました。
プラグイン作成
次に、自分のロリポップサーバーのWordPress配下にプラグインファイルを作成して、コードを入れていきました。
ここも最初は分からないことが多くて、
- どのフォルダに入れるのか
- どういうファイル名にするのか
- プラグインとして認識されるのか
など、基本的なところから一つずつ確認していきました。
実際にプラグイン一覧に表示されたときは、まずそれだけで一歩前進でした。
APIテスト
そのあとReqBinでAPIを叩いてみたんですが、ここでも色々ありました。
- 認証が通らない
- JSONの引用符が全角だった
- ヘッダーが正しくない
- 保存されているのにGETで空に見える
- Unicodeエスケープで文字化けに見える
こういう地味な詰まりポイントが何回も出ました。
特に印象的だったのは、JSONの中身が日本語でちゃんと保存されているのに、u7686u3055... のように見えて、「あれ文字化けした?」となった場面です。
でもこれは実際には文字化けではなく、JSONのUnicode表記だったので、結果的には正常でした。
プロフィール更新APIは最終的に不要だった
ここも今回の一つの学びでした。
最初はプロフィール更新APIを作っていましたが、途中で気づきました。
「これ、実運用ではほぼ使わないな」と。
プロフィールって、基本的には一度作ってしまえばそう何度も変えるものではないです。
もちろん細かく更新したい人もいると思いますが、自分の運用では、記事投稿の方が圧倒的に重要でした。
なので最終的には、プロフィール更新よりも、次のような機能を優先する方針に整理しました。
- 記事作成
- 記事更新
- カテゴリー設定
- タグ設定
- メタディスクリプション保存
- 見出し構造の整理
この判断はかなり正しかったと思っています。
Custom GPTのActions設定でも結構ハマった
WordPress側のAPIができても、次はCustom GPTのActions設定があります。
ここでも思ったより手間取りました。
OpenAPIスキーマの修正
Actionsに登録するにはOpenAPIスキーマを書く必要があるんですが、これが微妙に厳しいです。
例えば、普通のOpenAPIとしては問題なさそうでも、Actions側では
- components の書き方でエラー
- schemas subsection is not an object
- securitySchemes の扱いで引っかかる
みたいなことが起きました。
結果的には、認証はUI側で設定して、スキーマからは余計な認証定義を消すことで安定しました。
このへんは、普通のOpenAPI知識だけではハマりやすいポイントだと思います。
最初はWordPress標準APIを叩いてしまっていた
もう一つ大きかったのは、最初のスキーマが
/wp-json/wp/v2/posts
を向いてしまっていたことです。
これだとWordPress標準APIへの投稿になるので、権限周りでエラーが出やすいです。
実際に
- 投稿を編集する権限がない
- 401エラー
- publish_posts 権限がない
みたいなメッセージが出ました。
でも今回本当に使いたかったのは、自分で作ったこっちです。
/wp-json/lts/v1/create-post
つまり、独自APIを叩くスキーマにちゃんと切り替えることで、やっと想定通り動くようになりました。
ついにChatGPTから記事投稿成功
そして最後、ついに記事投稿が通りました。
Custom GPTのチャット欄に対して、記事内容を指示すると、Actionsが独自APIを呼び、WordPressに記事が投稿されたんです。
これはかなり感動しました。
正直、ここまで来るまでに細かい修正が多かったので、成功した瞬間は「本当にできたな」という感じでした。
しかも、ただ投稿できただけではなく、公開済みのURLまで返ってきたので、完全に実運用に乗せられる手応えがありました。
今の完成形でできること
現在の完成形では、主に以下ができます。
1. 記事作成
ChatGPTからWordPressへ新規記事を作成できます。
- タイトル
- 本文(HTML)
- スラッグ
- 抜粋
- ステータス
このあたりを渡して投稿できます。
2. 記事更新
既存記事の更新APIも作ったので、今後は追記や修正にも対応できます。
これがあると、「公開して終わり」ではなく、あとから内容を育てていくこともできます。
3. カテゴリー一覧取得
既存のカテゴリーを取得できるので、GPT側がカテゴリー候補を見て判断しやすくなります。
4. タグ一覧取得
既存タグの確認にも使えますし、存在しないタグを自動作成することもできます。
5. メタディスクリプション保存
SEOを考えるなら、これはかなり大きいです。
記事本文だけではなく、メタディスクリプションまで一緒に保存できるようにしてあります。
今後の優先拡張方針(もうできている)
一通り作ってみて、今後の優先順位もかなり整理できました。
今後は次の4つを優先したいです。
メタディスクリプション自動生成
これはあった方が絶対いいです。
記事を書いたあとに、AIが内容を見て適切なメタディスクリプションを作る。これは実用性が高いです。
見出し構造の整理
見出しは主に h2 と h3 を使うことが多いので、そこをAIに整理させたいです。
見出し構造が整っていると、読みやすさもSEOもかなり変わります。
タグ自動生成
毎回自分でタグを考えるのは地味に面倒です。
記事内容から
- ChatGPT
- WordPress
- AI活用
- 自動投稿
みたいなタグを自動で出せると楽です。
カテゴリー自動設定
これも重要です。
記事の内容を見て、例えば
- AI活用
- Claude体験記
のどちらに入れるかをAIに判断させたいです。
逆に今はやらなくていいと判断したもの
逆に、今は優先しないものも整理できました。
X自動投稿
これは面白いですが、今すぐ必須ではないです。
まずはブログ記事の生成と公開の精度を上げる方が先だと思っています。
YouTube動画の自動記事化
これも将来的にはやりたいですが、今はまだいいかなという感じです。
先に、普段のブログ記事投稿の方を完成度高く回せるようにしたいです。
AIによるアイキャッチ自動生成
これも今回は後回しです。
理由は単純で、自分は普段Googleスライドでサムネのテンプレートを持っていて、文字だけ差し替える形で十分回せているからです。
それに、AI画像生成は容量も食いやすいので、今はあまり優先したくないという考えです。
今回やってみて感じたこと
今回一連の流れをやってみて、改めて思ったのは、AIは「文章を作るだけ」の道具ではなくなってきているということです。
今までは
- AIで下書きを作る
- 人間が整える
- 人間が投稿する
という流れだったと思います。
でも今回の仕組みでは、そこからさらに一歩進んでいます。
AIが文章を作って、AIが投稿までやる。
ここまで来ると、ブログ運営そのものの設計が変わってきます。
もちろん、全部をAI任せにするのが正解とは思っていません。
でも、投稿作業の面倒な部分をかなり減らせるのは大きいです。
特に、自分みたいに「やりたいことが多い」「思いついたらすぐ形にしたい」タイプには、この自動化はかなり相性がいいです。
まとめ
今回は、ChatGPTからWordPressに直接記事を自動投稿する仕組みを、本気で作ってみた話を書きました。
最初は
- WordPressプラグイン作成
- API作成
- 認証設計
- OpenAPIスキーマ修正
- GPT Actions設定
と、かなり地道な作業の連続でした。
でも最終的には、Custom GPTからWordPressへ直接記事を公開するところまで成功しました。
これはかなり大きいです。
今後はさらに、
- メタディスクリプション自動生成
- タグ自動生成
- カテゴリー自動設定
- 見出し構造整理
を強化して、もっと実用的なAIブログ運営環境にしていきたいと思っています。
また進展があったら、このブログでも詳しく書いていきます。
それではまた。


コメント