「毎回ログインしてコピペして投稿…」を続けていると、地味に時間も集中力も削られます😵💫
でも WordPress REST API × Python を使えば、記事の作成・下書き・公開・予約投稿まで自動化できます✅
継続運用がラクになり、更新頻度も上げやすくなるので、ブログ運営の“伸びる土台”が整います🔥
WordPress REST APIは、外部プログラムからWordPressへ JSONで命令を送って操作できる仕組みです。
例えばこんなことが可能になります👇
REST API自体の概要や“外部から投稿を作れる”点はWordPress公式でも説明されています。
Pythonが入っていればOKです。HTTP送信は requests が鉄板です✨
pip install requests
投稿作成で使うURLは基本これ👇
https://あなたのドメイン/wp-json/wp/v2/postsWordPressのコアエンドポイントは v2 が基本です(ルート/名前空間の考え方も含め公式で説明あり)。
投稿の作成など“書き込み操作”には認証が必要です。
WordPressは 5.6以降 Application Passwords を標準搭載しており、REST APIに Basic認証で渡せます。
まずは一番シンプルな“投稿作成”からいきます💡
成功すると 201 Created が返ってくるのが目安です。
import os
import requests
SITE = "https://example.com"
API = f"{SITE}/wp-json/wp/v2/posts"
USER = os.environ["WP_USER"]
APP_PASSWORD = os.environ["WP_APP_PASSWORD"] # ←環境変数推奨🔒
data = {
"title": "テスト投稿🚀",
"content": "<p>Pythonから自動投稿できました✨</p>",
"status": "draft" # draft / publish / future
}
res = requests.post(API, auth=(USER, APP_PASSWORD), json=data)
print(res.status_code)
print(res.text)
requests の auth=(user, pass) はBasic認証として送ってくれます。
data["status"] = "publish"
data["status"] = "future"
data["date"] = "2026-01-25T07:00:00" # JSTで指定する運用が多いです🕘
投稿APIでは、カテゴリ(categories)やタグ(tags)を IDで指定できます✅
(IDは /wp-json/wp/v2/categories や /tags で取得できます)
data.update({
"categories": [12, 34], # カテゴリID
"tags": [56, 78] # タグID
})
これを入れておくと、投稿後の整理が激ラクになります🧹✨
画像をWordPressへアップロードするなら Mediaエンドポイントを使います。
POST /wp/v2/mediaアップロード後に返ってくる media ID を、投稿の featured_media に入れるとアイキャッチになります🎯
画像アップロードは少しだけヘッダー指定が必要になるので、運用テンプレ化すると強いです💪
(Mediaエンドポイントの存在自体は公式リファレンスに明記されています)
REST APIの content には HTMLをそのまま入れられます。
ただし運用で崩れやすいポイントがあるので注意👇
<p> <h2> <ul> など“基本タグ”中心にする環境変数や .env を使うのが鉄則です(漏洩すると最悪です⚠️)。
この点は元記事でも“秘密情報は環境変数へ”と注意されています。
Application PasswordsはBasic認証なので、HTTPS前提が安心です。
status_code と res.text を保存しておくだけで、復旧速度が段違いです🚑
A. WordPress 5.6以降は標準搭載で、ユーザー編集画面から生成できます。
A. requests.post() の戻りで 201 が返ると作成成功の目安です(失敗時は res.text に理由が出ます)。
A. content にHTMLを入れるのは一般的です。ただし外部HTMLの丸投げは危険なので、基本タグ中心が安全です⚠️
A. 可能です!まず MediaエンドポイントにPOSTでアップして、返ってきた media ID を投稿の featured_media に設定します。
A. セキュリティ系プラグインやWAF、パーマリンク設定、Basic認証ブロックなどが原因になりがちです🔍 まずは GET /wp-json/ が返るか確認すると切り分けが早いです✨
PythonとREST APIで投稿を自動化すると、**「書く以外の雑務」**が消えていきます🧹✨
更新がラクになるほど、ブログは伸びやすくなります📈
まずは 下書き投稿の自動化から始めるのが最短ルートです🚀
Pythonは「書けるようになるまで」がしんどい…😵💫
でもこの本は、業務自動化の流れがまとまっているので、**「とりあえず真似して動かす」→「自分用に改造する」**がやりやすいです✨
WordPressの自動投稿に挑戦する人の“最初の相棒”としてアリです📘リンクリンク
イラスト1枚から、テクスチャ付…