Skip to main content

CLI tool for organizing books and PDFs with AI-powered metadata

Project description

wst — Wan Shi Tong

Wan Shi Tong

"I am Wan Shi Tong, he who knows ten thousand things."

Character from Avatar: The Last Airbender. Avatar: The Last Airbender is a trademark of Viacom International Inc. Image used for illustrative purposes only.


CLI tool for organizing books and PDFs with AI-powered metadata generation.

Named after Wan Shi Tong, the ancient spirit who collected every piece of knowledge in the world and guarded the great library in the desert. This tool aspires to do the same for your PDFs — just with less hostility toward humans.

Features

  • AI-powered metadata: Automatically extracts and completes metadata (title, author, type, year, summary, tags, etc.) using Claude CLI with web search for missing fields (year, ISBN, publisher)
  • Organized library: Files sorted by type (books/, papers/, notes/, exercises/, guides/) with consistent naming (Author - Title (Year).pdf)
  • SQLite search index: Full-text search across title, author, tags, subject, and summary via FTS5
  • Interactive browser: Fuzzy-search your library, view and edit metadata interactively
  • Cloud backup: Backup files to iCloud Drive (macOS/Windows), with extensible provider system for future S3 support
  • Extensible backends: Abstract layers for AI (Claude CLI, future API/SDK) and storage (local filesystem, future S3)

Installation

pipx (recommended, all platforms)

pipx install wst-library

pip

pip install wst-library

Homebrew (macOS/Linux)

brew tap cnexans/tap
brew install wst

Chocolatey (Windows)

choco install wst

From source

git clone https://github.com/cnexans/wst.git
cd wst
make install

Quick Start

# Ingest PDFs from a folder
wst ingest ~/Documents/papers/

# Ingest from current directory
wst ingest .

# Ingest from default inbox (~/wst/inbox/)
wst ingest

# Ingest with manual confirmation for each file
wst ingest --confirm

# Re-ingest files with fresh AI metadata (e.g. after enabling web search)
wst ingest --reprocess

# Search
wst search "machine learning"
wst search --author "Knuth"
wst search --type textbook
wst search --subject "Mathematics"

# List all documents
wst list
wst list --type paper --sort year

# Show full details
wst show 1
wst show "Design Patterns"

# Interactive browser — fuzzy search, view and edit metadata
wst browse

# Edit a specific document
wst edit 1
wst edit "Player's Handbook"

# Backup to iCloud
wst backup icloud                    # interactive: all or select file
wst backup icloud 1                  # backup specific file by ID
wst backup icloud "Player's Handbook" # backup by title
wst backup                           # interactive: choose provider

Commands

Command Description
wst ingest [PATH] [--confirm] [--reprocess] Ingest PDFs from a path or the inbox, generate metadata with AI
wst search <query> [--author] [--type] [--subject] Full-text search across the index
wst list [--type] [--sort] List all documents in the library
wst show <id-or-title> Show complete metadata for a document
wst edit <id-or-title> Interactively edit metadata for a document
wst browse Interactive TUI for browsing and editing documents
wst backup [provider] [id-or-title] Backup files to a cloud provider (iCloud, future S3)

Library Structure

~/wst/
├── inbox/           # PDFs pending ingestion
└── library/
    ├── books/       # book, novel, textbook
    ├── papers/      # paper
    ├── notes/       # class-notes
    ├── exercises/   # exercises
    ├── guides/      # guide-theory, guide-practice
    └── wst.db       # SQLite index

Documentation

See docs/README.md for architecture details and diagrams.

Requirements

  • Python 3.11+
  • claude CLI (authenticated) for AI metadata generation
  • macOS, Windows, or Linux

License

MIT with Commons Clause — free to use, modify, and distribute. Commercial sale rights reserved to the author. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wst_library-0.3.0.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wst_library-0.3.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file wst_library-0.3.0.tar.gz.

File metadata

  • Download URL: wst_library-0.3.0.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for wst_library-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b6cf74376ddf359dfd584931181be6e557927566a1bcf2421e3af9605a97a8bb
MD5 0536060e4b6f1750ad5d3d849a425147
BLAKE2b-256 dd6ff449cc9cab9661ff23b92dfd9cee202c935a49c2c7319b37940d645c338f

See more details on using hashes here.

File details

Details for the file wst_library-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: wst_library-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for wst_library-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e5b9fa737a199263b1d0698d6220003065afdb050f841a46b8fe2ac34921f91
MD5 6db50f97481494c4484d25c97b341777
BLAKE2b-256 1f4cbffb7294b5941b98863b0ab6cb5529de4d1dcaf28d47e6f8e87ff6fbea17

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page