# DeepPaperNote declares no Python modules and installs as an agent skill

> DeepPaperNote turns one paper into an Obsidian note and ships as an agent skill, not as a library: its packaging table empties py-modules, so a pip install of it contains no code. The Python dependency is a manual step, and the plugin route installs more skills than the CLI route.

**917Dhj/DeepPaperNote** — DeepPaperNote is an agent skill for deep-reading a single paper and generating high-quality Obsidian-style research notes. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

- Repository: https://github.com/917Dhj/DeepPaperNote
- Website: https://917dhj.github.io/DeepPaperNote/
- Stars: 1,148 · Forks: 80
- Language: Python
- License: MIT
- Published: 2026-09-29 · Updated: 2026-09-29 · Language: en
- Canonical page: https://hysenlabs.com/projects/917dhj-deeppapernote

## py-modules is empty, so a pip install ships no code

The packaging metadata is unusual in a way worth reading twice. The project declares a name, a version, a description and two runtime dependencies, and then the setuptools table sets `py-modules = []`. No modules, and no packages key alongside it.

So `pip install deeppapernote` would produce a distribution containing no importable code. That is not a mistake in the sense of being wrong; it is a signal about what the project is. The deliverable is a set of Markdown skill files under `skills/`, and the install path for those is an agent plugin marketplace or a skills CLI, not Python packaging.

The declared dependencies are `certifi` and `PyMuPDF`, and the classifiers claim Production/Stable. Those two facts sit oddly beside an empty module list, because a distribution with no code has no use for either.

The version, by contrast, is consistent: the metadata reads 2.3.1 and the newest tag is v2.3.1, published on 2026-09-24 after v2.3.0 on 2026-08-29 and v2.2.0 on 2026-07-27.

## The plugin route installs two skills and the CLI route lets you pick

There are two ways to install the same thing, and they do not install the same set.

For Claude Code, add the marketplace and then install the plugin:

```bash
claude plugin marketplace add 917Dhj/DeepPaperNote
```

```bash
claude plugin install deeppapernote@deeppapernote
```

For any agent, the skills CLI is the alternative:

```bash
npx skills add 917Dhj/DeepPaperNote
```

The stated difference is in what each route does after installation. The plugin route brings both `deeppapernote` and `paper-glossary`. The skills CLI installer lets you choose which skills to install and which agents should receive them.

So the more convenient route installs more than the more precise one. The recommendation given is to start with `deeppapernote` and add `paper-glossary` only if you want reusable terminology notes, which is advice the plugin route does not let you act on at install time.

The repository carries a `.claude-plugin/` directory and a `.codex-plugin/` directory at its root, which is how one set of skill files ends up addressable by two different agents.

## Python 3.12 and 3.13 pass the constraint and appear in no classifier

The floor is stated twice and consistently: the documentation says Python 3.10 or newer, and the metadata says `requires-python = ">=3.10"`.

The classifiers then list only Python 3.10 and 3.11. So an interpreter on 3.12 or 3.13 satisfies the constraint and is not claimed by the project.

That gap is narrow in practice, since the only runtime dependency that matters is the PDF library, but it is the kind of thing that surfaces as an untested configuration rather than as an error. The lint configuration is pinned to the same floor, with a target version of py310 and a line length of 100, and the dev extra adds pytest and ruff.

Two more details from the metadata are worth holding on to. The author is recorded as `dingdingcar`, and the licence is referenced as a file rather than spelled out, with MIT carried in the classifiers instead.

## PyMuPDF is a manual step the metadata also declares

The dependency that actually matters is installed by hand, in a separate step, with an explicit warning about which environment it belongs in.

```bash
python3 -m pip install PyMuPDF
```

```bash
uv pip install PyMuPDF
```

The project says that if you use uv you should install PyMuPDF into the same Python environment that DeepPaperNote will use. That instruction exists because the skill is not installed into your environment at all; the agent runs it, and the agent's interpreter needs the library.

The same dependency is also declared in the packaging metadata at a floor of 1.24, alongside `certifi` at 2024.0.0 or newer. Having it in both places is harmless, but it means the manual step is redundant if anything ever installs the distribution, and essential if nothing does.

The `certifi` entry is the other clue about how the skill works. There is no HTTP client declared. Resolution of a title, DOI, URL or arXiv ID is therefore not something the packaged Python performs with a declared library.

## Browser collection lives in a second repository on one platform

Saving papers from a browser is not part of this repository. It is DeepPaperNote-Connector, a separate project linked from the README, and it is optional.

The stated support is narrow: Chrome on macOS, with a local saving component. That is the entire platform matrix as described. Anywhere else, the browser half does not exist, and the workflow falls back to handing DeepPaperNote a title, DOI, URL, arXiv ID or local PDF directly.

The division of labour is deliberate. The connector saves PDFs into an Obsidian paper library, and DeepPaperNote later reads the saved file and writes the note into the same paper directory, so the source and your understanding stay together. The README also claims existing notes are protected and that different versions of a paper can carry their own notes.

