Transform academic PDFs into structured literature notes and critical-thinking canvases for Obsidian
Project description
PhD Deep Read Workflow
Transform academic PDFs into structured literature notes and critical-thinking canvases for Obsidian.
"The human mind... operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts." — Vannevar Bush, As We May Think, 1945
Bush imagined this in 1945 — a desk where all your reading lives outside its original containers, ready for you to build trails of association through it. That's what this workflow is.
Step one: Convert the PDF to Markdown. The knowledge leaves the frozen PDF and becomes something you can return to, search, and connect — today, next month, next year.
Step two: Come back anytime and draw out what's relevant now. Connect ideas across papers. Visualize arguments, evidence, and assumptions side by side in an Obsidian canvas. The literature note captures what's there. The canvas lets you see it alongside everything else you know.
Prerequisites
You need both of these:
- Claude Code — download here if you don't have it yet. This workflow only works inside Claude Code.
- Obsidian — download here. The final output is a JSON canvas file that only renders in Obsidian.
If you just want AI help reading a PDF, you don't need this workflow. Drag the PDF into any AI chat and ask questions directly. This workflow is for people who want structured literature notes and a critical-thinking canvas they can revisit in Obsidian.
Install
Option 1: Install in 30 seconds (fastest)
In Claude Code, run:
/plugin marketplace add heleninsights-dot/phd-deepread-workflow
/plugin install phd-deepread@phd-deepread
Then in your terminal, install the Python CLI that converts PDFs to Markdown:
pip install phd-deepread-workflow
Done. Drag a PDF into Claude Code and say "phd-deepread read this paper".
Option 2: Paste one line (just as easy)
Paste this into Claude Code and it handles everything:
Install this skill for me: https://github.com/heleninsights-dot/phd-deepread-workflow
Then in your terminal, install the Python CLI:
pip install phd-deepread-workflow
Optional: Tesseract OCR
Only needed if you work with scanned PDFs (image-based, text not selectable):
brew install tesseract # macOS
sudo apt install tesseract-ocr # Ubuntu/Debian
Using the workflow
One paper
Drag a PDF into Claude Code and say:
phd-deepread read this paper
Claude extracts the text, writes a structured literature note, and creates a 9-node critical-thinking canvas — all in one go. Open the .canvas file in Obsidian to visualize arguments, evidence, assumptions, and gaps side by side.
You can also ask for specific parts: "phd-deepread extract this PDF, but just give me the prompt — I'll write the note myself."
A folder of papers
Drag a folder into Claude Code and say:
phd-deepread read this folder
Claude batch-processes every PDF inside — extracting text, writing a structured literature note for each one, and creating canvas templates. Already-processed papers are skipped automatically. Works the same as a single paper, just for the whole folder.
What you get
Each PDF you process gives you three files:
| Output | What it is |
|---|---|
paper.md |
Full text of the PDF, converted to Markdown |
paper_literature_note.md |
Structured academic note — see below for what's extracted |
paper.canvas |
A 9-node critical-thinking canvas — open this in Obsidian to visualize arguments, evidence, assumptions, and gaps side by side |
What the literature note extracts
The note doesn't summarize — it pulls out the specific data you need to actually use the paper in your research:
| Category | What you get |
|---|---|
| Findings | Every key result with direction, magnitude, p-value, confidence interval, effect size, and source table/figure |
| Methodology | Study design, sample sizes with attrition, inclusion/exclusion criteria, every instrument/assay/software named |
| Critique | Limitations mapped to validity types (internal, external, construct, statistical), plus limitations the authors don't discuss |
| Connections | Extensive [[wikilinks]] to methods, proteins, genes, diseases, concepts — linking the paper to your existing notes |
| Action items | Specific, actionable follow-ups you can act on without re-reading the paper |
| Assessment | Innovation, evidence strength, and practical potential — each with a concrete justification, not just a score |
CLI reference
Claude Code calls these commands for you — you don't need to type them yourself:
| Command | What it does |
|---|---|
doctor |
Check that all dependencies are installed |
extract <pdf> |
Extract text and images from a PDF |
generate <dir> |
Build a literature-note prompt from extracted text |
canvas -o <file> [--from-note <md>] |
Create a 9-node canvas; populate from a finished note with --from-note |
run <pdf> |
Full pipeline: extract → generate prompt → canvas |
batch <dir> |
Process all PDFs in a folder |
verify <dir> |
Quality-check output files |
Integration with Obsidian and Zotero
Obsidian: Notes use YAML frontmatter and Dataview-compatible callouts. Canvas files open with the Obsidian Canvas plugin. Wikilinks connect to your existing notes.
Zotero: Use your Zotero citation key as the citekey field in the generated note. Export PDFs from Zotero into your processing folder before running the workflow.
Troubleshooting
"command not found: phd-deepread" — your terminal can't see the install location. Open a new terminal window. If still missing, add ~/.local/bin to your PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
"Tesseract not found" — only matters for scanned PDFs:
brew install tesseract # macOS
sudo apt install tesseract-ocr # Ubuntu/Debian
"Template not found" after installing — upgrade to the latest version:
pip install --upgrade phd-deepread-workflow
Using a virtual environment (cleanest install)
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# or: venv\Scripts\activate # Windows
pip install phd-deepread-workflow
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit and push, then open a Pull Request
See CONTRIBUTING.md for details.
License
MIT — see LICENSE.
Support
- Issues: GitHub Issues
- Email: heleninsights@gmail.com
Made with love for the academic community
If this workflow helps your research, consider giving it a star on GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phd_deepread_workflow-0.2.1.tar.gz.
File metadata
- Download URL: phd_deepread_workflow-0.2.1.tar.gz
- Upload date:
- Size: 59.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d1a1d7f73df69630f5b61ab40b442c9caa9bf8b2a55a53faf010b30a05c0609
|
|
| MD5 |
8d65b457542938cb4588634463245509
|
|
| BLAKE2b-256 |
2f1c83fba8dba9a7bfb00b577fd4ee321840b423a1a65cb84da2c9849ee968b9
|
Provenance
The following attestation bundles were made for phd_deepread_workflow-0.2.1.tar.gz:
Publisher:
publish.yml on heleninsights-dot/phd-deepread-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phd_deepread_workflow-0.2.1.tar.gz -
Subject digest:
7d1a1d7f73df69630f5b61ab40b442c9caa9bf8b2a55a53faf010b30a05c0609 - Sigstore transparency entry: 1543573313
- Sigstore integration time:
-
Permalink:
heleninsights-dot/phd-deepread-workflow@7fadfd53701f24d06076547dfb63fb76a31eaf64 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/heleninsights-dot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7fadfd53701f24d06076547dfb63fb76a31eaf64 -
Trigger Event:
push
-
Statement type:
File details
Details for the file phd_deepread_workflow-0.2.1-py3-none-any.whl.
File metadata
- Download URL: phd_deepread_workflow-0.2.1-py3-none-any.whl
- Upload date:
- Size: 40.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc55ec4533dd63fee8466981957fa25a9fae4545d5a0c633a93dc1c042183f8a
|
|
| MD5 |
56813ca3059382990316f9b3b22d67dd
|
|
| BLAKE2b-256 |
70247910dfc5718191abc329786ad1db87f9f5fefcc848c721ae4bc68954e954
|
Provenance
The following attestation bundles were made for phd_deepread_workflow-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on heleninsights-dot/phd-deepread-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
phd_deepread_workflow-0.2.1-py3-none-any.whl -
Subject digest:
dc55ec4533dd63fee8466981957fa25a9fae4545d5a0c633a93dc1c042183f8a - Sigstore transparency entry: 1543573431
- Sigstore integration time:
-
Permalink:
heleninsights-dot/phd-deepread-workflow@7fadfd53701f24d06076547dfb63fb76a31eaf64 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/heleninsights-dot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7fadfd53701f24d06076547dfb63fb76a31eaf64 -
Trigger Event:
push
-
Statement type: