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経由でカテゴリーとタグを自動設定
💡 スクレイピング連携
BeautifulSoup
やScrapy
を使い、他サイトから記事を収集し、自動投稿
6. まとめ
✅ PythonとWordPress APIを活用し、記事の投稿を自動化できる
✅ 環境変数を活用してセキュアな設計を実現
✅ スケジュール投稿、スクレイピング、画像投稿などの拡張も可能
次のステップ:
🚀 メディアアップロード機能の追加
🚀 エラーハンドリングの強化
🚀 Google Cloud Functionsなどのクラウド環境での運用
この仕組みを活用することで、エンジニアの生産性を向上させ、コンテンツマーケティングを自動化することが可能です!
コメント