No description
Find a file
2026-05-01 11:47:12 +08:00
.planning chore: bump version to v1.4.12 2026-04-30 14:12:45 +08:00
command fix: VaultStep.__init__ missing step_id and checker in super() call 2026-04-27 19:49:36 +08:00
docs fix: update pip installs from GitHub source instead of package index 2026-04-29 00:16:13 +08:00
paperforge chore: remove legacy i18n.js (i18n inlined in main.js) 2026-05-01 11:47:12 +08:00
scripts feat: complete i18n refactor + automated release script 2026-04-30 13:55:54 +08:00
tests chore: bump version to v1.4.13 2026-05-01 11:14:59 +08:00
.gitignore gitignore: add .worktrees/ 2026-04-28 16:02:04 +08:00
.pre-commit-config.yaml feat(17-dead-code-precommit): add ruff config, pre-commit hooks, Check 5, and OCR error context 2026-04-27 17:29:13 +08:00
AGENTS.md docs: add developer guide (version bump, release, i18n, pre-commit) 2026-04-30 13:33:48 +08:00
CHANGELOG.md chore: bump version to v1.4.13 2026-05-01 11:14:59 +08:00
CONTRIBUTING.md chore: rename PaperForge Lite -> PaperForge across 27 files 2026-04-28 01:25:51 +08:00
LICENSE docs: add CC BY-NC-SA 4.0 license and acknowledgments 2026-05-01 11:37:50 +08:00
paperforge.json refactor: __init__.py as single version source; pyproject.toml reads dynamically; paperforge.json drops version field 2026-04-28 22:41:48 +08:00
pyproject.toml docs: add CC BY-NC-SA 4.0 license and acknowledgments 2026-05-01 11:37:50 +08:00
README.md docs: sync license and acknowledgments in Chinese README; fix license badge 2026-05-01 11:39:14 +08:00
README.zh-CN.md docs: sync license and acknowledgments in Chinese README; fix license badge 2026-05-01 11:39:14 +08:00
requirements.txt fix: add textual to requirements.txt 2026-04-23 00:09:00 +08:00
setup_wizard.py chore: rename PaperForge Lite -> PaperForge across 27 files 2026-04-28 01:25:51 +08:00
token-usage-output.txt fix: restructure skills — separate pf-deep/pf-paper, add prefix substitution, create config_file on deploy 2026-04-28 18:33:11 +08:00

    ______  ___  ______ _________________ ___________ _____  _____
    | ___ \/ _ \ | ___ \  ___| ___ \  ___|  _  | ___ \  __ \|  ___|
    | |_/ / /_\ \| |_/ / |__ | |_/ / |_  | | | | |_/ / |  \/| |__
    |  __/|  _  ||  __/|  __||    /|  _| | | | |    /| | __ |  __|
    | |   | | | || |   | |___| |\ \| |   \ \_/ / |\ \| |_\ \| |___
    \_|   \_| |_/\_|   \____/\_| \_\_|    \___/\_| \_|\____/\____/

PaperForge

Version Python License

简体中文 · English

Obsidian + Zotero literature pipeline. One plugin install, no terminal required.

Download plugin → Enable in Obsidian → Open wizard → Fill config → Click Install → Done

"From PDF to structured reading notes — all inside Obsidian."


What PaperForge Does

PaperForge turns your Zotero library into an AI-ready literature knowledge base:

Layer What you get How to use it
Literature index Structured notes with frontmatter (title, authors, journal, DOI, tags, abstract) Search, browse, filter via Base views
Full-text corpus OCR-extracted markdown (fulltext.md) Feed to LLMs for RAG or question answering
Figure database Figure-map with images + captions for every chart/table Multimodal AI: "show me Figure 3 and explain"
Deep reading AI-written 3-pass analysis with chart review and critical evaluation Literature synthesis, systematic reviews

Install

  1. Download the plugin files from the latest release

  2. Copy into your vault: {vault}/.obsidian/plugins/paperforge/

  3. Enable in Obsidian: Settings → Community Plugins → PaperForge

  4. Open the wizard: Settings → PaperForge → "打开安装向导"

  5. Follow 5 steps: Overview → Directory Config → Agent & Keys → Install → Done

The wizard auto-detects Python, Zotero, and Better BibTeX before starting.

Prerequisites

