citefact – audit a manuscript against the full text of its Zotero sources (citations, quotes, claims

I built a small open-source CLI that might be useful to people here. Existing tools check that citations exist; citefact reads the full text of every cited source and checks that it supports what you wrote.

It runs three checks, cheapest first:

1. Citations – does every in-text citation exist in the bibliography, with a source PDF? (deterministic, free)
2. Quotes – is every direct quote really verbatim in its cited source? Shows word-level diffs for near-misses. (deterministic, free)
3. Claims – does the source actually support the claim attached to it? (optional, uses an LLM with your own API key; every verdict comes with a verbatim evidence quote so you judge, not the model)

The Zotero part: point it at a collection and it reads metadata and attached PDFs through Zotero's local API – no exports, no Better BibTeX needed:

uvx citefact check manuscript.md --zotero-collection "PhD/Chapter 3"

The first two checks make zero network requests and need no key (--skip-claims). Output is a single self-contained HTML report plus JSON. Everything is cached, so re-runs after edits are fast and only re-verify what changed.

Example report (claims check with evidence):

https://s3.amazonaws.com/zotero.org/images/forums/u178395/21tp7zihv9i8oq8bbcwm.png

MIT licensed, Python 3.11+. Markdown manuscripts and author-year citation styles only for now (DOCX and numeric styles are on the roadmap).

GitHub: https://github.com/hearthresearch/citefact

I'm the author of ZotSeek (https://github.com/introfini/ZotSeek) and MCP Server Zotero Dev (https://github.com/introfini/mcp-server-zotero-dev) as well; this came out of the same PhD workflow. Feedback very welcome, especially on citation styles you'd want supported next.
Sign In or Register to comment.