Skip to main content

Citation resolution and manuscript-as-software CI for Quarto.

Project description

quartobot

License: MIT PyPI Docs

Citation resolution and manuscript-as-software CI for Quarto.

uv tool install quartobot

Or from git for the unreleased main:

uv tool install git+https://github.com/quartobot/quartobot

Documentation: quartobot.github.io/quartobot.

What it does

Authors write persistent-identifier cite keys directly in prose:

We follow @doi:10.1371/journal.pcbi.1007128, with the dataset described
in @pmid:31479462 and methods inspired by @arxiv:2104.10729.

A Quarto project.pre-render: hook resolves each key to canonical metadata before pandoc-citeproc runs, writes the result to a references.json you can commit, and the manuscript renders the same way on every machine — no quartobot install needed at render time, no live Crossref / PubMed / arXiv hit per render. CI gets the same behavior the author saw locally, and a network blip mid-render is no longer a build failure.

Around that resolution step, the project ships:

  1. The Python CLIscan, validate, resolve, init, and mcp. resolve is the pre-render hook itself; scan and validate are CI-lint surfaces (cite-key inventory, static _quarto.yml checks); init scaffolds the pattern into an existing project; mcp starts a stdio MCP server so an agent in Claude Desktop, Codex, or Gemini Code Assist can call the same resolver as part of a drafting workflow.

  2. A GitHub template, quartobot-manuscript — Quarto Manuscripts plus the pre-render hook plus a CI workflow that gives every commit an immutable permalink at /v/<sha>/, embeds it in the rendered HTML, posts PR previews via sticky comment, and deploys HTML + PDF + DOCX to GitHub Pages.

    gh repo create my-paper --template quartobot/quartobot-manuscript
    

The book variant (quartobot-book) covers longer works on Quarto's book project type.

Supported cite-key prefixes

@doi:, @pmid:, @arxiv:, @isbn:, @url:, @wikidata:, @pmc:, plus hand-curated keys from a project .bib. Resolution goes through manubot's citekey_to_csl_item — eight years of accumulated source-API quirks behind a single function call. quartobot itself doesn't reimplement resolution; it provides the Quarto integration, CI scaffolding, and the agent-facing MCP surface.

Why this exists

manubot/manubot#332 ("Quarto integration") was opened by Anthony Gitter in April 2022 after a conversation with Sean Davis. Four years on, no PR, no assignee — but Quarto Manuscripts shipped as a first-party project type, and the integration turned out to be small once the resolver question was settled. This repo is the work to close that issue.

Working example

seandavi/2026-venice-spatial-hackathon-manuscript runs the CI / permalink / banner half of the pattern on a live 25-author preprint from the Bioconductor Spatial Hackathon. That's the working reference the template is being lifted from.

See also

License

MIT.


quartobot is an independent community project. It builds on Quarto but is not affiliated with or endorsed by Posit, PBC, the makers of Quarto.

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

quartobot-0.2.0.tar.gz (59.3 kB view details)

Uploaded Source

Built Distribution

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

quartobot-0.2.0-py3-none-any.whl (37.6 kB view details)

Uploaded Python 3

File details

Details for the file quartobot-0.2.0.tar.gz.

File metadata

  • Download URL: quartobot-0.2.0.tar.gz
  • Upload date:
  • Size: 59.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quartobot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ab0b3a05def1e69c94a09a597a3fa9d2b2e9b4d0796ab14495c2a74b1cb2986c
MD5 b3e50f60d07ffc475ec26f1a6b4aea75
BLAKE2b-256 159282c1b958c18ca8319c83c3b181cec6ff248191ceb38f85e83c3ec4e74cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for quartobot-0.2.0.tar.gz:

Publisher: publish-pypi.yml on quartobot/quartobot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quartobot-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: quartobot-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 37.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quartobot-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e2cca596461eb5a55bb80d978e4c3ae69d50050c8350bdf64bc85753e4825ba
MD5 d3065c9f1c70bd86a8ec323691fbaac1
BLAKE2b-256 f81c7048ae3b0e5176478e273603fc006c7285c0208ae144d08d061dad352591

See more details on using hashes here.

Provenance

The following attestation bundles were made for quartobot-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on quartobot/quartobot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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