WordPress記事自動投稿システムを作ってみた

  • URLをコピーしました!

非エンジニアなのにAIでツールやゲームを作っているRyoです。ブログ記事書くのは好きなんですが、WordPressに投稿する作業がマジで面倒で、「これ自動化できないかな?」とずっと思ってました。調べてみたら意外とハードル高くて挫折しそうになったんですが、なんとか自動投稿システムを完成させました。

目次

よくあるブログ投稿の悩み

毎回同じ作業の繰り返し

  • Markdownで記事を書く
  • WordPressにコピペ
  • アイキャッチ画像をアップロード
  • タグやカテゴリを設定
  • プレビューで確認
  • 公開ボタンをポチ

これを記事ごとにやるのって、本当に時間のムダですよね。

画像アップロードが特に面倒

  • ローカルの画像ファイルを探す
  • WordPressメディアライブラリにドラッグ&ドロップ
  • アイキャッチに設定
  • 「あれ、どの画像だっけ?」で迷子になる

失敗談: 最初はPhotoshopのバッチ処理とか、Zapierとかいろいろ試したんですが、設定が複雑すぎて途中で投げ出しました。

なぜ自動投稿システムが必要なのか

作業時間の大幅短縮

記事1本あたり投稿作業だけで10-15分かかってたのが、コマンド一発で30秒に短縮できました。

重複投稿の防止

「あれ、この記事もう投稿したっけ?」問題も完全解決。投稿済みファイルは自動で別フォルダに移動するので、二重投稿の心配がありません。

一括処理対応

たまった記事を週末にまとめて投稿とかも、一回のコマンド実行で全部処理できます。

自動投稿システムの仕組み

使用技術とアーキテクチャ

  • Node.js + axios: WordPress REST APIとの通信
  • form-data: 画像ファイルのアップロード
  • ファイルシステム操作: 投稿済みファイルの自動移動

処理フロー

  1. articles/フォルダの Markdown ファイルを検出
  2. フロントマター(メタデータ)を解析
  3. アイキャッチ画像を自動アップロード
  4. WordPress REST API経由で下書き投稿
  5. 投稿成功時にファイルを published/ フォルダに移動

フォルダ構成

my-blog/
├─ articles/              # 投稿待ち記事
│  └─ published/         # 投稿済み記事(自動移動)
├─ media/eyecatch/       # アイキャッチ画像
└─ scripts/post-to-wp.js # 自動投稿スクリプト

実装で苦労したポイント

WordPress REST API の認証

普通のパスワードじゃダメで、アプリケーションパスワードが必要でした。これ知らなくて最初めちゃくちゃハマりました。

WAF(Web Application Firewall)との戦い

ConoHaサーバー使ってるんですが、WAFがPOSTリクエストを片っ端からブロックしてくるんですよ。例外設定で /wp-json/wp/v2/posts へのアクセスを許可する必要がありました。

日本語文字コードの問題

英語の投稿は成功するのに、日本語だとエラーになる現象に遭遇。ヘッダーに charset=utf-8 を明示的に設定することで解決しました。

自作システムの特徴

この作業めんどい?うちのシステムで一発↓

追記: 現在、みなさんが使えるようになる配布版を準備中です。少々お待ちください。完成次第、詳細なセットアップ手順と一緒にお知らせします!

重複投稿完全防止

投稿成功後、ファイルを自動で published/ フォルダに移動。ファイル名も 記事名_投稿ID_タイムスタンプ.md に変更されるので、投稿履歴も一目瞭然です。

アイキャッチ画像自動処理

  • 対応形式: JPG, PNG, WebP, GIF, SVG
  • ファイル名での自動検索機能
  • WordPressメディアライブラリに自動アップロード

エラー耐性

  • 投稿失敗時はファイルをそのまま保持
  • 部分的な失敗でも続行可能
  • 詳細なログ出力で問題特定が簡単

他の自動化ツールとの比較

WordPress公式プラグイン vs 自作システム

項目 公式プラグイン 自作システム
設定の簡単さ
カスタマイズ性
Markdown対応
一括処理
重複防止

Zapier/IFTTT vs 自作システム

メリット

  • ローカルファイルを直接処理可能
  • 複雑な条件分岐に対応
  • 月額料金不要

デメリット

  • 初期設定がやや複雑
  • Node.js環境が必要

導入時の注意点

セキュリティ設定

  1. アプリケーションパスワードを必ず使用
  2. WAF例外設定で必要最小限のアクセス許可
  3. 認証情報の適切な管理

ファイル管理

  • アイキャッチ画像は 500KB以下 推奨
  • ファイル名は 英数字とハイフン のみ使用
  • Markdown ファイルは UTF-8 で保存

初回テスト

本格運用前に必ずテスト記事で動作確認を行ってください。特にWAF設定周りは環境によって異なるので要注意です。

よくある質問(FAQ)

Q: WordPress以外のCMSでも使える?

A: 基本的にはWordPress REST API専用ですが、他のCMSでも同様のAPIがあれば応用可能です。

Q: 画像が自動アップロードされない場合は?

A: ファイル形式とサイズを確認してください。また、フロントマターの eyecatch フィールドとファイル名が一致しているかチェックしてください。

Q: 投稿済みファイルを再投稿したい場合は?

A: published/ フォルダから articles/ フォルダに戻すだけです。ただし、重複投稿になるので注意してください。

Q: エラーが発生した場合の対処法は?

A: ログを確認して以下をチェック:

  • アプリケーションパスワードの有効性
  • WAF設定
  • ファイル形式・文字コード

まとめ

WordPress記事の自動投稿システムを作ってみて、作業効率が劇的に向上しました。特に以下の点で大きなメリットを感じています:

  • 時間短縮: 投稿作業が90%以上削減
  • ミス防止: 重複投稿や設定漏れがなくなった
  • 一括処理: 複数記事をまとめて処理可能
  • 履歴管理: 投稿済みファイルが自動整理される

初期設定はちょっと大変でしたが、一度構築してしまえばめちゃくちゃ楽になります。ブログを頻繁に更新する人には本当におすすめです。

面倒な投稿作業はシステムに任せて、コンテンツ作成に集中しましょう!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

調剤薬局で働く現役薬剤師です。
医療現場の非効率さに疑問を持ち、独学でプログラミングを習得しました。
今では、ReactやPythonを使って現場の業務を効率化するツールを自作しています。
このブログでは、医療や薬局業務に役立つIT活用術や、プログラミング初心者の方に向けた実践的な学習ノウハウを発信しています。

目次