AIにWordPress記事の下書きを1件だけ登録させる方法

Markdown原稿をWordPressへ1件だけ下書き登録し、人の確認場所で公開前に停止するイラスト AIサイト管理

WP-CLIの読み取り確認ができたら、次は新しい記事を1件だけ下書き登録してみます。いきなり公開せず、管理画面で内容を確認できる下書きの状態まで登録し、公開せずに止める方法です。

この記事ではMarkdown原稿を正本とし、重複確認、登録項目の事前承認、draftでの作成、投稿IDの記録、登録後の読み直しまでを扱います。コマンド例は架空環境用です。実際は管理者が用意した制限付きラッパーを使ってください。

下書き登録で変わるもの

読み取り専用の確認と違い、下書きでもWordPressのデータベースへ新しい投稿が保存されます。公開ページには通常表示されませんが、次の影響があります。

  • 投稿IDとリビジョンが作られる
  • 管理画面の下書き一覧へ表示される
  • プラグインが保存時の処理を行う場合がある
  • 間違ったカテゴリや投稿者が設定される可能性がある
  • 本文へ個人情報や内部情報を保存してしまう可能性がある

そのため「非公開だから何をしても安全」ではありません。対象を1件に限定し、登録項目を先に確認します。

全体の流れ

Markdown原稿を確認
  ↓
同じslugの投稿がないか確認
  ↓
登録予定の項目を人へ提示
  ↓
下書きで1件だけ作成
  ↓
投稿ID・状態・slugを読み直す
  ↓
管理画面のプレビューを人が確認
  ↓
公開せず停止

1. Markdown原稿を正本にする

WordPress管理画面だけで本文を直すと、手元の原稿と公開内容がずれていきます。記事ごとにMarkdownファイルを用意し、少なくとも次を管理します。

title: "記事タイトル"
slug: "example-article"
description: "記事内容を簡潔に説明する文章です。"
status: "draft"

このフロントマターは原稿管理用です。WordPress本文へそのまま混ぜず、タイトル、slug、description、状態などの投稿属性へ分けて反映します。

本文には、未確認の料金やサービス、実体験のない感想、宿泊者の個人情報、接続先や内部パスを含めません。外部情報は公開前に公式情報で確認します。

2. 登録前に内容を点検する

  • タイトルと本文の内容が一致している
  • slugは半角英数字とハイフンを基本にする
  • descriptionが本文を正しく要約している
  • 見出しが一つの検索意図へ答えている
  • 内部リンクと参考資料のURLが正しい
  • 公開してはいけない情報を含まない
  • statusdraftになっている
  • 原稿ファイルが許可された場所にある

カテゴリ、タグ、アイキャッチをまだ確認できない場合は推測で設定しません。これらはカテゴリ・タグ・アイキャッチを安全に設定する方法で詳しく扱います。

3. 同じslugがないか確認する

新規作成前に、公開済み、下書き、非公開、ゴミ箱を含めて同じslugの投稿がないか確認します。

wp post list \
  --post_type=post \
  --post_status=any \
  --name=example-article \
  --fields=ID,post_title,post_name,post_status \
  --format=table

既存投稿が見つかったら、新規作成を止めます。既存記事を更新するか、slugを変えるかは人が判断します。AIが自動で末尾へ数字を加えて別記事を作ると、重複ページを増やす原因になります。

4. 登録予定を人へ提示する

実行前に次を報告させます。

登録予定
- 種別:新規投稿1件
- タイトル:記事タイトル
- slug:example-article
- 状態:draft
- description:記事内容を簡潔に説明する文章です。
- 本文:確認済みMarkdown原稿
- カテゴリ・タグ・画像:今回は未設定
- 実行後:投稿IDと状態を読み直して停止

人が内容を確認するまでは、登録コマンドを実行しません。

5. 下書きを1件作成する

WP-CLI公式のwp post createは、ファイルから本文を読み込み、投稿状態やslugを指定できます。--porcelainを付けると、新しい投稿IDだけを取得できます。

wp post create article-body.md \
  --post_type=post \
  --post_status=draft \
  --post_title="記事タイトル" \
  --post_name="example-article" \
  --post_excerpt="記事内容を簡潔に説明する文章です。" \
  --porcelain

