shashanyu25 downloadsImport academic PDFs and precompute context-aware hover glossary explanations.
An Obsidian desktop plugin for importing academic PDFs, preparing them for close reading, and serving cached glossary explanations on hover.
The main entrypoint is Obsidian's Command Palette:
Cmd+P on macOS or Ctrl+P on Windows/Linux.Import, Glossary, or Explain.The most important commands are:
Import PDF and prepare for readingConvert current PDF to Markdown onlyRebuild glossary for current paperExtract terms and explain from current MarkdownHighlight key sentences for current paperExplain term nowIf you just want the normal workflow, use:
This plugin is designed for text-layer PDFs such as philosophy, logic, and adjacent humanities papers. Scanned OCR-heavy documents are out of scope for the current MVP.
_source/._glossary/.Explain now action when a term has not been prepared yet.Scholia is intentionally cache-first:
The default pipeline is:
PDF import -> key sentence highlighting (optional) -> glossary preprocessing -> hover from cache
Scholia uses Paper2MDViaLLM as the normal PDF-to-Markdown path. Older Scholar-MD and Marker paths are kept internal for comparison and debugging, but they are not part of the normal settings flow.
Importing a paper creates a folder like this:
my-paper/
my-paper.pdf
my-paper.md
_source/
import-quality.json
import-warnings.md
key-sentences.json
paper2mdviallm.md
_glossary/
_status.md
term-a.md
term-b.md
Possible backend-specific artifacts include:
_source/paper2mdviallm.md_source/scholar-md.md_source/scholar-md.diagnostics.jsonThese files are meant to be inspectable. If import quality is medium or high risk, check _source/import-warnings.md before trusting formulas or symbols.
>= 1.5.0Notes:
Paper2MDViaLLM needs an API key because conversion itself is LLM-backed.data.json so the plugin can stay compatible with Obsidian 1.5.0+. If you later raise minAppVersion, migrating to SecretStorage is the cleaner review posture.Scholia makes network requests to OpenAI and/or Anthropic when you run import, glossary generation, key-sentence selection, or Explain term now._source/*, and _glossary/* back into the same vault.paper2mdviallm tool.This repo is currently set up like a local plugin project rather than a packaged community release.
Put Scholia under your vault's plugin directory:
YOUR_VAULT/.obsidian/plugins/scholia/
On Windows this looks like:
YOUR_VAULT\.obsidian\plugins\scholia\
If you downloaded a packaged build, the folder should contain:
manifest.json
main.js
styles.css
If you downloaded the source repo, place or clone it at the same scholia plugin path, then run:
npm install
npm run build
Settings -> Community plugins.Scholia.In Terminal, PowerShell, or Anaconda Prompt:
conda create -n scholia python=3.11
conda activate scholia
pip install paper2mdviallm
paper2mdviallm CLI pathIn Obsidian, open Settings -> Community plugins -> Scholia.
Set CLI path for paper2mdviallm to the conda environment folder:
macOS/Linux: /Users/YOUR_NAME/miniconda3/envs/scholia
Windows: C:\Users\YOUR_NAME\miniconda3\envs\scholia
If you use Anaconda instead of Miniconda, replace miniconda3 with anaconda3.
Scholia will resolve the executable inside that environment:
macOS/Linux: bin/paper2mdviallm
Windows: Scripts\paper2mdviallm.exe
Use the environment folder path above, not a shell fragment like conda run -n scholia paper2mdviallm.
To find your conda environment path:
conda env list
In Settings -> Community plugins -> Scholia, enter at least one key:
OpenAI key for GPT modelsAnthropic key for Claude modelsThe default Markdown generation model is gpt-5.4-mini, so fill the OpenAI key unless you change that model to a Claude model.
Cmd+P or Ctrl+P.Scholia or Import.Import PDF and prepare for reading.The settings tab is split into four groups.
CLI path for paper2mdviallmMarkdown generation modelProvider choice is inferred from the model name. The plugin injects the global OpenAI or Anthropic API key into the CLI environment. The CLI path should usually be a conda environment root such as /Users/YOUR_NAME/miniconda3/envs/scholia or C:\Users\YOUR_NAME\miniconda3\envs\scholia.
OpenAI keyAnthropic keyThese are currently stored in the plugin's Obsidian data.json for compatibility with older supported Obsidian versions.
Reading prep providerReading prep modelAuto highlight key sentences after importKey sentence densityThis controls post-import prep: key-sentence selection plus glossary discovery and explanation.
Max precomputed termsGlossary folder nameGlossary explanation lengthHover delayGlossary entries are written as Markdown files inside the paper folder, not hidden plugin storage.
Cmd+P or Ctrl+P, type Import, and run Import PDF and prepare for reading.Cmd+P or Ctrl+P, type Convert, and run Convert current PDF to Markdown only._source/import-warnings.md.Extract terms and explain from current Markdown when ready.Cmd+P or Ctrl+P, type Explain, and run Explain term now.When enabled, import runs key-sentence highlighting before glossary preprocessing.
Details:
==...== syntax._source/key-sentences.json.Install JavaScript dependencies:
npm install
Build the plugin:
npm run build
Run the plugin test suite:
npm test
Run the Python tool tests:
npm run test:paper2mdviallm
npm run test:scholar-md
Run the PDF evaluation harness:
npm run eval:pdf-tools
Useful optional variants:
PDF_EVAL_DOCS=anaf011,logic-of-provability npm run eval:pdf-tools
PDF_EVAL_MINERU=1 PDF_EVAL_DOCS=anaf011 npm run eval:pdf-tools
src/ Obsidian plugin runtime
prompts/ LLM prompts for term discovery, explanation, and key sentences
tests/ Node-side tests
docs/ design and pipeline notes
eval/pdf-tools/ PDF backend comparison harness
tools/paper2mdviallm/ LLM-native PDF to Markdown CLI
tools/scholar-md/ lightweight digital PDF to Markdown CLI