You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`--enrich`|Download PDF + Anthropic-summarise. Needs `ANTHROPIC_API_KEY` and `[intelligence]` extra. |
272
-
|`--lightweight`|Force the abstract-only deck even when `ANTHROPIC_API_KEY`is set. |
288
+
|`--enrich`|Fail-loud variant of auto-enrich. Needs `ANTHROPIC_API_KEY` and `[intelligence]` extra. (Auto-enrich is default when the key is set.)|
289
+
|`--lightweight`|Skip enrichment + force the abstract-only deck. Use only for quick / unattended runs; **when an LLM agent is driving, prefer the LLM-as-agent flow** below. |
273
290
|`--llm-model`| Override default `claude-opus-4-7` for enrichment. |
|`AUTOPAPERTOPPT_S2_API_KEY`| Semantic Scholar + OA resolver | Higher rate limit; also used by the OA resolver's S2 `openAccessPdf` step. Free key at <https://www.semanticscholar.org/product/api>. |
|`AUTOPAPERTOPPT_CONTACT_EMAIL`| PubMed, ACM, Crossref, OpenAlex| Puts requests into Crossref's polite pool. |
307
+
|`AUTOPAPERTOPPT_CONTACT_EMAIL`| PubMed, ACM, Crossref, OpenAlex, **Unpaywall**| Polite-pool tag + enables the OA resolver's Unpaywall step (biggest PDF-coverage win for IEEE / ACM / Springer / Elsevier-paywalled papers; typical lift 40-70 pp). |
289
308
|`AUTOPAPERTOPPT_IEEE_API_KEY`| IEEE (API path) | Official IEEE Xplore API; surfaces `pdf_url` for in-scope papers. |
290
-
|`AUTOPAPERTOPPT_ENABLE_IEEE_SCRAPING`| IEEE (scrape path) |`=1`opts into scraping. Not needed when the API key is set. |
309
+
|`AUTOPAPERTOPPT_DISABLE_IEEE_SCRAPING`| IEEE |**IEEE is default-ON via visible Chrome.** Set `=1`to opt out (e.g. CI without Chrome). The httpx scrape branch only runs as a fallback when WebRunner is unavailable. |
|`AUTOPAPERTOPPT_SPRINGER_API_KEY`| Springer | Required; free key from <https://dev.springernature.com/>. Plugin is silently skipped without it. |
293
-
|`AUTOPAPERTOPPT_ENABLE_SCHOLAR_SCRAPING`| Google Scholar |`=1` opts into scraping. Off by default — Scholar ToS forbids scraping. |
311
+
|`AUTOPAPERTOPPT_SPRINGER_API_KEY`| Springer | Required; free key from <https://dev.springernature.com/>. Plugin raises `ConfigError` without it. |
312
+
|`AUTOPAPERTOPPT_DISABLE_SCHOLAR_SCRAPING`| Google Scholar |**Scholar is default-ON via visible Chrome.** Set `=1` to opt out (Google's ToS forbids automated access — default-on for coverage, opt-out to avoid captcha / IP-block risk). |
313
+
|`AUTOPAPERTOPPT_CHROME_PROFILE_DIR`| Scholar + IEEE + paywalled-PDF downloads | Persistent Chrome `--user-data-dir`. Set this and complete VPN / SSO / Google sign-in once; subsequent runs inherit the cookies so IEEE returns paywalled metadata and Scholar serves un-throttled SERPs. |
314
+
|`AUTOPAPERTOPPT_DISABLE_WEBRUNNER`| Scholar + IEEE + paywalled-PDF downloads |`=1` forces the httpx paths instead of driving real Chrome. Useful for CI / Docker without a Chrome binary; otherwise leave unset. |
315
+
|`AUTOPAPERTOPPT_CORE_API_KEY`| OA resolver | Free key from <https://core.ac.uk/services/api>. Enables the CORE.ac.uk lookup step (200M+ institutional / regional OA items). Other OA strategies (Unpaywall, S2, arXiv) still run without it. |
294
316
|`AUTOPAPERTOPPT_PDF_COOKIES_FILE`| PDF downloader | Netscape `cookies.txt`. Off by default. Use only with publishers you have institutional rights to. |
295
317
|`AUTOPAPERTOPPT_LOG_LEVEL`| logger |`INFO` default; `DEBUG` for verbose tracing. |
When an LLM in your editor (Claude Code, Cursor, Aider, Codex CLI, …)
325
+
wants to drive the publisher browser itself — pick URLs, inspect the
326
+
returned DOM, decide which papers to dig into — five scripts under
327
+
`scripts/` cover the canonical path:
328
+
329
+
| Script | What it does |
330
+
|---|---|
331
+
|`scripts/llm_driven_search.py "<query>"`| Boots visible Chrome, navigates Scholar SERP for the query, JS-fetches IEEE `/rest/search` from inside the IEEE origin, dumps SERP HTML + IEEE JSON to `exports/_llm_scratch/`. |
332
+
|`scripts/llm_parse_results.py`| Reads the dumped artefacts, runs the project's parsers, dedups + ranks + exports `.xlsx` + `.md` for the LLM to inspect. |
333
+
|`scripts/llm_download_pdfs.py <xlsx>`| Walks the xlsx, dispatches each row to the right per-publisher downloader (IEEE / ACM / Springer / arXiv / ACL Anthology / NeurIPS / OpenReview) in ONE Chrome session. Idempotent: papers with a valid `<id>.pdf` already on disk skip immediately. |
334
+
|`scripts/llm_download_{ieee,acm,springer}_pdf.py <id>`| Single-paper variants for iterating on selectors / debugging one entry. |
335
+
|`scripts/regen_*.py`| Worked example of hand-authored rich `PaperSummary` per paper → rich-tier `.pptx`. Look at `scripts/regen_speculative_decoding_zh_tw.py` for the canonical shape. |
336
+
337
+
Full end-to-end runbook (search → rich deck) lives in
338
+
`.claude/agents/paper-summary-author.md` — open it before starting a
339
+
new query so the LLM can run the flow without pausing for user input.
0 commit comments