本文へ移動
TameshiTechLAB GUIDE

WordPress REST APIで記事を自動化する方法|取得・下書き・更新・公開の安全設計

WordPress REST APIで読み取りから下書き・更新へ段階的に進むフロー図 WordPress



先に結論:WordPress REST APIで安全に自動化するなら、GETで状態取得→draft作成→限定更新→公開の順に権限を広げます。投稿を識別するときはslugだけに頼らず、取得したpost IDを正本として変更対象を固定するのが基本です。

WordPress REST APIは、管理画面を開かずに投稿・固定ページ・メディア・カテゴリなどをHTTP経由で扱うための標準APIです。AI専用機能ではなく、n8n、独自スクリプト、社内ツール、モバイルアプリなどからWordPressを操作する共通の入口として使えます。

僕は複数サイトで、投稿一覧の取得、draft作成、既存投稿の更新、publishまでをREST API経由で確認してきました。実際に運用して分かったのは、API自体より「どの投稿を、どのフィールドだけ、どの条件で変更するか」を先に決める方が重要だということです。

まず覚えるのは /wp-json/wp/v2/posts と「読む・作る・変える」の3操作

目的 代表的な操作 実運用での使い方
一覧・1件取得 GET 投稿ID、slug、status、modified等を確認
下書き作成 POST 新規記事をdraftとして作成
既存投稿更新 POST/PUT相当 IDを指定してtitle/content/status等を変更
削除 DELETE 復旧設計なしでは自動化しない

WordPressのPosts endpointでは、投稿ごとにid、slug、status、date、modified、linkなどのフィールドを扱えます。外部システム側は「記事名」ではなくidを保持しておくと、タイトル変更後も同じ投稿を追跡できます。slugはURL整合性の検査に使い、IDとslugの両方が期待値と一致しない場合は停止する設計が安全です。

投稿を読む・作る・更新する

最初はGETだけで「WordPressの現在地」を取る

最初の自動化で書き込み権限は不要です。公開済み、draft、更新日時、featured image、カテゴリなどを取得し、手元の台帳と一致するかを確認するだけでも管理画面を巡回する回数を減らせます。大量の記事を扱うときはページネーションを考慮し、必要なフィールドだけを取得して処理量を抑えます。

ここで重要なのは、取得結果をそのまま「正しい」と決めつけないことです。たとえばWordPress上に古いdraftやテスト投稿が残っていることがあります。取得結果から公開候補を決めるのではなく、許可したpost IDやslugのリストと照合する方が、TBOS TESTのようなテスト用draftを誤って扱う事故を防げます。

新規記事は公開ではなくdraftから始める

新規投稿のPOSTでは、title、content、statusなどを送れます。自動化の初期段階はstatus=draftに固定し、WordPress管理画面で表示・表・リンク・画像・SEO設定を確認してから公開する流れが向きます。本文生成の品質が高くても、Cocoon側の装飾や表の横幅までAPIレスポンスだけで完全には確認できません。

draft作成時には、外部システム側で一意な処理IDを持ち、同じジョブが再実行されても新しい記事を作らない工夫も必要です。WordPressの標準投稿APIに「あなたの業務上の重複防止キー」が自動で付くわけではないため、slug照合や独自meta、外部DBのjob IDなどで二重作成を防ぎます。

既存記事の更新は「post ID固定+変更フィールドのホワイトリスト」

既存記事を更新するときは、取得したIDを指定し、変更してよいフィールドだけ送ります。本文だけ直す処理でslugやstatusまで毎回送る必要はありません。送信項目が増えるほど、意図していない差分を作る可能性も増えます。

僕なら更新前にtitle、content、excerpt、slug、status、taxonomy、SEO meta、featured imageの現在値をsnapshotへ保存します。そのうえで「更新前→更新後」の差分を記録し、QAに失敗したらsnapshotへ戻します。API更新を使うメリットは、速さだけでなく、この差分と復旧処理を標準化しやすいことです。

認証はApplication Passwordを連携ごとに分離する

外部から認証が必要なREST APIへアクセスする場合、WordPressはApplication Passwordを利用できます。通常のログインパスワードを自動化ツールへ保存する必要がなく、連携ごとに発行・失効できます。使い方と安全管理は123で詳しく解説します。

注意:Application Passwordはユーザー権限を超える権限を作る仕組みではありません。どのユーザーに紐づけるかで実行可能な操作が変わるため、「認証できた=何でもできる」と考えないことが重要です。

401・403・400系を全部「再試行」にしない

状態 主な確認 自動再試行の考え方
401 Unauthorized 認証情報、Authorization header、HTTPS credential誤りなら停止
403 Forbidden ユーザー権限、permission、security plugin 権限不足を回数で解決しない
400 Bad Request 送信JSON、必須項目、値の形式 同じpayloadの無限再試行は禁止
404 Not Found endpoint、post ID、サイトURL 対象誤りの可能性として停止
5xx/通信失敗 WordPress/サーバー/ネットワーク 回数上限と間隔を決めて再試行

「失敗したら3回再試行」は通信障害には有効でも、認証ミスやデータ不整合には逆効果です。更新リクエストがタイムアウトした場合は、再送前に対象投稿を再取得し、すでに変更が反映されていないか確認します。これをしないと、画像アップロードや新規作成のような操作で重複が起きます。

メディア・カテゴリ・タグは本文と別の失敗点になる

