任意のシナリオに Make モジュールを 1 つ配置し、前のステップのエンティティをマッピングするだけで、構造化されスキーマ検証済みの、複数モデルを融合した JSON オブジェクトが得られます。40 言語の多言語出力も、1 回の LLM パスで生成されます。動的ドロップダウンとプラン上限を考慮したエラー処理を備えた 15 の本格的なモジュールを、Make の操作単位の課金モデルに合わせて設計しています。
Entity Enricher は Server-Sent Events ストリームを利用する n8n コネクター をすでに提供しています。Make のモジュールは SSE をネイティブに扱えず、各モジュールは 1 回の単一な HTTP 呼び出しになります。エンリッチメントを 1 つの Make オペレーションとして実行できるよう、バックエンドは専用の POST /api/single/enrich/sync エンドポイントを公開しており、ストリーミングフローをサーバー側でラップして、最終的なフュージョン結果を 1 つのレスポンスで返します。
言語フィールドで複数の言語を選択すると、Entity Enricher はすべての多言語プロパティを選択したすべての言語で1回のLLM呼び出しで入力します — 言語ごとにN回の逐次往復は行いません。40の言語が、欧州、アジア、中東、アフリカの主要市場をカバーします。
languages = ["en", "fr", "de", "ja"] を指定した 1 回の Enrich Entity 呼び出しの結果:
{
"names": {
"primary": {
"en": "Aspirin",
"fr": "Aspirine",
"de": "Aspirin",
"ja": "アスピリン"
}
},
"indications": {
"en": "Pain, fever, inflammation; antiplatelet therapy.",
"fr": "Douleur, fièvre, inflammation ; antiagrégant plaquettaire.",
"de": "Schmerz, Fieber, Entzündung; Thrombozytenaggregationshemmer.",
"ja": "痛み、発熱、炎症;抗血小板療法。"
}
}下流の Make モジュールは任意の言語を直接マッピングできます:{{enrichEntity.result.names.primary.fr}}。Languages ドロップダウンには全 40 言語のリストが表示され、組織のプロファイルで選択可能な言語数が制限されている場合はプラン制限の通知が表示されます。

Make アプリのソースは public TOT-Concept repository にあります(Entity Enricher のモノレポから同期されています)。アプリが Make のマーケットプレイスに公開されるまでは、Developer Hub からサイドロードしてください:
make-app-entity-enricher/ ディレクトリを .zip としてアップロードするか、各 .json/.imljson ファイルをエディターの対応するタブに貼り付けてください。ent_XXXXXXXXXXXX、/api/enrichment/options に対して自動テストされます)か、OAuth 2.0 接続(Entity Enricher にサインインして Authorize をクリック)のいずれかを選択できます。
Makeモジュール内の選択可能なすべてのフィールドは、設定時にEntity Enricher APIを呼び出すRPCによって設定されます。ピン留めされたスキーマが最初に表示され(📌で示されます)、モデルラベルには100万トークンあたりの価格が含まれ、プラン制限のある組織はクォータに達すると通知が表示されます。

https://entityenricher.aiです。セルフホスト環境の場合のみ上書きしてください。中心となるモジュールは、動的なドロップダウンで入力フィールドを提供します:スキーマ、モデル(複数選択)、言語(複数選択)、戦略、オプションの分類モデルおよびアービトレーションモデル、Web検索、レスポンススキーマ、厳密な構造化出力、タイムアウト、メタデータの切り替えです。Entity dataフィールドを介して、以前の任意のモジュールからエンティティをマッピングできます。
2つ以上のmodelを選択すると、結果はサーバー側で自動的にfusionされます。Make出力パネルにはis_fused: true、source_modelsのリスト、そして一致したフィールドと競合したフィールドを集計するfusionサマリーが表示されます:

