Built-in Features
Ox Content keeps common documentation behavior on by default and keeps non-standard Markdown or HTML extensions opt-in.
The defaults below match @ox-content/vite-plugin. They are designed for a
fast static baseline: parsing, static embeds, source docs, and search indexing
run during transform or build, while extra syntax and runtime behavior must be
enabled explicitly.
This documentation site is built with Ox Content, so the feature guides below do not just describe each feature — they enable it and render live examples inline.
Feature Guides
| Guide | Covers |
|---|---|
| Markdown Baseline | GFM, tables, task lists, footnotes, autolinks, frontmatter, TOC |
| Syntax Extensions | Emoji shortcodes, wiki links, attribute syntax, CJK emphasis |
| Code Blocks | Syntax highlighting, code annotations, code imports |
| Embeds | GitHub cards, OG cards, package-manager tabs, tabs, YouTube, social cards |
| Mermaid Diagrams | Diagram fences rendered to static SVG |
| Search | The static BM25 index and client search API |
| Collections | Query Markdown files with a SQL-like builder |
| Quality Checks | Code block lint, type checking, docs tests, HTML sanitizer |
| Site Generation | SSG, OG images, edit links, collections, API docs, transformers |
Default vs Opt-in
| Area | Option | Default | Guide |
|---|---|---|---|
| Markdown base | gfm, footnotes, tables, taskLists, strikethrough, autolinks |
true |
Markdown Baseline |
| Page metadata | frontmatter |
true |
Markdown Baseline |
| Navigation | toc, tocMaxDepth |
true, 3 |
Markdown Baseline |
| Static site | ssg |
{ enabled } |
Site Generation |
| API docs | docs |
{ enabled } |
Site Generation |
| Search | search |
{ enabled } |
Search |
| Collections | collections |
content collection |
Collections |
| Static embeds | embeds.github, embeds.openGraph |
true |
Embeds |
| Opt-in embeds | embeds.pm, embeds.twitter, embeds.bluesky, embeds.spotify, embeds.stackBlitz, embeds.webContainer |
false |
Embeds |
| Syntax highlight | highlight |
false |
Code Blocks |
| Code authoring | codeAnnotations, codeImports |
false |
Code Blocks |
| Extra syntax | wikiLinks, emojiShortcodes, attrs, cjkEmphasis |
false |
Syntax Extensions |
| Diagrams | mermaid |
false |
Mermaid Diagrams |
| OG images | ogImage |
false |
Site Generation |
| HTML safety | sanitize |
false |
Quality Checks |
| Editing links | editThisPage |
false |
Site Generation |
| Code checks | codeBlockLint, codeBlockTypecheck, docsTests |
false |
Quality Checks |
| Custom pipeline | transformers |
[] |
Site Generation |
Tab groups and YouTube embeds have no option: they are always processed for SSG output and dev preview. See Embeds.
Example Configuration
Use explicit options when a site needs non-standard behavior:
import { defineConfig } from "vite-plus";
import { oxContent } from "@ox-content/vite-plugin";
export default defineConfig({
plugins: [
oxContent({
highlight: true,
emojiShortcodes: true,
codeAnnotations: {
notation: "both",
},
embeds: {
pm: { sync: true },
twitter: { fetch: true },
bluesky: true,
},
}),
],
});
Every option follows the same convention: false disables the feature, true
enables it with defaults, and an object enables it while overriding only the
fields you set.
Copyable source snippets for the authoring forms live in
examples/builtin-features/content/, and the pages under
Examples show several features in runnable projects.