Software Purpose Get it
Python 3.9+ Run PaperForge CLI https://python.org
Zotero Literature management https://zotero.org
Better BibTeX Zotero plugin for JSON export https://retorque.re/zotero-better-bibtex/
PaddleOCR Key OCR text extraction https://aistudio.baidu.com/paddleocr

CLI (Advanced)

cd /path/to/your/vault
pip install git+https://github.com/LLLin000/PaperForge.git
python -m paperforge setup --headless --agent opencode --paddleocr-key <key>

Usage (All in Obsidian)

Action How
Open Dashboard Ctrl+P → "PaperForge: Open Dashboard", or click sidebar book icon
Sync Literature Dashboard → "Sync Library" — pulls from Zotero, generates notes
Run OCR Dashboard → "Run OCR" — extracts full text & figures
Deep Read /pf-deep <zotero_key> — AI 3-pass analysis (must run in AI agent)
Quick Query /pf-paper <zotero_key> — fast paper Q&A

Dashboard

┌──────────────────────────────────┐
│  PaperForge                   ↻  │
│                                  │
│  [Papers: 550] [Notes: 520] [...]│
│                                  │
│  OCR Pipeline  [Active]          │
│  ████████████░░░░░░░ 80%         │
│  Pending: 10  Active: 2  Done: 8│
│                                  │
│  Quick Actions                   │
│  [Sync Library] [Run OCR]        │
└──────────────────────────────────┘

Commands

Obsidian Command Palette (Ctrl+P)

Command Description
PaperForge: Open Dashboard Open status panel with metrics and quick actions
PaperForge: Sync Library Sync Zotero and generate notes
PaperForge: Run OCR Extract PDF full text and figures

Agent Commands

Command Description Requires
/pf-deep <key> Full 3-pass deep reading OCR complete
/pf-paper <key> Quick Q&A Formal note exists
/pf-sync Sync Zotero Installed
/pf-ocr Run OCR Installed
/pf-status System status Installed

CLI (Optional)

Command Description
paperforge sync Sync Zotero, generate notes
paperforge ocr Run OCR
paperforge status System overview
paperforge doctor Diagnose configuration
paperforge update Auto-update

Supported Agent Platforms

Platform Agent Commands Setup
OpenCode Full support (all /pf-* commands) .opencode/command/ + .opencode/skills/
Claude Code /pf-deep, /pf-paper .claude/skills/
Cursor /pf-deep, /pf-paper .cursor/skills/
GitHub Copilot /pf-deep, /pf-paper .github/skills/
Windsurf /pf-deep, /pf-paper .windsurf/skills/
Codex $pf-deep, $pf-paper .codex/skills/
Cline /pf-deep, /pf-paper .clinerules/

Select your platform in the wizard — files are deployed automatically.


Configuration

All config is handled by the setup wizard. Generated files:

vault/
├── paperforge.json          ← directory config + agent platform
├── System/
│   └── PaperForge/
│       ├── .env             ← PaddleOCR API key
│       ├── exports/         ← Better BibTeX JSON exports go here
│       └── config/          ← domain-collections.json
├── Resources/
│   ├── Notes/               ← formal literature notes (metadata + deep reading)
│   └── Index_Cards/         ← index records (one per paper, by domain)
└── Base/                   ← Obsidian Base views (filterable table views)

Environment variables (optional overrides):

Variable Default Description
PADDLEOCR_API_TOKEN PaddleOCR API Key
PAPERFORGE_LOG_LEVEL INFO Logging level

Update

Auto-update on every Obsidian restart (can be disabled in plugin settings). Or manually:

paperforge update
# or
pip install --upgrade git+https://github.com/LLLin000/PaperForge.git

Documentation

Document Content
Setup Guide Step-by-step from zero to running
Quick Install Concise install instructions
Post-Install Guide First-time user guide and workflow
Changelog Version history
Contributing Dev setup and conventions

License

CC BY-NC-SA 4.0 — Non-commercial use only. See LICENSE for details.


Acknowledgments

PaperForge stands on the shoulders of these excellent projects:

Project Role
PaddleOCR / PaddleOCR-VL PDF OCR engine — text extraction, layout detection, figure segmentation
Obsidian Note-taking platform — plugin host, vault file structure
Better BibTeX for Zotero Auto-export citation data as JSON
PyMuPDF (fitz) Local PDF validation and sanitization
requests HTTP client for OCR API
tenacity Retry logic with exponential backoff
Pillow Image processing for figure assets
tqdm Progress bars
textual TUI components (diagnostic wizard)