「毎回ログインしてコピペして投稿…」を続けていると、地味に時間も集中力も削られます😵💫
でも WordPress REST API × Python を使えば、記事の作成・下書き・公開・予約投稿まで自動化できます✅
継続運用がラクになり、更新頻度も上げやすくなるので、ブログ運営の“伸びる土台”が整います🔥
✅WordPress REST APIってなに?(できること一覧)📌
WordPress REST APIは、外部プログラムからWordPressへ JSONで命令を送って操作できる仕組みです。
例えばこんなことが可能になります👇
- 📝 投稿を新規作成(下書き/公開/予約)
- 🔁 投稿の更新・削除
- 🏷️ カテゴリやタグ付け
- 🖼️ 画像アップロード(メディア登録)やアイキャッチ設定
- 📚 外部ツール(Notion/スプレッドシート/CSV)から記事生成→投稿
REST API自体の概要や“外部から投稿を作れる”点はWordPress公式でも説明されています。
🔧事前準備(最短で失敗しないセット)🧰
1) Python環境を用意🐍
Pythonが入っていればOKです。HTTP送信は requests が鉄板です✨
pip install requests
2) REST APIのエンドポイントを確認🌐
投稿作成で使うURLは基本これ👇
https://あなたのドメイン/wp-json/wp/v2/posts
WordPressのコアエンドポイントは v2 が基本です(ルート/名前空間の考え方も含め公式で説明あり)。
🔐認証は「Application Passwords」が一番ラクで安全🔑
投稿の作成など“書き込み操作”には認証が必要です。
WordPressは 5.6以降 Application Passwords を標準搭載しており、REST APIに Basic認証で渡せます。
✅Application Passwordsの作り方(ざっくり)
- WordPress管理画面 → ユーザー → 自分のユーザー編集
- Application Passwords を生成
- 表示されたパスワードを控える(※再表示されないことが多いので注意⚠️)
📝Pythonで「下書き投稿」を作る(最小コード)✨
まずは一番シンプルな“投稿作成”からいきます💡
成功すると 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認証として送ってくれます。
⏰「予約投稿」「即公開」も超カンタン📅
✅即公開(publish)
data["status"] = "publish"
✅予約投稿(future + date)
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エンドポイントの存在自体は公式リファレンスに明記されています)
🧼HTMLコンテンツの扱い方(崩れないコツ)🧩
REST APIの content には HTMLをそのまま入れられます。
ただし運用で崩れやすいポイントがあるので注意👇
- ✅
<p><h2><ul>など“基本タグ”中心にする - ⚠️ 外部から拾ったHTMLをそのまま流し込まない(スクリプト混入対策)
- ✅ 画像は「メディア登録 → URL挿入」の流れが安定🧱
⚠️実運用でハマりやすい注意点(ここだけは守る)🛡️
①パスワードはコードに直書きしない🔒
環境変数や .env を使うのが鉄則です(漏洩すると最悪です⚠️)。
この点は元記事でも“秘密情報は環境変数へ”と注意されています。
②HTTPSで運用する🌐
Application PasswordsはBasic認証なので、HTTPS前提が安心です。
③失敗時のレスポンスをログに残す🧾
status_code と res.text を保存しておくだけで、復旧速度が段違いです🚑
🌈この自動投稿がハマる人(得する未来)🎁
- ✍️ 記事更新が面倒で止まりがち → “更新が習慣化” しやすい✨
- 📄 CSV/スプレッドシートで記事を管理している → 一括投稿が可能📦
- 🤖 AI生成文を整形して投稿したい → 生成→整形→投稿の流れが自動化⚙️
- 🧑💻 作業を「仕組み」にしたい → ブログが資産化しやすい🏗️
❓FAQ(よくある質問)💬
Q1. Application Passwordsってプラグイン必須?🔑
A. WordPress 5.6以降は標準搭載で、ユーザー編集画面から生成できます。
Q2. 投稿が成功したかはどう判断する?✅
A. requests.post() の戻りで 201 が返ると作成成功の目安です(失敗時は res.text に理由が出ます)。
Q3. HTMLを入れても大丈夫?🧩
A. content にHTMLを入れるのは一般的です。ただし外部HTMLの丸投げは危険なので、基本タグ中心が安全です⚠️
Q4. アイキャッチ画像も自動化できる?🖼️
A. 可能です!まず MediaエンドポイントにPOSTでアップして、返ってきた media ID を投稿の featured_media に設定します。
Q5. REST APIのURL(/wp-json/)が開けないときは?🌐
A. セキュリティ系プラグインやWAF、パーマリンク設定、Basic認証ブロックなどが原因になりがちです🔍 まずは GET /wp-json/ が返るか確認すると切り分けが早いです✨
✅記事末尾まとめ📌
PythonとREST APIで投稿を自動化すると、**「書く以外の雑務」**が消えていきます🧹✨
更新がラクになるほど、ブログは伸びやすくなります📈
まずは 下書き投稿の自動化から始めるのが最短ルートです🚀
Pythonは「書けるようになるまで」がしんどい…😵💫
でもこの本は、業務自動化の流れがまとまっているので、**「とりあえず真似して動かす」→「自分用に改造する」**がやりやすいです✨
WordPressの自動投稿に挑戦する人の“最初の相棒”としてアリです📘リンクリンク


コメント