:::contentbit
How-to guides

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 studio

The generated contentbit.config.ts supplies the content glob and registry, so the script expands to:

contentbit studio

Run the command directly when you want a custom glob or registry:

contentbit studio "content/**/*.md" --registry ./blocks/registry.ts --no-open

Studio 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.primary and keywords.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.ts is 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 en

Defaults:

  • host: 127.0.0.1
  • port: first free port starting at 4377
  • browser: opens automatically unless --no-open is passed
  • generic blocks: definitions and preview components load automatically unless --no-generic-blocks is 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.

On this page