ブログ運営って、「書く」以外の作業が地味に時間を奪いますよね😇
下書き保存、画像アップ、アイキャッチ設定、投稿ボタン……。
これを Python×WordPress REST API でまとめて自動化できたら、作業時間がごっそり減ります🧠✨
この記事では、画像(メディア)をアップロード → 記事投稿 → サムネ(アイキャッチ)設定までを、最短ルートでつなぐ方法を解説します📌
(手順の流れは「メディアを先にアップ→投稿作成→featured_media指定」の形です )
この記事では、Pythonを使って WordPressへの記事投稿を自動化する基本 をわかりやすく解説します📌
もし「投稿だけでなく、画像付き投稿やサムネイルまで自動化したい!」という場合は、こちらの記事も合わせて読むとさらに効率化が進みます👇
➡️ 【PythonでWordPressに自動投稿する REST API活用ガイド】(※自動投稿の基本からステップ実装まで丁寧に紹介)
この記事でできるようになること✅✨
- PythonからWordPressへ記事を自動投稿できる📝
- サムネ画像を自動アップロードできる🖼️
- 投稿時にアイキャッチ(featured image)も自動設定できる📌
- 作業が「書く」に集中できて、更新頻度が上がる🔥
事前準備🧰🔧
必要なもの(これだけ)
- WordPressのサイト(REST APIが有効)
- WordPressのログインユーザー
- アプリケーションパスワード(Basic認証用途)
- Python環境(requests使用)
requestsを入れる📦
WordPressへHTTPリクエストを投げるため、requests を使います。インストールはこれだけ👇
pip install requests
全体の流れ(最短の設計)🗺️✨
- メディアをアップロードして、画像IDを取得🖼️
- 投稿を作成して、その投稿に画像IDを featured_media として紐付け📌
この流れが一番シンプルで事故りにくいです👍
(記事の構成もこの2ステップで説明されています )
ステップ1:画像(メディア)をアップロードする🖼️⬆️
アップロード先URL(エンドポイント)
- メディアアップロード:
/wp-json/wp/v2/media
実装例(わかりやすい形に整理版)🐍✨
※サイトURLやユーザー情報は自分の環境に置き換えてください。
import requests
from pathlib import Path
WP_BASE = "https://example.com"
MEDIA_ENDPOINT = f"{WP_BASE}/wp-json/wp/v2/media"
USER = "your_username"
APP_PASS = "your_application_password" # アプリケーションパスワード推奨
AUTH = (USER, APP_PASS)
image_path = Path("path/to/your/image.jpg")
image_name = image_path.name
headers = {
"Content-Disposition": f'attachment; filename="{image_name}"',
"Content-Type": "image/jpeg", # pngなら image/png
}
with image_path.open("rb") as f:
r = requests.post(MEDIA_ENDPOINT, auth=AUTH, headers=headers, data=f)
r.raise_for_status()
media_id = r.json()["id"]
print("Uploaded media_id:", media_id)
ここがポイント💡
- Content-Type は画像形式に合わせる(JPEG/PNG)🎨
- 成功すると media_id が返る(次の投稿作成で使う)🔑
- 通信はできれば HTTPS 推奨(安全のため)🔒
ステップ2:投稿を作成し、サムネ(featured_media)を設定する📌📝
投稿作成エンドポイント
- 投稿作成:
/wp-json/wp/v2/posts
import requests
POSTS_ENDPOINT = f"{WP_BASE}/wp-json/wp/v2/posts"
post_data = {
"title": "Post with Featured Image",
"content": "本文です。HTMLでもOKです。",
"status": "publish", # 下書きなら "draft"
"featured_media": media_id, # ← ここがアイキャッチ!
}
r = requests.post(POSTS_ENDPOINT, auth=AUTH, json=post_data)
r.raise_for_status()
print("Created post:", r.json()["link"])
featured_mediaとは?🤔
アップロードした画像の ID(media_id) を featured_media に入れると、投稿のアイキャッチとして設定されます
失敗しがちなポイントと対策🧯⚠️
1) 401/403になる🔐
- アプリケーションパスワードを使う(Basic認証向け)
- セキュリティ系プラグインやWAFが弾く場合は例外設定も検討
2) 画像は上がったのにサムネにならない🖼️💦
featured_mediaに入れてるのが ID(数値) か確認- メディアアップロードが成功して 201 相当で返ってるか確認
3) 日本語が文字化けする🌀
json=post_dataを使う(requestsが適切に扱いやすい)- WordPress側の文字コード設定、テーマ、プラグイン干渉もチェック
さらに効率化するアイデア📈✨
- 下書きで一括投入→週末にまとめて公開(status="draft")🗂️
- カテゴリ/タグも自動付与して整理📚
- 投稿スケジュール(予約投稿)も自動化🕒
- 画像のaltテキストや説明文も一緒に設定してSEO強化🔍
まとめ:自動化すると、ブログが“続く”ようになる🔥📝
Python×WordPress REST APIで、
「投稿」+「サムネ設定」まで自動化できると、更新の心理的ハードルが激減します😌✨
手作業に追われるより、
コンテンツ作り・改善・収益導線に時間を回せるようになるのが最大のメリットです💰🚀
(手作業を減らして効率化しよう、という趣旨も記事内で述べられています )
よくある質問(FAQ)🙋♂️💬
❓ WordPress REST APIって、標準で使えるの?
基本的にはWordPressに標準搭載です。ただし、認証やセキュリティ設定(プラグイン/WAF)で制限されることがあります🔒
❓ サムネ画像は投稿と同時に設定できる?
できます✅
先に画像をアップロードして media_id を取り、投稿作成時に featured_media に入れればOKです
❓ 公開じゃなく下書きにしたい!
status を "draft" にすれば下書き保存できます📝✨(後から管理画面で公開もラク)
❓ 画像形式がPNGの場合は?
ヘッダの Content-Type を image/png に変えればOKです🎨
❓ 安全に運用するコツは?
HTTPSの利用、アプリケーションパスワードの適切管理、権限の最小化が重要です🔐
「Pythonで業務を自動化したいけど、どこから手を付ければいいか迷う…」という人は、まずこの1冊があると安心です😊
現場で使う“自動化の考え方”から、実装の手順までまとまっているので、手作業を減らす仕組みづくりのヒントが一気に見つかります👇リンクリンク



コメント