「自動化できた!」と思ったら盛大にコケた話
副業でブログ運営を始めて半年が経った頃、私はある野望を抱いていました。
「記事作成を全自動化して、寝てる間に収益を生み出す仕組みを作ろう!」
そのために取り組んだのが、PexelsのフリーフォトをWordPressに自動アップロードする仕組みづくりでした。会社員として毎日残業しながら副業をしている身としては、作業を自動化できるかどうかは死活問題です。ところが、これが思った以上に手こずりまして……今日はその失敗談と、最終的にたどり着いた解決策をシェアしたいと思います。
同じように「WordPressへの画像自動アップロードが失敗する」と悩んでいる方、ぜひ最後まで読んでみてください。
そもそもなぜPexels画像を自動アップロードしたかったのか
まず背景を説明させてください。ブログ記事を書くとき、毎回アイキャッチ画像を探すのって地味に時間がかかりますよね。
- Pexelsにアクセスする
- キーワードで検索する
- 良さそうな画像を選ぶ
- ダウンロードする
- WordPressにアップロードする
- アイキャッチに設定する
この作業、1記事につき5〜10分はかかります。月に20記事書くとしたら、それだけで最大200分=約3時間以上が画像探しに消えていく計算です。本業で疲れ切った体にはなかなかこたえます。
「PexelsにはAPIがあるし、WordPressにもREST APIがある。組み合わせれば自動化できるはずだ!」そう思い立ったわけです。
最初の失敗:認証エラーの壁
さっそくPexels APIのキーを取得して、Pythonスクリプトを書いてみました。処理の流れとしては、
- Pexels APIでキーワード検索して画像URLを取得
- 画像をダウンロード
- WordPress REST APIのメディアエンドポイントにPOSTリクエストで送信
という至ってシンプルな構成です。コードを書いて意気揚々と実行してみたら……
401 Unauthorized
見事に認証エラー。「あれ?IDとパスワードは合ってるのに?」と首をかしげました。
原因を調べてみると、WordPress REST APIへの画像アップロードには通常のパスワードではなく「アプリケーションパスワード」が必要だということが判明。WordPress 5.6以降に導入された機能で、ダッシュボードの「ユーザー」→「プロフィール」から発行できます。
これを知らずに詰まっていた時間、約2時間……。副業あるあるですね。
次の失敗:MIMEタイプエラー
アプリケーションパスワードを設定して再挑戦!今度こそと思ったら、別のエラーが出ました。
Sorry, this file type is not permitted for security reasons.
日本語にすると「このファイル形式はセキュリティ上の理由で許可されていません」というもの。
Pexelsからダウンロードした画像はjpgやpngのはずなのに、なぜ?と調べてみると、リクエスト時にContent-Typeヘッダーを正しく指定していなかったのが原因でした。WordPressは送信されてくるファイルのMIMEタイプを厳密にチェックするため、ここを間違えると問答無用で弾かれます。
正しくは画像ファイルに合わせて image/jpeg や image/png を指定する必要があります。さらに Content-Disposition ヘッダーにファイル名も指定しないといけないという、地味にめんどくさい仕様があります。
三度目の失敗:サーバー側のファイルサイズ制限
ヘッダー問題を修正して再実行。今度はアップロード自体は成功したように見えましたが、高解像度の画像がことごとく失敗していました。
エラーを見ると 413 Request Entity Too Large。要するにファイルサイズが大きすぎてサーバーに弾かれている状態です。
レンタルサーバーの管理画面やphp.iniの設定で upload_max_filesize や post_max_size が制限されており、デフォルトでは2MBや8MBに設定されていることが多いです。Pexelsの高品質画像はそれを超えることがあります。
対策としては主に2つ。
- サーバー側の設定を変更する(ホスティング会社によっては管理画面から変更可能)
- Pexelsから取得する際に小さいサイズの画像URLを指定する(Pexels APIはsrc.mediumやsrc.smallなど複数サイズを返してくれます)
私は後者を選びました。アイキャッチ画像であれば src.large サイズで十分だと判断したからです。
最終的に動いたコードの概要
試行錯誤の末、ようやく安定して動くようになったポイントをまとめます。
- WordPressのアプリケーションパスワードを使用する:通常パスワードは使わない
- Content-TypeとContent-Dispositionヘッダーを正確に指定する
- Pexels APIから適切なサイズの画像URLを取得する:
src.largeあたりがバランス良し - ファイル名にはASCII文字のみを使う:日本語ファイル名は文字化けや失敗の原因になります
- アップロード後にメディアIDを記録しておく:後で投稿のアイキャッチに設定するときに使います
これらを押さえるだけで、以前は30分かかっていた作業が数秒で完了するようになりました。
副業初心者へのアドバイス:失敗は「授業料」と考えよう
今回の一件で費やした時間、合計で丸1日近くはあったと思います。「その時間で記事書けたじゃん」という声もあるかもしれません(実際、夫にそう言われました)。
でも私はこう考えています。一度仕組みを作れば、その後ずっと楽になる。
月20記事×毎回10分の画像作業=200分。年間では2400分、つまり40時間が節約できます。初期投資として1日使ったとしても、数ヶ月で元が取れる計算です。
副業で自動化にチャレンジするときは、最初からうまくいくと思わないことが大切です。エラーメッセージはGoogle翻訳にかけて意味を理解する、エラーコードで検索する、この2つの習慣を身につけるだけで解決速度がグッと上がります。
まとめ:WordPressへの画像自動アップロード失敗の主な原因
最後に、今回遭遇した失敗原因を整理しておきます。
- ✅ 認証エラー(401)→ アプリケーションパスワードを使う
- ✅ MIMEタイプエラー→ Content-Typeヘッダーを正しく設定する
- ✅ ファイルサイズエラー(413)→ 画像サイズを小さくするかサーバー設定を変更する
- ✅ ファイル名の文字化け→ ASCII文字のみのファイル名を使う
同じところで詰まっている方の参考になれば幸いです。自動化の道は険しいですが、一度乗り越えると本当に楽になります。一緒に頑張りましょう!

コメント