GPTSからWordPressにAPI投稿する方法(ロリポップ運用環境対応)
WordPressをAPI経由で操作し、GPTS(ChatGPTのカスタムアシスタント)から直接ブログ投稿を行いたい開発者向けに、GCPを使ってラッパーAPIを構築する方法を紹介します。
【前提】環境の説明
- WordPress: ロリポップ! レンタルサーバーで運用
- PHPバージョン: WordPress REST APIを使用するには、PHP 7.4以上が必要
- GPTS: OpenAPI定義に基づきデータを渡して、ラッパーAPI経由で投稿
【ステップ 1】WordPress側の準備
ユーザー設定
WordPress側でAPI経由の投稿を許可するための、管理者ユーザーを作成しておく。
WAFの設定
ロリポップ! 環境では、以下の設定を一時的に無効化する必要があります:
- WAF (Web Application Firewall)
- 海外アクセスガード
※ 投稿時のみ無効化するようにしましょう
【ステップ 2】GCPでラッパーAPIを構築
基本方針
- Cloud Functions を使用
- APIキーで認証
- ソースを公開しても、ただ乗りを防ぐのが目的
Pythonでのラッパー処理
@https_fn.on_request()
def post_to_wordpress(req: https_fn.Request) -> https_fn.Response:
return post_to_wordpress_handler(req)
# メインハンドラー
def handle_request(req: https_fn.Request) -> https_fn.Response:
# APIキー確認
provided_api_key = req.headers.get('X-API-KEY')
if not provided_api_key or provided_api_key != EXPECTED_API_KEY:
return https_fn.Response("Unauthorized", status=401)
# 投稿の情報を解析
...
# アイキャッチ画像の検索と置換 (search_google_image)
...
# WordPressClientを使って投稿
...
- 実際には
WordPressClient.create_post(...)でREST APIを呼び出し - 戦略的にはHTML形式の本文 (5,000文字以上) を伝える
- 戦略的にカテゴリも同時に指定
【ステップ 3】GPTS側のOpenAPI定義
GPTSにわたすOpenAPI 3.1は以下の構成です:
openapi: 3.1.0
info:
title: ブログ投稿API
version: "3.0"
servers:
- url: https://post-to-wordpress-xxxxx.a.run.app
paths:
/:
post:
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PostRequest"
responses:
'200':
description: 投稿成功
...
- APIキーはヘッダにX-API-KEYとして指定
wp_user/wp_password/wp_url_baseは基本固定値を使用- image_keywordを充実させれば、自動でサムネイル以上の画像が補完される
【まとめ】
GPTSとWordPressの連携は、実際のセキュリティや継続性を意識すると、GCPのCloud FunctionsでラッパーAPIを作るのが最適です。
直接WordPress APIをGPTから呼ぶと、レンタルサーバーのWAFに当たって失敗しやすいのよ…
だから一回ラッパーして、APIキーで認証する形式なんだね!
ラッパーAPIを安全に構築すれば、GPTSとWordPressのセミオート型運用も手の尾になります。
実装の詳細やCloud Functionsのデプロイ手順が必要なら、それも別記事にしましょう。


コメント