Skip to main content

The manubot manuscript-as-software pattern, on Quarto.

Project description

quartobot

License: MIT Status

The manubot manuscript-as-software pattern, on Quarto.

Status: v0.1 in flight. CLI commands ship; the Quarto extension and the manuscript template ship. An architecture pivot is under discussion in docs/citation-pipeline.md that would collapse the extension into a single pre-render hook calling the CLI directly — read the design doc before non-trivial work, and watch the v0.1 milestone for tagging.

What this is

Manubot has, for eight years, run scholarly manuscripts as a git repository that builds itself on every commit, resolves citations from DOIs and PubMed IDs automatically, hands out an immutable permalink per commit, and collaborates through pull requests. The pattern is published (Himmelstein et al. 2019) and has been used for hundreds of preprints.

Quarto now covers more of scholarly publishing than manubot ever did — manuscripts, books, websites, slides, dashboards, courseware — but the manubot pattern does not yet exist there natively. That's the gap this repo closes.

The shipping surface is a Python CLI and (optionally) a GitHub template:

  1. quartobot — a Python CLI. quartobot resolve pre-fetches citations through manubot's resolver library, so CI never sees a Crossref hiccup mid-render. quartobot scan summarizes cite keys grouped by prefix with duplicate detection. quartobot validate is the CI-lint surface (static checks against _quarto.yml). quartobot init scaffolds the pattern into an existing Quarto project. Authors write @doi:10.1371/journal.pcbi.1007128, @pmid:31479462, @arxiv:2104.10729, @isbn:…, or bare DOIs in their prose, and citations resolve.

    uv tool install git+https://github.com/seandavi/quartobot
    
  2. quartobot-manuscript — a GitHub template that combines Quarto Manuscripts, the CLI's pre-render hook, and a CI workflow that gives every commit an immutable permalink at /v/<sha>/, embeds that permalink in the rendered HTML, posts PR previews via sticky comment, and deploys HTML + PDF + DOCX to GitHub Pages.

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

Under the current (filter-based) architecture, a Quarto extension quarto-manubot-cite also ships at quarto add seandavi/quartobot. The pivot proposal in docs/citation-pipeline.md collapses that extension into a one-line pre-render hook calling the CLI — the extension shrinks to optional wiring, the CLI becomes the load-bearing surface. PyPI publishing and the standalone template repo are part of the v0.1 tag.

Why this exists

manubot/manubot#332 ("Quarto integration") was opened by Anthony Gitter in April 2022 after a conversation with Sean Davis. Four years later, no PR, no assignee — but pandoc-manubot-cite shipped inside the manubot package and Quarto Manuscripts shipped as a first-party project type. The integration is small once you stop trying to rebuild the resolver. This repo is the work to resolve 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.

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.1.0.tar.gz (35.6 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.1.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for quartobot-0.1.0.tar.gz
Algorithm Hash digest
SHA256 02f88a8e35f1868444e88878c8c686decbedef3e7c5cd6d76eb75603d3864287
MD5 cf143572c32686ddf93d511bb9a04d9a
BLAKE2b-256 b02c97283a6090fe08ec964e0aacb18b670a4c4edb1b98970f6d40b64188e9ef

See more details on using hashes here.

Provenance

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

Publisher: publish-pypi.yml on seandavi/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.1.0-py3-none-any.whl.

File metadata

  • Download URL: quartobot-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83d5cd32ae1b76907990145eb9cfe03e3e59e1a998d7fd419d51e41db3df18c7
MD5 11cd34e1d7282e10b32dd185df24596e
BLAKE2b-256 6d3def12aaec2d4a111a6ac7547493d456de49db9ae45bebfaeaddd84d90452a

See more details on using hashes here.

Provenance

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

Publisher: publish-pypi.yml on seandavi/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