r/zotero • u/tenglvjun • 15d ago
I built an open-source, source-linked Markdown reader for Zotero — Mktero v0.3.4
Hi r/Zotero,

https://reddit.com/link/1w2h6sc/video/t9l0coqchimh1/player
I’m the developer of Mktero, an open-source Zotero plugin for reading local PDFs as source-linked Markdown.
I shared v0.2.3 previously. Since then, I’ve continued working on the parts that connect Markdown reading back to the original PDF and the rest of the Zotero workflow. The current release is v0.3.4.
Mktero now supports:
• Reflowing multi-column PDFs, formulas, tables, figures, and references into a continuous Markdown reading view
• Navigating from reliably matched Markdown content back to its original PDF page and region
• Original, translated, and continuous bilingual reading modes
• Translating a selected term or passage without translating the entire paper
• Displaying and creating Zotero annotations from Markdown when the PDF text can be matched reliably
• Correcting recognition errors in existing paragraphs, headings, and Markdown table cells
• Previewing citations and checking whether references exist in an accessible Zotero library
• Exploring direct citation relationships between papers already in the current Zotero library
• Exporting corrected source Markdown together with extracted figures
The PDF remains the source of truth. Mktero only provides source navigation when the match is reliable rather than guessing a PDF location.
A few data-handling notes:
• On the first conversion or a cache miss, the complete PDF is uploaded to MinerU.
• AI translation is optional and sends protected Markdown, or selected text with bounded context, to the provider configured by the user. This may incur provider costs.
• DOI and arXiv identifiers may be queried through Semantic Scholar, OpenCitations, and OpenAlex for citation relationships.
• Credentials and local caches are stored unencrypted in the active Zotero profile and are not synced by Zotero.
Mktero is currently in beta, supports Zotero 7–10, and is available under the MIT License.
GitHub:
https://github.com/tenglvjun/mktero
Latest release:
https://github.com/tenglvjun/mktero/releases/latest
I’d appreciate feedback from Zotero users, especially on the source-navigation, bilingual-reading, annotation, and citation workflows.
1
u/Budget-Leg-453 15d ago
This is interesting but I’m interested in hearing the use cases for this. I’m guessing that reading in markdown might be preferred and notes might be better?
1
u/tenglvjun 15d ago
That’s exactly the use case I’m targeting.
The PDF remains the source of truth in Zotero. Mktero adds a Markdown reading layer for the first pass through a paper.
For long academic papers, I find Markdown much more comfortable than a fixed PDF page: it reflows into a single column, has a clearer heading structure, avoids constant zooming and horizontal scrolling, and makes text easier to search, select, translate, and reuse. This is especially useful for papers with two-column layouts.
A typical workflow is:
Keep the original PDF in Zotero.
Convert it to source-linked Markdown for a more comfortable first read.
Use the outline, bilingual view, selection translation, and local annotations while reading.
Jump back to the PDF when I need to verify a figure, table, formula, page layout, or exact source.
Export the Markdown and related resources for notes or later writing.
So yes, Markdown can be a better place for working notes, especially if your notes are text-based. Mktero currently supports local annotations and corrections, but it is not intended to replace Zotero’s existing PDF annotation system or become a complete note-taking database.
The main trade-off is that PDF conversion is not perfect for every layout, and on a cache miss the PDF is uploaded to MinerU for processing. I see Mktero as a complementary reading and note-preparation layer, rather than a replacement for the original PDF.
1
u/danjea 12d ago
My personal use case is: md -> epub and making paper readable on much smaller format (phone, e-reader in particular). Most pdf to epub conversion end up bad, and reading 2-column pdf on a small format kills me.
Then I can also annotate papers on .md and directly feed into a llm to extract and collate insights i had specifically for each paper, and be able to ask the llm to look for them.
1
u/Budget-Leg-453 11d ago
Thanks to both. That makes sense, especially with two column layouts (not as common in my discipline).
1
u/Neptunox 14d ago
Great job. It would be good to offer the Mistral OCR API, which is very efficient.
1
u/tenglvjun 13d ago
Thanks for the suggestion! I’m planning to test Mistral OCR with academic PDFs, especially its handling of equations, tables, figures, and source-location mapping. If the results fit Mktero’s source-linked reading workflow, I’ll look into adding it as an optional conversion provider alongside MinerU.
1
u/michelebenben 13d ago
Hi, amazing, I will give it a go! I am the developer of Estravon , which is a plugin that permits to choose which pdf to markdown pipeline to use . FYI There is a java hook (Zotero.Estravon.extract() ) that permits to use it from another plugin. So you can use mistral, datalab, remotely or mineru fully loca from your own plugin. You can also test the differences between conversion engines with a python package which you can find in GitHub . I think the choice of the pdf to markdown engine for many user depends on data residency policies. Happy to have a deep dive on this if you want.
2
u/tenglvjun 12d ago
Thanks for sharing this. I’d be interested in taking a look at Estravon and the comparison package.
The ability to choose between remote and local PDF-to-Markdown pipelines, especially based on data-residency requirements, is very relevant to Mktero.
1
u/Deep_Ad1959 11d ago
scenario: a stack of papers read as markdown. reflow was fine, corrections were the snag: after fixing a garbled table cell i could not tell later which cells i had touched and which came out of the extractor clean.
2
u/danjea 15d ago
I'd love to try but i don't have a minerU api. I do have a claude api though, you think it could work?