WordPress stores content as HTML. Every paragraph, heading, and image gets baked into markup. That works for a single website, but try reusing that same content in an email newsletter, a mobile app, or an AI prompt. You need to strip the HTML, parse it, and rebuild it for each new destination.
EmDash breaks that pattern. Its content format — portable text — stores everything as structured JSON. One source, many outputs. No rewriting required.
One source, many outputs. No rewriting required.
Why Content Reuse Matters
A single blog post rarely lives on just one channel. You publish it on your site, excerpt it in a newsletter, repurpose it for a LinkedIn article, and maybe feed it into an AI tool for a summary. With WordPress, that means four separate formatting jobs. Each channel introduces drift. The newsletter cuts sections, the AI gets a mangled version, and the original post becomes the only canonical copy.
EmDash’s portable text solves this at the storage layer. Content is stored as a JSON array of blocks — paragraphs, images, headings, lists — each with its own type and metadata. The same block structure can render to HTML for your website, plain text for an email, or markdown for an AI agent. The content never changes; only the output format does.
What Portable Text Actually Is
Portable text is an open standard originally developed at Sanity by engineer Christian Schuhmann. EmDash adopted it as its native rich-text format. Instead of saving a string of
codecodecodecodecode and codecodecodecodecode tags, EmDash saves a JSON structure like this:
“`
{
“type”: “paragraph”,
“children”: [
{ “text”: “This is a reusable paragraph.” }
]
}
“`
Every block is self-contained. Images become block references. Links carry metadata. The format is machine-readable by design — no HTML parsing needed. An AI agent can read the JSON directly and understand the structure, not just the raw text.
This is the format that powers EmDash’s built-in block editor. When you write a post, every paragraph, image, or callout becomes a distinct JSON node. That structure persists through export, API calls, and AI agent interactions.
Real-World Reuse Scenarios
Take a standard blog post about a product launch. On your EmDash site, it renders as a full webpage. But the same portable text can feed into:
- An email newsletter — the JSON blocks render as clean
codecodecodecodecode-based HTML for email clients.
- An RSS feed — each block becomes a structured XML element, not a messy HTML blob.
- An AI agent — the MCP server exposes the structured data so an agent can query “find all callout blocks” without regex.
The EmDash playground includes a demo where you can edit a post and immediately see it rendered on the front end. That’s because the portable text is the single source of truth. There’s no separate template or custom field for the email version. It’s the same data.
AI Agent Integration
This is where portable text really earns its keep. EmDash ships with a built-in MCP server — the protocol Anthropic created for AI agents. An agent like Claude or Copilot can connect directly to your EmDash site, read the portable text, and perform operations.
For example, an agent can scan all posts for a specific phrase and replace it across every block, respecting the JSON structure. In WordPress, that would require a database query and regex replacement on HTML, which often breaks formatting. In EmDash, the agent sees clean blocks and can update them programmatically.
EmDash also includes “agent skills” files — structured documentation that tells AI agents exactly how to interact with the CMS. The skills files describe the portable text schema, so agents know what fields are available without custom prompting.
The Migration Advantage
If you’re moving from WordPress, EmDash’s import tool converts your WXR export into portable text. It reads your Yoast SEO fields, your categories, your post content — and maps everything into JSON blocks. That means your old HTML gets parsed into structured blocks. A heading
One Caveat
Portable text handles block content well — paragraphs, headings, images, lists. But it doesn’t natively support complex page layouts built with drag-and-drop builders like Elementor or Divi. Those tools create deeply nested HTML with inline styles and custom shortcodes. EmDash’s import can map the text content, but the layout structure won’t survive conversion. For sites built with page builders, portable text is best suited for the editorial content inside the blocks, not the grid itself.
That’s a limitation worth knowing. But for the vast majority of content — blog posts, articles, documentation — portable text makes reuse effortless. One format, every channel, no duplication.
Questions answered- What is portable text?Portable text is an open standard that stores content as structured JSON blocks, making it reusable across different formats.
- How does EmDash use portable text?EmDash uses portable text as its native rich-text format, storing every paragraph, image, and heading as a distinct JSON node.
- What are the benefits of portable text for content reuse?Portable text allows the same content to render as HTML for websites, plain text for emails, or markdown for AI agents without rewriting.