1日でブログ自動投稿システムを作った話|n8n×Claude×WordPress

1日でブログ自動投稿システムを作った話|n8n×Claude×WordPress

「AIで自動的にブログ記事を投稿できたら最高じゃないか」——そう思ったのが、このプロジェクトの始まりでした。

IT業界でPM・コンサルとして働く筆者が、たった1日でブログ自動投稿システムを構築した実録をお届けします。使ったのはClaude API・n8n・WordPressという組み合わせ。プログラミングの専門知識がなくても再現できる内容です。

この記事では、システムの全体像から具体的な実装手順、詰まったポイントとその解決策まで、包み隠さずお伝えします。「自分もやってみたい」と思った方の参考になれば幸いです。


このシステムで実現したこと

まず結論から。完成したシステムでできることと、実際に運用してわかったメリットをお伝えします。

自動化できた主な機能

  • 毎朝5時に自動で記事を生成・投稿(人間の作業ゼロ)
  • Claude APIが3000文字以上のHTML記事を自動生成
  • Unsplash APIでアイキャッチ画像を自動取得・設置
  • 4カテゴリをローテーションして内容が偏らない設計
  • メタディスクリプション・SEOタイトル・メタキーワードも自動生成
  • リスク回避表現(断定禁止・個人差あり)をプロンプトで制御
  • Cocoon独自フィールドへのSEO情報自動書き込み
n8n実行ログ
実際の実行ログ。毎朝5時に約1分21秒で完了している

実際の運用コストと効果

月30記事を自動生成してもClaude APIのコストは約100〜150円程度。サーバー代を含めても月4,000〜5,000円前後で運用できます。(料金は変動する場合があります)

これを人力でやると毎日1〜2時間かかる作業です。月換算で30〜60時間の作業が完全自動化されます。時給換算すれば、かなりのコストパフォーマンスといえるでしょう。

比較項目 手動運用 自動化後
月間作業時間 30〜60時間 月1〜2時間(確認のみ)
月間記事数 4〜8本(週1〜2本) 約30本(毎日1本)
継続性 モチベーション依存 システムが自動継続
月間コスト サーバー代のみ +API代約200〜300円

システム全体の構成と使用ツール

ワークフローの全体像はシンプルです。n8nというノーコード自動化ツールを使い、以下の順番で処理が流れます。

ワークフローの流れ

  1. Schedule Trigger:毎朝5時に自動起動
  2. Code in JavaScript(カテゴリ決定):日付ベースで今日のカテゴリを自動決定
  3. HTTP Request(Claude API):記事タイトル・本文・SEO情報をJSON形式で生成
  4. Code in JavaScript(JSONパース):出力をパースしてカテゴリIDに変換
  5. HTTP Request(Unsplash API):記事テーマに合った画像を取得
  6. Code in JavaScript(画像挿入):画像タグを本文に挿入
  7. Create a post(WordPress):記事を自動投稿
  8. HTTP Request(メタ情報更新):SEOタイトル・メタディスクリプション・メタキーワードをWordPressに書き込み
n8nワークフロー全体図
n8nで構築した自動投稿ワークフローの全体像(一部)

各ステップを1つずつ繋いでいくだけで、完全自動の記事投稿マシンが完成します。

使用ツールと選定理由

ツール 用途 選定理由
n8n ワークフロー自動化 ノーコードで直感的・拡張性が高い
Claude API 記事生成 JSON出力が安定・長文品質が高い
WordPress + Cocoon CMS・公開 REST APIが充実・アドセンス対応
Unsplash API アイキャッチ画像 商用利用無料・キーワード検索可能
ConoHa WING サーバー WordPressに最適化・WAF設定が柔軟

構築で特にこだわったポイント

単に動くシステムを作るだけでなく、品質・保守性・拡張性にもこだわりました。特に苦労した3つのポイントを詳しく解説します。

① プロンプト設計で品質と安全性を担保する

AIに記事を書かせると、どうしても「断定的すぎる表現」「架空の体験談」「古い情報に基づくスペック比較」が混じりやすくなります。これはアドセンス審査やYMYL(お金・健康)ジャンルで致命的です。

そこで、プロンプトに以下のルールを組み込みました。

  • 「必ず稼げる」などの断定的な収益表現を禁止
  • 架空の体験談・実績を書かない
  • 収益に関する記述には「個人差があります」を必ず添える
  • 「〜と言われています」「〜する人もいます」など断定を避ける表現を使う
  • AIツールのモデル名・料金などの具体的スペックは断定しない
  • 記事末尾に「※本記事の情報は執筆時点のものです」を必ず入れる

プロンプトレベルでリスクを制御することで、人間が毎回レビューしなくても安全な記事が量産できる仕組みを作りました。ただし月1回の目視確認は継続して行っています。

② JSON出力でワークフローを安定させる

Claude APIからの出力を安定的にパースするため、出力形式を厳密にJSON指定しています。マークダウンや前置き文章が混じると後続ノードでエラーが発生するため、プロンプトの最後に「前置き・説明・コードブロック記号は不要です」と明示しています。

具体的には以下のキーを持つJSONを返すようプロンプトで指示しています:

  • title:記事タイトル(30文字以内)
  • category:カテゴリ名
  • image_keyword:Unsplash検索用の英語キーワード
  • meta_description:110文字以内のメタディスクリプション
  • meta_keywords:カンマ区切りのキーワード
  • seo_title:32文字以内のSEOタイトル
  • content:HTML形式の本文

JavaScriptのCodeノードでJSONをパースし、各値を後続ノードに渡す設計です。パース前に不要なコードブロック記号を除去する処理も入れています。

