PaperHub is an Obsidian-first paper library built around one rule: one paper, one folder, one metadata file.
organized/
`-- melitz2003trade/
|-- melitz_2003.pdf
|-- melitz2003trade.md
`-- ai_summary.md
The folder keeps the PDF, metadata, reading status, tags, and optional AI summary together. This makes the library easy to browse, link, and manage in Obsidian, especially through Papers.base and Obsidian Bases.
AI integration handles the organizing work. Drop PDFs into to_be_organized/, run the paper-summarizer skill in your coding agent, and PaperHub creates the folder, metadata note, canonical tags, and optional ai_summary.md automatically.
New to the workflow? Start with Obsidian 101, then open Papers.base in Obsidian to browse the library.
Use the best model available for this one-time setup. Routine paper runs can use a faster or cheaper model.
- Check prerequisites:
- Git is installed and configured.
- You have a coding agent such as Claude Code, Codex, or Cursor.
- You have an Obsidian vault where this paper library should live.
- Open Terminal and move to the parent folder where
PaperHubshould be created. This should be your Obsidian vault, or a folder inside your Obsidian vault:
cd "/path/to/your/ObsidianVault"- Clone the template into that folder:
git clone --depth 1 https://github.com/howieeeeeeeeee/paper-management-system.git PaperHub
cd PaperHub
rm -rf .git
git init -b main
git add -A
git commit -m "chore(setup): initialize PaperHub"- Go to your Obsidian, open onboarding_questionnaire.md, fill the sections that matter to you, and change the frontmatter status to:
status: ready_for_agent- Open your coding agent from the
PaperHubfolder and paste:
Use the paper-summarizer skill to onboard this project from scratch.
After onboarding, add one or a few PDFs to to_be_organized/, then ask your coding agent:
paper-summarizer: metadata-only batch for everything in to_be_organized/.
Save a terminal snippet (e.g. Alfred Terminal Command with keyword pp, or Raycast). Command:
cd "/Users/howieee/Library/Mobile Documents/iCloud~md~obsidian/Documents/Howie iCloud/EconPhD/PaperHub" && claude --model claude-haiku-4-5-20251001Optional: append --dangerously-skip-permissions if permission prompts break long skill runs—only when you fully trust that session.
Run all commands from the repository root. Reference paths are relative pointers only: use to_be_organized/ for new PDFs and organized/<folder>/ for existing paper folders.
| Scenario | Reference | Mode | Prompt |
|---|---|---|---|
| Many papers, ingest first | to_be_organized/ |
metadata-only |
paper-summarizer: metadata-only batch for everything in to_be_organized/. |
| Metadata plus summaries | to_be_organized/ |
full |
paper-summarizer: organize new PDFs in to_be_organized/ - full summary. |
For enrich runs, extra instructions, citation hints, and model-specific examples, see quick_start/use-cases.md.
organized/
`-- melitz2003trade/
|-- melitz_2003.pdf
|-- melitz2003trade.md
`-- ai_summary.md
Each paper folder contains the original PDF and a metadata note. Full and enrich runs also create or refresh ai_summary.md.
Four tag types are stored in each paper's YAML tags:: field, methodology, topic, and meta.
Two ways to shape tags:
onboarding_questionnaire.md: the first-run starter taxonomy. Edit the "Starter Tag Taxonomy" section before onboarding; the agent uses those lists directly when it creates the initial tag registry.tags/tag_initialization.md: optional later bulk additions after onboarding. Ask the agent to create or process this file, then edit one tag per line under each## typeheading and set the frontmatter tostatus: ready.- Edit a paper metadata file directly in Obsidian. Open any organized paper's
{paperlabel}.mdfile and add a tag to its YAMLtags:list. New tags are incorporated into the canonical registry on the next tag-update flow.
While generating the metadata for a paper PDF, the model is nudged to reuse canonical tag strings during summarization.
tags/tags_summary.md is the human-facing table. For now, you can change a tag's type there to reclassify it. The skill keeps tags/_internal/registry.json in sync when tag flows run.
- Obsidian 101 explains the core workflow: link papers with their metadata note label, edit properties like
status,interest, andtags, and use Bases as the dashboard. - To customize AI-generated metadata fields, edit paperhub_utils/prompt/shared/metadata_template.txt. For summary shape and style, see paperhub_utils/README.md.
- quick_start/obsidian_101.md: short guide to Obsidian links, paper metadata, and
Papers.base. - quick_start/use-cases.md: complete prompt cookbook for common paper workflows.
- Papers.base: main Obsidian Bases dashboard for reading queues and topic views.
- onboarding_questionnaire.md: user-facing onboarding intake, deleted after successful onboarding.
- paperhub_utils/.env.example: template for local API keys; copy it to
paperhub_utils/.env. - paperhub_utils/misc/config.json: runtime preferences.
- paperhub_utils/config.py: script constants and research interests.