日本語 English(Home)

WordPressの自動投稿:REST APIとアプリケーションパスワードで投稿・予約公開する手順

外部のツールからWordPressへ記事を送るには、REST APIにアプリケーションパスワードで認証して記事の項目を送ります。公式ハンドブックに沿った手順と項目、つまずく原因、当サイトの受け口の設定、公開後の点検と安全な運用を説明します。

WordPressの自動投稿:REST APIとアプリケーションパスワードで投稿・予約公開する手順

この記事の要点:

  • WordPress の自動投稿とは、管理画面を開かずに、外部のツールやスクリプトから記事を作成・公開する仕組みです。WordPress 本体に入っている REST API に、アプリケーションパスワードで認証して記事のデータを送るのが、本体の機能だけでできる方法です。
  • 記事は POST /wp-json/wp/v2/posts に、title・content・status・date・categories・featured_media などの項目を送って作ります。status には publish・future・draft・pending・private を指定できます。
  • アプリケーションパスワードは WordPress 5.6 から本体に入った機能で、初期設定では HTTPS で配信しているサイトだけで使えます。表示されないときは、HTTPS、無効化の設定、セキュリティ系プラグインやサーバーの制限を順に確かめます。
  • 自動で大量に公開すると、title の重複や代表画像の抜けが起きやすく、Google のスパムに関するポリシー(大量生成されたコンテンツの不正使用)にも触れかねません。権限を絞った専用ユーザーで送り、人が確かめてから公開する流れにします。

WordPressの自動投稿とは:外部からREST APIで記事を作る

WordPress の自動投稿とは、WordPress の管理画面で記事を 1 本ずつ入力する代わりに、外部のツールやプログラムから記事を作成・予約・公開することです。記事の制作ツールや社内のシステムで作った原稿を、コピーして貼り付ける手間を省くために使われます。

その土台になるのが WordPress の REST API です。WordPress の公式ハンドブックは、REST API を、アプリケーションが JSON 形式のデータを送受信して WordPress サイトとやり取りするためのインターフェースで、ブロックエディターの基盤でもあると説明しています(REST API Handbook、2026年10月13日確認)。管理画面での投稿も、内部では同じ仕組みを使っています。

同じハンドブックは、REST API は WordPress と同じ認証の制限を持ち、公開されている内容は誰でも読める一方、非公開の内容や記事の作成・変更には認証が必要だとしています。外部から記事を作るときは、この認証にアプリケーションパスワードを使うのが基本です。

自動投稿の方法の種類:プラグイン・連携サービス・REST API

WordPress に自動で投稿する方法は、大きく 3 つに分かれます。どの方法でも、最後に WordPress へ記事を書き込む部分は REST API か WordPress の内部の関数で、違うのは「どこで原稿を作り、何がそれを送るか」です。

方法仕組み向いている場面確かめること
WordPress のプラグインサイトの中で動き、RSS の取り込みや定期実行で記事を作る外部のサーバーを用意せず、サイトの中で完結させたいプラグインの更新状況、サーバーの負荷、取り込む内容の権利
ノーコードの連携サービス表計算や他のツールの変更をきっかけに、REST API で投稿するプログラムを書かずに、他の業務ツールとつなぎたいサービスに預ける認証情報の範囲、送れる項目
REST API を直接使う自社のスクリプトや記事制作ツールから、認証して POST する送る項目や公開の条件を細かく決めたい認証の方法、エラー時の扱い、権限

予約投稿だけが目的なら、WordPress の編集画面で公開日時を未来にして「予約投稿」にすれば、追加の仕組みは要りません。自動投稿が役立つのは、原稿を作る場所が WordPress の外にある場合です。WordPress 全体の SEO の設定はWordPressのSEO対策、CMS を選ぶときに確かめる機能は「CMSとSEO」で説明しています。

アプリケーションパスワードの発行手順

アプリケーションパスワードとは、外部のアプリケーションが REST API に接続するための、ユーザーごとの専用のパスワードです。WordPress の公式ハンドブックは、WordPress 5.6 からアプリケーションパスワードが本体に入り、ユーザーの編集画面から発行できること、認証情報は https:// で配信される REST API に Basic 認証で渡せることを説明しています(Authentication – REST API Handbook、2025年6月4日更新)。

  1. 投稿に使うユーザーで WordPress の管理画面にログインし、「ユーザー」→「プロフィール」(管理者がほかのユーザーの分を作るときは「ユーザー」→ 対象のユーザーの編集)を開きます。
  2. 「アプリケーションパスワード」の欄に、用途が分かる名前(例:記事制作ツール)を入れて「新しいアプリケーションパスワードを追加」を押します。
  3. 表示されたパスワードを控えます。WordPress の開発者向けの解説によると、パスワードは記号を含まない 24 文字で、4 文字ずつ区切って表示され、空白は付けても付けなくても使えます。
  4. 接続するツールに、サイトの URL、ユーザー名、控えたアプリケーションパスワードを登録します。ログイン用のパスワードは渡しません。
  5. 使わなくなったツールの分は、同じ画面の一覧から取り消します。一覧では最後に使われた日も確かめられます。