identity_merges — 今回の実行が、異なる語から生成された既存のアイデンティティを再利用した各回の記録で、判定の決め手となった類似度が付きます(コードやトークンの完全一致で決まった場合は、類似度が計測されないため空になります)。entity_keys — 実際に保存されたキー列の値です。これにより下流のモジュールは、作成したばかりの行を推測せずに参照できます。ステータスは、部分的な書き込みを単なる成功として扱わず正直に報告し、skipped_itemsとkey_collisionsも併せて示します。retries が、従来の attempts フィールドに代わりました。互換性のない名称変更のため、これをマッピングしているシナリオは更新してください。7 つのカテゴリにまたがる 15 個のモジュール。Search モジュールは下流の Iterator/Aggregator チェーン向けに結果ごとに 1 バンドルを出力し、Action モジュールは単一のバンドルを出力します。
| カテゴリ | モジュール | 説明 |
|---|---|---|
| Enrichment | Enrich Entity | マルチモデルフュージョンによる単一呼び出しエンリッチメント。最終的にフュージョンされた(または最良の単一モデルの)結果を返します。分類警告時には自動的にキャンセルされます。 |
| Schemas | List Schemas | 保存済みのschemaごとに1つのMakeバンドルを返し、Iterator/Aggregatorチェーンですぐに利用できます。 |
| Schemas | Get Schema Details | 専門領域、プロパティ、検索キーを含むスキーマの全内容です。 |
| Schemas | Generate Sample | 1つのエンティティタイプの現実的なサンプルJSONオブジェクトを1〜N個、1回のブロッキング呼び出しで生成します。スキーマ作成のエントリーポイントです。最初のサンプルがフィールドセットを定義し、残りは同じフィールドを持つインスタンスのバリエーションです。 |
| Schemas | Generate Schema | 同じエンティティタイプの1〜N個のサンプルオブジェクトからJSONスキーマを生成して自動保存します。フィールドの和集合を取り、一部のサンプルで欠落しているフィールドはnull許容とし、実際に観測された値を例として使用します。 |
| Records | List Records | フィルター(タイプ、成功、フリーテキスト)を使って過去のエンリッチメントレコードを検索します。 |
| Records | Get Record | prompt ごとの完全なメトリクスを含む単一のenrichment結果を取得します。 |
| Records | Inject Records into Database | 保存された(または変換された)エンリッチメント結果を、そのスキーマのデータベース同期に送信します。スキーマの公開済み契約に対して再検証されたうえで、受け入れゲートを通過します。 |
| Fusion | Merge Results | 複数のエンリッチメント結果を、必要に応じて別のLLMアービターで再マージします。 |
| Attachments | Upload Attachment | ファイル(上流モジュールからバッファとしてマッピングされたもの、例:HTTP ▸ Get a File)をアップロードし、Enrich Entity で使用するアタッチメント ID を返します。 |
| Attachments | Delete Attachment | IDでattachmentを削除します。enrichment後の便利なクリーンアップ手順です。 |
| Database Sync | List Database Syncs | スキーマのデータベース同期を、保留中のデルタ数とともに返します。 |
| Database Sync | Fetch Database Deltas | データベース同期のSQLデルタの次のFIFOウィンドウを返します。Claimを有効にすると行はリースされ、確認応答が必要になります。それ以外の場合、読み取りは再実行可能です。 |
| Database Sync | Acknowledge Database Deltas | 指定したIDまでの適用済みデルタを確認応答します。リースを解放し、同期オプションに応じて配信済みのコピーを削除します。 |
| Configuration | Get Options | 利用可能なモデル、言語、ストラテジー、および組織のプラン上限。 |
Database Sync モジュールは、スケジュール実行されるシナリオからデータベース同期の差分フィードを駆動します。Fetch Database Deltas が次のSQLウィンドウをリースし、データベースまたはHTTPモジュールがそれを適用し、Acknowledge Database Deltas が確定します(Fetch の Next Cursor を Acknowledge にマッピングしてください)。
Make シナリオは操作単位で課金されます。Make アプリは n8n コネクタの Batch Enrich モジュールを移植する代わりに、Make 組み込みの Iterator + Enrich Entity を使用します。各反復は独立しており、障害が連鎖せず、課金は処理された内容を正確に反映します。
1回の Enrich Entity 呼び出しで、選択したすべての言語における多言語プロパティをすべて設定します。N回の順次往復ではなく、1回のLLMパスで生成されます。任意の言語を直接マッピングできます:{{result.names.primary.fr}}。
専用の POST /api/single/enrich/sync エンドポイントが、サーバー側でストリーミングフローをラップします。1つのMake操作=1つのバンドル。ポーリングも、2モジュール構成も不要です。
Enrich Entity モジュールは、エンティティデータ、スキーマ、言語、Web 検索だけで開きます。Entity Enricher は組織の最適なモデルで自動的に実行されます。モデル、添付ファイル、戦略、分類/アービトレーションのオプションは、Make の「詳細設定を表示」トグルの内側にあります。
10 個の RPC が設定時にスキーマ、Database Sync、モデル、言語、戦略、分類/調停モデル、レスポンススキーマおよび構造化出力のオプションを取得します。ピン留めされたスキーマが先頭に表示され、モデルのラベルには料金が含まれます。
2つ以上のモデルを選択すると、結果は自動的にフュージョンされます。出力バンドルには is_fused、source_models[]、および fusion: {agreed_fields, conflicted_fields, total_fields, method, arbitration_model} のサマリーが含まれます。
任意の安価な分類モデルが、エンリッチメントの実行前にエンティティがスキーマの期待する型と一致するかを検証します。不一致の場合は、幻覚されたデータではなく型付きのDataErrorが生成されます。
HTTP 402エラー(プランの上限またはクレジット不足)は、型付きのMake OutOfMoneyErrorになります。メッセージには、バックエンドの人間が読める詳細(クレジットが尽きた場合は課金チャージ用URLを含む)と機械可読なコードが反映されます。シナリオのエラーハンドラーでコードに応じて分岐し、人間に警告したり、より安価なモデルにフォールバックしたり、一時停止したりできます。
Web検索のドロップダウンはparameters.modelsを読み取り、選択されたモデルのいずれもsupports_web_searchを宣言していない場合は無効になります。
Make シナリオは操作単位で課金されます。複数エンティティのワークフローは Make 組み込みの Iterator + Enrich Entity を使用し、エンティティごとのきめ細かなエラー処理と正確な課金を実現します。
呼び出しごとのデフォルトのタイムアウトは300秒で、範囲は[10, 900]です。ジョブが時間内に完了しない場合、サーバー側で自動的にキャンセルされ、型付きのConnectionErrorが返されます。
バックエンドが返し得るすべてのステータスは、型付きのMakeエラーにマッピングされるため、シナリオのエラーハンドラーは文字列を解析するのではなく、失敗モードに応じて分岐できます。