Zotero sits in the same conditional category. Zotero items are supported when a compatible integration is available, and the stated benefit is preferring local records and attachments when they exist, so a paper already in your library is not downloaded or matched again.

## One core skill, one companion, and a deliberate refusal to be a library

The scope statement is short and load-bearing: DeepPaperNote is an agent skill for reading one paper at a time.

That limit is restated in positioning. It describes itself as the single-paper ingestion layer for an LLM-maintained academic wiki, where Obsidian is the substrate that holds and links the pages, and DeepPaperNote is only how a paper reliably enters. It is not a library manager and not a search tool.

The skills table separates the two things it ships. `deeppapernote` is the core product and the recommendation, producing a structured evidence-based note with figures, results and limitations. `paper-glossary` is an optional companion that works from DeepPaperNote's saved paper artifacts without rerunning the paper-reading workflow, selecting terms into reusable glossary notes and optionally linking them back.

The questions the project says distinguish a deep-reading note from an abstract rewrite are the useful part: what problem is being solved, how the mechanism actually works, whether formulas, experimental conclusions and figure context survive, and whether the result is durable rather than disposable.

## The news block names Formal Save and never defines it

The news section is limited to three user-facing milestones and points at the changelog and the releases for the rest, which is honest scoping.

One of those three is the v2.3.0 entry, and its wording lists four areas that gained complete English support: note structure, figure callouts, validation, and Formal Save. Three of the four are self-explanatory. Formal Save is capitalised as a named step in the workflow and is not explained anywhere in the visible text.

That is a small thing, but it is a signal about how the changelog is written. A reader of the news block is expected to want to know what changed, and one of the four items is a proper noun from inside the skill.

The other two entries are dated 2026-07-16 and cover the same day: the glossary companion skill was added, and a pull request made the project distributable as a plugin for multiple agents with selectable skills. Both predate v2.2.0, so the plugin distribution model is recent relative to the 2.3.x line.

## Conclusion

DeepPaperNote suits a researcher who already keeps an Obsidian vault and wants one paper per note with its figures and formulas preserved, and who will read the output rather than trust it. It does not suit anyone looking for a library to import, because the packaging metadata installs no modules, and it does not give you paper collection on anything but Chrome for macOS. Before you adopt it, settle three things. Decide which install route you want, because the Claude Code plugin brings the optional glossary skill with it while the skills CLI lets you choose, and that choice is not reversible by configuration later. Install PyMuPDF into the environment your agent actually runs in, since the project asks for that explicitly and a mismatch is the likeliest cause of a silent failure. And check your Python version against the classifiers, where 3.12 and 3.13 pass the constraint without being claimed. The last push to main was on 2026-10-01, with v2.3.1 published on 2026-09-24.

## FAQ

### How do I install DeepPaperNote?

Two routes. For Claude Code, add the marketplace with `claude plugin marketplace add 917Dhj/DeepPaperNote` and then install `deeppapernote@deeppapernote`. For any agent, use the skills CLI with `npx skills add 917Dhj/DeepPaperNote`. The plugin route installs both `deeppapernote` and `paper-glossary`, while the skills CLI lets you choose which skills and which agents receive them.

### What does DeepPaperNote need besides the skill itself?

Python 3.10 or newer and PyMuPDF, installed separately with `python3 -m pip install PyMuPDF` or `uv pip install PyMuPDF`. The project asks for PyMuPDF to go into the same environment the skill will use, because PyMuPDF powers the PDF extraction path and the skill is not installed into your environment itself.

### Can DeepPaperNote read a paper straight from my browser?

Not on its own. That is the job of DeepPaperNote-Connector, a separate repository and optional browser extension currently supporting Chrome on macOS with a local saving component. Elsewhere you hand DeepPaperNote a title, DOI, URL, arXiv ID or local PDF directly, which the project describes as a supported path in its own right.

### What does DeepPaperNote produce from a paper?

One Obsidian note, assembled from the research question, the method chain, central experiments, limitations, figures placed in context, formulas and numbers. It is scoped to one paper at a time and is positioned as the ingestion layer for a wiki that Obsidian holds and links, rather than as a library or search tool.

### Does DeepPaperNote work with Zotero?

Zotero items are supported when a compatible integration is available. The stated behaviour is to prefer local records and attachments when they exist, so a paper already in your library is not downloaded or matched a second time.

## Sources

- [917Dhj/DeepPaperNote on GitHub](https://github.com/917Dhj/DeepPaperNote)
- [License: MIT](https://github.com/917Dhj/DeepPaperNote/blob/main/LICENSE)
- [Project website](https://917dhj.github.io/DeepPaperNote/)
- [README](https://github.com/917Dhj/DeepPaperNote/blob/main/README.md)
- [Releases](https://github.com/917Dhj/DeepPaperNote/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/917dhj-deeppapernote