アプリケーションパスワードは、管理画面へのログインには使えません。WordPress の統合ガイドは、アプリケーションパスワードはプログラムから使うためのもので、人が操作する画面のログインに使うものではないと説明しています(Application Passwords: Integration Guide)。

REST APIで下書き・予約公開する:送る項目の表

REST API で記事を作るには、/wp-json/wp/v2/posts に POST で記事の項目を送ります。WordPress の REST API ハンドブックの Posts のリファレンスに載っている主な項目は次のとおりです(Posts – REST API Handbook、2026年10月13日確認)。

項目公式の説明(要約)使い方の注意
title記事のタイトル空のまま送らない。SEO プラグインの title の元になることが多い
content記事の本文HTML で送る。見出しの階層を崩さない
excerpt記事の抜粋説明文の元に使うテーマやプラグインがある
status記事の状態。publish・future・draft・pending・private のいずれか人が確かめる運用なら draft か pending で送る
date/date_gmt公開日時。date はサイトのタイムゾーン、date_gmt は GMT予約公開の日時。どちらで送るかをそろえる
slug記事の種類の中で一意の識別子(URL の末尾)既存の記事と重ならない、内容を表す短い語にする(パーマリンクの決め方)
categories/tagsカテゴリーとタグの ID の配列名前ではなく ID で送る
featured_mediaアイキャッチ画像のメディアの ID画像は先に /wp/v2/media へ送り、返ってきた ID を指定する(アイキャッチ画像の決め方)
author投稿者のユーザー ID専用ユーザーの ID にそろえる

下書きで送る場合の最小の例です(ユーザー名とアプリケーションパスワード、サイトの URL は置き換えます)。

curl --user "USERNAME:APPLICATION_PASSWORD" 
  -X POST https://example.com/wp-json/wp/v2/posts 
  -H "Content-Type: application/json" 
  -d '{"title":"記事のタイトル","content":"<p>本文</p>","status":"draft","categories":[5]}'

WordPress の説明では、future は「将来の日時に公開を予約された状態」、pending は「publish_posts の権限を持つユーザー(通常は編集者)の公開を待つ状態」、draft は「適切な権限のユーザーだけが見られる未完成の記事」です(Post Status)。予約公開にするときは、status を future にし、公開したい日時を date(サイトのタイムゾーン)か date_gmt(GMT)で渡します。成功すると、作られた記事の id・link・status などが JSON で返ってきます。返ってきた status と link を記録しておくと、後で公開の結果を確かめられます。

使えないときの原因と確かめ方

アプリケーションパスワードの欄が表示されない、または認証に失敗するときは、HTTPS・無効化の設定・サーバーやプラグインの制限の順に確かめます。WordPress の統合ガイドは、初期設定ではアプリケーションパスワードは SSL/HTTPS で配信しているサイトのすべてのユーザーが使え、wp_is_application_passwords_available などのフィルターで使えなくしたり、使えるユーザーを絞ったりできると説明しています。

症状考えられる原因確かめ方
プロフィールにアプリケーションパスワードの欄が無いサイトが HTTPS で配信されていない「設定」→「一般」の WordPress アドレスとサイトアドレスが https で始まるか
同じく欄が無いテーマ・プラグインのフィルターで無効化されているセキュリティ系のプラグインの設定、wp_is_application_passwords_available を使うコード
特定のユーザーだけ欄が無いユーザーごとに使えるかを絞る設定があるwp_is_application_passwords_available_for_user を使うコード
401 が返るユーザー名・アプリケーションパスワードの誤り、取り消し済みのパスワード公式ハンドブックの例と同じ /wp-json/wp/v2/users?context=edit を同じ認証で読めるか
403 が返るユーザーの権限が足りない、サーバーやプラグインが REST API へのアクセスを制限しているユーザーの権限グループ、サーバーの管理画面のアクセス制限の設定
予約の時刻がずれるサイトのタイムゾーンと送った日時の基準が違う「設定」→「一般」のタイムゾーン、date と date_gmt のどちらで送ったか