③ メタディスクリプションの自動化に最も苦労した

最大のハマりポイントがここでした。CocoonテーマのメタディスクリプションはWordPress標準のREST APIでは直接書き込めない仕様でした。n8nのWordPressノードの「Add Field」一覧にも該当項目がありません。

解決策として、以下の2段階で対応しました:

  1. WordPressのfunctions.phpにCocoon独自フィールドをREST APIに登録するPHPコードを追加
  2. WordPressへの記事投稿後、別途HTTP RequestノードでPOSTしてメタ情報を書き込む

設定したフィールドは以下の3つです:

  • the_page_meta_description:メタディスクリプション
  • the_page_meta_keywords:メタキーワード
  • the_page_seo_title:SEOタイトル

このアプローチにより、毎回の投稿でSEO情報が自動的に設定されるようになりました。


詰まったポイントと解決策

構築中にいくつかのトラブルに直面しました。同じシステムを作ろうとしている方の参考になるよう、詳しく記録しておきます。

① ConoHa WINGのWAFがUnsplash APIをブロックした

Unsplash APIからの画像取得が突然エラーになる問題が発生しました。原因はConoHa WINGのWAF(Webアプリケーションファイアウォール)がUnsplash APIのIPアドレスからのアクセスをブロックしていたためです。

解決策:ConoHa WINGの管理画面でWAF設定を開き、Unsplash APIのIPアドレスを除外リストに追加することで解決しました。

② カテゴリが偏る問題

当初、プロンプトで「25種類のテーマからランダムに選ぶ」という設計にしていましたが、実際に運用するとAI活用系の記事ばかりが生成され、NISAや節約系の記事がほとんど出ない偏りが発生しました。

解決策:n8nにカテゴリ決定用のCodeノードを追加し、日付ベースで4カテゴリを均等にローテーションする仕組みに変更。これにより4日で全カテゴリが1周する設計になりました。

③ n8nのノード名参照でエラーが出た

プロンプトで{{ $('Code').item.json.todayCategory }}と記述したところ、「Referenced node doesn’t exist」エラーが発生。原因はn8nが自動的に付けたノード名が「Code in JavaScript2」だったためです。

解決策:プロンプト内の参照名を実際のノード名と一致させることで解決。n8nでは変数参照時にノードの正確な名前を確認することが重要です。


WordPress自動投稿された記事一覧
実際にシステムで自動投稿された記事一覧

1日でここまでできた理由

正直、1日でここまで完成するとは思っていませんでした。想定以上に進んだ理由を振り返ると3つあります。

① n8nのビジュアルワークフローが直感的

n8nはノードをドラッグ&ドロップで繋いでいくだけで自動化フローが作れます。コードを書かなくても大半の処理が完結するため、実装スピードが圧倒的に速い。JavaScriptのCodeノードも用意されているので、細かいデータ加工が必要な場面でも柔軟に対応できました。

またバージョン管理機能(Version History)があり、変更前にPublishしておけばいつでも以前の状態に戻せます。本番・待機の2系統で運用することで、安全にテスト・改修ができる体制も整えました。

② Claude APIの出力品質が高い

プロンプト設計さえしっかりすれば、Claude APIは安定して高品質なHTML記事を生成してくれます。構成・見出し・強調・表・箇条書きまで自動で整えてくれるため、WordPressにそのまま貼り付けられる形式で出力できます。

特にJSON形式での出力指定が効果的で、後続のワークフローで安定してパースできる構造化データとして受け取れます。プロンプトの【絶対に守るルール】セクションに品質基準を明記することで、記事の一貫性も保てています。

③ 問題が出るたびにAIに相談しながら進めた

メタディスクリプションの書き込みエラー、カテゴリIDの変換、Unsplash APIのWAF除外設定など、詰まった部分はその都度AIに相談しながら解決しました。AIをツールとして使いながらAIのシステムを作るという、まさにAI時代の開発スタイルです。

「エラーメッセージをそのまま貼り付けて解決策を聞く」というシンプルなアプローチが、開発スピードを大幅に上げてくれました。(個人差があります)


構築にかかったコストと時間

項目 内容 費用
サーバー・ドメイン ConoHa WING 月額約1,000円〜
WordPress Cocoonテーマ 無料
n8n クラウド版 月額約2,500円〜
Claude API claude-sonnet-4-5 1記事あたり約2〜5円
Unsplash API 画像取得 無料
構築時間 システム全体 約1日

まとめ:自動化ブログの可能性と今後の展望

今回のシステム構築で感じた本質的なことを3点にまとめます。

  1. 自動化は「継続性」を担保する最強の手段:普通のブログは更新が止まって死ぬ。自動化すればその問題が解決する。継続こそがSEO評価の土台になる
  2. プロンプト設計が品質の9割を決める:AIに任せるほど、人間が設計するプロンプトの重要性が増す。ルールを明文化することでリスクも制御できる
  3. 自動化に甘えず人間の付加価値を足し続けることが差別化になる:一次情報・実体験・比較検証は自動化できない強み。この記事自体がその実践例

次のステップ

このシステムをさらに発展させるために、以下を順番に実装していく予定です:

  1. SNS自動投稿(X/Twitter連携)でSEO流入を補完する
  2. 記事末尾へのCTA自動挿入で収益導線を強化する
  3. 品質スコアリング自動化で問題記事を自動検知する

🛠️ 同じ仕組みを作ってみたい方へ

この記事で紹介したシステムに使ったツールはこちらです。

構築方法について質問がある方はお問い合わせフォームからお気軽にどうぞ。

※本記事の情報は執筆時点のものです。最新情報は各公式サイトをご確認ください。

コメント

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