コンテンツへスキップ

Make.comとOpenAIでコンテンツを一括生成するには?

数十件、数百件のコンテンツを一度に生成したい場合、プロンプトを1つずつコピーして実行するのは現実的ではありません。このページでは、Make.comでデータソースとOpenAIをつなぎ、各行を個別に処理して、結果を手作業なしで書き戻す自動化パイプラインの作り方を解説します。また、実行の途中でワークフローが止まりやすいレート制限エラーへの対処方法も取り上げます。

寄稿者

SaaS Hackers
ブログ

結論:Make.comとOpenAIによる一括コンテンツ生成は、データソースを繰り返し処理し、各行ごとにOpenAIモジュールを呼び出すシナリオを組むことで実現できます。レート制限は、組み込みのエラーハンドラーとSleepモジュールで対処します。この方法なら、プロンプトを1つずつ手作業で処理する代わりに、1回の実行で数百件の出力に対応できる、再現性のある自動化パイプラインを構築できます。

OpenAIでコンテンツを生成する場合、1、2件であれば簡単です。しかし、商品説明50件、メールのバリエーション200件、あるいは1か月分のソーシャル投稿を一度に作成するとなると、途端に行き詰まります。プロンプトのコピー&ペーストはワークフローではなく、ボトルネックです。

Make.comは、データとOpenAIのAPIをつなぐオーケストレーション層として機能し、この問題を解決します。ロジックを一度定義してデータソースを指定すれば、あとは自動で実行されます。このガイドでは、多くの人が初回でつまずくレート制限エラーへの対処も含め、そのパイプラインの構築手順を具体的に説明します。

始める前に必要なもの

  • Make.comのアカウント(月間1,000オペレーションを超えるシナリオには有料プランが必要です)
  • 十分なクレジットのあるOpenAI APIキー
  • 入力データを含むデータソース(Google Sheets、Airtable、CSVが最も一般的です)
  • 1つ以上の動的変数を含む、明確なプロンプトテンプレート

データソースがGoogleスプレッドシートの場合は、1行が1件のコンテンツ作成ジョブになるように構成します。たとえば、A列に商品名、B列に簡単な説明、C列にターゲットオーディエンスを入力します。Makeのシナリオは各行を読み取り、その値をプロンプトに差し込みます。

一括コンテンツ生成のためにMake.comとOpenAIを接続する方法

ステップ1:新しいシナリオを作成し、データソースモジュールを追加する

Make.comを開き、新しいシナリオを作成します。データソースに合ったトリガーモジュールを追加します。

  • Google Sheets:「Search Rows」を使って、入力シートからすべての行を取得します
  • Airtable:「Search Records」を使い、未処理の行に絞り込むフィルターを設定します
  • HTTPモジュール:独自のデータベースやAPIから取得する場合に使用します

モジュールは、1行ではなくすべての行を返すように設定します。Makeは各行を個別のバンドルとして、シナリオの残りの部分に渡します。

ステップ2:Iteratorモジュールを追加する

データソースモジュールの後に、Iteratorを追加します。これにより、行の配列が個々のアイテムに分割され、それぞれが個別にOpenAIモジュールへ流れます。このステップがないと、Makeはデータセット全体を1回の呼び出しでOpenAIに送ろうとし、行ごとではなく1件の出力しか得られません。

Iteratorの出力を、チェーン内の次のモジュールに接続します。

ステップ3:OpenAI(ChatGPT)モジュールを追加する

OpenAI (ChatGPT)モジュールを追加し、使用するモデルに応じて「Create a Completion」または「Create a Chat Completion」を選択します。GPT-4oとGPT-3.5-turboは、どちらもChat Completionsを使用します。

プロンプト欄にテンプレートを記述し、Iteratorの動的変数をマッピングします。

Write a 150-word product description for {{1.product_name}}.
Target audience: {{1.target_audience}}.
Tone: {{1.tone}}.
Include one specific benefit and one clear call to action.

二重括弧の参照により、各行の対応する列の値が自動的に取り込まれます。

モデル、最大トークン数、temperatureを設定します。一括出力の一貫性を保つには、temperatureを0.3から0.7の間にしておきます。値を高くするとバリエーションが増えるため、ソーシャルコピーには便利ですが、構造化された商品説明にはあまり向きません。SEOを軸としたアセットを大量に制作する場合は、ブリーフや出力品質を標準化するために、より広くB2B SaaSコンテンツマーケティングエージェンシーのアプローチを参考にするのも有効です。