記事を「完成状態」で作る場合、本文以外にfeatured image、ALT、カテゴリ、タグ、SEO metaがあります。画像アップロードが成功してもfeatured image設定に失敗する、カテゴリ名が存在しない、SEOプラグイン/テーマのmeta keyが違う、といったズレが起こります。1回の巨大な処理にせず、各工程の成功結果を検証して次へ進みます。

特にSEO metaはWordPress標準のフィールドではなく、テーマやSEOプラグイン側の保存方法に依存する場合があります。TameshiTechのようにCocoon固有のmetaを扱うなら、実サイトで使っているkeyを固定し、更新後にget_post_meta相当で値を読み直して一致を検証する必要があります。

REST API運用で最低限残したいログ

  • 対象サイトとpost ID/slug
  • 実行時刻とジョブID
  • 変更前後のフィールド差分
  • HTTP statusとWordPressのerror code/message
  • 作成したattachment ID
  • QA結果と公開可否
  • rollbackを実行したか、その結果

ログにApplication PasswordやAPI keyなどの秘密情報を出さないことも重要です。トラブル時に欲しいのは「どのcredentialそのものか」ではなく、どの連携名・どのユーザー・どの操作経路で実行したかを追跡できる識別情報です。

n8nを使う場合もREST APIの安全設計は同じ

n8nならHTTP RequestやWordPress連携ノードで処理を組みやすくなりますが、WordPress側の権限や重複防止が自動で解決するわけではありません。n8nの便利さは処理をつなぐところにあり、post ID照合、draft固定、公開ゲート、失敗通知は別途設計します。

再試行を安全にするには、workflow側でjob ID、対象post ID、想定slug、変更fieldをmanifestとして残します。同じjobがtimeout後にもう一度走ったときは、再送前に現在の投稿状態を読み直し、既に同じ変更が反映されていれば新しいPOSTを送らず終了します。HTTP requestの再送回数だけを設定するより、処理全体をidempotentに近づける方が二重投稿を防ぎやすくなります。

コードを書きたくない人はn8nから始めても構いません。逆に複数サイトで同じQAやrollbackを厳密に再現したい場合は、共通ロジックを独自APIや管理基盤へ寄せた方が管理しやすいケースがあります。どちらを選んでも、WordPressへ書く直前の安全条件は共通です。

公式情報・参考資料

仕様確認日:2026年9月30日。実装時はリンク先の最新版も確認してください。

あわせて読みたい

コメント

SITE NAVIGATOR151本から、いま必要な記事だけ探す
索引を読み込んでいます…
TameshiTechAI Tool Lab
AI TOOL LAB / TCO + BREAK-EVEN

「便利そう」で契約せず、実際の仕事で元が取れるか試す。

AIの処理時間だけでなく、人が確認・修正する時間、学習・初期設定、利用人数まで含めて2候補を同じ条件で試算します。入力は外部送信しません。

ブラウザ内だけで計算個人情報不要性能ランキングではない公式情報へ直リンク
OFFICIAL SNAPSHOT

主要プランの公式情報を、確認日つきで見る

契約価格を自動決定する機能ではありません。最終支払額・利用上限・データ条件は公式画面で確認してから下の試算へ入力してください。

OpenAI個人向け

ChatGPT Plus

$20/month

月額課金。API利用は別料金。

  • Freeより広いモデル・ツール利用枠
  • Deep Researchなど拡張機能
  • 画像生成・ファイル分析
  • 利用上限は変動する場合あり
公式ページを確認 ↗
OpenAIチーム向け

ChatGPT Business Standard

$20/seat/month annual; $25 monthly

年額課金時$20/月、月額課金時$25/月。

  • ChatGPT・Work・Codex機能
  • SAML SSO・MFA
  • 各種コネクタ
  • ビジネスデータは既定で学習不使用
公式ページを確認 ↗
Anthropic個人向け

Claude Pro

$17/month annual equivalent; $20 monthly

$200年払いで月換算$17、月払い$20。税別表示。

  • Freeより多い利用枠
  • タスクの引き継ぎ・スケジュール
  • Claude Code
  • Projects・Researchなど
公式ページを確認 ↗
Anthropic2〜150人

Claude Team Standard

$20/seat/month annual; $25 monthly

年払い時$20/席/月、月払い時$25/席/月。

  • Teamは2〜150人
  • Proより多い利用枠
  • 中央請求・管理
  • SSO・組織検索
公式ページを確認 ↗
Google日本

Google AI Plus / Pro / Ultra

契約画面で現在価格を確認

日本向け公式ページはプラン構成を確認。価格はアカウント・時期の契約画面で再確認。

  • AI Plus 400GB
  • AI Pro 5TB
  • AI Ultra 20TB〜
  • Gemini・Googleアプリ連携の利用枠はプランで異なる
公式ページを確認 ↗

確認日:2026-10-08。税・為替・キャンペーン・API従量課金・地域差は別途確認してください。

0. 何のために使う?

用途は計算式を変えません。結果のあとに読む記事を絞るために使います。

1. 共通条件
2A. 候補A
2B. 候補B
3. 契約前チェック
SIMULATION

まだ計算していません

現在の作業時間と、AI利用後の「AI作業+人の確認・修正」を分けて入れるのがポイントです。

試算は入力値にもとづく参考値です。TameshiTechが生産性・利益・料金・将来の成果を保証するものではありません。