mcpField
P
portable-text-conversion

portable-text-conversion

github.com/sanity-ioデータ・データベース1942.8k 回インストール1 日前に更新
リポジトリ

portable-text-conversion について

外部コンテンツをSanity Portable Textに変換するためのガイドです。開発者がMarkdownまたはHTMLの変換方法を選び、ほかのソースからブロックを手動で構築する手順も示します。

主な機能

  1. 01markdownToPortableTextによるMarkdown変換
  2. 02htmlToBlocksによるHTML変換
  3. 03Portable Textブロックの手動構築
  4. 04ブロック、スパン、マーク、リストの構造解説
  5. 05入力形式ごとの変換ルール

活用シーン

  1. 01MarkdownコンテンツのSanityへの移行
  2. 02コンテンツ移行時のHTML変換
  3. 03APIやデータベースからのPortable Text構築

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sanity-io/agent-toolkit --skill portable-text-conversion

インストール後、Claude Code で/portable-text-conversionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

rules/
html-to-pt.md
manual-construction.md
markdown-to-pt.md

詳細

ポータブルテキスト変換

外部コンテンツ(HTML、Markdown)をSanity用のポータブルテキストに変換します。主な方法は3つあります。

  1. markdownToPortableText — @portabletext/markdownを使ってMarkdownを直接変換します(Markdownに推奨)
  2. htmlToBlocks — @portabletext/block-toolsを使ってHTMLをPTブロックに解析します(HTMLの移行用)
  3. 手動構築 — あらゆるソース(API、データベースなど)からPTブロックを直接構築します

ポータブルテキストの仕様

変換前に、出力先の形式を理解してください。PTはブロックの配列です。

[
  {
    "_type": "block",
    "_key": "abc123",
    "style": "normal",
    "children": [
      {"_type": "span", "_key": "def456", "text": "Hello ", "marks": []},
      {"_type": "span", "_key": "ghi789", "text": "world", "marks": ["strong"]}
    ],
    "markDefs": []
  },
  {
    "_type": "block",
    "_key": "jkl012",
    "style": "h2",
    "children": [
      {"_type": "span", "_key": "mno345", "text": "A heading", "marks": []}
    ],
    "markDefs": []
  },
  {
    "_type": "image",
    "_key": "pqr678",
    "asset": {"_type": "reference", "_ref": "image-abc-200x200-png"}
  }
]

主なルール:

  • すべてのブロックとスパンには_key(配列内で一意)が必要です
  • _type: "block"はテキストブロックに使用します。カスタムタイプにはそれぞれ独自の_typeを使用します
  • markDefsには注釈データを格納します。スパンのmarksはmarkDefs[*]._keyまたは装飾文字列を参照します
  • リストでは、通常のブロックにlistItem("bullet" | "number")とlevel(1、2、3...)を使用します

変換ルール

ソース形式に対応するルールファイルを確認してください。

  • Markdown → ポータブルテキスト:rules/markdown-to-pt.md — markdownToPortableTextを使う@portabletext/markdown(推奨)
  • HTML → ポータブルテキスト:rules/html-to-pt.md — htmlToBlocksを使う@portabletext/block-tools
  • 手動でのPT構築:rules/manual-construction.md — あらゆるソースからプログラムでブロックを構築します

注: @sanity/block-toolsは旧パッケージ名です。新しいプロジェクトでは必ず@portabletext/block-toolsを使用してください。APIは同じです。

コメント