本文ファイルにはフロントマターを含めません。管理用の原稿から本文だけを安全に取り出す工程を用意します。コマンド文字列へ本文全体を直接埋め込むと、引用符や改行の扱いを誤りやすいため、許可されたファイルから読み込む方式が分かりやすいでしょう。

ラッパー側ではpost_type=postpost_status=draft、1回1件を固定し、自由な追加引数を拒否します。

6. 作成された投稿を読み直す

作成時に返った投稿IDを使います。

wp post exists 123

wp post get 123 \
  --fields=ID,post_title,post_name,post_status,post_excerpt \
  --format=json

確認する項目は次のとおりです。

  • 返された投稿IDが存在する
  • タイトルとslugが予定どおり
  • post_statusdraft
  • descriptionとして使う抜粋が正しい
  • 新規投稿が1件だけ作られた

異なる状態、複数件作成、想定外のslugになった場合は公開せず停止します。その場で別の修正を重ねず、投稿IDと現状を人へ報告します。

7. 管理画面でプレビューする

WP-CLIの出力だけでは、実際の表示を確認できません。WordPress管理画面で対象の下書きを開き、次を確認します。

  • Markdown、見出し、箇条書き、コード、表が崩れていない
  • タイトルとdescriptionが適切
  • 内部リンクと外部リンクの行き先が正しい
  • 本文にフロントマターが表示されていない
  • 投稿者、カテゴリ、タグが意図どおり
  • アイキャッチと代替テキストが必要か
  • PC幅とスマートフォン幅で読める
  • 公開前に修正すべき事実や表現がない

プレビュー確認後も、この記事の工程では公開しません。公開は対象投稿IDを明示した別の承認として扱います。

二重登録を防ぐ仕組み

AIが途中でタイムアウトすると、登録に失敗したように見えて実際には投稿が作られている場合があります。すぐ同じコマンドを再実行せず、slugで確認します。

安全な専用処理は、次の順番にします。

  1. slugの形式を検査する
  2. 同じslugの既存投稿を検索する
  3. 存在すれば何も作らず投稿IDを報告する
  4. 存在しない場合だけ下書きを1件作る
  5. 新しい投稿IDと状態を読み直す

同じ依頼を再実行しても下書きが増殖しない設計が重要です。

AIへの依頼文

このMarkdown原稿をWordPressへ新規登録してください。

今回は下書きを1件作るところまでです。公開しないでください。

実行前:
- タイトル、slug、description、投稿種別、状態を示す
- 全状態を対象に同じslugが存在しないか確認する
- 重複があれば作成せず停止する

登録時:
- post_typeはpost、post_statusはdraftに固定する
- 許可された本文ファイルだけを使う
- カテゴリ、タグ、画像は推測で設定しない
- 他の投稿や設定を変更しない

登録後:
- 投稿ID、タイトル、slug、状態、descriptionを読み直す
- 新規作成が1件だけであることを確認する
- プレビュー方法と未設定項目を報告して停止する

秘密情報、内部パス、非公開本文を回答へ転載しないでください。

完了報告の例

下書き登録結果
- 新規投稿:1件
- 投稿ID:123
- 状態:draft
- slug:example-article
- 重複確認:登録前後に確認済み
- 確認済み:タイトル、description、本文
- 未設定:カテゴリ、タグ、アイキャッチ
- 未実施:公開、既存記事更新、その他の設定変更
- 次の操作:管理画面で人がプレビュー確認

「完了」ではなく、何を確認し、何をしていないかを分けます。

まとめ

AIによる最初の記事登録は、Markdown原稿を正本にし、同じslugがないことを確認して、下書きを1件だけ作ります。返された投稿IDで状態を読み直し、人がプレビューする場所で停止します。

事前確認は変更しないWP-CLI入門、分類と画像の設定はカテゴリ・タグ・アイキャッチの設定方法、実行制限は制限付きラッパーを参照してください。人の承認後に公開する工程はバックアップからHTTP・表示確認までで解説しています。

参考資料

※投稿保存時の処理は、テーマやプラグインによって異なります。テスト環境で確認し、本番では必ず1件の下書きから始めてください。

タイトルとURLをコピーしました