サーバー側の制限にも注意します。たとえばエックスサーバーの「WordPressセキュリティ設定」には、REST API(/wp-json)への国外からの接続を制限する「REST API アクセス制限」があり、マニュアルは通常は有効のまま運用するよう強く勧める一方、国外から WordPress を使う場合は無効にするよう案内しています(WordPressセキュリティ設定、2026年10月13日確認)。外部のツールが国外のサーバーから送る場合は、こうした制限で 403 になることがあります。設定を変える前に、どこから送られるのかをツールの提供元に確かめます。

統合ガイドは、SSL なしでは通信の途中でアプリケーションパスワードを盗み見られるおそれがあると注意しています。HTTPS でないサイトで無理に使えるようにする前に、サイトを HTTPS にするのが先です。

当サイトの受け口の設定:REST APIで届いた記事を整える

当サイト(seoagent.jp)は WordPress で動いており、SEOAGENT 本体から REST API(/wp-json/wp/v2/posts)にアプリケーションパスワードで記事を送る前提で、サイト側に受け口の処理を入れています(リポジトリの seoagent-site プラグイン、2026年10月13日確認)。

SEOAGENT 本体が送る項目は title・content(HTML)・excerpt(説明文)・slug・categories(1 つ)・tags・featured_media・author で、送る状態は「すぐに公開」(publish)か「予約公開」(future)です。多言語プラグインの言語や、SEO プラグインの説明文は送りません。そこで、WordPress が REST API で記事を作った直後に動くフック(rest_after_insert_post)で、空いている欄だけを次のように埋めています。

欄当サイトの補い方補わないと起きること
記事の言語選ばれたカテゴリーの言語。カテゴリーが無ければ日本語言語が決まらず、言語別の一覧や hreflang から外れる
分類ガイドとニュースのどちらの分類も無ければ、その言語のガイドの分類に入れる。「未分類」だけなら置き換える記事が「未分類」に入り、一覧やトピックのページに載らない
SEO プラグインの説明文空なら excerpt を使うmeta description が空のまま公開される
構造化データの種類空なら記事(article)として扱う記事として扱われない

入力済みの値は変えないことにしています。外から送られた値を上書きすると、送った側の意図と公開された記事がずれるためです。REST API での自動投稿を受けるサイトでは、「送られてこない項目は何か」と「それが空のまま公開されたら何が起きるか」を先に洗い出しておくと、公開後の手直しが減ります。

自動投稿で起きやすいSEOの問題と点検

自動投稿では、人が画面で見れば気付く抜けや重なりが、そのまま公開されやすくなります。公開後に機械的に点検し、問題のあるページを洗い出す仕組みを用意しておきます。

起きやすい問題原因点検のしかた
title が空、または同じ title が並ぶ原稿の title の欄を送り忘れる、同じテンプレートで量産する公開ページの title の長さと重複を一覧にする
meta description が空SEO プラグインの説明文は REST API の標準の項目に無い説明文の空と重複を一覧にする
アイキャッチが無いfeatured_media を送っていない、画像の登録に失敗したog:image の有無を見る
カテゴリーが「未分類」categories を名前で送った、ID が違うカテゴリーごとの記事数を見る
同じ内容の記事が 2 本できる送信の再試行で同じ原稿を 2 回 POST した同じ title の記事が無いかを見る。送る側で、返ってきた id を記録して再送を防ぐ
画像の alt が空本文の img に alt を付けずに送ったalt の無い画像を一覧にする

当サイトでは、公開ページを巡回して title の長さと重複、説明文の有無と重複、h1 の数、og:image の有無、alt の無い画像、canonical、noindex とサイトマップの食い違い、どこからもリンクされていないページなどを点検するスクリプトを、記事を足すたびに実行しています。2026年10月13日の実行では、サイトマップに載っている 245 URL を含む 261 ページを点検しました。

安全に運用するための権限と確認の流れ

自動投稿には、管理者ではなく、必要な権限だけを持つ専用のユーザーを使います。WordPress の権限グループの説明によると、「投稿者」は自分の記事の作成・公開・画像のアップロードができ、「編集者」はそれに加えてほかのユーザーの記事やカテゴリーの管理ができます。「寄稿者」は記事を作れても公開はできません(Roles and Capabilities)。

