PR

PythonでWordPress APIを活用した再利用性の高い自動投稿システムの構築

PythonでWordPress APIを活用した再利用性の高い自動投稿システムの構築

1. はじめに

「Pythonを使ってブログ記事を自動投稿したい」と思ったことはありませんか?
WordPressの管理画面を開いて、記事を作成し、カテゴリーを設定し、公開ボタンを押す…という作業は、記事を頻繁に投稿する人にとっては面倒な作業です。

そこで本記事では、PythonとWordPress REST APIを活用し、シンプルで再利用性の高い自動投稿システムを構築する方法を詳しく解説します。

このシステムを作ることで、以下のようなことが可能になります。

Pythonスクリプトからボタン一つで記事を投稿
スケジュール投稿やスクレイピング連携も可能
カテゴリーやタグの自動設定でSEO対策もバッチリ

「技術ブログを効率的に運営したい」「APIを活用してWordPressを自動化したい」と考えている方におすすめの内容です。


2. WordPress APIの基本仕様

WordPressはREST APIを提供しており、外部アプリケーションから記事の取得・投稿・更新・削除が可能です。

2.1 WordPress REST APIのエンドポイント一覧

操作内容HTTPメソッドエンドポイント
投稿一覧の取得GET/wp-json/wp/v2/posts
特定の投稿取得GET/wp-json/wp/v2/posts/{id}
新規投稿POST/wp-json/wp/v2/posts
投稿の更新PUT/wp-json/wp/v2/posts/{id}
投稿の削除DELETE/wp-json/wp/v2/posts/{id}

2.2 認証方式

APIで投稿を作成・更新するには、認証が必要です。主な認証方法は以下の通りです。

✅ 推奨: Application Passwords

  • WordPress管理画面の 「ユーザー」→「アプリケーションパスワード」 で発行
  • APIリクエスト時に Basic認証(ユーザー名 + パスワード) を使用

✅ JWT認証(プラグインが必要)

  • wp-jwt-auth プラグインを導入し、トークンを取得
  • Authorization: Bearer トークン をリクエストに付与

✅ OAuth 2.0(高度な認証)

  • WordPress.comで使用される方式
  • クライアントID/シークレットが必要

本記事では、簡単に実装できるApplication Passwordsを使用します。


3. PythonでWordPress APIを操作する投稿システムの構築

Pythonを使って、拡張性の高いWordPress自動投稿システムを構築します。


3.1 必要なライブラリのインストール

以下のライブラリをインストールします。

pip install requests python-dotenv

3.2 環境変数を使った認証情報の管理

APIキーなどの機密情報は、.env ファイルに保存し、Pythonコード内では dotenv を使って読み込みます。

📌 .env ファイルの作成

WP_URL=https://example.com
WP_USERNAME=your_username
WP_APP_PASSWORD=your_application_password

📌 .gitignore.env を追加し、Gitに公開しないようにする

.env

3.3 WordPress API クライアントの作成

APIを操作するための WordPressAPI クラスを作成します。

📌 wordpress_api.py

import os
import requests
from requests.auth import HTTPBasicAuth
from dotenv import load_dotenv

# 環境変数の読み込み
load_dotenv()

# WordPressの設定
WP_URL = os.getenv("WP_URL")
WP_USERNAME = os.getenv("WP_USERNAME")
WP_APP_PASSWORD = os.getenv("WP_APP_PASSWORD")
API_BASE = f"{WP_URL}/wp-json/wp/v2"

class WordPressAPI:
    def __init__(self):
        """ WordPress APIとの認証を設定 """
        self.auth = HTTPBasicAuth(WP_USERNAME, WP_APP_PASSWORD)

    def create_post(self, title, content, status="publish", categories=None, tags=None):
        """ 新規投稿を作成する """
        url = f"{API_BASE}/posts"
        payload = {
            "title": title,
            "content": content,
            "status": status,
            "categories": categories or [],
            "tags": tags or []
        }
        response = requests.post(url, json=payload, auth=self.auth)
        return response.json()

    def get_posts(self, per_page=5):
        """ 投稿一覧を取得する """
        url = f"{API_BASE}/posts"
        response = requests.get(url, params={"per_page": per_page}, auth=self.auth)
        return response.json()

3.4 Pythonスクリプトから投稿

📌 post_article.py

from wordpress_api import WordPressAPI

# APIクライアントの初期化
wp = WordPressAPI()

# 記事を投稿
response = wp.create_post(
    title="PythonでWordPressに自動投稿する方法",
    content="<h2>WordPress APIを活用しよう</h2><p>この投稿はPythonから自動投稿されました。</p>",
    status="publish"
)
print(response)

4. 再利用性の高い設計のポイント

環境変数の活用

  • .env ファイルを使い、APIキーを安全に管理

クラス設計

  • WordPressAPI クラスを作成し、メソッドをモジュール化

エラーハンドリングの追加

  • try-except を実装し、APIのレスポンスをチェック

5. 発展的な機能追加(応用例)

💡 スケジューリング投稿

  • schedule ライブラリや cron を使って定期投稿

💡 メディアアップロード機能

  • WordPress APIを使って画像をアップロードし、記事に埋め込む

💡 カテゴリー・タグ管理

  • API経由でカテゴリーとタグを自動設定

💡 スクレイピング連携

  • BeautifulSoupScrapy を使い、他サイトから記事を収集し、自動投稿

6. まとめ

PythonとWordPress APIを活用し、記事の投稿を自動化できる
環境変数を活用してセキュアな設計を実現
スケジュール投稿、スクレイピング、画像投稿などの拡張も可能

次のステップ:
🚀 メディアアップロード機能の追加
🚀 エラーハンドリングの強化
🚀 Google Cloud Functionsなどのクラウド環境での運用

この仕組みを活用することで、エンジニアの生産性を向上させ、コンテンツマーケティングを自動化することが可能です!

コメント

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