Content Studio
Browse content health, previews, stats, links, backlinks, and keywords in a read-only local web app.
contentbit studio opens a local dashboard over your Markdown content. It is
the human-friendly view next to contentbit doctor:
doctor prints the ranked repair plan; Studio lets you browse the same project
health, preview documents, and inspect links without jumping between files.
New projects created with contentbit init include:
pnpm studioThat script expands to:
contentbit studio "content/**/*.md" --registry ./blocks/registry.tsRun the command directly when you want a custom glob or registry:
contentbit studio "content/**/*.md" --registry ./blocks/registry.ts --no-openWhat you get
The first screen is a dense content dashboard:
- health counters for files, findings, blocks, and link graph coverage
- search and status filters
- sortable file table
- block usage
- keyword coverage from
keywords.primaryandkeywords.secondary - internal-link summary for pages, links, and orphans
Open a document to inspect:
- rendered preview using the React renderer
- source Markdown
- word, section, image, link, and reading-time stats
- outgoing links and backlinks
- keywords
- validation, link, and content-health findings
By default, generic blocks render through @contentbit/react. Custom blocks are
still validated from your registry, and Studio automatically looks for project
components next to the registry (blocks/components.tsx from contentbit init,
or components.ts, preview.tsx, and renderers.tsx). If no component exists,
Studio falls back to a safe labelled block that shows the body as Markdown.
Options
contentbit studio <globs...> [--registry <module.ts>] [--port <n>] [--host <host>] [--no-open] [--no-generic-blocks]Link resolver options match contentbit links and contentbit doctor:
contentbit studio "content/**/*.md" \
--registry ./blocks/registry.ts \
--link-resolve prefer-same-locale-key-fallback-slug \
--locale-field locale \
--key-field key \
--slug-field slug \
--default-locale enDefaults:
- host:
127.0.0.1 - port: first free port starting at
4377 - browser: opens automatically unless
--no-openis passed - generic blocks: definitions and preview components load automatically unless
--no-generic-blocksis passed
Use --no-generic-blocks when your registry intentionally owns the whole block
set, including names such as quick-ref that exist in the generic pack.
Read-only scope
Studio v1 never mutates content. It does not:
- rewrite source files
- write
.contentbit/link-index.json - run
contentbit links --fix - watch files or refresh automatically
Use the Refresh button after editing files. Use contentbit links --fix
explicitly when you want alias references rewritten.
Future Studio capabilities may include editing, live file watching, alias fixing, and richer per-project preview configuration.