運用専用ユーザーの権限送る status
人が必ず確かめてから公開する寄稿者(公開できない)pending(レビュー待ち)か draft
確かめた原稿だけを外部から予約・公開する投稿者future か publish
カテゴリーやタグも外部から作る編集者future か publish

記事を大量に自動公開する運用には注意が要ります。Google のスパムに関するポリシーは、ユーザーをサポートすることではなく検索ランキングの操作を主な目的として大量のページを生成することを「大量生成されたコンテンツの不正使用」とし、その例として、生成 AI ツールなどを使ってユーザーにとっての価値を付加することなく大量のページを生成することを挙げています(Google ウェブ検索のスパムに関するポリシー、2026年9月2日更新、2026年10月13日確認)。問われるのは作り方ではなく、読者にとっての価値です。

そのため、自動化するのは「入稿の作業」にとどめ、内容の確認は人が行う流れを勧めます。原稿を作る → 事実と数字を確かめる → 下書きか予約で送る → 公開後に点検する、の順です。AI で作った原稿を公開する前に確かめる点は「AIライティングとは」で説明しています。サイトの設定に関わる記事は「テクニカルSEOの記事一覧」にまとめています。なお、Google 検索セントラルは、AI による概要や AI モードでリンクとして表示されるための条件を、インデックスに登録されスニペットを表示できることなどとし、それ以外に追加の技術要件は無いとしています(AI 機能とウェブサイト)。REST API で送った記事も、条件は管理画面で公開した記事と同じです。

よくある質問

アプリケーションパスワードが表示されないのはなぜですか?

多いのは、サイトが HTTPS で配信されていない場合と、セキュリティ系のプラグインやテーマのコードで無効化されている場合です。WordPress の初期設定では、アプリケーションパスワードは HTTPS のサイトでだけ使えます。「設定」→「一般」のアドレスが https で始まるかから確かめます。

予約投稿の時刻がずれるのはなぜですか?

送った日時の基準と、サイトのタイムゾーンが合っていないことが考えられます。REST API の date はサイトのタイムゾーン、date_gmt は GMT として扱われます。「設定」→「一般」のタイムゾーンを確かめ、送る側でどちらの項目を使うかをそろえます。

自動投稿はGoogleのペナルティになりますか?

投稿の方法そのものが問題になるわけではありません。Google のスパムに関するポリシーが問題にするのは、ユーザーにとっての価値を付加せずに大量のページを生成することです。人が内容を確かめてから公開する流れにし、似た記事を量産しないようにします。

画像やカテゴリーも自動で設定できますか?

できます。画像は先にメディアの API(/wp/v2/media)へ送り、返ってきた ID を記事の featured_media に指定します。カテゴリーとタグは、名前ではなく ID の配列で送ります。カテゴリーの ID は WordPress の管理画面か、カテゴリーの API で確かめられます。

SEOAGENTでできること

SEOAGENT では、作成・確認した記事を WordPress へ送る入稿の作業を省力化できます。

  • WordPressへの記事投稿・予約公開:サイトの URL・ユーザー名・アプリケーションパスワードで WordPress と接続し、タイトル・本文・画像・カテゴリ・タグ・スラッグなどを設定して送れます。公開のしかたは「公開する(すぐに公開)」と「スケジュールする(日時を指定して公開)」の 2 つで、公開済みの記事の更新にも使えます。スラッグが他の記事と重なる場合は末尾に番号が付き、公開の前の確かめをしないまま予約しようとすると注意が表示されます。
  • note向けの記事制作・自動投稿の運用支援:note を公開先にする場合は、接続した Chrome 拡張を通じて予約を入れます。WordPress とは接続の方法が違います。

できないこと:WordPress へ下書きとして送ることはできません(すぐに公開か予約公開のどちらか)。サイト全体のデザインやサーバーを自動で作る機能ではなく、多言語プラグインや SEO プラグインの説明文への対応は接続する環境ごとに確かめます。Yoast SEO を使っているサイトでは、説明文を書き込めない場合や、WordPress 側で入力済みの文を上書きしない場合があります。

参考情報

関連する記事

「テクニカルSEO」の記事をすべて見る →

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト
テクニカルSEO

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト

クロールバジェットは、多くのサイトでは気にする必要がありません。Google の「クロール バジェットの管理」の原文に沿って、決まる仕組み、対策が必要なサイトの目安、クロールの統計情報での確かめ方、クロールを無駄にする原因と対処を、当サイトの点検結果とあわせて説明します。

AIでSEO対策を、もっと続けやすく。

機能と使い方、料金・契約条件は、サービス資料でご案内します。