GPTSからWordPressにAPI投稿する方法(ロリポップ運用環境対応)

WordPress

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のデプロイ手順が必要なら、それも別記事にしましょう。

コメント

タイトルとURLをコピーしました