| HTTP | Make のエラータイプ | 発火するタイミング |
|---|---|---|
| 400 | DataError | スキーマが見つからない、検索キーが不足している、モデルまたは言語が無効です。 |
| 401 | InvalidCredentials | API キーが正しくないか、指定されていません。 |
| 402 | OutOfMoneyError | プラン上限の超過またはクレジット不足です。メッセージ = body.detail.detail(人間が読める形式で、insufficient_credits の場合はチャージ用URLを含みます)+ body.detail.code(機械可読)。code で分岐します: insufficient_credits、model_limit_exceeded、language_limit_exceeded、concurrent_job_limit_reached、daily/weekly/monthly_prompt_limit_exceeded。 |
| 403 | AccessDeniedError | ロールまたはスコープが不足しています。 |
| 404 | InvalidConfigurationError | スキーマまたはレコードが見つかりません。 |
| 422 | DataError | classification警告。body.detail.classification には status、reasoning、confidence、entity_description が含まれます。 |
| 429 | RateLimitError | プロバイダーのレート制限(一時的)。 |
| 499 | RuntimeError | ジョブがキャンセルされました。 |
| 502 | ConnectionError | アップストリームのLLMプロバイダーエラー(例: コンテキストオーバーフロー)。 |
| 504 | ConnectionError | timeout_seconds が経過したため、ジョブはサーバー側で自動的にキャンセルされました。 |
アプリには、インポート可能な6つのシナリオ用ブループリントが同梱されています。単一エンリッチメント、Iterator を使ったバッチパターン、ドキュメントからエンリッチメント、画像からサンプル、そしてスキーマへ、サンプルからスキーマ、データベース同期の差分フィードの排出です。モジュールを一から組み立てる代わりに、いずれかをインポートして自分の接続に差し替えてください。