n8nブログ自動化「Content Farming」 ステップ8,9詳細解説:画像生成とブログ記事投稿

概要

Content Farmingワークフローのステップ8,9では、画像生成とWordPress記事投稿を自動化します。このフェーズは21個のノードで構成され、Leonardo AIまたはOpenAI DALL-Eを使った画像生成から、WordPress REST APIを使った記事公開までを完全自動化します。

ステップ8,9の全体構成

ワークフローは3つの主要フェーズに分かれています:

1. 画像生成フェーズ(ステップ8前半)

  • MongoDBからステップ7完了済みの記事データを取得
  • AI Agent4がLeonardo AI用の画像プロンプトを生成
  • Leonardo AI APIで1472×832pxのアイキャッチ画像を生成
  • 代替としてOpenAI DALL-Eも利用可能

2. 画像アップロードフェーズ(ステップ8後半)

  • 生成された画像をWordPressメディアライブラリにアップロード
  • MongoDBに画像URLと完了ステータスを保存

3. 記事投稿フェーズ(ステップ9)

  • Markdown形式の記事をHTML形式に変換
  • WordPressにドラフト記事を作成
  • アイキャッチ画像を設定
  • YOAST SEOメタデータを設定
  • 記事を公開
  • MongoDBに最終ステータスを保存

各ノードの詳細解説

ノード1: Get Articles Daily1(スケジュールトリガー)

2時間ごとの20分にワークフローを自動実行するトリガーです。ステップ8,9は前のステップ(1〜7)とは独立して動作し、MongoDBに保存されている「completed_step:7」の記事を処理します。

ノード2: MongoDB8(データベースクエリ)

MongoDBの「blog」コレクションから、completed_stepが7の記事を1件取得します。取得されるデータには、ブログタイトル、メインキーワード、画像のAltテキスト、記事本文(Markdown)、URLスラグ、SEOメタデータなどが含まれます。

ノード3: Code9(プロンプト前処理)

MongoDBから取得したimage_alt_textをクリーニングします。改行とダブルクォートを除去し、”A cinematic, emotionally compelling scene…”のような説明的なプレフィックスを追加します。Leonardo AI APIは長いプロンプトに対応していますが、改行や特殊文字があるとエラーになることがあるため、この前処理が重要です。

ノード4: AI Agent4(画像プロンプト生成)

OpenAI GPT-4o-miniを使って、画像生成用の詳細プロンプトを作成します。ブログタイトル、メインキーワード、画像Altテキストを組み合わせて、人間中心のシーンを描写するプロンプトを生成します。

重要な指示として、抽象的な回路やネットワーク図ではなく、感情的なストーリーを持つシーンを作成すること、画像内に文字を含めないこと、象徴的でシネマティックな雰囲気にすることが求められます。

ノード5: OpenAI Chat Model5(LLMモデル)

AI Agent4のバックエンドとしてGPT-4o-miniモデルを提供します。このモデルはコスト効率が高く(GPT-4の約1/10)、応答時間が短く、プロンプト生成には十分な品質を持っています。

ノード6: HTTP Request1(Leonardo AI画像生成リクエスト)

Leonardo AI APIに画像生成をリクエストします。パラメータには、モデルID、コントラスト値(3.5)、プロンプト、画像数(1枚)、サイズ(1472×832px)、スタイルUUIDが含まれます。

重要な認証設定: Bearer認証を使用し、Authorization: Bearer YOUR_API_KEYの形式で設定します。⚠️ “Bearer”と”YOUR_API_KEY”の間に必ずスペースを1つ入れてください。スペースがないと認証エラーになります。

このリクエストは即座に画像を返すのではなく、generationId(生成ジョブID)を返します。

ノード7: Structured Output Parser5(構造化出力パーサー)

AI Agent4が生成したテキスト形式のプロンプトをJSON形式に変換します。これにより、次のノード(HTTP Request1)でプロンプトを{{$json.prompt}}として参照できます。

ノード8: Wait(待機)

Leonardo AIの画像生成完了を待つため、1分間待機します。Leonardo AIは通常30秒〜2分、混雑時は2〜5分かかります。より確実な方法として、Webhook + Pollingパターン(30秒ごとに生成状況をチェック)も検討できますが、シンプルさを優先して1分待機する方法が採用されています。

ノード9: OpenAI(代替画像生成)

DALL-E 3による画像生成の代替パスです。Leonardo AIが利用できない場合やコスト削減したい場合に使用します。サイズは1792×1024px(横長)で、コストは約$0.04〜0.08/画像です。

Leonardo AIはスタイル統一とコスト予測可能性($0.30〜0.50/画像)、DALL-Eは高品質と柔軟性という特徴があります。

ノード10: HTTP Request2(生成状況確認)

HTTP Request1で取得したgenerationIdを使って、画像生成の進捗をチェックします。レスポンスには生成状況(PENDINGまたはCOMPLETE)と、完了時には画像URLが含まれます。

ノード11: HTTP Request3(画像ダウンロード)

