- Create resource
- Update resource
- Get resource
- List resources
- Publish resource
Create Resource
Sanity のデータセットに新しいドキュメントを作成します。必須の入力- Sanity Project — Profound で接続した Sanity プロジェクトを選択します
- Dataset — データセットを選択します(例:
production) - Document Details — ドキュメントのフィールドを含む JSON オブジェクト(
_typeを含める必要があります)
- Rich Text Content — フィールド名を HTML 文字列に対応付けた JSON オブジェクト。Profound が HTML を Sanity の Portable Text 形式に自動的に変換します
- Publish Resource — すぐに公開する場合はオンにし、下書きを作成する場合はオフのままにします
drafts. で始まる下書き ID を自動的に生成します。ドキュメントをすぐに公開するには、Publish Resource を有効にしてください。ヒント: Publish Resource をオフのままにすると、公開前に Sanity Studio でレビューするための下書きを作成できます。
主要な概念
ドキュメントとタイプ
Sanity のすべてのドキュメントには、スキーマを決定する_type フィールドがあります。Sanity のタイプは「コンテンツモデル」や「テンプレート」に相当するもので、ドキュメントが持つことのできる構造とフィールドを定義します。
Create Resource ステップでドキュメントを作成する場合、データ内の _type フィールドによって、ドキュメントが従うスキーマが決まります。そのタイプは、Sanity プロジェクトのスキーマにすでに存在している必要があります。
ドキュメントタイプの一般的な例:
ヒント: プロジェクトに存在するタイプを確認するには、タイプフィルターなしで List Resources ステップを使用します。返されたドキュメントに、利用可能な
_type の値が表示されます。データセット
Sanity プロジェクトは複数のデータセット(例:production、staging、development)を持つことができます。各データセットは独立したコンテンツストアです。Agent のステップを設定する際は、必ず正しいデータセットを指定してください。
下書きと公開済み
Sanity は、コンテンツのバージョン管理に 2 つの ID を使い分ける仕組みを採用しています。- 公開済みドキュメントはプレーンな ID を持ちます(例:
abc123) - 下書きドキュメントは、同じ ID に
drafts.プレフィックスが付いたものを持ちます(例:drafts.abc123)
Portable Text(リッチテキスト)の操作
Sanity は、ネイティブのリッチテキスト形式として Portable Text を使用します。Portable Text は、構造化コンテンツをブロックの配列として表現する JSON ベースの仕様です。リッチテキストコンテンツの指定
Sanity のフィールドにリッチテキストコンテンツを指定する方法は 2 つあります。- HTML 入力(推奨)
- ネイティブ Portable Text JSON
Rich Text Content フィールドを使用して HTML 文字列を渡します。Profound が自動的に Portable Text ブロックに変換します。フィールド名を HTML 文字列に対応付けます。サポートされている HTML 要素:
ヒント: これは Sanity にリッチテキストを取り込む最も簡単な方法です。LLM ステップで HTML を生成し、そのまま Rich Text Content に渡してください。変換は Profound が処理します。
Sanity スキーマを Agent ステップに対応付ける
既存の Sanity スキーマ(ドキュメントタイプ)がある場合に、それを Agent の Create Resource ステップに対応付ける方法を説明します。例: ブログ記事のスキーマ
Sanity Studio に、次のフィールドを持つpost タイプがあるとします。
ステップごとのセットアップ
- Agent に Create Resource ステップを追加し、Sanity Project ドロップダウンから接続済みの Sanity プロジェクトを選択します。
-
ドロップダウンから Dataset を選択します(例:
production)。 -
Document Details に、ドキュメントのフィールドを JSON で入力します。ここでは、タイトル、スラッグ、参照、カテゴリなどのシンプルな値を指定します。
前のステップの動的な値を使用するには、フィールド内で
/を入力して変数メニューを開き、変数を選択します。変数は JSON 内にピルバッジとしてインライン表示されます。たとえば、"My Post Title"を前の LLM ステップの変数に置き換えることができます。 -
Portable Text フィールド(ブログ本文など)には、Rich Text Content を入力します。フィールド名を HTML 文字列に対応付けると、Profound が自動的に Sanity の形式に変換します。
ここに変数を挿入して、前のステップで生成された HTML を渡すこともできます。
/を入力して変数メニューを開き、LLM などの前のステップの出力を値として選択します。 - Publish Resource をオンまたはオフにします — すぐに公開する場合はオンにし、Sanity Studio でレビューするための下書きを作成する場合はオフのままにします。
ヒント: ノード設定のすべてのテキストフィールドで変数を使用できます。
/ を入力して変数メニューを開き、前のステップの出力を挿入します。変数はインタラクティブなピルバッジとして表示され、実行時に解決されます。フィールドタイプのリファレンス
一般的なワークフロー
ブログ記事を生成して公開する
- LLM ステップ — プロンプトからタイトル、スラッグ、HTML 本文を生成します
- Create Resource — 生成したコンテンツを使用して Sanity の
postドキュメントを作成します - Publish Resource — 下書きを公開します(またはステップ 2 で
publish_resource: trueを設定します)
既存のコンテンツを更新する
- Get Resource — ID を指定して現在のドキュメントを取得します
- LLM ステップ — 既存のドキュメントに基づいて更新後のコンテンツを生成します
- Update Resource — 変更されたフィールドのみを更新します
コンテンツの移行
- List Resources — あるデータセットからドキュメントを取得します
- Loop — リストを反復処理します
- Create Resource — 別のデータセットに各ドキュメントを作成します
下書きレビューのパイプライン
- Create Resource — コンテンツを下書きとして作成します(デフォルトの動作)
- 人によるレビュー — Sanity Studio で手動のレビューを行います
- Publish Resource — 承認された下書きを Agent 経由で公開します
権限とロール
Profound は、接続時に API トークンに十分な権限があるかを検証します。サポートされている Sanity のロールは次のとおりです。必要最小限のロール: Editor。Viewer のみのアクセス権を持つトークンでは、ドキュメントの作成、更新、公開に失敗します。
トラブルシューティング
エラー: Invalid Sanity API key or token has expired
エラー: Invalid Sanity API key or token has expired
API トークンが無効か、有効期限が切れています。Sanity の管理コンソールの API → Tokens で新しいトークンを生成し、再接続してください。
エラー: Insufficient permissions
エラー: Insufficient permissions
API トークンに Editor レベルのアクセス権がありません。Editor 権限を持つ新しいトークンを作成し、再接続してください。
エラー: Sanity project not found
エラー: Sanity project not found
インテグレーション設定のプロジェクト ID が正しくありません。Sanity の管理コンソールでプロジェクト ID を確認してください。プロジェクト ID は、プロジェクトページの上部と URL に表示されています。
エラー: Document type (_type) must be provided
エラー: Document type (_type) must be provided
Create Resource を使用する場合、Data フィールドには、Sanity スキーマで定義されたドキュメントタイプに一致する
_type プロパティを含める必要があります。例: { "_type": "post", "title": "Hello" }。エラー: Resource ID is not a draft
エラー: Resource ID is not a draft
Publish Resource ステップには、
drafts. で始まる下書きドキュメントの ID が必要です。ドキュメントがすでに公開済みの場合は、再度公開する必要はありません。公開済みの ID ではなく、下書きの ID を渡していることを確認してください。HTML がリッチテキストに正しく変換されない
HTML がリッチテキストに正しく変換されない
HTML から Portable Text への変換には、(Document Details フィールドではなく)Rich Text Content フィールドを使用していることを確認してください。Rich Text Content フィールドには、フィールド名を HTML 文字列に対応付けた JSON オブジェクトを指定します:
{ "body": "<p>Hello</p>" }。その他のリソース
Sanity のコンテンツモデルと API について詳しく学ぶ:- Sanity Content Lake — データセットとドキュメントについて
- Portable Text — Sanity のリッチテキスト形式の仕様
- GROQ Query Language — Sanity でのコンテンツのクエリ
- HTTP API Reference — Sanity API の完全なドキュメント
- Mutations API — ドキュメントの作成、更新、削除