Bookmark Toolkit (BTK)¶
A modern, database-first bookmark manager with powerful features for organizing, searching, and analyzing your bookmarks.
Key Features¶
Interactive Shell with Virtual Filesystem¶
BTK's flagship feature - an interactive shell that lets you browse bookmarks like files in a Unix filesystem:
$ btk shell
btk:/$ ls
bookmarks/ (100) All bookmarks
tags/ Browse by tag hierarchy
starred/ (15) Starred bookmarks
unread/ (42) Bookmarks never visited
popular/ (100) 100 most visited bookmarks
recent/ Recently active (time-based)
btk:/$ cd tags/programming/python
btk:/tags/programming/python$ ls
web/ data-science/ testing/
3298 4095 5124 5789
btk:/tags/programming/python$ recent visited
# Shows recently visited Python bookmarks
btk:/tags/programming/python$ cd 4095
btk:/tags/programming/python/4095$ star
★ Starred bookmark #4095
Shell Features:
- Virtual filesystem with
/bookmarks,/tags,/starred,/archived,/recent,/domains - Unix-like navigation:
cd,ls,pwd,mv,cp - Context-aware commands that adapt based on your location
- Hierarchical tag browsing (e.g.,
/tags/programming/python/web) - Tag operations: rename with
mv, bulk tag withcp - Activity tracking:
recent visited/added/starred
Powerful Command-Line Interface¶
Organized grouped commands for scripting and automation:
# Bookmark operations
btk bookmark add https://example.com --tags "python,tutorial"
btk bookmark list --starred --tags python
btk bookmark search "machine learning" --in-content
# Tag management
btk tag tree # Hierarchical tag view
btk tag rename old-tag new-tag # Rename globally
btk tag copy important --starred # Bulk tagging
# Content operations
btk content refresh --all --workers 50
btk content auto-tag --all --apply
# Import/Export
btk import html bookmarks.html
btk export html bookmarks.html --hierarchical
# Database management
btk db info
btk db dedupe --strategy merge
Hierarchical Tag System¶
Organize bookmarks with hierarchical tags using / separators:
programming/python/web/django
programming/python/data-science/pandas
research/machine-learning/nlp
tutorial/video/beginner
Benefits:
- Navigate tags like directories in the shell
- Filter by tag prefix (e.g., all
programming/pythonbookmarks) - Export as browser-compatible folders
- Rename/reorganize entire tag hierarchies
- Multi-dimensional organization
Advanced Features¶
Content Caching & Search¶
- Automatic caching - Fetches and stores HTML/markdown content
- PDF support - Extracts text from PDF bookmarks
- Full-text search - Search within cached content
- Compression - zlib compression (70-80% reduction)
- Offline access - View cached content without internet
Auto-Tagging with NLP¶
- TF-IDF analysis - Analyzes content to suggest relevant tags
- Confidence scoring - Shows confidence for each suggested tag
- Preview mode - Review suggestions before applying
- Bulk operations - Auto-tag entire collection
Database Management¶
- SQLite backend - Fast, reliable, and portable
- ACID transactions - Data integrity guaranteed
- Deduplication - Find and merge duplicate bookmarks
- Statistics - Track usage patterns and health metrics
- Optimization - Vacuum and optimize database
Import & Export¶
Import from:
- Browser HTML exports (Chrome, Firefox, Safari)
- JSON, CSV, Markdown, plain text
- Direct browser import (Chrome, Firefox, Safari)
Export to:
- Hierarchical HTML (browser-compatible folders)
- JSON (full metadata preservation)
- CSV (data analysis)
- Markdown (documentation)
Graph Analysis¶
- Similarity graphs - Build weighted bookmark relationship networks
- Multiple metrics - Domain similarity, tag overlap, direct links
- Export formats - GEXF (Gephi), GraphML (yEd), JSON (Cytoscape)
- Visualization - Analyze bookmark relationships
Why BTK?¶
Modern Architecture¶
- SQLAlchemy ORM - Clean, maintainable database layer
- SQLite backend - Fast queries, ACID compliance, portability
- Grouped CLI - Organized command structure
- Rich terminal output - Beautiful tables and formatting
- Comprehensive testing - 515 tests, >80% core coverage
Powerful Yet Simple¶
Simple enough for daily use:
btk shell # Interactive exploration
btk bookmark add https://.. # Quick additions
btk bookmark search "term" # Fast searches
Powerful enough for advanced workflows:
# Bulk import and organize
btk import html bookmarks.html
btk content refresh --all --workers 50
btk content auto-tag --all --apply --threshold 0.7
# Complex queries
btk bookmark query "stars = true AND visit_count > 10"
# Graph analysis
btk graph build --min-edge-weight 4.0
btk graph export network.gexf --format gexf
Flexible Organization¶
- Multi-tagging - One bookmark, many tags
- Hierarchical structure - Organize tags in trees
- Smart collections - Starred, archived, recent
- Domain-based browsing - View by website
- Content-based search - Find by cached content
Privacy & Control¶
- Local-first - Your data stays on your machine
- No cloud dependency - Works offline
- Open source - MIT licensed
- Portable - Single SQLite database file
- No tracking - Your bookmarks are private
Quick Start¶
Installation¶
Initialize¶
Choose Your Interface¶
Perfect for exploration and interactive organization:
Use Cases¶
Personal Knowledge Management¶
Organize technical articles, tutorials, and documentation:
programming/
├── python/
│ ├── web/django
│ ├── data-science/pandas
│ └── testing/pytest
├── javascript/
│ ├── react
│ └── node
└── databases/
├── postgresql
└── redis
Research & Academia¶
Manage papers, datasets, and research resources:
research/
├── machine-learning/
│ ├── nlp/transformers
│ ├── computer-vision/cnn
│ └── reinforcement-learning/dqn
├── papers/
│ ├── to-read
│ ├── reading
│ └── completed
└── datasets/
├── image
└── text
Project Management¶
Track project resources and references:
projects/
├── website-redesign/
│ ├── inspiration
│ ├── tools
│ └── resources
├── ml-classifier/
│ ├── papers
│ ├── datasets
│ └── libraries
└── mobile-app/
├── react-native
└── apis
Content Curation¶
Build curated bookmark collections:
# Export curated lists
btk export html python-resources.html --filter-tags "python" --hierarchical
btk export markdown weekly-readings.md --filter-tags "to-read"
# Share collections
btk export json collection.json --starred --filter-tags "featured"
Documentation¶
Getting Started¶
- Installation - Install BTK
- Quick Start - Get up and running
- Configuration - Configure BTK
User Guide¶
- Interactive Shell - Virtual filesystem interface
- Core Commands - CLI reference
- Tags & Organization - Hierarchical tags
- Import & Export - Data portability
- Search & Query - Find bookmarks
- Content Caching - Offline access
- Graph Analysis - Visualize relationships
Advanced¶
- Plugin System - Extend functionality
- Browser Integration - Browser sync
- Database Management - Manage data
- Performance Tuning - Optimize speed
Reference¶
- CLI Reference - Complete command list
- Python API - Use BTK in Python
- Architecture - How BTK works
- Contributing - Help develop BTK
Community & Support¶
- GitHub: queelius/bookmark-tk
- Issues: Report bugs or request features
- PyPI: bookmark-tk
- Documentation: https://queelius.github.io/bookmark-tk/
Recent Updates¶
v0.7.1 - Smart Collections & Time-Based Navigation (October 2025)¶
- Smart Collections - 5 new auto-updating virtual directories
/unread- Bookmarks never visited/popular- Top 100 most visited bookmarks/broken- Unreachable bookmarks/untagged- Bookmarks without tags/pdfs- PDF document bookmarks- Time-Based Recent - Hierarchical time navigation
- Browse by period: today, yesterday, this-week, last-week, this-month, last-month
- Filter by activity: visited, added, starred
- 6 time periods × 3 activity types = 18 browsable directories
- Enhanced organization - Find and organize bookmarks more efficiently
- Collection counts - See bookmark counts at a glance in
lsoutput
Shell Guide → | Full Changelog →
v0.7.0 - Interactive Shell & Major Refactoring (October 2025)¶
- New interactive shell with virtual filesystem
- Hierarchical tag navigation - Browse tags like directories
- Grouped CLI structure - Organized commands
- Context-aware commands - Commands adapt to location
- Tag operations -
mvfor renaming,cpfor copying - Activity tracking -
recentcommand with filters - 515 tests - Comprehensive test suite
- >80% coverage - Core modules thoroughly tested
License¶
MIT License - see LICENSE for details.
Author¶
Developed by Alex Towell
Ready to organize your bookmarks? Get Started →