Skip to main content

Sphinx builder that emits Mintlify-compatible MDX and docs.json

Project description

sphinx-mintlify-output

License: Apache 2.0 Python Sphinx

Sphinx builder that turns reST / MyST sources into a deploy-ready Mintlify project: .mdx pages with YAML frontmatter, copied static assets, and a docs.json navigation manifest.

Useful when your source of truth is reST/MyST (autodoc, intersphinx, sphinx-design) and you want to ship it through Mintlify without rewriting in MDX.

Install

pip install sphinx-mintlify-output
# or
uv add --dev sphinx-mintlify-output

Quickstart

In conf.py:

extensions = ["sphinx_mintlify_output"]

mintlify_docs_json = {
    "name": "My Docs",
    "theme": "mint",
    "colors": {"primary": "#0d9373"},
}

Build:

sphinx-build -b mintlify docs out/mintlify

Point Mintlify at out/mintlify. Done.

Configuration

Key Default Purpose
mintlify_docs_json {} Merged into the generated docs.json
mintlify_static_path [] Directories copied into out/static/
mintlify_image_dir "images" Where images land relative to outdir
mintlify_frontmatter {} Default frontmatter merged into every page
mintlify_component_map {} Override admonition → component mappings
mintlify_emit_anchors True Emit <a id> anchors for autodoc entries and explicit targets (not section headings — Mintlify derives those from markdown)
mintlify_externalize_assets True Pull inline SVG / base64 image URIs into images/ and reference them by path
mintlify_base_path "" URL mount-point. Empty (default) → Sphinx-style relative links (../intro, images/foo.png) that work under any deployment prefix. Set to e.g. "/sandboxes/sdk" to force absolute links rooted at that prefix when embedding into a larger Mintlify site that uses absolute paths everywhere

What's translated

  • reST / MyST core — headings, paragraphs, lists, code blocks, block quotes, transitions.
  • Tables — GFM by default; falls back to <table> HTML for rowspan / colspan / multi-line cells.
  • Admonitionsnote / tip / warning / ... → Mintlify <Note> / <Tip> / <Warning> / <Info> / <Danger>. Use the directive's :class: option to pick <Check>, <Steps> / <Step>, or <Callout>.
  • sphinx-designcard<Card>, tab-set<Tabs> (or <CodeGroup> when every tab is a single code block), dropdown<Accordion>, grids → <Columns cols={N}>.
  • Cross-references:doc: / :ref: become relative links; footnotes and citations become [^id] with matching definitions; abbreviations become <Tooltip>.
  • Images and figures — copied to images/; sized images switch to <img>; figure becomes <Frame caption=…> (short caption) or <Frame> with a rendered caption.
  • Autodoc — Python signatures as anchored heading + fenced code block; :param:<ParamField>; :returns: / :yields: / :raises:<ResponseField>. Classes group their attributes and methods into a styled block.
  • CLI options.. option:: / cmdoption render as a <dl> with backticked signature.
  • Math — inline $…$ and block $$…$$.
  • Raw HTML / MDX — passed through; inline <svg> and base64 data URIs optionally externalised as files.
  • Navigationdocs.json built from the toctree; mixed top-level captioned + uncaptioned toctrees are handled. Override the result via mintlify_docs_json["navigation"].

Unknown nodes are skipped with a Sphinx warning rather than silently dropped.

Development

Requires Python 3.10+ and uv.

uv sync
uv run pytest
uv run mypy sphinx_mintlify_output
uv run ruff check .

tests/golden/ is a byte-exact corpus that pins the rendered output; uv run python tests/capture_golden.py refreshes it after an intentional change.

To add support for a new docutils node: write a TranslationNode subclass under sphinx_mintlify_output/nodes/, register it in the NODE_REGISTRY dict in nodes/__init__.py, and drop a fixture under tests/roots/test-<name>/.

Status

Alpha. Feature-complete for the use cases above; API and config keys may shift before 1.0 — pin a version if you depend on the output layout.

Copyright

Nebius B.V. 2026, licensed under the Apache License, Version 2.0 (see LICENSE).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinx_mintlify_output-0.1.0.tar.gz (40.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_mintlify_output-0.1.0-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_mintlify_output-0.1.0.tar.gz.

File metadata

  • Download URL: sphinx_mintlify_output-0.1.0.tar.gz
  • Upload date:
  • Size: 40.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sphinx_mintlify_output-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1c9d3bc2c9d0b208a2f284ee3796ffc15311bd83e64b780bb3ba1d343a5b70be
MD5 e8aec7f3488c21f8e218c01baa2b1604
BLAKE2b-256 689f7f5cd9a8bf3b205f35cb899355fd9588661bf07c99a1ffa7c5173f796d05

See more details on using hashes here.

File details

Details for the file sphinx_mintlify_output-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sphinx_mintlify_output-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sphinx_mintlify_output-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d290ba358fbf8c48b1f12ea810ebe768cc2dd03e7afead93f9ff4ce6b62305a5
MD5 eda866b8b3b1295bb44f9b99858f3059
BLAKE2b-256 82b5f8b20789f9648c144258efb15e599709acb2f0e03eb6b5b1392ec631b48a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page