Python×WordPressで記事投稿を自動化!サムネまで一括アップロードする最短手順🚀🖼️

ブログ運営って、「書く」以外の作業が地味に時間を奪いますよね😇
下書き保存、画像アップ、アイキャッチ設定、投稿ボタン……。
これを 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

全体の流れ(最短の設計)🗺️✨

  1. メディアをアップロードして、画像IDを取得🖼️
  2. 投稿を作成して、その投稿に画像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-Typeimage/png に変えればOKです🎨

❓ 安全に運用するコツは?

HTTPSの利用、アプリケーションパスワードの適切管理、権限の最小化が重要です🔐

「Pythonで業務を自動化したいけど、どこから手を付ければいいか迷う…」という人は、まずこの1冊があると安心です😊
現場で使う“自動化の考え方”から、実装の手順までまとまっているので、手作業を減らす仕組みづくりのヒントが一気に見つかります👇

あざらし

はじめまして、あざらしです。 フリーターからエンジニア会社へ就職し、 現在はフリーランスのシステムエンジニアとして働いています。 本業のエンジニア業のかたわら、 ✍️ ブログ運営 と「収入の柱を増やす挑戦」を少しずつ続けています。 フリーター時代から比べると、 段階的に収入が増えていくのを実感できるのが素直にうれしい今日この頃。 このブログでは、日々の気づき・体験談 IT・ガジェット・ゲーム系の話 「調べて分かったこと」を噛み砕いた解説 などを中心に、ジャンルに縛られない雑記ブログとして発信しています。 「自分と同じように悩んでいる人のヒントになればいいな」 そんな気持ちで更新中です。 👉 プロフィール詳細は、名前「あざらし」をクリックしてください