contentbit — structured Markdown components for LLM-written content

2 min read Original article ↗

Give LLMs validated, structured Markdown blocks. Render LLM output anywhere.

$ pnpm dlx contentbit@latest init

or read the 0.2.0 announcement, itself rendered by the library

01·The idea

Markdown in, components out

LLMs write directive blocks inside ordinary Markdown. The parser builds a source-mapped AST, the registry validates it, and your renderer of choice takes it from there. Below: the actual styled pack rendering live.

this is a fragment. read a complete post: 4 blocks, 3 render targets, 0 diagnostics

02·The safety net

Errors with line numbers, not broken pages

Validation runs before rendering: in your editor, your CI, or your LLM loop. Diagnostics carry a code, a position, and a fix hint, so an LLM can repair its own output.

03·The operator

Your LLM agent runs the loop

init installs skills and AGENTS.md instructions, so an LLM can fetch the live authoring guide, write a post, and validate until clean. The skills hold no schemas — they read everything from the CLI — so your custom blocks are picked up automatically.

works with Claude Code, Cursor, Codex, Copilot — see the LLM agents guide

04·The system

One definition, every surface

05·The generic pack

Eight blocks that work in any niche

Pick a block. The example is its real authoring guidance from the registry, the same text LLMs get, rendered live by the styled pack.

All blocks →

06·Styled pack

Install the components, own the code

The React pack ships through a shadcn registry. Components land in your app as editable source files: Tailwind, your tokens, your rules.

$ pnpm dlx shadcn@latest add @contentbit/generic-pack

registry: https://contentbit.dev/r/{name}.json