HTTP Request2のレスポンスから画像URLを抽出し、画像データをバイナリ形式でダウンロードします。Leonardo AIがホストする画像の一時URL(通常24〜48時間有効)からデータを取得します。

ノード12: Upload image2(WordPress画像アップロード)

WordPress REST API(/wp/v2/media)を使って画像をアップロードします。

重要なパラメータ:

  • Content-Disposition: img-{{ slug }}.jpg形式でファイル名を設定(例: img-ai-code-review-tools.jpg)
  • contentType: “binaryData”: HTTP Request3でダウンロードしたバイナリデータを送信
  • WordPress認証: Basic認証またはアプリケーションパスワード

APIレスポンスには、メディアID(id)と画像URL(source_url)が含まれます。このメディアIDは後でアイキャッチ画像として設定する際に使用します。

ノード13: Code12(画像URL保存準備)

Upload image2のレスポンスからsource_urlを抽出し、MongoDBに保存する準備をします。ドキュメントID(_id)、画像URL(blog_image_url)、完了ステップ(8)を含むオブジェクトを返します。

ノード14: MongoDB15(画像情報更新)

Code12で準備したデータをMongoDBの「blog」コレクションに保存します。これでステップ8(画像生成)が完了し、次のステップ9(記事投稿)に進みます。

ノード15: Code8(Markdown→HTML変換)

ステップ6で生成されたMarkdown形式の記事本文を、WordPressが受け付けるHTML形式に変換します。

変換ルール:

  • ### 見出し<h3>見出し</h3>
  • ## 見出し<h2>見出し</h2>
  • # 見出し<h1>見出し</h1>
  • **太字**<strong>太字</strong>
  • *斜体*<em>斜体</em>
  • 改行 → <br>

このコードは基本的なMarkdownのみ対応しています。より高度な変換が必要な場合は、markdown-itライブラリや外部APIサービス(Markdownly APIなど)の使用を検討してください。

ノード16: WordPress1(記事ドラフト作成)

WordPress REST APIを使って新規記事をドラフト状態で作成します。

主要フィールド:

  • title: ブログタイトル
  • slug: URLスラグ
  • status: “draft”(下書き)
  • content: HTML形式の記事本文
  • authorId: 著者ID
  • categories: カテゴリーID
  • commentStatus: “closed”(コメント無効)

いきなり公開すると、アイキャッチ画像やYOAST SEOメタデータが設定される前に公開されてしまうため、まずドラフトを作成し、その後に画像とメタデータを設定してから公開します。

ノード17: Set Image(アイキャッチ画像設定)

WordPress REST APIのfeatured_mediaパラメータを使って、ドラフト記事にアイキャッチ画像を設定します。Wordpress1で作成した記事IDとUpload image2でアップロードした画像のメディアIDを使用します。

ノード18: Set metatag1(YOAST SEOメタデータ設定)

YOAST SEOプラグインのカスタムフィールドにメタデータを設定します:

  • _yoast_wpseo_title: SEOタイトル(60文字以内)
  • _yoast_wpseo_metadesc: メタディスクリプション(160文字以内)

これらの値はステップ7(AI Agent7)で生成されています。⚠️ YOAST SEOプラグインがインストールされていない場合、このリクエストは失敗します。代替として、All in One SEOプラグインや独自のカスタムフィールドを使用できます。

ノード19: WordPress2(記事公開)

WordPress1で作成したドラフト記事のstatusを”draft”から”publish”に変更します。アイキャッチ画像とYOAST SEOメタデータの設定が完了してから公開することで、完全な状態で記事が公開されます。

ノード20: Code14(最終ステータス準備)

MongoDBに保存する最終ステータス情報を準備します:

  • _id: 更新対象のドキュメントID
  • blog_status: “Publish”(公開済み)
  • blog_link: 公開された記事のURL
  • completed_step: 9(完了マーク)

ノード21: MongoDB16(最終ステータス保存)

Code14で準備したデータをMongoDBに保存します。これでステップ9が完了し、1つのブログ記事が完全に自動生成・公開されました。

コストと重要ポイント

1記事あたりのコスト

  • Leonardo AI: $0.30〜0.50(画像1枚)
  • OpenAI: $0.10〜0.20(プロンプト生成)
  • 合計: 約$0.40〜0.70/記事

1日10記事の場合、ステップ8,9のコストは月額$120〜210程度です。

重要なポイント

  1. Leonardo AI認証: “Bearer YOUR_API_KEY”のスペースに注意
  2. 非同期処理: 画像生成は時間がかかるため、Waitノードで待機
  3. 段階的公開: draft → 画像設定 → メタデータ設定 → publish
  4. MongoDBでの進捗管理: completed_stepで各ステップの完了状態を追跡

まとめ

ステップ8,9では、21個のノードを使って画像生成からWordPress投稿までを完全自動化しています。Leonardo AIまたはDALL-Eで生成されたアイキャッチ画像、HTML形式に変換された記事本文、YOAST SEOメタデータを組み合わせて、SEO最適化された高品質な記事が自動的に公開されます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール