paper-cli
Original:🇺🇸 English
Translated
Guide for using the `paper` CLI tool — a local academic paper management system with AI-powered vector search. Use this skill whenever the user wants to manage academic papers, create knowledge bases, add PDFs to a knowledge base, search papers semantically, configure embedding models, or manage literature metadata and notes. Also trigger when the user mentions "paper" CLI, knowledge bases for research, literature management, or wants to query their paper collection. Even if the user just says something like "add this PDF" or "search my papers" in a project that uses paper-manager, this skill should activate.
3installs
Sourceeurfelux/paper-manager
Added on
NPX Install
npx skill4agent add eurfelux/paper-manager paper-cliTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →paper CLI — Academic Paper Management
paperInstallation
The tool is published on npm as . It requires Node.js >= 24.
paper-managerbash
# Global install (recommended — makes `paper` available everywhere)
npm install -g paper-manager
# Or with pnpm
pnpm add -g paper-manager
# Verify installation
paper --versionAfter installing, run to see available commands. You'll need to configure an embedding model before using knowledge base features — see the Setup Workflow section below.
paper --helpCore Concepts
Scope: User vs Project
Every resource (config, knowledge base, literature) lives in one of two scopes:
- Project scope (default): stored in — tied to the current directory, good for project-specific paper collections
./.paper-manager/ - User scope (flag): stored in
--user— shared across all projects, good for a personal paper library~/.paper-manager/
Project-level config overrides user-level config. When looking up a knowledge base or literature, the tool checks project scope first, then falls back to user scope.
Data Hierarchy
Config (embedding models)
└── Knowledge Base (has a name, description, and embedding model)
└── Literature (a paper with metadata, PDF, and vector embeddings)
└── Notes (key-value pairs for personal annotations)You must configure an embedding model before creating a knowledge base, and you must create a knowledge base before adding literature.
Setup Workflow
Before using , configure at least one embedding model. The config value for is a JSON object mapping model IDs to their settings:
paperembeddingModelsbash
# Set up an embedding model (OpenAI-compatible provider)
paper config set embeddingModels '{"my-model": {"provider": "openai", "model": "text-embedding-3-small", "apiKey": "sk-...", "dimensions": 1536}}' --user
# Set a default model so you don't have to specify it every time
paper config set defaultEmbeddingModelId my-model --userThe embedding model config fields:
- : currently only
provider(works with any OpenAI-compatible API)"openai" - : the model name (e.g.,
model)"text-embedding-3-small" - : optional custom API endpoint
baseUrl - : API key for the provider
apiKey - : embedding vector dimensions (e.g., 1536)
dimensions
Command Reference
paper config — Configuration Management
bash
paper config list [--user] # Show all config (merged or user-only)
paper config get <key> [--user] # Get a specific config value
paper config set <key> <value> [--user] # Set a config value (value is parsed as JSON, falls back to string)
paper config remove <key> [--user] # Remove a config keyConfig keys:
- — a JSON object of
embeddingModels{ [modelId]: { provider, model, baseUrl?, apiKey, dimensions } } - — which model ID to use when none is specified
defaultEmbeddingModelId
paper kb — Knowledge Base Management
bash
# Create a knowledge base (requires an embedding model in config)
paper kb create <name> -d <description> [-e <embedding-model-id>] [--user]
# List knowledge bases
paper kb list [--user | --all]
# Remove a knowledge base and ALL its data (literatures, PDFs, vectors)
paper kb remove <id>
# Semantic search across a knowledge base
paper kb query <id> <query-text> [-k <top-k>] # default top-k is 5The for knowledge bases is a UUID assigned at creation time. Use to find it.
<id>paper kb listpaper lit — Literature Management
bash
# Add a paper (extracts PDF, splits text, creates embeddings)
paper lit add <kb-id> <pdf-path> [-t <title>]
# Title defaults to the PDF filename if not specified
# List papers in a knowledge base
paper lit list <kb-id>
# Show full details of a paper
paper lit show <kb-id> <lit-id>
# Update paper metadata
paper lit update <kb-id> <lit-id> [options]
# -t, --title <title>
# --title-translation <translation>
# -a, --author <author>
# --abstract <abstract>
# --summary <summary>
# --url <url>
# --keywords <comma-separated-keywords>
# Remove a paper (deletes DB record, PDF file; vectors remain in store)
paper lit remove <kb-id> <lit-id>paper lit note — Literature Notes
Notes are key-value string pairs attached to a literature entry — useful for personal annotations.
bash
paper lit note list <lit-id> # List all notes
paper lit note set <lit-id> <key> <value> # Set a note
paper lit note remove <lit-id> <key> # Remove a noteNote: the note commands take directly (not ).
<lit-id><kb-id> <lit-id>Common Workflows
First-time setup
- — configure embedding model
paper config set embeddingModels '<json>' --user - — set default model
paper config set defaultEmbeddingModelId <id> --user
Start a new research project
- — create a project-scoped KB
paper kb create "my-project" -d "Papers about X" - — add papers
paper lit add <kb-id> ./paper.pdf -t "Paper Title" - — search
paper kb query <kb-id> "your research question"
Manage paper metadata
- — find the literature ID
paper lit list <kb-id> paper lit update <kb-id> <lit-id> -a "Author Name" --keywords "ML,NLP"paper lit note set <lit-id> takeaway "Key insight from this paper"
Important Notes
- All IDs (knowledge base, literature) are UUIDs — always use commands to look them up
list - Adding a paper () extracts the PDF, splits it into chunks, and creates vector embeddings — this calls the embedding API and may take some time
lit add - The command is destructive: it deletes the knowledge base, all its literatures, PDFs, and vector stores
kb remove - The flag on
--user/configcontrols scope; omitting it uses project scopekb create - Config values passed to are parsed as JSON first; if JSON parsing fails, the raw string is stored
config set