WordPressの記事を自動投稿できるようになると、次に自動化したくなるのが「アイキャッチ画像」です。
記事本文はn8nで入稿できても、
- 画像をWordPressへアップロードする
- 投稿を開く
- アイキャッチ画像を選ぶ
- 保存する
という作業が残っていると、完全には手間が減りません。
n8nでは、このアイキャッチ画像の設定まで自動化できます。
基本の流れは、
- 画像を用意する
- WordPressへアップロードする
- 画像IDを取得する
- 記事IDを取得する
- その記事に画像IDを設定する
です。
WordPressでは、投稿のアイキャッチ画像は「featured_media」という項目に画像のIDを指定する仕組みになっています。
この記事では、n8nを使ってWordPressの記事へアイキャッチ画像を自動設定する方法を、初心者向けにやさしく解説します。
今回作る自動化
今回の完成イメージは次の通りです。
- 記事情報
- 画像を用意
- WordPressへ画像アップロード
- Media IDを取得
- WordPress記事を作成
- Post IDを取得
- featured_mediaへMedia IDを設定
- アイキャッチ画像完成
難しく見えるかもしれません。
でも大事なのは、
- 記事にもIDがある
- 画像にもIDがある
という2つを理解することです。
WordPressのアイキャッチ画像はどうやって決まる?
WordPressでは、メディアライブラリへ画像をアップロードすると、その画像にIDが付きます。
たとえば、
- 画像ID:512
です。
一方、記事にも、
- 投稿ID:845
のようなIDがあります。
WordPress REST APIでは、
投稿ID 845の記事に
画像ID 512をアイキャッチとして設定する
という処理ができます。
WordPress公式のREST APIでは、投稿データに「featured_media」という項目が用意されており、ここに画像のメディアIDを指定できます。(developer.wordpress.org)
Media IDとは?
Media IDは、
「WordPressにアップロードした画像の番号」
と考えるとわかりやすいです。
たとえば3枚の画像をアップロードすると、
- 画像A
ID:501 - 画像B
ID:502 - 画像C
ID:503
のように、それぞれ違うIDが付きます。
n8nでは、このIDを次の処理で使います。
Post IDとは?
Post IDは、
「WordPressの記事の番号」
です。
たとえば、
- 記事A
ID:800 - 記事B
ID:801
というように、記事ごとに番号があります。
アイキャッチ画像を設定するときは、
- どの記事に設定するか=Post ID
- どの画像を使うか=Media ID
の2つが必要になります。
全体の考え方
初心者はまず、次の形を覚えれば大丈夫です。
- 画像
↓
WordPressへアップロード
↓
Media ID取得 - 記事
↓
WordPressへ作成
↓
Post ID取得
そのあと、
Post ID
+
Media ID
↓
アイキャッチ設定
という流れです。
画像はどうやって用意する?
画像は、必ずAI生成である必要はありません。
たとえば、
- 自分で撮影した画像
- Canvaで作った画像
- 画像生成AIで作った画像
- 既存の自社素材
などでも使えます。
n8nで自動化するときに重要なのは、
「画像ファイルをn8nが扱える状態にする」
ことです。
Binary Dataとは?
画像やPDFなどのファイルをn8nで扱うと、
Binary Data
という言葉が出てくることがあります。
難しく見えますが、
「画像そのもののデータ」
くらいに考えれば大丈夫です。
タイトルや本文は文字データです。
一方、
- JPEG
- PNG
- WebP
などはファイルデータです。
そのため、画像アップロードでは文字データとは少し違う扱いになります。
WordPressへ画像をアップロードする
WordPress REST APIには、メディアを扱うためのエンドポイントがあります。
画像アップロードでは、
/wp-json/wp/v2/media
を使います。
WordPress公式REST APIでも、メディア作成には、
POST /wp/v2/media
が用意されています。(developer.wordpress.org)
n8nではHTTP Requestノードを使って、このURLへ画像を送る方法があります。
HTTP Requestノードとは?
HTTP Requestノードは、
「n8nから外部サービスのAPIへ直接お願いを送るノード」
です。
今回なら、
n8n
↓
WordPress REST API
↓
画像をアップロードしてください
というお願いを送ります。
WordPress専用ノードだけでできない処理を補うときにも便利です。
画像アップロードの基本設定
たとえばWordPressサイトが、
https://example.com
なら、画像アップロード先は、
https://example.com/wp-json/wp/v2/media
のようになります。
Methodは、
POST
を使います。
POSTは、
「新しいデータを作る・送る」
ときによく使う方法です。
認証も必要
WordPressへ勝手に画像をアップロードできてしまうと危険です。
そのため、認証が必要です。
WordPressではApplication Passwordsを使ってREST APIへ接続できます。
n8n側では、
- WordPressユーザー名
- アプリケーションパスワード
などをCredentialへ設定します。
画像アップロードでも、この認証を使います。
画像アップロードでHeaderを使うことがある
画像ファイルを送る場合、
Header
を設定することがあります。
Headerとは、
「送っているデータについての追加情報」
です。
たとえば、
Content-Type
を使って、
image/jpegimage/png
などを指定する場合があります。
ファイル名を伝えるために、
Content-Disposition
を使うこともあります。
ただし、n8nの画面や設定方法はバージョンによって変わることがあります。
実際の画面では、Binary Dataを送る設定やファイル名指定方法を確認してください。
画像アップロードに成功するとIDが返る
WordPressへの画像アップロードが成功すると、REST APIから画像の情報が返ってきます。
その中に、
id
があります。
たとえば、
{
"id": 512
}
のような形です。
この、
512
がMedia IDです。
WordPress公式のMedia APIでも、メディア項目には一意の「id」があります。(developer.wordpress.org)
n8nでMedia IDを取り出す
画像アップロードノードのOUTPUTに、
id
が出ていれば、その値を次のノードで使えます。
たとえばExpressionなら、
{{ $json["id"] }}
のような形です。
ただし、実際には画像アップロードノードの名前を指定して、
{{ $('画像アップロード').first().json.id }}
のように取得することもあります。
ノード構成によって書き方は変わります。
次にWordPress記事を作成する
画像アップロードとは別に、WordPressの記事を作ります。
たとえば、
- タイトル
- 本文
- カテゴリ
- 投稿ステータス
を設定します。
初心者なら、
status
=draft
つまり下書きがおすすめです。
記事作成に成功すると、WordPressから記事のIDが返ってきます。
これがPost IDです。
投稿IDを確認する
たとえばWordPress記事作成後のOUTPUTが、
id:845
なら、
845
がPost IDです。
このIDを使って、
「845番の記事を更新する」
という処理を行います。
アイキャッチ設定は記事の更新で行える
WordPress REST APIでは、既存の記事を更新できます。
投稿更新のエンドポイントは、
POST /wp/v2/posts/<id>
です。
たとえばPost IDが845なら、
https://example.com/wp-json/wp/v2/posts/845
という形です。
WordPress公式でも、投稿更新は、
POST /wp/v2/posts/<id>
として案内されています。(developer.wordpress.org)
featured_mediaを設定する
記事更新時に、
featured_media
へMedia IDを送ります。
たとえば、
{
"featured_media": 512
}
です。
意味は、
「この記事のアイキャッチ画像に、Media ID 512を使ってください」
です。
WordPress公式の投稿APIでも、featured_mediaは「投稿に設定するアイキャッチ画像のメディアID」として定義されています。(developer.wordpress.org)
n8nでの流れ
実際のワークフローは、
- 画像生成または画像取得
- HTTP Request → WordPressへ画像アップロード
- Media ID取得
- WordPress 記事作成
- Post ID取得
- HTTP Request → 記事更新
- featured_media設定
という形にできます。
Bodyには何を入れる?
最後の記事更新用HTTP Requestでは、
{
"featured_media": 512
}
のようなJSONを送ります。
ただし512は固定値ではありません。
毎回アップロードされた画像によってIDが変わるからです。
そこでExpressionを使います。
たとえば、
{
"featured_media": {{ $('画像アップロード').first().json.id }}
}
のようにします。
実際の入力方式はn8nの設定画面に合わせてください。
なぜMedia IDを使うの?
初心者は、
「画像URLを入れればいいのでは?」
と思うかもしれません。
しかしWordPressのfeatured_mediaは、
画像URL
ではなく、
Media ID
を使います。
WordPress公式APIでも、featured_mediaのデータ型はinteger、つまり整数のIDとして定義されています。(developer.wordpress.org)
ここはかなり重要です。
画像URLとMedia IDは別物
たとえば、
- 画像URL
https://example.com/wp-content/uploads/image.jpg - Media ID
512
は別の情報です。
アイキャッチ設定に必要なのは、
512
の方です。
URLだけ取得しても、そのままfeatured_mediaへ入れることはできません。
すでにWordPressにある画像でも使える
毎回新しい画像をアップロードする必要はありません。
すでにWordPressメディアライブラリに画像があるなら、そのMedia IDを取得してアイキャッチに設定できます。
たとえば、
- 共通アイキャッチ
- カテゴリ別画像
- 既存のブランド画像
などを使い回すこともできます。
altテキストも設定できる
画像をWordPressへアップロードしたあと、alt_textを設定することもできます。
alt_textとは、
画像が見えない場合などに使われる代替テキスト
です。
WordPress公式Media APIでも、メディア項目にalt_textが用意されています。(developer.wordpress.org)
画像アップロード後に、
- 記事タイトル
- 画像内容
などをもとにalt_textを設定する方法もあります。
altテキストはキーワード詰め込みにしない
SEOを意識すると、
キーワードを全部入れたい
と思うかもしれません。
でも、altテキストは画像の内容を説明するものです。
不自然にキーワードを並べるのではなく、
「この画像が何を表しているか」
が伝わる短い文章にする方が自然です。
AIで画像生成から自動化することもできる
記事本文からAIで画像を作る場合、
- Google Sheets
- ↓
- OpenAI 記事作成
- ↓
- OpenAI 画像指示作成
- ↓
- 画像生成
- ↓
- WordPressへ画像アップロード
- ↓
- 記事作成
- ↓
- アイキャッチ設定
という流れにできます。
これなら、
- 記事本文
- アイキャッチ画像
- WordPress下書き
まで一連の流れにできます。
ただし画像生成は後から追加でOK
初心者の場合、最初から、
記事生成
画像生成
WordPress投稿
アイキャッチ設定
まで全部作ると複雑です。
まずは、
手元の画像
↓
WordPressへアップロード
↓
アイキャッチ設定
だけでテストする方がわかりやすいです。
これが成功してから画像生成を追加しましょう。
記事作成前に画像をアップロードする方法
1つ目の方法は、
先に画像をアップロード
する方法です。
- 画像アップロード
- ↓
- Media ID取得
- ↓
- 記事作成
- ↓
- 記事作成時にfeatured_mediaも指定
という形です。
WordPressの投稿作成APIにもfeatured_media項目があるため、Media IDが先にわかっていれば、記事作成時に設定できます。(developer.wordpress.org)
記事作成後に画像を設定する方法
もう1つは、
記事を先に作る
方法です。
- 記事作成
- ↓
- Post ID取得
- ↓
- 画像アップロード
- ↓
- Media ID取得
- ↓
- 記事更新
- ↓
- featured_media設定
です。
どちらでも可能です。
初心者にはどちらがおすすめ?
初心者には、
記事作成
↓
画像アップロード
↓
記事更新
でもいいですが、
画像アップロード
↓
Media ID取得
↓
記事作成
の方がノード数を減らせる場合があります。
ただし、すでにWordPress記事作成の自動化が完成しているなら、
最後にHTTP Requestを1つ追加してfeatured_mediaを設定
する方が変更しやすいです。
既存ワークフローへ追加する場合
すでに、
Google Sheets
↓
OpenAI
↓
WordPress下書き作成
まで完成しているなら、
画像生成
↓
画像アップロード
↓
WordPress下書き作成
↓
アイキャッチ設定
という形へ広げられます。
大事なのは、
- 画像アップロードのMedia ID
- WordPress記事のPost ID
の両方を最後のノードで使えるようにすることです。
Expressionで別ノードのIDを使う
たとえば、
画像アップロード
というノードのMedia IDを取得するなら、
{{ $('画像アップロード').first().json.id }}
WordPress記事作成ノードのPost IDを取得するなら、
{{ $('WP下書き作成').first().json.id }}
のように参照できます。
ノード名は自分のワークフローに合わせて変更してください。
HTTP RequestのURLにもExpressionを使える
記事更新URLは、記事ごとにPost IDが変わります。
そのため、
https://example.com/wp-json/wp/v2/posts/845
の845部分を固定することはできません。
Expressionを使って、
https://example.com/wp-json/wp/v2/posts/{{ $('WP下書き作成').first().json.id }}
のように、投稿IDを入れます。
これで毎回違う記事を自動で更新できます。
よくある失敗1:画像URLをfeatured_mediaへ入れている
かなり起こりやすい間違いです。
featured_mediaへ必要なのは、
画像URLではなくMedia ID
です。
正しい例:
512
間違いやすい例:
https://example.com/image.jpg
WordPress公式APIでもfeatured_mediaは整数型のIDです。(developer.wordpress.org)
よくある失敗2:Post IDとMedia IDを逆にする
Post ID=記事
Media ID=画像
です。
たとえば、
Post ID:845
Media ID:512
なら、
845の記事に512の画像を設定
します。
逆にしないようにしましょう。
よくある失敗3:画像アップロードに失敗している
featured_media設定だけを見るのではなく、
その前の画像アップロードノード
も確認します。
Media IDが返っていなければ、アイキャッチ設定はできません。
よくある失敗4:画像がWordPressで扱えない
画像形式やファイルデータが正しくない場合、アップロードに失敗することがあります。
- JPEG
- PNG
- WebP
など、WordPress側で扱える形式か確認しましょう。
また、サーバー側でアップロードサイズの上限が設定されている場合もあります。
よくある失敗5:Invalid featured media ID
WordPressでは、不正なMedia IDを指定するとエラーになる場合があります。
WordPress内部でも、featured_mediaとして渡されたIDが正しく使えない場合は「Invalid featured media ID」というエラーを返す処理があります。(developer.wordpress.org)
この場合は、
- Media IDが正しいか
- 画像がWordPressに存在するか
- 数字として送っているか
を確認しましょう。
よくある失敗6:テーマがアイキャッチに対応していない
WordPressでは、投稿タイプやテーマ側がアイキャッチ画像をサポートしている必要があります。
通常のWordPressテーマでは対応していることが多いですが、特殊な投稿タイプなどでは違う場合があります。
WordPress側で普通に手動設定できるか確認するとわかりやすいです。
よくある失敗7:REST APIがブロックされている
記事投稿はできるのに画像処理だけ失敗する場合でも、セキュリティ設定やサーバー側の制限が関係することがあります。
特に、
- REST API制限
- WAF
- セキュリティプラグイン
などを確認します。
ただし、接続できないからといってすべてのセキュリティ機能を無効にするのは避けましょう。
利用サービスの公式情報を確認しながら調整してください。
同じ画像を何度もアップロードしないようにする
自動化では、同じワークフローをもう一度実行したときに、
- 同じ画像が2枚
- 3枚
とWordPressへアップロードされることがあります。
対策として、
- Media ID
- 画像URL
- 投稿ID
などをGoogle Sheetsへ保存しておく方法があります。
たとえば、
画像アップロード済み=済
Media ID=512
と管理します。
Google SheetsへMedia IDを保存する
画像アップロード後に、
Media ID
をGoogle Sheetsへ書き戻しておくと便利です。
たとえば、
記事A
Post ID:845
Media ID:512
投稿状態:完了
という形です。
あとからトラブルがあったときも、
どの画像を使ったのか
を確認しやすくなります。
処理順にも注意する
Media IDを使う前に、画像アップロードが終わっている必要があります。
Post IDを使う前に、記事作成が終わっている必要があります。
つまり、
まだ存在していないIDを先に使う
ことはできません。
n8nではノードの順番を確認しましょう。
IFノードで安全確認する方法
さらに安全にするなら、
- Media IDがあるか
- Post IDがあるか
をIFノードで確認できます。
たとえば、
- 画像アップロード
- ↓
- IF
- ↓
- Media IDあり → アイキャッチ設定
- Media IDなし → エラー処理
という流れです。
これなら画像アップロードに失敗したまま次へ進むのを防ぎやすくなります。
まずは既存画像1枚でテストする
最初からAI画像生成まで組み込む必要はありません。
初心者なら、
- テスト用画像1枚
- ↓
- WordPressへアップロード
- ↓
- Media ID取得
- ↓
- テスト記事へ設定
という流れだけで確認しましょう。
これで成功したら、
- 画像生成
- Google Sheets
- OpenAI
などを追加します。
アイキャッチまで自動化するメリット
記事入稿だけ自動化しても、
- 画像アップロード
- 画像選択
- アイキャッチ設定
が手作業なら、記事数が増えるほど作業が残ります。
アイキャッチまで自動化すると、
記事本文作成
↓
画像作成
↓
WordPress入稿
↓
アイキャッチ設定
まで一連の流れにできます。
ブログを継続的に運営する場合は、かなり大きな時短になります。
ただし完全自動化しすぎない
AI生成画像の場合、
- 記事内容と合っていない
- 文字が崩れている
- 不自然な画像になっている
- 似た画像ばかりになる
ということがあります。
そのため初心者なら、
n8nで下書き+アイキャッチ設定
↓
WordPressで最終確認
↓
公開
がおすすめです。
ココナラのn8nテンプレートと組み合わせる
私は、
「ChatGPTで作った記事をWordPressへ半自動入稿するn8nテンプレート Lite」
をココナラで公開しています。
基本の、
Google Sheets
↓
n8n
↓
WordPress下書き
という流れを作るためのテンプレートです。
今回の記事で紹介したアイキャッチ画像の自動設定は、その入稿自動化をさらに発展させる機能です。
まずLiteで、
- 記事入稿
まで理解して、
そのあと、
- 画像アップロード
- Media ID取得
- featured_media設定
を追加すると、ワークフローを段階的に育てられます。
テンプレートは完成ボタンではない
テンプレートを読み込んでも、
何も設定せず自動で動く
わけではありません。
自分の環境に合わせて、
- Google Sheets
- WordPress Credential
- サイトURL
- カテゴリ
- API設定
などを変更する必要があります。
テンプレートは、
「ゼロから設計する時間を減らすもの」
として使うのがおすすめです。
初心者はこの順番で作ろう
- WordPressへテスト画像をアップロードする
- OUTPUTからMedia IDを確認する
- WordPressへテスト記事を作る
- Post IDを確認する
- HTTP Requestノードを追加する
- URLにPost IDを入れる
- Bodyにfeatured_mediaを設定する
- Media IDをExpressionで入れる
- 実行する
- WordPressでアイキャッチ画像を確認する
これが成功してから、
- 画像生成
- Google Sheets管理
- 自動記事作成
などを追加しましょう。
まとめ
n8nを使うと、WordPressの記事へアイキャッチ画像を自動設定できます。
ポイントは、
- Post ID=記事の番号
- Media ID=画像の番号
を理解することです。
基本の流れは、
- 画像アップロード
- ↓
- Media ID取得
- ↓
- 記事作成
- ↓
- Post ID取得
- ↓
- 記事更新
- ↓
- featured_mediaへMedia ID設定
です。
WordPress REST APIでは、投稿のfeatured_mediaにメディアIDを指定することでアイキャッチ画像を設定できます。(developer.wordpress.org)
最初からAI画像生成まで作る必要はありません。
まずはテスト画像1枚とテスト記事1件で、
Media ID
↓
Post ID
↓
featured_media
の流れを確認するのがおすすめです。
これができるようになると、
- 記事作成
- WordPress入稿
- 画像アップロード
- アイキャッチ設定
まで、ブログ運営のかなり広い範囲を自動化できるようになります。
注意事項
n8n、WordPress、利用中のテーマやプラグインはアップデートによって画面や設定方法が変更される場合があります。
この記事では執筆時点のWordPress公式REST APIの仕様をもとに基本的な仕組みを解説しています。
WordPressのfeatured_mediaには画像URLではなくMedia IDを指定します。
APIキー、WordPressのApplication Password、その他の認証情報は第三者へ公開しないでください。
画像アップロードを繰り返すワークフローでは、同じ画像が重複してメディアライブラリへ登録される可能性があります。Media IDや処理済みステータスを管理すると安全です。
AI生成画像を利用する場合は、公開前に内容、権利関係、不自然な文字やロゴの有無などを確認してください。
本番サイトで大量処理する前に、テスト記事とテスト画像1件で動作確認することをおすすめします。
参考・公式情報
- ・WordPress Developer Resources「Posts – REST API Handbook」
- ・WordPress Developer Resources「Media – REST API Handbook」
- ・WordPress Developer Resources「REST API Reference」
- ・WordPress Developer Resources「WP_REST_Posts_Controller::handle_featured_media()」
- ・n8n公式ドキュメント「HTTP Request」
- ・n8n公式ドキュメント「WordPress」
- ・n8n公式ドキュメント「Expressions」
WordPressやn8nは継続的に更新されるため、実際の画面や設定方法が異なる場合は最新の公式ドキュメントも確認してください。
次に読む記事
自分で組み立てる時間を減らしたい方へ
この記事の手順を自分で試す方法に加え、設定の土台として使える販売テンプレートも用意しています。
- WordPress記事入稿 Liteの商品内容・価格を見る(ココナラ)
用意した記事をHTMLに整えてWordPressへ下書き保存。 自動公開はしません。Google Sheets・OpenAI・WordPressの接続設定が必要です。
ご自身の環境に合わせた初期設定が必要です。OpenAIを使う商品ではAPI利用料金が別途かかります。WordPress入稿Liteにはアイキャッチ画像の自動設定は含まれません。購入前に販売ページの対応範囲をご確認ください。