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.
npx skills add https://github.com/917dhj/deeppapernote --skill deeppapernote使用 CLI 安装这个技能,并在你的工作区中直接复用对应的 SKILL.md 工作流。
Turn a complex paper into an Obsidian note you will actually want to keep.
Do you often run into this situation: you want to study a classic paper carefully, but the hardest part is no longer reading it — it is turning that reading into usable notes? The real time sink usually looks like this:
DeepPaperNote is built for exactly that layer of repetitive, mechanical, but very expensive work. It takes over the gathering, structuring, figure placement, and note production work so you can keep your attention on actual thinking.
DeepPaperNote is a skill for deep paper reading. The same core skill can be used from Claude Code and Codex. It cares about a harder set of questions:
[!tip]
If you already have an Obsidian or Zotero workflow, DeepPaperNote automates the most tedious parts of evidence gathering, structuring, and note production.

| 🎯 Your need / pain point | ✅ What DeepPaperNote does |
|---|---|
| You want to understand a complex paper faster | It organizes the method backbone, key results, figure context, and limitations into a note you can actually read through |
| You want to study a classic paper without handwriting a pile of mechanical notes | It handles metadata collection, structure building, figure placeholders, and full note generation so you can spend your energy on understanding |
| You want the paper to live inside Obsidian as a long-term asset | It files the paper into a domain-appropriate place inside your Obsidian knowledge base, then creates a paper-specific folder, Markdown note, and local images/ directory |
| You already manage papers in Zotero and do not want to redo the work | It can prefer local records and attachments, reducing mismatches and often speeding the workflow up |
| You do not want another polished-looking summary | It leans toward mechanism breakdown, key numbers, formulas, edge cases, and honest limitations |
In one sentence:
DeepPaperNote is a paper-reading-note workflow, not a paper-summary generator.
DeepPaperNote does not achieve higher note quality by simply rewriting the abstract in smoother prose. It raises note quality through a few workflow rules:
| 🧭 Core principle | 📝 What it means in practice |
|---|---|
| 🤖 Model-led understanding | The model is responsible for mechanism breakdown, method structure, key comparisons, and limitations instead of template-like summary writing. |
| 🗂️ Evidence first | It gathers evidence from PDFs, metadata sources, and optional Zotero workflows before writing, instead of producing claims first and looking for support later. |
| 🧪 Technical detail first | For technical papers, it tries to preserve key numbers, formulas, implementation logic, and real boundary conditions rather than stopping at high-level paraphrase. |
| 🖼️ Placeholder-first figures | When image extraction is unstable, it still keeps figure position, explanation, and context so the note structure does not break. |
| 🔗 Native knowledge-base output | It first routes the paper into a domain-appropriate place in your existing knowledge-base structure, then gives each paper its own folder, Markdown note, and images/ directory. |
| 📚 Local-library-first resolution | If the paper already exists in Zotero, it can reuse local items and attachments, which is often both more reliable and faster. |
|
👓 People studying hard or classic papers closely You are not reading papers just to skim the abstract and move on. You are reading papers with dense formulas, complex architectures, or layered experiments, and you want a note that actually untangles the method backbone, key results, and figure structure. |
🗂️ People building a long-term Obsidian knowledge base You want paper notes to remain searchable, linkable, and reusable over time. DeepPaperNote files papers into a more suitable place based on their domain, then creates the Markdown note and images/ folder so the result fits a real knowledge base.
|
🤖 People who want more than AI summaries You are not looking for a polished-looking recap. You want to know what the paper actually solves, how the method works, which results matter, and where the real limitations or misunderstandings are. DeepPaperNote aims closer to a research note than a summary generator. |
DeepPaperNote supports both Claude Code and Codex.
For most users, install directly with npx:
npx skills add 917Dhj/DeepPaperNote
This command installs to the shared .agents/skills directory by default. Skills in that directory can be recognized and used by Codex and most other agents. If you also want to use DeepPaperNote in Claude Code, choose Claude Code in the Additional agents prompt.
You can also install for a specific agent directly:
npx skills add 917Dhj/DeepPaperNote -a codex
npx skills add 917Dhj/DeepPaperNote -a claude-code
If you prefer the manual path, download the latest release zip and extract it.
For Codex, place the extracted DeepPaperNote folder into:
~/.codex/skills/DeepPaperNote
For Claude Code, place the extracted DeepPaperNote folder into:
~/.claude/skills/DeepPaperNote
You can also clone the source repository directly:
git clone https://github.com/917Dhj/DeepPaperNote.git ~/.codex/skills/DeepPaperNote
git clone https://github.com/917Dhj/DeepPaperNote.git ~/.claude/skills/DeepPaperNote
After installation, restart your agent so the skill is loaded.
Before your first real paper run, install the most important Python dependency:
python3 -m pip install PyMuPDF
Why this step matters:
PyMuPDFPyMuPDF is missing, the core PDF extraction pipeline will not workAfter that, just hand a paper to the agent. A title, DOI, URL, arXiv ID, or local PDF all work. Prompts like these are enough:
Typical prompts:
Generate a deep-reading note for this paper: Attention Is All You NeedTurn this paper into an Obsidian note: https://arxiv.org/abs/1706.03762Read this PDF and produce a Markdown note with figure contextUse DeepPaperNote on this paper: 10.48550/arXiv.1706.03762By default, DeepPaperNote writes the note in Chinese. At the moment, Chinese is the only note language that can fully benefit from the skill's current writing and linting rules. If you need English notes, please stay tuned for a future update.
By default, DeepPaperNote will:
You can try DeepPaperNote even if you have not finished configuring Obsidian, Zotero, or OCR yet.
If you want the Python dependencies for local development:
python3 -m pip install -e .
If you want to check the environment first, you can also ask the agent with short requests such as:
Please check whether DeepPaperNote is ready on this machine查看 deeppapernote 的可用情况deeppapernote 有什么功能Once you have PyMuPDF installed, you're ready to start generating notes with DeepPaperNote right away. The configurations outlined below are extensions of the core features, designed to help you seamlessly integrate the generated notes into your actual research workflow.
The cleanest setup is:
export DEEPPAPERNOTE_OBSIDIAN_VAULT="/absolute/path/to/your/Obsidian_Documents"
If you want your agent to keep seeing this default configuration in future terminal sessions:
~/.zshrc, then reload your shell (or restart the agent):echo 'export DEEPPAPERNOTE_OBSIDIAN_VAULT="/absolute/path/to/your/Obsidian_Documents"' >> ~/.zshrc
source ~/.zshrc
setx DEEPPAPERNOTE_OBSIDIAN_VAULT "C:\Users\YourName\Documents\Obsidian_Documents"
If you want to customize paper output paths or intermediate artifact paths:
export DEEPPAPERNOTE_PAPERS_DIR="Research/Papers"
export DEEPPAPERNOTE_OUTPUT_DIR="tmp/DeepPaperNote"
| ⚙️ Variable | Required | 📝 Purpose |
|---|---|---|
DEEPPAPERNOTE_OBSIDIAN_VAULT |
Recommended | Root path of your Obsidian vault |
DEEPPAPERNOTE_PAPERS_DIR |
Optional | Vault-relative paper output folder, default: Research/Papers |
DEEPPAPERNOTE_OUTPUT_DIR |
Optional | Local temporary artifact directory, default: tmp/DeepPaperNote |
DEEPPAPERNOTE_WORKSPACE_OUTPUT_DIR |
Optional | Fallback output folder under the current working directory when no Obsidian vault is configured, default: DeepPaperNote_output |
If you want your agent to keep using these values by default:
~/.zshrc as well:echo 'export DEEPPAPERNOTE_PAPERS_DIR="Research/Papers"' >> ~/.zshrc
source ~/.zshrc
setx DEEPPAPERNOTE_PAPERS_DIR "Research/Papers"
Why the optional path settings can help:
DEEPPAPERNOTE_PAPERS_DIRResearch/Papers, or if you want DeepPaperNote to fit an existing folder convention without extra manual moves.DEEPPAPERNOTE_OUTPUT_DIRDeepPaperNote can work without Zotero.
But if you want the agent to search your local Zotero library first, you should expose a Zotero integration that your agent runtime can actually use.
This is most worth setting up if you already use Zotero as your main paper-management or reading workflow.
Recommended ways to think about it:
| 🧩 Option | 🎯 Best for | 📝 Notes |
|---|---|---|
| kujenga/zotero-mcp | Lightweight read access | Closer to a minimal Zotero MCP server for search, metadata, and text access, but it usually still needs some adaptation for your agent runtime |
| 54yyyu/zotero-mcp | Richer research workflow features | More feature-rich, but stable use usually still requires some integration work on your side |
Why it matters:
Important note:
This is not required, but if you have a Semantic Scholar API key you can expose it as:
export DEEPPAPERNOTE_SEMANTIC_SCHOLAR_API_KEY="your_api_key"
Why it can help:
OCR is not required for many modern PDFs.
But it becomes useful when a paper is:
Why DeepPaperNote uses OCR:
Current OCR logic in DeepPaperNote:
PyMuPDFImportant scope note:
Without OCR, DeepPaperNote still works well on normal digital PDFs, but scanned or low-quality PDFs may produce weaker evidence.
Required software and packages for OCR:
| 🧱 Layer | 📦 Requirement | 📝 Purpose |
|---|---|---|
| System tool | tesseract |
The actual OCR engine |
| Python package | pytesseract |
Python bridge to tesseract |
| Python package | Pillow |
Opens rendered page images before OCR |
Install on macOS:
brew install tesseract
python3 -m pip install --user pytesseract Pillow
Install on Windows:
winget install UB-Mannheim.TesseractOCR
py -m pip install --user pytesseract Pillow
If winget is unavailable, install Tesseract OCR manually and then run:
py -m pip install --user pytesseract Pillow
Quick verification:
tesseract --version
python3 -c "import pytesseract, PIL; print('python_ok')"
python3 -c "import pytesseract; print(pytesseract.get_tesseract_version())"
For release-level updates, see CHANGELOG.md.
| 🏷️ Version | 🚦 Status | ✨ Highlights |
|---|---|---|
| v1.0.1 | ✅ Released | Patch release for Obsidian-native frontmatter and wikilink support, lint compatibility fixes, and cleaner README assets |
| v1.0.0 | ✅ Released | First stable release: pure cross-agent skill structure for Claude Code, Codex, Cursor, Copilot, Gemini CLI, and other Agent Skills-compatible environments |
| v0.3.1-alpha | ✅ Released | Default Obsidian paper root changed to Research/Papers, with runtime path resolution and save behavior aligned to the new location |
| v0.3.0-alpha | ✅ Released | Major quality upgrade: dedicated innovation section, explicit mechanism flow, stronger workflow discipline, final readability review, math syntax gate, and the new Original Abstract Translation front-matter block |
| v0.2.0-alpha | ✅ Released | Replication-oriented note-writing upgrade: explicit note_plan, equation-aware output, stricter final self-review, bilingual abstract handling, and stronger formatting checks |
| v0.1.0-alpha | ✅ Released | First public alpha: evidence-bundle workflow, Zotero-first helpers, placeholder-first figure handling, workspace fallback, OCR fallback, tests, and CI |
| Unreleased | 🕒 No new release-level changes yet | There are currently no additional public release notes beyond v1.0.1 |
The default path is:
Core principle:
Related docs:
When figure handling breaks down, the quality of the whole note usually drops with it.
That is why DeepPaperNote uses a more structure-first, placeholder-first figure strategy:
Recommended placeholder format:
> [!figure] Fig. 3 Data Distribution and Quality Evaluation
> Suggested location: Data and task definition
> Why here: This figure combines sample composition, conversation-length statistics, and expert quality checks, making it one of the most important figures for understanding the data boundaries.
> Current status: Placeholder kept; current extraction only recovered partial subpanels and cannot yet reconstruct the full original figure reliably.
In other words, DeepPaperNote prioritizes:
note completeness and readability over forcing every figure to be extracted automatically at any cost
DeepPaperNote has a concrete bar for what counts as a usable note.
The final note should:
#, ##, ###If the evidence is not strong enough, the workflow should degrade gracefully or fail instead of pretending that a deep reading note is complete.
Related docs:
DeepPaperNote/
├── SKILL.md
├── README.md
├── README.zh-CN.md
├── CHANGELOG.md
├── LICENSE
├── pyproject.toml
├── agents/
│ └── openai.yaml
├── assets/
│ ├── hero-academic.svg
│ ├── usage-example.png
│ └── note_template.md
├── references/
│ ├── architecture.md
│ ├── deep-analysis.md
│ ├── evidence-first.md
│ ├── figure-placement.md
│ ├── final-writing.md
│ ├── metadata-sources.md
│ ├── model-synthesis.md
│ ├── note-quality.md
│ ├── obsidian-format.md
│ ├── paper-types.md
│ └── workflow.md
└── scripts/
├── build_synthesis_bundle.py
├── check_environment.py
├── collect_metadata.py
├── common.py
├── contracts.py
├── create_input_record.py
├── extract_evidence.py
├── extract_pdf_assets.py
├── fetch_pdf.py
├── lint_note.py
├── locate_zotero_attachment.py
├── materialize_figure_asset.py
├── plan_figures.py
├── resolve_paper.py
├── run_pipeline.py
└── write_obsidian_note.py
| 🧰 Component | 🚦 Status | 📝 Notes |
|---|---|---|
| Claude Code / Codex | Recommended | Supported agent environments |
| Python 3.10+ | Required | Runs the helper scripts |
| PyMuPDF | Required | Core PDF dependency; install it with python3 -m pip install PyMuPDF |
| Local Obsidian vault | Recommended | Writes directly into a long-term note system; otherwise falls back to the current working directory |
| Zotero integration | Optional | Helpful for local-library-first paper workflows |
| OCR tools | Optional | Improves handling of scanned PDFs |
The core judgment behind DeepPaperNote is simple:
A useful note should help you understand:
Not just “I kind of get it right now,” but something you can revisit, cite, and build on later.
That is why it is designed to fit naturally with:
DeepPaperNote was influenced by projects that take paper reading, evidence extraction, and note generation seriously, especially:
This project is licensed under the MIT License.