1 · Search PubMed
2 · Read & capture
Captured text is from the abstract only — verify against the full text before citing.
3 · Your .ris (review, then import)
Preview the raw .ris (exactly what gets imported)
What is a .ris file, and how do I add it to Zotero?
RIS is a plain-text bibliography format (.ris) that almost every reference manager reads — Zotero, EndNote, Mendeley, Papers. Each record is a short list of tagged lines: TY type · AU author · TI title · PY year · DO DOI · N1 notes · KW tags · ER end-of-record. You can open it in any text editor and read exactly what will be imported — nothing hidden.
To get it into Zotero:
- Download .ris (or Copy) above. Each download is timestamped (e.g. matchvahti-lite-2026-06-11-1432.ris) so batches never overwrite each other.
- In Zotero, choose File → Import… — or just drag the .ris file onto your library.
- Zotero creates the items, with your captured sentences and note in each item's Notes/Extra and your tags attached. If a reference is already in your library (same DOI/PMID), Zotero can detect it as a duplicate (Duplicate Items view) so you can merge instead of double-adding.
Re-importing makes a new collection each time. Zotero names the import collection after the file, so importing repeatedly stacks up folders. Two ways to avoid the pile-up:
- In the import dialog, untick “Place imported collections and items into a new collection” — items land loose in your current collection instead of a new folder.
- Or keep the box ticked and let the timestamped filename name each folder as a dated batch (matchvahti-lite-2026-06-11-1432), so re-imports don't collide and you can tell them apart.
Either way, the export is cumulative — it always contains every reference you've captured this session — so import a fresh .ris once when you're done rather than after every capture, and let Zotero's duplicate detection catch any overlap.
What does the [oo] closer-look flag do after import?
[oo] closer look means: this abstract sentence is interesting enough to justify pulling the full text. It's a retrieval trigger, not a judgement on the study.
In the exported .ris, the flag travels as the tag cite:closer-look (alongside cite:abstract-only), carried with the paper's DOI and PMID. That lets a companion Zotero-side tool (vahtian_fulltext.py, local-first, open-access only) close the loop:
- Scan imported items for cite:closer-look.
- Try to fetch the PDF by DOI (primary) or PMID (fallback) and attach it.
- Tag the item fulltext:pdf-found, fulltext:pdf-missing, or fulltext:check-needed.
Later, MatchVahti or CiteVahti can use those retrieved full texts for stronger, full-text claim checking instead of abstract-only. MatchVahti-Lite itself never fetches PDFs and never writes to your library — it only emits the flag; retrieval is a separate, explicit step.
Why does one-click OAuth to Zotero work in CiteVahti but not here?
Because CiteVahti is an installed app and this is a single web page. CiteVahti runs as a real process on your machine with a small backend, so it can do everything an OAuth handshake needs: hold a client secret that never reaches the browser, open a localhost callback to catch the redirect, and then keep an API key to write items into your Zotero library directly — decision-gated and undoable.
MatchVahti-Lite is the opposite by design — one static HTML file, no backend, no server, and network access locked down to PubMed E-utilities. That removes every piece OAuth requires:
- No callback to return to. OAuth must send you back to a URL the app controls; a static file has none.
- Nowhere to keep a secret. Anything in the page is readable by anyone who opens it, so a client secret can't be protected.
- No path to Zotero's servers. The content-security policy only permits network calls to PubMed, so the page can't reach Zotero's API (and the browser's CORS rules would block them too).
So instead of a credentialed write, it uses the universal, no-login path: a reviewable .ris you import yourself. That is also the whole spine's no silent writes stance — nothing reaches your library until you have looked at it and clicked import. When you want the direct, authenticated Zotero write, that lives in CiteVahti / MatchVahti.
What this is
Pricing
MatchVahti-Lite is free — it runs entirely in your browser and the only network call is the PubMed search. A small subscription (planned, ~€3/mo) would add convenience extras (saved searches, cross-device sync of your capture list); the core read → capture → .ris loop stays free.