portable-text-conversion
作者: sanity-io
將 HTML 和 Markdown 內容轉換為適用於 Sanity 的可攜式文字區塊。用於從舊版 CMS 遷移內容、將 HTML 或 Markdown 匯入 Sanity 等情境。
npx skills add https://github.com/sanity-io/agent-toolkit --skill portable-text-conversionPortable Text Conversion
Convert external content (HTML, Markdown) into Portable Text for Sanity. Three main approaches:
markdownToPortableText— Convert Markdown directly using@portabletext/markdown(recommended for Markdown)htmlToBlocks— Parse HTML into PT blocks using@portabletext/block-tools(for HTML migration)- Manual construction — Build PT blocks directly from any source (APIs, databases, etc.)
Portable Text Specification
Understand the target format before converting. PT is an array of blocks:
[
{
"_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 rules:
- Every block and span needs
_key(unique within the array) _type: "block"is for text blocks; custom types use their own_typemarkDefsholds annotation data;markson spans referencemarkDefs[*]._keyor are decorator strings- Lists use
listItem("bullet" | "number") andlevel(1, 2, 3...) on regular blocks
Conversion Rules
Read the rule file matching your source format:
- Markdown → Portable Text:
rules/markdown-to-pt.md—@portabletext/markdownwithmarkdownToPortableText(recommended) - HTML → Portable Text:
rules/html-to-pt.md—@portabletext/block-toolswithhtmlToBlocks - Manual PT Construction:
rules/manual-construction.md— build blocks programmatically from any source
Note:
@sanity/block-toolsis the legacy package name. Always use@portabletext/block-toolsfor new projects. The API is the same.
來自 sanity-io 的更多技能
sanity-migration
sanity-io
規劃、執行並審查從其他內容管理系統及內容平台遷移至 Sanity 的作業。適用於從 AEM、Adobe Experience Manager、Contentful、Strapi、Webflow、WordPress、Payload、Drupal、Markdown/MDX/frontmatter 檔案、WXR/XML 匯出、CMS API、資料庫匯出、靜態 HTML 進行遷移或平台轉換,或設計資料擷取、轉換、Portable Text 轉換、資產遷移、重新導向、驗證及切換流程時使用。
officialdevelopmentdatabase
create-agent-with-sanity-context
sanity-io
透過 Agent Context 建立對 Sanity 內容有結構化存取權限的 AI 代理。適用於設定由 Sanity 驅動的聊天機器人、將 AI 助手連接到 Sanity…
official
dial-your-context
sanity-io
互動式工作階段,用於為 Sanity Agent Context MCP 建立「指令」欄位內容。每當使用者提及調整代理上下文、改善…時,請使用此技能。
official
optimize-agent-prompt
sanity-io
透過引導式對話調整您的 Sanity Agent Context 代理。將探索數據轉換為可投入生產的指令,並精心設計系統提示…
official
shape-your-agent
sanity-io
互動式工作階段,用於為由 Sanity Agent Context MCP 驅動的 AI 代理設計系統提示。當使用者想要定義代理人格時,請使用此技能…
official
content-experimentation-best-practices
sanity-io
結構化指引,涵蓋設計、執行與分析內容實驗以提升轉換率與參與度。內容包括假設框架、指標選擇、樣本數計算,以及A/B測試與多變量實驗中的統計顯著性檢定。提供關於p值、信賴區間、統計檢定力分析及貝氏方法的詳細資源,用於解讀實驗結果。同時包含CMS整合模式,以便在欄位層級管理變體,並連接外部系統。
official
content-modeling-best-practices
sanity-io
結構化內容建模指南,涵蓋綱要設計、可重用性與多渠道發布。核心原則包括:將內容視為數據而非頁面、維護單一事實來源、為未來渠道設計,以及優化編輯工作流程。提供關於引用與嵌入物件、關注點分離及內容重用模式的決策框架。包含針對扁平、階層與分面分類法的分類學指引。適用於...
official
portable-text-serialization
sanity-io
將 Portable Text 渲染並序列化為 React、Svelte、Vue、Astro、HTML、Markdown 及純文字。適用於在任何前端實作 Portable Text 渲染時使用…
official