非エンジニアなのにAIでツールやゲームを作っているRyoです。ブログ記事書くのは好きなんですが、WordPressに投稿する作業がマジで面倒で、「これ自動化できないかな?」とずっと思ってました。調べてみたら意外とハードル高くて挫折しそうになったんですが、なんとか自動投稿システムを完成させました。
よくあるブログ投稿の悩み
毎回同じ作業の繰り返し
- Markdownで記事を書く
- WordPressにコピペ
- アイキャッチ画像をアップロード
- タグやカテゴリを設定
- プレビューで確認
- 公開ボタンをポチ
これを記事ごとにやるのって、本当に時間のムダですよね。
画像アップロードが特に面倒
- ローカルの画像ファイルを探す
- WordPressメディアライブラリにドラッグ&ドロップ
- アイキャッチに設定
- 「あれ、どの画像だっけ?」で迷子になる
失敗談: 最初はPhotoshopのバッチ処理とか、Zapierとかいろいろ試したんですが、設定が複雑すぎて途中で投げ出しました。
なぜ自動投稿システムが必要なのか
作業時間の大幅短縮
記事1本あたり投稿作業だけで10-15分かかってたのが、コマンド一発で30秒に短縮できました。
重複投稿の防止
「あれ、この記事もう投稿したっけ?」問題も完全解決。投稿済みファイルは自動で別フォルダに移動するので、二重投稿の心配がありません。
一括処理対応
たまった記事を週末にまとめて投稿とかも、一回のコマンド実行で全部処理できます。
自動投稿システムの仕組み
使用技術とアーキテクチャ
- Node.js + axios: WordPress REST APIとの通信
- form-data: 画像ファイルのアップロード
- ファイルシステム操作: 投稿済みファイルの自動移動
処理フロー
articles/
フォルダの Markdown ファイルを検出- フロントマター(メタデータ)を解析
- アイキャッチ画像を自動アップロード
- WordPress REST API経由で下書き投稿
- 投稿成功時にファイルを
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環境が必要
導入時の注意点
セキュリティ設定
- アプリケーションパスワードを必ず使用
- WAF例外設定で必要最小限のアクセス許可
- 認証情報の適切な管理
ファイル管理
- アイキャッチ画像は 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%以上削減
- ミス防止: 重複投稿や設定漏れがなくなった
- 一括処理: 複数記事をまとめて処理可能
- 履歴管理: 投稿済みファイルが自動整理される
初期設定はちょっと大変でしたが、一度構築してしまえばめちゃくちゃ楽になります。ブログを頻繁に更新する人には本当におすすめです。
面倒な投稿作業はシステムに任せて、コンテンツ作成に集中しましょう!