ステップ4:出力をデータソースに書き戻す

OpenAIモジュールの後に、結果をシートやデータベースに書き戻すモジュールを追加します。Googleスプレッドシートの場合は「Update a Row」を使い、生成したコンテンツを出力列にマッピングします。Airtableの場合は「Update a Record」を使います。

OpenAIのレスポンスフィールド(通常は choices[0].message.content)を、対応するセルにマッピングします。あわせてタイムスタンプ列を追加すると、各行がいつ処理されたかを追跡できます。

Make.comでOpenAIのレート制限に対処する方法

レート制限は、一括コンテンツ生成のシナリオで最も多い失敗要因です。OpenAIは、1分あたりのリクエスト数(RPM)と1分あたりのトークン数(TPM)の両方に制限を設けています。シナリオがティアで許容される速度を超えてリクエストを送ると、429エラーが発生し、実行の途中でシナリオが失敗します。

リクエストの間にSleepモジュールを追加する

最も簡単な対処法は、OpenAIモジュールの直後、出力モジュールの前にSleepモジュールを置くことです。各イテレーションの間に1〜3秒の待機を設定します。スループットは下がりますが、ほとんどのOpenAIティアで標準的なレート制限内に十分収まります。

参考までに、OpenAIの無料ティアではGPT-4oのRPMは3です。Tier 1(5ドルの利用後)では500 RPMとなります。Tier 1の場合は、1秒のSleepで十分な余裕が得られます。無料ティアの場合は、Sleepを20秒に設定してください。

429エラーにはMakeの組み込みエラーハンドラーを使う

OpenAIモジュールにエラーハンドラーを追加すると、シナリオ全体を停止させることなく429レスポンスを捕捉できます。

  1. OpenAIモジュールを右クリックします
  2. 「Add error handler」を選択します
  3. ハンドラーの種類として「Resume」を選びます
  4. エラーハンドラー内に別のSleepモジュールを追加し、60秒に設定します
  5. フローをOpenAIモジュールに戻し、同じリクエストを再試行させます

これで自動リトライのループが完成します。OpenAIがレート制限エラーを返すと、Makeは60秒待ってから再試行します。実行全体が失敗して進捗が失われることはありません。

大きなバッチを小さな実行に分割する

一度に200行を超えて処理する場合は、ジョブを分割します。データソースモジュールのフィルターを使い、1回目の実行では1〜100行目、次の実行では101〜200行目を取得します。実行のたびに増えるカウンターをMakeのデータストアに保存すれば、この作業も自動化できます。

一貫したバッチ出力のためのプロンプトテンプレートの構成方法

大量処理では、次の出力が実行される前に1件ずつ確認することができないため、プロンプトの品質がより重要になります。1回なら許容できる結果が得られる曖昧なプロンプトでも、100行にわたって実行すると、結果が大きくばらつきます。

出力の制約を明示する:

Write exactly 3 bullet points. Each bullet must be under 20 words.
Do not include an introduction or conclusion. Start directly with the first bullet.

フォーマット要件を指定する:

Return only the finished copy. Do not include explanations, labels, or commentary.

ロールを設定してトーンを固定する:

You are a direct-response copywriter for a B2B SaaS brand.
Write in second person. Avoid jargon.

フルバッチを実行する前に、代表的な5〜10行でプロンプトをテストしておくと、後の修正作業を大幅に減らせます。出力がパイプライン創出、メッセージの一貫性、キャンペーンのセグメンテーションに関わる場合は、専門のB2B SaaSデジタルマーケティングエージェンシーが再現性のあるコンテンツ体制をどのように運用しているかと比較してみるのも有益です。

Make.comで一括出力を追跡・管理する方法

データソースにステータス列を用意する

入力シートに「Status」列を追加し、「Pending」「Processing」「Done」といった値を設定します。各行がシナリオを通過する際、開始時と終了時に更新します。これにより、次回の実行で未処理の行を絞り込めるようになり、シナリオが途中で失敗した場合も作業の重複を避けられます。

出力は別のシートやテーブルに保存する

生成したコンテンツは、入力データを上書きせず、専用の出力テーブルに書き込みます。元データをきれいに保てるうえ、生成された全コンテンツについて、タイムスタンプや生成元の入力値を含む完全な記録が残ります。

エラーは別のシートに記録する

エラーハンドラーから2つ目の出力経路を追加し、失敗した行をエラーログシートに書き込みます。行ID、エラーメッセージ、タイムスタンプを含めてください。実行後、成功した行には触れずに、失敗した行だけを単独で再処理できます。

