PR

Claude CodeでWordPressに自動投稿する仕組みを作った(プラグインなし)

WordPressに自動投稿する仕組み|AI部長マン アフィリエイトサイト制作

結論:原稿を書いてコマンドを1行打つと、記事が公開される

いま、この記事もそうやって出しています。

やっているのはこれだけ。

python3 scripts/wp_publish.py content/articles/08_xxx.md --status publish

管理画面は開いていない。コピペもしていない。プラグインも入れていません。

使っているのはWordPressに最初から付いている機能だけです。

自分でコードを書いたわけではなく、Claude Codeに作らせました。何を作らせるかを決めるのが自分の仕事で、書くところは頼んでいる。


なぜ作ったか:コピペが事故るから

最初は普通に管理画面に貼っていました。3回で嫌になった。

理由は3つ。

  • 貼ると表が崩れる。見出しの階層も崩れる。直すのに10分かかる
  • 記事ごとにアイキャッチ画像を用意しないといけない
  • 広告リンクを記事に直接書いていたので、リンクが変わったら全記事を開いて直すことになる

3つ目が一番怖い。記事が20本になってから気づいたら、20本を開いて直すことになる。そのうち1本を直し忘れて、そこだけリンクが死ぬ。

これは実務でも見た形。計測用のタグが1箇所抜けていて、発生していた成果がまるごと計上されていなかった、という事故があります。リンク管理の甘さは、売上を直接殺す。


仕組みの全体像

こうなっている。

原稿(Markdown)
   ↓  ①WordPress用の形式に変換
   ↓  ②アイキャッチ画像を自動生成してアップロード
   ↓  ③広告リンクを台帳から差し込む
   ↓  ④公開してよいか検査する
WordPress(公開)

Markdownというのは、見出しを ##、太字を ** で書く、ただのテキスト形式です。プログラムではない。メモ帳で書けます。


WordPress標準の2つの機能で足りた

REST API(外から記事を出し入れできる窓口)

WordPressには、外部のプログラムから記事を投稿したり書き換えたりできる窓口が最初から付いています。プラグインは要らない。

アプリケーションパスワード(この用途専用の鍵)

外から入るには認証が必要です。ここでログインパスワードを使うのは避けたい。

WordPressには、用途ごとに専用の鍵を発行する機能があります。場所は、管理画面のプロフィール画面の一番下。

これの良いところは、ログインパスワードを渡さずに済むことと、その鍵1個だけを後から無効化できること。何かあったら、その経路だけを止められる。

発行された鍵は、パソコンの安全な保管場所(macOSならキーチェーン)に入れた。ファイルには書かない。平文でファイルに残した瞬間、それは事故待ちの状態になる。

エックスサーバー(スタンダード)

12ヶ月契約 月990円/初期費用0円/10日間無料お試しあり/独自ドメイン永久無料(12ヶ月以上)

※ 価格・キャンペーン内容は2026年8月17日時点のものです。最新の条件は公式サイトをご確認ください。


事故を防ぐために入れた仕掛け5つ

作りながら「これは外せない」と思ったものだけ書きます。

① WordPressのブロック形式に変換する

原稿をそのままHTMLで送ると、管理画面では巨大な塊が1個として表示されます。あとから管理画面で直せない。

なので、WordPressのブロック(段落・見出し・表・リストなど)に分解して送っている。これで、あとから管理画面でも普通に編集できる。

② 同じ原稿は、同じ記事を更新する

2回実行したら記事が2本できる、というのが一番ありそうな事故です。

原稿ファイルと記事の対応表を持たせて、2回目以降は同じ記事を書き換えるようにした。実際に2回続けて実行して、記事が増えていないことを確認した。

この副産物が大きくて、原稿を直して実行し直せば、公開済みの記事が直る。管理画面で直すと原稿と食い違うので、原稿を正とする運用にした。

③ アイキャッチ画像を自動で作る

記事タイトルから画像(1200×630)を生成して、アップロードして、記事に設定します。

フリー素材を使わない理由は3つ。他サイトと被る。ライセンスの確認が毎回発生する。そして、いかにも「量産された記事」の見た目になる。

連載としてやっているので、全記事で見た目が揃っていること自体が資産だと考えました。費用ゼロ、権利の心配ゼロ、完全自動。

④ 広告リンクは台帳から差し込む(記事にURLを書かない)

原稿にはこう書きます。

{{cta:xserver}}

URLは1箇所の台帳ファイルにまとめてあります。リンクが変わったら台帳を直して、全記事に一括で反映するだけ。

これのおかげで、提携できていない段階でも記事を完成させられるようになりました。台帳が「まだ提携していない」状態なら、リンクを張らずにサービス名と条件だけを表示する。

実際、この記事より前に書いた2本は提携前に完成させていて、提携が通った日に台帳を書き換えて反映した。記事本文は1文字も触っていません。

⑤ 広告の表示がない記事は、投稿を止める

広告を含む記事には「広告が含まれる」と分かる表示が必要です(ステマ規制)。守らなかった場合の課徴金は、対象売上額の3%。

人間は忘れる。なので表示がないのに広告リンクがある原稿は、投稿を拒否するようにしました。忘れる余地を仕組みで消す、という考え方。


ハマったところ(非エンジニアが確実に踏む3つ)

鍵の保管で、空のまま保存されていた

パソコンに鍵を保管するコマンドがあるのですが、オプションを行の最後に置かないと、何も聞かれずに「空の鍵」で保存される。エラーも出ない。

さらに厄介なことに、Claude Codeの中からそのコマンドを実行すると、パスワードを聞く画面が出た瞬間に終了してしまう。仕組み上そうなっている。

正解は「Claude Codeの外で、普通のターミナルから実行する」でした。ここで15分ほど、なぜ認証が通らないのか分からずに止まりました。

通信が「証明書が確認できない」と言って止まる

Pythonの入れ方によって、パソコンに入っている証明書を見てくれない場合があります。

紛らわしいのは、別の方法(curl)では同じサイトに問題なく繋がること。「サイト側の問題ではない」と気づくのに時間がかかった。

画像のアップロードが弾かれる可能性を先に潰した

サーバーには不正なアクセスを防ぐ仕組み(WAF)が入っています。これが画像のアップロードを弾く場合がある。

本番の記事で試して弾かれると原因の切り分けが面倒なので、捨てる用の画像で先に試して、通ることを確認してから消しました。


その後に足した2つ

台帳の変更を全記事に反映するスクリプト

提携が通った日に必要になったもの。台帳を書き換えて、1回実行するだけで全記事が更新される。

これを作っている途中に、危ないバグを1つ見つけた。

投稿のときに「公開する」と明示しないと、既定では「下書き」になる仕組みでした。つまり、リンクを差し込むために一括で再投稿すると、公開済みの記事が下書きに戻る(=サイトから消える)ことになる。

今のサイトの状態を先に読んで、同じ状態のまま書き戻すように直した。気づかずに走らせていたら、公開記事が全部消えていた。

予約投稿

公開日時を指定できるようにした。この記事も、実際に予約で出している。

書き溜めておいて、1時間おきに公開する、といったことができる。パソコンを閉じていても、WordPress側が時間になったら公開してくれます。


よくある質問

アプリケーションパスワードとログインパスワードは何が違うのですか

用途が違う。ログインパスワードは管理画面に入るための鍵で、アプリケーションパスワードは外部のプログラムから接続するためだけの鍵。WordPress公式ドキュメントの記載では、この機能はWordPress 5.6(2020年12月)から入っていて、HTTPSで通信しているときに使えるものだった。そしてこの鍵ではログイン画面から管理画面に入れない(2026年8月20日確認)。発行した鍵は1本ずつ無効化できるので、怪しいと思ったらその経路だけを止められる。

プラグインは本当に1つも入れなくていいのですか

入れていない。この記事も、WordPressに最初から付いている機能だけで投稿した。記録に残っているのは、プラグインを追加せずに記事が公開できたことと、同じ原稿で2回実行しても記事が増えず更新になったこと。公式ドキュメントの記載では、外部プログラム用の鍵はWordPress 5.6以降の標準機能(2026年8月20日確認)。古いWordPressを使っている人だけ、先にバージョンの確認が必要。

外から投稿できる状態にしておくのは危なくないですか

リスクがゼロとは言わない。やっている対策は2つで、鍵をファイルに書かずパソコンの保管領域(macOSならキーチェーン)に入れること、使わなくなったら管理画面から無効化すること。公式ドキュメントには、機能そのものをコードで無効にする方法も書かれていました(2026年8月20日確認)。一方で、発行した鍵がその利用者の権限をどこまで引き継ぐのかについては、同じページで記載を確認できなかった。自分は管理者の権限で鍵を発行しているので、そこは安全側の設定ではない。

Claude Codeは有料ですか

公式の料金ページには、無料プランを含む全プランでClaude Codeが使えると書かれていました。有料の個人向けは、Proが月20ドル、年払いなら月あたり17ドル(2026年8月20日確認)。どのプランでどこまでの分量が使えるかは、自分で上限まで試した記録がないので書かない。この仕組み自体に足した費用はゼロ。WordPress標準の機能だけで動くので、プラグインの購入も外部サービスの契約もしていない。

自分でコードが書けなくてもできますか

コードは書いていない。書いたのはClaude Codeで、自分が決めたのは仕組みの形のほう。原稿を正とすること、リンクは台帳から差し込むこと、広告の表示がなければ投稿を止めること。この3つを決めるのに、プログラムの知識は使っていません。ただ、丸投げで完成したわけでもない。認証が通らない、通信が途中で止まる、という場面ではこちらが手を動かして原因を絞る必要があった。書けなくても進むけれど、止まった場所を1つずつ確かめる根気は要る。


まとめ:一番の効果は「直すのが安くなる」こと

作ってよかったのは、投稿が速くなったことではありませんでした。

間違いを直すコストが、ほぼゼロになったことです。

  • 記事の誤字 → 原稿を直して実行し直す
  • 広告リンクの差し替え → 台帳1箇所を直す
  • 表記ルールの変更 → 全記事に一括反映

この記録自体が、この仕組みを通って公開されています。

サーバーの選び方から書いた記事はこちら。サーバー、結局どれがいいのか(実際に契約して比較)テーマ選びはこちら、設定が反映されないときの話はこちらに書きました。

エックスサーバー(スタンダード)

12ヶ月契約 月990円/初期費用0円/10日間無料お試しあり/独自ドメイン永久無料(12ヶ月以上)

※ 価格・キャンペーン内容は2026年8月17日時点のものです。最新の条件は公式サイトをご確認ください。

※ 表示している料金や仕様は執筆時点のものです。最新の情報は公式サイトでご確認ください。

ちなみに、この仕組みを作るのにかかった時間は、記事3本ぶんくらいでした。4本目からは黒字です。

コメント

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