Content Studio
Browse content health, previews, stats, links, backlinks, keywords, and SEO briefs 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, inspect links, and review SEO briefs without jumping
between files.
New projects created with contentbit init include:
pnpm studioThe generated contentbit.config.ts supplies the content glob and registry, so
the script expands to:
contentbit studioRun the command directly when you want a custom glob or registry:
contentbit studio "content/**/*.md" --registry ./blocks/registry.ts --no-openStudio is a separate development package so the base CLI stays lightweight.
init installs it automatically; for manual setups run
pnpm add -D @contentbit/studio.
What 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
- SEO brief details when
contentbit.seo.config.tsis loaded - validation, link, and content-health findings
The document Brief view shows the same contract that contentbit brief prints:
target facts, required sections, required links, related pages, findings,
acceptance checks, and raw Markdown/JSON with copy and download actions. Use it
when a human editor wants to inspect the page plan before handing work to an
agent or writer.
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]Link resolver options match contentbit links and contentbit doctor:
contentbit studio "content/**/*.md" \
--registry ./blocks/registry.ts \
--seo-config ./contentbit.seo.config.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.
For the full option list, see the CLI reference.
For a complete SEO planning loop, see Programmatic SEO workflows.
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.