paper-to-zotero
Paper to Zotero
From what the user gives to Zotero items with their PDFs, filed and tagged, and nothing left behind. Two entries: import (the steps below; two or more papers, a list, a .bib or search results → read references/batch.md before step 0) and organize existing items (references/organize.md instead of the steps). Script paths are relative to this file's directory: cd there at the start of every shell call. uv run scripts/p2z.py --help lists every script with its purpose; each script's --help is the reference for its flags.
Identity. A paper's handle is its citation key — Zotero's citationKey field, generated by Zotero or Better BibTeX when an item is created, or pinned to the key the user brings. Every script that takes --key <item key> also takes --cite <citation key>; reports lead with the citation key and give the 8-character item key as an aside. When the user supplies a key (from a .bib, a list, or in conversation) it goes into the record's citationKey, so the created item carries it.
Authorization. A request to add a paper is the authorization to write to the library, however politely phrased. A question about what is possible gets an answer, not a write. Changes to existing items are shown as a list first and written after the user confirms; scope the user has set once holds for the whole task.
Instruments
opencli-usageskill — web access: discover adapters at run time (opencli list -f json, filter it). Seen in 2026-09: API-typearxiv,openalex,semanticscholar(429 without a key — one 429 means skip it),pubmed(abstract, author keywords, PMID),dblp,openreview,hf paper; browser-typegoogle-scholar,cnki,wanfang. Behind a proxy every call prints a harmlessUNDICI-EHPAwarning on stderr: send stderr to<work>/scratch/opencli.log, not to/dev/null.opencli-browserskill — the user's real, logged-in Chrome:browser <session> open / state / click / wait / eval / close,web read --url.pdfskill — reading a PDF page whencheck_pdf.pyfinds no text layer.papers-cool-searchskill (optional) — papers.cool search, category and venue listings as JSON, for step 1.
Read references/publishers.md before the first visit to a publisher site, and references/tagging.md before choosing tags.