Make.comの一括処理とOpenAIのBatch APIの違いは何ですか?

OpenAIのBatch APIは、大量のリクエストを直接のAPI呼び出しで送信し、結果を非同期で取得したい開発者向けの別製品で、多くの場合コストが50%低くなります。JSONファイルやAPIエンドポイントを直接扱うことに慣れたエンジニアリングチーム向けに作られています。

Make.comのアプローチは異なります。ビジュアルなノーコードのインターフェースで、API呼び出しを手書きせずに同じ一括処理のロジックを構築できます。リアルタイムでの状況確認、ネイティブのエラー処理、Google Sheets、Airtable、Slack、Notionなどのツールとの直接連携を、同じワークフロー内で利用できます。エンジニアに頼らずにコンテンツ制作を自動化したいマーケティングチーム、コンテンツオペレーション担当者、SaaSの創業者にとって、Make.comは稼働するパイプラインへの近道です。

この2つのアプローチは、どちらか一方しか使えないわけではありません。非常に大量(数万行)のコンテンツを生成する場合は、MakeでOpenAI Batch APIのジョブを起動し、完了後に結果をポーリングする使い方もできます。これはより高度なパターンなので、基本的なパイプラインが安定して動くようになってから試すとよいでしょう。

よくある質問

Q: Make.comでは、1回のシナリオ実行でOpenAIを使って何行まで処理できますか?
A: Make.comでは、1回のシナリオ実行あたりのイテレーション数に厳密な上限はありませんが、ご契約プランのオペレーション数の上限が適用されます。OpenAIへの呼び出しは1回につき1オペレーションとしてカウントされます。Makeの Core プラン(月間10,000オペレーション)の場合、500行のバッチを1回実行するだけで月間の利用枠の5%を消費します。大規模なバッチを定期的に実行する場合は、事前にこの点を踏まえてプランを選んでください。

Q: Makeのシナリオがバルクコンテンツ生成の途中で失敗したらどうなりますか?
A: Makeは失敗した時点を記録するため、実行履歴を確認すれば、どのバンドルが完了したかを把握できます。データソースにステータス列がある場合は、「Done」とマークされた行のみが次回の実行でスキップされます。ステータス列がないと、処理済みの行を再処理して重複を生成してしまうおそれがあります。大規模に実行する前に、バルク用のシナリオには必ずステータス管理を組み込んでください。

Q: Make.comとOpenAIの組み合わせは、OpenAIのBatch APIを直接使うより安く済みますか?
A: OpenAIのBatch APIは、標準のAPI料金と比べてトークンコストが50%低く、非常に大量の処理ではより安価になります。Make.comでは、OpenAIの標準API料金に加えて、Make独自のオペレーションコストがかかります。1週間あたり数百行までの実行であれば、セットアップや保守にかかる手間を考慮すると、通常はMakeを使う方がコスト効率に優れます。月に数万行規模になる場合は、ハイブリッド方式(MakeからBatch APIのジョブを起動する方法)も検討する価値があります。

Q: Make.comを使って、OpenAIのDALL-Eによる画像をテキストと一緒に一括生成できますか?
A: はい、可能です。MakeのOpenAIモジュールには、DALL-Eを呼び出す「Create an Image」アクションがあります。同じシナリオの中でテキスト生成と画像生成の呼び出しをつなげ、テキストの出力を画像のプロンプトとして使うこともできます。画像生成は1回ごとに別のオペレーション、別のAPI呼び出しとしてカウントされるため、レート制限とコストの計算には両方を含めてください。

Q: この方法は、技術に詳しくないSaaSチームにも向いていますか?
A: Make.comは、まさにこの用途のために作られています。コードを書かなくても、実用的なバルクコンテンツのパイプラインを構築できます。Google Sheets、OpenAI、エラー処理のモジュールは、すべてポイント&クリックで設定できます。生成したコンテンツの検索での見え方も気になるSaaSチームは、専門のB2B SaaS SEOエージェンシーと比較検討してもよいでしょう。ただ、最初の一歩としては、データセット全体に広げる前に10行のテストバッチを実行し、プロンプトと出力形式を検証するのが最適です。

寄稿者

SaaS Hackers

B2B SaaSの専門家を探す

レビューのうえ、サービスや専門分野ごとに分類したB2B SaaSの専門家とエージェンシーのディレクトリをご用意しました。ぜひご覧ください。

専門家を探す
すべて見る