
Show HN: Mktero – Read Zotero PDFs as Markdown that links back to the page
Read Zotero PDFs as source-linked Markdown.
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
Read Zotero PDFs as source-linked Markdown.
Mktero is a restartless Zotero extension for Zotero 7, 8, 9, and 10. On a cache miss, the default conversion sends that local PDF through your Mktero account. No MinerU or Mistral key is required. MinerU and Mistral OCR 4.1 remain available if you do not want the PDF sent to Mktero. The result opens as Markdown, formulas, tables, figures, citations, and annotations in a temporary, reading-first Zotero tab. A content-addressed local cache avoids repeating conversions for the same PDF and parser profile.
Download · Product page · Documentation · Community
Mktero is in beta. With the default converter, a cache miss sends the complete PDF to the Mktero service for your account. Sign in from Settings -> Mktero; no separate OCR key is required. If you switch to MinerU or Mistral, the PDF goes to that service instead and is not sent to Mktero. Optional AI translation sends protected Markdown batches to the provider configured by you. Review Privacy and data handling before processing sensitive documents.
Features
Quick start
Documentation
Privacy
Development
Community
Contributing
License
Features
Reading
Reflow OCR output, multi-column text, formulas, tables, figures, lists, and code into a continuous academic reading document.
Hide publisher mastheads, first-page copyright notices, repeated headers and footers, and page numbers, and keep reliable page/region mappings so text, formulas, tables, and figures can jump back to their PDF source. A PDF text selection can open its Markdown paragraph when that mapping is unique.
In MinerU results, show page footnotes as notes after the paragraph that cites them, and fold article metadata, author biographies, and reporting summaries into collapsed sections, so the first screen shows the title, authors, and abstract. The PDF's own text layer, read locally, also rejoins a paragraph a page or column break splits at a full stop, levels the headings of a paper without section numbers by their type, and, in a typeset PDF, restores single words the OCR model "corrected" (a name, an author's spelling) to the printed text.
Browse the outline or a figure/table index, preview citations, affiliations, figures, and tables, and find text in the body with Cmd/Ctrl+F.
Copy a display formula's LaTeX, a code block's text, or a table as Markdown or CSV without leaving the reader. These actions read the rendered document and never change the cached Markdown. A copy from the reader, by keyboard or by these actions, is standard Markdown with its formulas as $…$ and $$ TeX, so it pastes with its formulas rendered into a Zotero note and into a Markdown editor that renders TeX math.
Rebuild figures from the local PDF when layout evidence, page coordinates, and Markdown ranges agree. Restoration runs in a background worker and replaces placeholders in place, so slow figures never block reading.
Annotations and translation
Display Zotero PDF highlights and underlines in Markdown, and create, recolor, comment on, or delete annotations. Add a passage to a Zotero note, or add the paper's annotations to a new note; the note shows the passage's formulas as formulas.
Correct recognition errors in existing paragraphs, headings, and GFM table cells without modifying the immutable OCR result.
Translate a complete article through a configured Vercel AI SDK provider and switch between Original, Translation, and continuous Bilingual reading; look up a selected term or passage on demand.
Library and export
Check whether each Markdown reference already exists in any accessible Zotero library, copy a reference from another library, and import missing metadata with an optional public PDF attachment.
Explore direct reference relationships among papers already in the current Zotero library, using Semantic Scholar, OpenCitations, and OpenAlex when identifiers are available.
Save a portable Zotero snapshot, or export corrected Markdown and its extracted figures to a local folder or an Obsidian vault. Optionally write already converted Markdown to an Obsidian vault in a batch.
Show a Markdown column in the item list when this computer still has a readable cached conversion for the current settings. While a PDF is queued or converting, that column shows a session-only spinner. The ready marker stays in the Zotero profile, does not modify the item, and does not sync.
The interface follows Zotero's English or Simplified Chinese display language. Other locales fall back to English.
Install the XPI, open Settings -> Mktero, sign in to Mktero, then open a PDF and click the Mktero icon in the reader toolbar.
Zotero. Desktop 7.0 through 10.0.*.
PDF. An attachment downloaded and available as a local file.
Account. A Mktero account for the default hosted conversion. Signing in does not require a MinerU or Mistral key.
Own converter, optional. Switch to MinerU cloud, a self-hosted MinerU 4.0 service, or Mistral if you do not want the PDF sent to Mktero. MinerU cloud and Mistral need your own API key. A local MinerU key is optional.
Network. Access to the Mktero service, or to the converter you selected.
The selected converter controls file-size, page-count, quota, and service-availability limits. When you choose MinerU or Mistral, see the MinerU API documentation or Mistral OCR documentation for that service's current limits. The hosted Mktero conversion and MinerU cloud accept at most 200 pages per PDF. Before such a PDF is sent, Mktero counts its pages locally and stops with a message when it has more; a local MinerU service and Mistral are not checked.
Download the latest mktero-<version>.xpi from GitHub Releases.
In Zotero, open Tools -> Plugins.
Open the gear menu and choose Install Add-on From File....
Select the XPI and follow Zotero's prompts.
Formal GitHub releases receive automatic updates through Zotero. Drafts and prereleases are not offered as automatic updates.
Open Settings -> Mktero after installation. The default converter is Mktero: sign in or register there. To keep a PDF off the Mktero service, choose MinerU or Mistral and enter that service's API key. AI features and reading options are optional; each AI provider keeps its own model, key, and related settings. Credentials are stored as ordinary, unencrypted preferences in the active Zotero profile.
See Configuration for every setting and Privacy and data handling for what is sent where.
Start from the PDF or library item you already have:
Follow the upload, conversion, and download progress in the temporary Mktero tab. A valid cache entry skips the remote conversion. A batch uses Zotero's progress window; minimizing it keeps preparation running.
Use the outline, find, citations, figure/table previews, source links, the Annotations segment, and the Notes column to navigate the document.
Mktero tabs are session-only and are not restored after Zotero restarts. Closing a tab does not cancel an in-progress conversion; it continues in the background and appears in the preparation window. Shutting down the extension cancels active conversion and translation requests. Each uncached PDF in a batch is sent the same way as a single conversion. Reopening the same PDF and conversion profile restores the last reading paragraph.
Guide What it covers
Configuration Every setting and its default
Reading and annotation workflows Corrections, annotations, Zotero notes, AI translation, citations, references, snapshots, and export
Figure pipeline How figures are rebuilt from the local PDF
Privacy and data handling What Mktero sends and where it is stored
Limitations Supported PDFs, navigation, and resource limits
Development Build, test, figure corpus, and contributing
Privacy
On a cache miss, the default converter sends the complete PDF to the Mktero service for your account.
If you select MinerU cloud, a local MinerU service, or Mistral, the complete PDF is sent there instead, and not to Mktero.
Credentials, cached Markdown and figures, stored MinerU results (without the PDF copy), corrections, translations, reading positions, local highlights not yet in the PDF, and the Zotero annotation keys that tie a cross-page highlight together are stored unencrypted in the active Zotero profile and are not synced by Mktero.
Signing in for the default conversion sends the email and password only when you sign in. Registration also emails a verification code. The access token and refresh token stay in the same profile. While the account pane is open, the extension uses that token to request your profile and your conversion-activity counts from the service you selected, and shows them as the account card's counters.
The extension reports its own version to the Mktero service when you sign in and when it refreshes your token, so the operator can see which builds are still in use. That report carries no device fingerprint and no hardware, operating-system, or IP-derived identifier, runs no third-party analytics, is never attached to a request that goes to a converter or provider you configure, and is not part of your account profile.
Reference, citation, and translation requests are bounded and local-first; logs never contain API tokens, presigned URLs, PDF bytes, or authenticated responses.
Full details and the complete data table are in Privacy and data handling.
Use the Node.js version in .node-version, currently 24.15.0. Node.js 25 is outside the supported dependency range.
npm ci npm run check npm test npm run build
See Development for the figure corpus regression.
Usage questions can go to the QQ group, WeChat, or Discord. Ideas, reading workflows, and beta feedback belong in GitHub Discussions. Reproducible bugs belong in GitHub Issues.
To report a problem, use Help > Report a Mktero Problem, the Report a problem button on a failed conversion, or the document actions menu of a Mktero tab. It copies or saves a redacted diagnostic file on this computer and does not upload it; paste it into an issue or send it to the group. Do not paste API keys, PDF contents, or logs that contain credentials into the QQ group, WeChat, Discord, issues, or pull requests.
QQ is a group: scan the code, or search 616518076 in QQ.
Pull requests are welcome. For changes to runtime behavior, run the complete verification commands above and include tests for the affected behavior.
Please keep credentials, private PDFs, and other sensitive data out of the QQ group, WeChat, Discord, issues, pull requests, and logs.
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。