experience-portal-create について
headless-360 MCP サーバーを通じて Salesforce Digital Experience ポータルを作成するスキルです。従業員向け、自助サービス、パートナー、一般コミュニティのサイトを扱い、種類に応じた Connect API の利用や、有効化・メンバー追加・公開に対応します。
主な機能
- 01従業員・自助・コミュニティサイトの作成
- 02パートナーポータルの作成
- 03Aura または LWR テンプレートの選択
- 04自助サイト向け MIAW の設定
- 05サイトの有効化とページ公開
活用シーン
- 01従業員向け IT サービスポータルの作成
- 02パートナーポータルの構築
- 03顧客コミュニティの作成
- 04自助ポータルへの MIAW 接続
MCP 対応
Salesforce 組織への操作は headless-360 MCP サーバーの discover、describe、dispatch を通じて行います。Connect API でポータルを作成・参照し、ステータスエンドポイントでバックグラウンドジョブを監視します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill experience-portal-createインストール後、Claude Code で/experience-portal-createを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/report-template.mdreferences/mcp-invocation.mdpost-creation-activate-publish.mdtemplates.md詳細
Digital Experience ポータルを作成する
Salesforce で新しい Digital Experience(旧 Communities)ポータル/サイトを作成します。従業員向けサービス・ポータル、パートナー・ポータル(PRM)、一般顧客向けコミュニティに対応しています。
すべての操作は headless-360 MCP サーバーを通じて実行します(mcp__headless-360__discover →
mcp__headless-360__describe → mcp__headless-360__dispatch/mcp__headless-360__dispatch_readonly)。
Salesforce CLI(api request、data query、org open サブコマンド)、project-codey MCP サーバー、
curl の直接実行、その他の HTTP クライアントは使用しないでください。このスキルで組織にアクセスする方法は
dispatch/dispatch_readonly のみです。正確な呼び出し形式については references/mcp-invocation.md を参照してください。
範囲
- 対象範囲:headless-360 Connect API ディスパッチャーを使用した Digital Experience サイトの作成。ポータルタイプの選択。基本設定(名前、URL、テンプレート)。サービス設定を埋め込んだセルフサービス・ポータル。サイトを最初から最後までアクセス可能にすること(Network を有効化(
status: Live)し、メンバーのプロファイルを追加し、Experience Builder のページを公開します。references/post-creation-activate-publish.mdを参照)。 - 対象外:作成後の詳細なカスタマイズ(Builder でのページレイアウト/コンポーネントの作成)。コンテンツの作成。初期設定を超えるブランディング。ユーザーごとの個別レコード管理(メンバーシップはユーザー単位ではなく、プロファイル/権限セットのレベルで追加します)。
実行モデル(最初にお読みください)
組織への呼び出しはすべて dispatch です。読み取りには
mcp__headless-360__dispatch_readonly(url, method: "GET", queryParams) を、書き込みには
mcp__headless-360__dispatch(url, method, body) を使用します。レスポンスから status_code と body を読み取ります。
ポータルタイプに対応するエンドポイントを解決するには、必要に応じて
mcp__headless-360__discover(query=...) と mcp__headless-360__describe(id=...) を使用します。Experience Cloud の
Connect API による作成/一覧取得操作は、常に discover/describe で索引化されているとは限りません。検索で何も返されない場合は、
機能がないと結論づけるのではなく、既知のバージョン付き Connect API パスを直接 dispatch してください
(references/mcp-invocation.md を参照)。
重要:パスには /services/data/vXX.0/... のプレフィックス全体を含める必要があります(例:
"/services/data/v67.0/connect/communities")。他の一部のディスパッチャーとは異なり、headless-360 は
API バージョンを自動で解決したり挿入したりしません。バージョンのプレフィックスがないパスは
400 ROUTE_NOT_FOUND を返します。利用可能な場合は discover/describe の結果からパスをそのままコピーしてください。
そうでない場合は、このスキルの例に示されているバージョン(執筆時点では v67.0)を使用し、組織で異なるバージョンが
実行されている場合は調整してください。詳細、レスポンスのエンベロープ、ジョブの監視、注意点については
references/mcp-invocation.md を参照してください。
確認事項
先に進む前に、以下を確認してください。
-
ポータルの種類は何ですか?
- 従業員サービス/ITSM/人事/ヘルプデスク → communities API を使用し、
Agentforce Employee CenterAura テンプレートを優先してください(従業員向けの機能が最も充実しており、Agentforce に対応しています)。作成時に MIAW を接続する必要があり、ゲスト用 ESD が存在する場合に限り、代わりにセルフサービス API を使用してください。 - パートナーポータル(PRM) → PRM 機能を有効にする必要があります
- カスタマーコミュニティ → 一般的なコミュニティ作成(Aura または LWR の Experience Builder テンプレート)
- 従業員サービス/ITSM/人事/ヘルプデスク → communities API を使用し、
-
基本設定(すべての種類で必須):
- ポータル名は何ですか?
- URL プレフィックスは何ですか?(英数字のみ使用可能。ハイフンやスペースは使用できません)
- 説明(任意)
-
従業員サービス/セルフサービスポータルの場合:
siteTypeは何ですか? → デフォルトはAURAです(Aura Experience Builder + Builder)。ユーザーが Lightning Web Runtime サイトを明示的に希望している場合に限り、LWRを使用してください。Salesforce Tabs + Visualforce(「VF Template」)サイトは絶対に作成しないでください。これはレガシーで、Builder がありません。- MIAW/Embedded Service Deployment ID はありますか?これらを指定すると、作成時にポータルへ Messaging for In-App and Web が接続されます。セルフサービス API にはゲスト用 ESD 設定が必要です。認証済みユーザー用 ESD 設定は任意です。Embedded Service Deployment をまだ作成していない場合は、まず Setup → Embedded Service Deployments に案内してください。
-
パートナーポータルの場合のみ:
- PRM テンプレート名は何ですか?(組織固有のテンプレートを確認してください)
必須入力項目
従業員サービス/セルフサービスポータル(POST /connect/self-service/site):
siteName(必須)- ポータル名guestEmbeddedServiceConfigId(必須)- ゲストユーザー用の Embedded Service Deployment(MIAW)設定 IDembeddedServiceConfigId(任意)- 認証済みユーザー用の Embedded Service Deployment(MIAW)設定 IDsiteType(任意)-AURA(デフォルト)またはLWR。Experience Builder サイトが作成されます。Visualforce は使用しないでください。enableForGuest(任意)- ゲスト(未認証)ユーザーがサイトにアクセスできるかどうかcontentDocumentId(任意)- サイトのブランディングセットに接続するロゴ画像の ContentDocument IDbrandColors(任意)-action、link、border、text、pageBackgroundを対象とする RGBA カラーの配列
この API は、サイト名から URL パスプレフィックスを自動的に設定します。
templateNameはありません。フレームワークはsiteType(Aura/LWR)で選択され、Visualforce は使用されません。
パートナーポータル(PRM):
siteName(必須)siteUrlPrefix(必須)prmTemplate(必須)siteDesc(任意)
一般的なコミュニティ(POST /connect/communities):
name(必須)urlPathPrefix(必須)- 英数字のみ使用可能。ハイフンは使用できませんtemplateName(必須)- Experience Builder テンプレート。Aura:Agentforce Employee Center(従業員サービスで優先)、Employee Portal、Customer Service、Help Center、Customer Account Portal、Partner Central、Build Your Own。LWR:Build Your Own (LWR)、Microsite (LWR)。正確な文字列はGET /connect/communities/templatesで検証してください(下記参照)。Salesforce Tabs + Visualforce(「VF Template」)は使用しないでください。これは Builder がないレガシーな Visualforce サイトです。description(任意)
ワークフロー
ステップ 1:ポータルの種類に基づいて API を決定する
-
従業員サービス/セルフサービス →
POST /connect/self-service/site- Aura(または LWR)の Experience Builder サイトを作成します。Visualforce は使用しません
- 作成時に MIAW(Embedded Service Deployment)をサイトへ接続します
- 前提条件:
CustomizeApplication権限、組織がセルフサービスサイト作成 API にアクセスできること、ゲスト用 Embedded Service Deployment が存在すること
-
パートナー(PRM) →
POST /connect/prm/setup/sites- 前提条件:
CommonPrmEnabled機能
- 前提条件:
-
一般的なコミュニティ →
POST /connect/communities- Experience Builder の
templateName(Aura または LWR)を使用します。Salesforce Tabs + Visualforceは使用しません - 前提条件:Manage Communities 権限(
ManageNetworks)
- Experience Builder の
ステップ 2:ポータルを作成する(種類別)
オプション A:従業員サービス/セルフサービスポータル
セルフサービスサイト API を使用します。CustomSite、Network、ExperienceBundle メタデータをデプロイして Aura Experience Builder サイト(Builder オプション付き)を作成し、指定された Embedded Service Deployment(ESD)設定 ID を使用して MIAW をサイトに接続します。ITSM/IT ヘルプデスク/従業員向けセルフサービスポータルには、この方法が適切です。
API 呼び出し(mcp__headless-360__dispatch 経由):
method: "POST"
url: "/services/data/v67.0/connect/self-service/site"
body:
{
"siteName": "<portal-name>",
"siteType": "AURA",
"guestEmbeddedServiceConfigId": "<guest-ESD-config-id>",
"embeddedServiceConfigId": "<auth-ESD-config-id>",
"enableForGuest": true
}
mcp__headless-360__dispatch_readonly 経由で GET /services/data/v67.0/connect/self-service/site/status/{jobId} をポーリングします。
siteTypeのデフォルトはAURA(Aura Experience Builder + Builder)です。ユーザーが Lightning Web Runtime サイトを明示的に要求した場合に限り、LWRを指定します。Visualforce サイトは作成しないでください。guestEmbeddedServiceConfigIdは必須です。これはゲストユーザー向けの MIAW Embedded Service Deployment 設定 ID です。embeddedServiceConfigId(認証済みユーザー向け)は任意です。ユーザーがまだ Embedded Service Deployment を作成していない場合は、先に作成してもらうか(Setup → Embedded Service Deployments)、MIAW/embedded-service セットアップスキルを使用してください。- ブランディングは任意です。
contentDocumentId(ロゴ)とbrandColors(`{ "type": "action|link|border|text|pageBackground", "color": { "r": 0-255, "g": 0-255, "b": 0-255, "a": 0-1 } }`` の配列)を指定できます。
レスポンス:
{
"success": true,
"siteName": "IT Support Portal",
"urlPathPrefix": "itsupport",
"siteUrl": "https://domain.my.site.com/itsupport",
"jobId": "708...",
"status": "Queued"
}
成功時は Success: と報告します。ポータルの作成が開始されたこと(Aura + Experience Builder)を伝え、名前、フレームワーク(Aura)、jobId、status を示します。また、(Network、CustomSite、ExperienceBundle メタデータと Embedded Service/MIAW デプロイメントの)プロビジョニングがバックグラウンドで進行中であることを伝えます。次に、ジョブを監視して(「Background Job Monitoring」を参照)、手順 3(Activate → Add Members → Publish)を完了します。
失敗時は {error} を添えて Failure: と報告します。原因(guestEmbeddedServiceConfigId の欠落または無効、名前/URL プレフィックスの重複、組織にセルフサービスサイト作成 API へのアクセス権がない、CustomizeApplication がない)と解決方法については、「Common Errors」セクションを参照してください。
オプション B:パートナーポータル(PRM)
API 呼び出し(mcp__headless-360__dispatch 経由):
method: "POST"
url: "/services/data/v67.0/connect/prm/setup/sites"
body:
{
"siteName": "<name>",
"siteUrlPrefix": "<url-prefix>",
"siteDesc": "<description>",
"prmTemplate": "<template-name>"
}
同期処理のため、ジョブのポーリングは不要です。
レスポンス:
{
"networkId": "0DB..."
}
成功時は Success: と報告します。パートナーポータルが作成されたことを伝え、名前、networkId、siteUrlPrefix、prmTemplate を示します。次に、Setup → Digital Experiences → All Sites で(Network ID を使って)ポータルを見つけ、手順 3(Activate → Add Members → Publish)を完了します。
失敗時は Failure: と報告します。詳細は「Common Errors」を参照してください(組織に PRM/CommonPrmEnabled がない、PRM テンプレート名が無効、名前/URL プレフィックスが重複)。PRM テンプレートは Setup → Digital Experiences → Settings → Partner Templates にあります。
オプション C:一般コミュニティ
まず、有効なテンプレートを確認します(必須 — 使用可能な templateName の文字列は組織のエディションやバージョンによって異なります)。mcp__headless-360__dispatch_readonly を使用します。
method: "GET"
url: "/services/data/v67.0/connect/communities/templates"
応答:{ "templates": [ { "publisher": "Salesforce", "templateName": "Employee Portal" }, … ], "total": N }。返された templateName をそのまま使用します。Experience Builder テンプレート(Aura または LWR)を優先してください。Salesforce Tabs + Visualforce は使用しないでください。
API 呼び出し(mcp__headless-360__dispatch を使用):
method: "POST"
url: "/services/data/v67.0/connect/communities"
body:
{
"name": "<name>",
"urlPathPrefix": "<url-prefix>",
"description": "<description>",
"templateName": "Agentforce Employee Center"
}
リクエストボディで受け付けられるのは {name, description, templateName, templateParams, urlPathPrefix} のみです。テンプレート固有の設定が必要な場合を除き、templateParams は省略してください。
従業員サービス/ITSM/HR ポータルには、組織の有効なテンプレート一覧に含まれている場合、Agentforce Employee Center テンプレートを優先してください。IT/HR のチケット管理、セルフサービスカタログ、ナレッジベース、Agentforce 対応のエクスペリエンスが付属しています。よりシンプルな Agentforce 非対応サイトが必要な場合は、Employee Portal(次に Customer Service)を使用してください。用途に応じたその他の選択肢:Help Center(Aura のナレッジ/問い合わせ削減)、Customer Account Portal(Aura の認証済みアカウント向けセルフサービス)、Partner Central(Aura の PRM)、または最新の空の LWR サイトを作成する Build Your Own (LWR) です。
Agentforce Employee Center は 2 つのレイヤーで構成されています。 この
POST /connect/communities呼び出しでプロビジョニングされるのはサイトのみです。埋め込み型のAgentforce 対話型アシスタントは別の手順です。付属テンプレート(EmployeeCopilot__AgentforceEmployeeAgent)を使って内部従業員エージェントを作成し、PATCH /services/data/v67.0/headless/invoke/einstein/genai-agentbuilder/create-copilot-from-templateを呼び出します(copilotContext.companyは必須)。次にエージェントを有効化し、サイトに接続します。このスキルではサイトをプロビジョニングしてその手順を案内しますが、Agentforce のセットアップ全体は対象外です。references/templates.mdを参照してください。
応答:
{
"jobId": "08P...",
"message": "Your site is almost ready. To track the site creation status, query the BackgroundOperation object and enter the jobId as the Id.",
"name": "Customer Community"
}
成功した場合は、Success: と報告します。コミュニティの作成が開始されたことを伝え、名前、jobId、message を示します。次に、ジョブを監視し(「バックグラウンドジョブの監視」を参照)、ステップ 3(有効化 → メンバー追加 → 公開)を完了します。
失敗した場合は、Failure: と報告します。「一般的なエラー」を参照してください(templateName が無効な場合 — GET /services/data/v67.0/connect/communities/templates を実行し、返された値をそのまま使用します。名前/URL プレフィックスが重複している場合。Manage Communities 権限がない場合)。
ステップ 3:サイトにアクセスできるようにする — 有効化、メンバー追加、公開
作成によってプロビジョニングされるのはサイトのみです。 作成後のサイトは UnderConstruction となり、管理者のみがアクセスできます。また、ページは未公開のため、URLにはまだアクセスできません(「ポータルが動作しない」という問題の最大の原因です)。次の 3 つの手順を順番に完了してください。(1) 有効化 — <status>Live</status> を指定して Network メタデータをデプロイします。(2) メンバー追加 — 対象のプロファイルを networkMemberGroups に追加して再デプロイします(ステップ 1 とまとめて実行できます。メンバーシップはユーザーごとではなくプロファイル単位です。例:Unified Employee — これはプロファイルであり、UserRole ではありません)。(3) 公開 — sf community publish --name "<Site Name>" を実行し、返された jobId を BackgroundOperation でポーリングして、Complete になるまで待ちます。その後、status: Live を確認し、プレフィックスだけではなく、ユーザーにログイン URL(.../<prefix>/login)を伝えます。
ツールに関する例外: 有効化/メンバー追加にはMetadata API(
Networkのデプロイ)を使用し、公開にはsf community publishを使用します。これらに対応する Connect API はありません(PATCH /connect/communitiesは 405 を返します)。このスキルで headless-360 以外のツールを使うのはここだけです。ステップ 3 の読み取りには引き続き headless-360 を使用します。
正確なコマンド、XML、検証クエリ、注意事項については references/post-creation-activate-publish.md を参照してください。
ステップ 4:ポータル作成レポートを作成する(必須 — 最終ステップ)
必ず最後に、実施した内容をまとめた report.md を作成してください。作成 API の呼び出しが成功したか、プロビジョニング中か、失敗したかにかかわらず、これがこのスキルの最終かつ必須のアクションです。作業ディレクトリまたは出力ディレクトリに report.md として書き込んでください。
レポートには、次の内容を含めてください。
- 見出し
# Portal Creation Reportで始めます。 - ポータル名、使用した API(
self-service/site、communities、prmのいずれか)とその 理由(例:「ゲスト ESD が存在しない → communities API」)、フレームワーク(Aura / LWR)、選択した テンプレートまたはsiteTypeを記載します。 - 送信したリクエスト(パスと主要なボディフィールド)および レスポンス(
jobId/networkId/siteUrl/status、またはエラー)を記載します。 - ステップ 3 で残っている作業(Activate → Add Members → Publish)を列挙し、従業員サービスサイトの場合は、埋め込み Agentforce エージェントは別途対応する後続ステップであることを記載します。
- 次のセンチネル行で正確に終わります。
Task completed: portal creation dispatched — see report.md
assets/report-template.md のテンプレートをコピーし、ポータル固有の値を記入してください。
テンプレートの推奨事項
すべての推奨事項で Experience Builder サイト(Aura または LWR)を作成します。Salesforce Tabs + Visualforce(「VF Template」)は従来型で Builder がないため、絶対に推奨しないでください。
| 用途 | API | フレームワーク | テンプレート / siteType |
|---|---|---|---|
| 従業員向けサービス / ITSM / HR / ヘルプデスク(最も充実。Agentforce 対応) | communities | Aura | Agentforce Employee Center |
| 従業員向けサービス / ヘルプデスク(作成時に MIAW を設定。ゲスト ESD が存在) | self-service/site | Aura | siteType: AURA(+ MIAW ESD 設定) |
| 従業員向けサービス / ヘルプデスク(シンプル。Agentforce なし) | communities | Aura | Employee Portal(代替:Customer Service) |
| カスタマーサポート / セルフサービスコミュニティ | communities | Aura | Customer Service |
| ナレッジベース / ケース回避 | communities | Aura | Help Center |
| 認証済みアカウントのセルフサービス | communities | Aura | Customer Account Portal |
| パートナーポータル(PRM を使用) | prm/setup/sites | Aura | 組織固有の PRM テンプレート |
| パートナーポータル / チャネル(PRM なし) | communities | Aura | Partner Central |
| モダンな空のサイト / ヘッドレス対応サイト | communities | LWR | Build Your Own (LWR) |
モダンな推奨事項:
- 従業員向けサービス / ITSM / HR ポータルには、communities API を使った
Agentforce Employee CenterAura テンプレートを優先してください。従業員向けの最も充実したエクスペリエンス(チケット管理、カタログ、ナレッジ、Agentforce 対応)が含まれています。会話型アシスタントは別途エージェントを設定するステップ(EmployeeCopilot__AgentforceEmployeeAgent)が必要です。作成時に MIAW を接続する必要があり、ゲスト Embedded Service Deployment が存在する場合は、セルフサービスサイト API(siteType: AURA)を使用してください。シンプルな Agentforce なしのサイトにはEmployee Portalを使用してください。 - カスタマーコミュニティには、communities API を使った
Customer Serviceテンプレート(Aura、モバイル対応)を使用してください。
テンプレートの完全なドキュメントについては、references/templates.md を参照してください。
バックグラウンドジョブの監視
ポータルの作成は非同期です(PRM のみ同期処理)。mcp__headless-360__dispatch_readonly を使ってポーリングします。
セルフサービスサイトのパス — 専用の型指定ステータスルートを使用します(推奨):
method: "GET"
url: "/services/data/v67.0/connect/self-service/site/status/{jobId}"
{success, siteName, urlPathPrefix, siteUrl, error, jobId, status} が返されます。
コミュニティのパス — /tooling/query ではなく、通常の REST クエリエンドポイントを使って BackgroundOperation を照会します:
method: "GET"
url: "/services/data/v67.0/query"
queryParams: { "q": "SELECT Id, Status FROM BackgroundOperation WHERE Id = '<jobId>'" }
Tooling と通常のクエリ(確認済みの注意点):
BackgroundOperationは、このディスパッチャーで有効な Tooling API の sObject ではありません。この SOQL を指定してGET /services/data/vXX.0/tooling/queryを実行すると、400 INVALID_TYPE "sObject type 'BackgroundOperation' is not supported."が返されます。代わりに通常の/services/data/vXX.0/queryエンドポイントを使用してください。同じ SOQL 文字列で正常に動作します。
列のルール:
BackgroundOperationでは、IdとStatusのみを選択してください。JobType、CompletedDate、NumErrorsはこのオブジェクトの列ではないため、INVALID_FIELDが返されます。上記の SOQL 文字列をそのまま使用してください。
ジョブのステータス:
Queued/Scheduled— 開始待ちInProgress/Running— 実行中Complete— 正常に完了Error— 失敗(ステータスルートのerrorフィールドを確認してください)
検証
作成が完了したら、次の手順を実行します。
- API(優先):
mcp__headless-360__dispatch_readonly(url: "/services/data/v67.0/connect/communities", method: "GET")で、すべての Experience Cloud サイトを一覧表示します。新しいサイトを探し、siteAsContainerEnabled: true(Experience Builder — Aura/LWR)であり、builderUrlが null ではなく、templateNameがSalesforce Tabs + Visualforceではないことを確認します。siteAsContainerEnabled: falseはレガシーの Visualforce サイトを意味します。このスキルは、この問題を避けるためのものです。 - 設定 UI(任意): 設定 → デジタルエクスペリエンス → すべてのサイト。Framework 列に Visualforce ではなく Aura(または LWR)が表示され、Builder ワークスペースへのリンクがあることを確認します。
- テスト URL: 応答に含まれる
siteUrlを使用します(ポータルは最初は非アクティブです)。
注: 外部ユーザーがアクセスできるようにするには、ポータルを有効化して公開する必要があります。
ルール/制約
| 制約 | 理由 |
|---|---|
| ポータルの作成は非同期です | バックグラウンドでメタデータをデプロイし、リソースをプロビジョニングします |
| サイト名は一意である必要があります | 各ポータルには組織内で固有の名前が必要です |
| URL プレフィックスは一意である必要があります | URL パスが競合してはなりません |
| URL プレフィックスは英数字である必要があります | ハイフン、スペース、特殊文字は使用できません |
| PRM には PRM 機能が必要です | ライセンスと組織の設定によって制御されます |
| 作成されたポータルは非アクティブ状態で開始します | 作成後に手動で有効化/公開する必要があります |
| パスには API バージョンのプレフィックスを含める必要があります | dispatch/dispatch_readonly は /services/data/vXX.0 を自動で追加しません。省略すると 400 ROUTE_NOT_FOUND が返されます |
種類別の前提条件
Employee Service / Self-Service:
CustomizeApplication権限- Communities/Digital Experience が有効であること
- 組織でセルフサービスサイト作成 API へのアクセスが有効になっていること
- ゲスト用の Embedded Service Deployment(MIAW)設定が存在すること(ID が必要です)。認証済みユーザー用の ESD 設定も任意で指定できます
Partner (PRM):
- 組織で
CommonPrmEnabledが有効であること - ポータル作成権限
- 有効な PRM テンプレート名
General Community:
- Manage Communities 権限(
ManageNetworks) - Communities/Digital Experience が有効であること
- 有効なテンプレート名
よくあるエラー
URL プレフィックスが無効:
「URL に使用できるのは英数字のみです。ハイフン、スペース、特殊文字を削除して(例:'employee-service' ではなく 'employeeservice')、別のプレフィックスをお試しください。」
テンプレート名が無効(一般コミュニティの手順):
「指定されたテンプレートは存在しません。
解決方法:
GET /services/data/v67.0/connect/communities/templatesを実行し、返されたtemplateNameをそのまま使用します- Experience Builder テンプレートを優先してください:
Agentforce Employee Center(従業員向けサービス)、Employee Portal、Customer Service、Help Center、Customer Account Portal、Partner Central、Build Your Own、Build Your Own (LWR) - テンプレート名では大文字と小文字が区別されます。正確に一致させてください
Salesforce Tabs + Visualforce(「VF Template」)は使用しないでください。これは Builder のないレガシーな Visualforce サイトです」
ゲスト用 Embedded Service 設定がない(セルフサービスの手順):
「セルフサービスサイト API には、ゲスト用 Embedded Service Deployment の設定 ID が必要です。
解決方法:
- Setup → Embedded Service Deployments で Embedded Service Deployment(MIAW)を作成するか、MIAW/embedded-service のセットアップスキルを使用します
- 設定 ID を
guestEmbeddedServiceConfigIdとして渡します(認証済みユーザー用にembeddedServiceConfigIdを任意で渡すこともできます)」
PRM が有効になっていない:
「この組織では Partner Relationship Management(PRM)が有効になっていません。
選択肢:
- Salesforce に連絡して PRM 機能を有効にしてもらいます
- 代わりに
Partner Centralテンプレートを使用して一般コミュニティを作成します(Communities API 経由)」
名前/URL が重複している:
「この名前または URL プレフィックスのポータルはすでに存在します(Communities API は 400 INVALID_INPUT — Enter a different name. That one already exists. を返します)。
既存のポータルを確認する: mcp__headless-360__dispatch_readonly(url: "/services/data/v67.0/connect/communities", method: "GET") を実行し、name/urlPathPrefix フィールドを確認します。
別の名前または URL プレフィックスを選択してください。」
権限がない:
「ポータルを作成する権限がありません。
必要な権限:
- セルフサービスポータル:
CustomizeApplication - 一般コミュニティ:
ManageNetworks(Manage Communities)
これらの権限を申請するには、Salesforce 管理者に連絡してください。」
ルートが見つからない(バージョンプレフィックスがない):
「このスキルのドキュメントにあるパスと一致するパスで 400 ROUTE_NOT_FOUND が発生した場合は、url に /services/data/vXX.0/... の完全なプレフィックスが含まれていることを確認してください。dispatch/dispatch_readonly ではプレフィックスをそのまま指定する必要があり、自動では追加されません。特定のバージョンで 404 が発生する場合は、その組織の最近の discover/describe 結果に表示されているバージョンを試してください。」
関連する操作
作成後:
- ポータルを有効化 — Setup → Digital Experiences → All Sites → Activate
- ブランディングを設定 — 色、ロゴ、テーマをカスタマイズ
- ページ/コンポーネントを追加 — Experience Builder を使用
- ユーザーアクセスを設定 — プロファイル、権限セット、共有ルール
- ポータルを公開 — 外部ユーザーがアクセスできるようにする
既存のポータルを管理:
- ポータルを一覧表示 —
mcp__headless-360__dispatch_readonly(url: "/services/data/v67.0/connect/communities", method: "GET") - 設定を更新 — Network Tooling API または Metadata API
- 無効化 — Setup UI 経由
重要な注意事項
- 作成は非同期です(PRM を除く)。プロビジョニングのみが行われます。API はジョブ ID を返し、ポータルは
UnderConstructionの状態で、メンバーがなく、公開されていない状態になります。そのため、Step 3(Activate → Add Members → Publish。references/post-creation-activate-publish.mdを参照)を完了するまで、URL にアクセスできません。 - URL のプレフィックスがサイトパスになります —
https://<domain>.my.site.com/<prefix>(サーブ/ログイン先は.../<prefix>/loginであり、プレフィックスのみのパスではありません)。 - Embedded Service/MIAW の設定は事前に存在している必要があります — このスキルでは Embedded Service Deployments は作成しません。Setup → Embedded Service Deployments(または MIAW/embedded-service セットアップスキル)から別途作成し、その設定 ID をセルフサービスサイト API に渡してください。一般的なコミュニティでは、作成後に Experience Builder の Embedded Service コンポーネントから MIAW を追加します。
- テンプレート名は大文字と小文字が区別されます — 作成を試みる前に、組織で利用可能なテンプレートを確認してください。
- discover/describe では、特定の Connect API 操作を ID で解決できない場合があります — headless-360 コーパスでは、多くの操作が単一のエンドポイントではなく複数ステップの SOR としてインデックス化されており、標準的な Connect API の書き込み操作(例:
POST /connect/communities)の中には個別にインデックス化されていないものがあります。機能が存在しないと判断しないでください。このスキルに記載された、バージョン付きの既知の Connect API パスを直接呼び出してください。
参考ドキュメント
references/mcp-invocation.md— セッションごとに必ず読んでください。 正確なmcp__headless-360__*の呼び出し形式、バージョンプレフィックスの要件、レスポンスエンベロープ、ジョブの監視、BackgroundOperationのカラム/エンドポイントに関する規則と注意点。references/templates.md— 利用可能なテンプレート、テンプレートパラメーター、選択ガイド。references/post-creation-activate-publish.md— サイトにアクセスできるようにするための Step 3(有効化、メンバー追加、公開):Metadata-API とsf community publishの手順、PATCH で 405 が発生する注意点、NetworkMemberGroupのカラムに関する規則、ログイン URL に関する注意事項。assets/report-template.md— コピーして使用する Step 4 のreport.mdテンプレート(見出し、必須フィールド、センチネル)。
API タイプの分類
サイトの作成は mcp__headless-360__dispatch / mcp__headless-360__dispatch_readonly で実行します(project-codey や未加工の HTTP は使用しません)。すべてのパスに /services/data/vXX.0 のプレフィックスが含まれます。作成後の Step 3 は唯一の例外です。 Network の有効化とメンバー追加には Metadata API(sf project deploy start --metadata Network:...)を使用し、公開には sf community publish を使用します。これらに対応する Connect API はありません(PATCH /connect/communities/<id> は 405 を返します)。Step 3 の読み取り/検証には、引き続き headless-360 を使用します。作成パスは以下のとおりです。
- セルフサービスポータル: Connect API
POST /services/data/vXX.0/connect/self-service/site— 非同期(GET /services/data/vXX.0/connect/self-service/site/status/{jobId}でポーリング) - PRM ポータル: Connect API
POST /services/data/vXX.0/connect/prm/setup/sites— 同期 - 一般的なコミュニティ: Connect API
POST /services/data/vXX.0/connect/communities— 非同期(/tooling/queryではなく、GET /services/data/vXX.0/queryでBackgroundOperationをポーリング)