Enable $id and $type in MDX frontmatter for linked data.
pnpm add mdxldAuthenticate with the .do platform:
# Login with OAuth
mdxld auth login
# Check authentication status
mdxld auth status
# Validate token
mdxld auth validate
# Set API key
mdxld auth set-token <token>
# Logout
mdxld auth logoutOr set environment variables:
export DO_TOKEN=sk_xxx
export DO_ADMIN_TOKEN=sk_admin_xxxValidate MDX files for linked data compliance:
mdxld validate ./content/post.mdx
mdxld validate ./content/post.mdx --verboseParse MDX files and extract linked data:
mdxld parse ./content/post.mdx
mdxld parse ./content/post.mdx --jsonShow mdxld information:
mdxld infoimport { parse, validateLinkedData, toJSONLD } from 'mdxld'
const mdxContent = `---
$id: https://example.com/posts/hello
$type: BlogPost
title: Hello World
---
# Hello World
`
// Parse MDX with linked data
const parsed = parse(mdxContent)
console.log(parsed.data.$id) // https://example.com/posts/hello
console.log(parsed.data.$type) // BlogPost
// Validate linked data
const validation = validateLinkedData(parsed.data, {
validateId: true,
requireType: true,
})
if (!validation.valid) {
console.error(validation.errors)
}
// Convert to JSON-LD (uses $ prefix for consistency)
const jsonld = toJSONLD(parsed.data)
console.log(jsonld)
// {
// "$id": "https://example.com/posts/hello",
// "$type": "BlogPost",
// "title": "Hello World"
// }Parse MDX content and extract linked data frontmatter. Clean alias for parseMDXLD.
Parse MDX content and extract linked data frontmatter. (Use parse for cleaner imports)
Validate linked data frontmatter.
Convert frontmatter to JSON-LD format.
Convert JSON-LD to frontmatter format.
Stringify frontmatter with linked data back to MDX.
Parse MDX string to object with frontmatter and content.
Convert object with frontmatter and content back to MDX string.
Parse YAML frontmatter string to object.
Stringify object to YAML frontmatter.
mdxld supports two formats:
const nested = parse(mdxString)
// {
// data: {
// $id: 'https://example.com/post/1',
// $type: 'BlogPost',
// title: 'Hello',
// author: 'John'
// },
// content: '# Content here'
// }import { mdxToFlat, flatToMDX } from 'mdxld'
const flat = mdxToFlat(mdxString)
// {
// id: 'https://example.com/post/1',
// type: 'BlogPost',
// data: {
// title: 'Hello',
// author: 'John'
// },
// content: '# Content here'
// }
// Convert back
const mdx = flatToMDX(flat)import { flatToNested, nestedToFlat } from 'mdxld'
// Flattened -> Nested
const nested = flatToNested(flat)
// Nested -> Flattened
const flat = nestedToFlat(nested)mdxToFlat(mdxString, options?)- Parse MDX to flattened formatflatToMDX(flat)- Convert flattened back to MDX stringflatToNested(flat)- Convert flattened to nestednestedToFlat(nested)- Convert nested to flattened
MIT