Portfolio / Python lane / Bookmark-Organizer-Pro
PY

Bookmark-Organizer-Pro

AI-powered bookmark manager and categorizer

Python
Delivery
Source-first
Browse code, README, and release notes on GitHub.
Primary lane
Python lane
The clearest adjacent context for this project inside the portfolio.
Freshness
Updated Jun 8, 2026
Latest release
v6.8.0
Published Jun 8, 2026

Preview

Using the generated project card as a clean fallback until a live capture is available.

Bookmark-Organizer-Pro card

Source at github.com/SysAdminDoc/Bookmark-Organizer-Pro.

README

Cached at build time, cleaned up for in-site reading, and linked back to the canonical GitHub source.

18 min read 3,772 words 103 sections
Contents
  1. Bookmark Organizer Pro v6.7.0
  2. What's new in v6.7.0
  3. What's new in v6.6.30
  4. What's new in v6.6.29
  5. What's new in v6.6.28
  6. What's new in v6.6.27
  7. What's new in v6.6.26
  8. What's new in v6.6.25
  9. What's new in v6.6.24
  10. What's new in v6.6.23
  11. What's new in v6.6.22
  12. What's new in v6.6.21
  13. What's new in v6.6.20
  14. What's new in v6.6.19
  15. What's new in v6.6.18
  16. What's new in v6.6.17
  17. What's new in v6.6.16
  18. What's new in v6.6.15
  19. What's new in v6.6.14
  20. What's new in v6.6.13
  21. What's new in v6.6.12
  22. What's new in v6.6.11
  23. What's new in v6.6.10
  24. What's new in v6.6.9
  25. What's new in v6.6.8
  26. What's new in v6.6.7
  27. What's new in v6.6.6
  28. What's new in v6.6.5
  29. What's new in v6.6.4
  30. What's new in v6.6.3
  31. What's new in v6.6.2
  32. What's new in v6.6.1
  33. What's new in v6.6.0
  34. What's new in v6.0.0
  35. v6 highlights
  36. MCP setup
  37. v6 CLI quickstart
  38. Browser extension MVP
  39. Features
  40. Core Features
  41. AI Features
  42. UI/UX
  43. Data Management
  44. Bookmark Intelligence
  45. Installation
  46. Requirements
  47. Quick Start
  48. Dependencies
  49. Manual Installation
  50. Usage
  51. Basic Operations
  52. Adding Bookmarks
  53. Importing Bookmarks
  54. Searching
  55. Keyboard Shortcuts
  56. AI Configuration
  57. Safety Notes
  58. Theme Customization
  59. Configuration
  60. File Locations
  61. Settings File Format
  62. Environment Variables
  63. Troubleshooting
  64. Common Issues
  65. "Module not found" errors
  66. Favicons not loading
  67. High CPU usage
  68. Blurry text on Windows
  69. Import fails with encoding error
  70. AI features not working
  71. Log Files
  72. Backup and Recovery
  73. Reset to Defaults
  74. API Reference
  75. Command Line Interface
  76. Python API
  77. Contributing
  78. Code Style
  79. License
  80. Acknowledgments
  81. Version History
  82. v6.0.0 (April 2026)
  83. v5.2.2 (April 2026)
  84. v5.2.1 (April 2026)
  85. v5.2.0 (April 2026)
  86. v5.1.0 (April 2026)
  87. v5.0.0 (April 2026)
  88. v4.10.0 (April 2026)
  89. v4.9.0 (April 2026)
  90. v4.8.0 (April 2026)
  91. v4.7.0 (April 2026)
  92. v4.6.0 (April 2026)
  93. v4.1.0 (January 2026)
  94. v4.0.0 (January 2026)
  95. Building Standalone Executable
  96. Prerequisites
  97. Build Commands
  98. Build Output
  99. Customizing the Build
  100. Build Size Optimization
  101. Icon Files
  102. Code Signing (Optional)
  103. File Manifest

Bookmark Organizer Pro v6.7.0

A powerful, professional-grade bookmark manager with AI-powered categorization, multi-theme support, advanced organization, local semantic search, MCP server integration, single-file HTML snapshots, research-trail flows, and citation-aware AI summaries.

Version Python Platform License MCP

Bookmark Organizer Pro Screenshot

What's new in v6.7.0

  • DeepSeek (and all OpenAI-compatible) AI works in the packaged build — the openai SDK is now bundled in the Windows executable, so DeepSeek categorization, tagging, and summaries run from the .exe without a separate Python install.
  • Bookmark list selection fixed — clicking a row now reliably selects it for toolbar and right-click actions (the visual highlight and the actionable selection are back in sync).
  • Right-click context menu restored — right-clicking a bookmark opens the full actions menu (open, edit, move, AI tools, pin, delete) again.
  • Premium UI polish — unified typography scale, contrast-aware text colors, and consistent theming across the table, sidebar, dialogs, and toasts.

What's new in v6.6.30

  • MCP HTTP compatibility — Streamable HTTP mirrored headers are now optional for standard MCP clients, while mismatched provided headers still return a validation error.

What's new in v6.6.29

  • MCP stdio contract smoke — the test suite now launches the MCP server over subprocess stdio and verifies chat_with_collection_stream contract metadata is visible to an MCP ClientSession.

What's new in v6.6.28

  • MCP stream contract metadatachat_with_collection_stream now exposes a stable stream contract version and event types in both tool metadata and final payloads for raw and FastMCP clients.

What's new in v6.6.27

  • Updater apply planupdates plan now prints the staged update, install directory, rollback directory, planned actions, and blockers without mutating files.

What's new in v6.6.26

  • Updater staged cleanupupdates clean-staged removes the staged update manifest and cached staged target files without touching trusted metadata or application files.

What's new in v6.6.25

  • Updater apply preflightupdates apply --dry-run now reports staged update readiness and explicit blockers without extracting, installing, or replacing application files.

What's new in v6.6.24

  • Updater staging manifest — successful updater downloads now write a staged_update.json manifest, and updates staged reports whether the cached target files are still present before any future apply workflow.

What's new in v6.6.23

  • Updater download stagingupdates download now checks trusted tufup metadata and stages selected target files in the update cache without extracting, installing, or applying them. updates apply remains blocked until install isolation, rollback, and user confirmation are covered.

What's new in v6.6.22

  • Desktop graph view — the Tools menu and command palette now open a canvas graph of bookmarks, tags, categories, and domains with pan/zoom, node selection, bookmark opening, and JSON export.

What's new in v6.6.21

  • Graph export foundation — bookmark/tag/category/domain relationships can now be exported as deterministic force-layout JSON through graph-export, ready for the desktop graph view.

What's new in v6.6.20

  • Desktop reader pane — selected bookmarks can now open a Tk-native reader view for extracted text, with selection-based highlights, notes, deletion, and Markdown export from the GUI.

What's new in v6.6.19

  • Reader highlight foundation — extracted text can now carry durable highlight ranges, four-color labels, notes, and Markdown export through the new reader CLI command group.

What's new in v6.6.18

  • Optional Sun Valley ttk base — installing the sunvalley extra enables sv-ttk as the native ttk base theme, automatically choosing light or dark mode before the existing Bookmark Organizer Pro color overrides are applied.

What's new in v6.6.17

  • Live MCP progress bridge — FastMCP chat stream calls now bridge chunk callbacks to progress notifications while the tool runs, with an in-process FastMCP client smoke covering the notification path.

What's new in v6.6.16

  • MCP chat progress notifications — the FastMCP chat_with_collection_stream tool now emits progress notifications from ordered chat stream chunks when a client supplies an MCP progress token, while keeping the same final event payload for all clients.

What's new in v6.6.15

  • Provider streaming adapters — OpenAI-compatible providers and Ollama now expose stream_complete() deltas, and the MCP chat stream tool reports provider_stream_events when RAG answer events come from native provider streaming.

What's new in v6.6.14

  • MCP chat response events — added chat_with_collection_stream, which returns ordered chunk/complete events for clients that want progressive RAG answer rendering while preserving the current final-answer path.

What's new in v6.6.13

  • Loopback OPDS route — the local API now serves GET /opds as an OPDS acquisition feed with tag/category/title/limit filters for local catalog clients.

What's new in v6.6.12

  • OPDS export — added opds-export and an OPDS 1.2 acquisition feed exporter for e-reader catalog clients, with open-access links to bookmark URLs and EPUB/PDF/HTML media type inference.

What's new in v6.6.11

  • Updater bootstrap guide — documented tufup repository setup, trusted root placement, target naming, status/check commands, and explicit download/apply refusal gates.

What's new in v6.6.10

  • Non-applying update checksupdates check now uses tufup's trusted metadata client path when a local root.json is present, returning structured availability without downloading or applying binaries.

What's new in v6.6.9

  • Updater policy foundation — added a disabled-by-default updates CLI and bookmark-organizer-pro[updates] extra for tufup-backed update readiness. Update repositories must use HTTPS and checks remain opt-in.

What's new in v6.6.8

  • Nuitka compile smoke — the build helper now has a --target smoke path that produces a small console artifact with app metadata, icon/data inclusion, and --version validation. The local standalone smoke compile completed with MSVC and the generated executable reported v6.6.8.

What's new in v6.6.7

  • Bounded Nuitka builds — the Nuitka helper now emits a conservative --jobs=4 default with --jobs N override, and the local toolchain was verified with Nuitka 4.1.2 plus MSVC detection.

What's new in v6.6.6

  • Nuitka build path — added packaging/nuitka_build.py with dry-run support, Tkinter plugin, asset inclusion, icon handling, Windows metadata flags, and an optional nuitka package extra.

What's new in v6.6.5

  • Opt-in SQLite backend selectionBookmarkManager can now run against SQLite via storage_backend="sqlite", .sqlite/.db file paths, or BOOKMARK_STORAGE_BACKEND=sqlite; JSON remains the default.

What's new in v6.6.4

  • SQLite migration foundation — added an opt-in WAL-enabled SQLite bookmark store and sqlite-migrate command that copies the current JSON library into a sibling SQLite database without changing the default JSON workflow.

What's new in v6.6.3

  • MCP Streamable HTTP — opt-in mcp-http-server exposes the MCP server over loopback Streamable HTTP with stateless HTTP enabled and Mcp-Method/Mcp-Name header validation.

What's new in v6.6.2

  • MCP stateless readiness — stdio MCP now runs in SDK stateless mode, and both raw SDK and FastMCP tool catalogs expose cache hints, read/write annotations, and stateless metadata.

What's new in v6.6.1

  • FastMCP 3.4 compatibility — MCP optional dependencies now target FastMCP 3.4.x and MCP SDK 1.24+, with the server builder verified against FastMCP 3.4.2.

What's new in v6.6.0

  • Virtualized bookmark list — the main list now uses tksheet for canvas-backed visible-row rendering, preserving selection, context menus, sorting, and zoom while avoiding full ttk.Treeview row churn on large libraries.
  • Release metadata sync guard — package, extension, PyInstaller, and Windows version metadata are checked together so future releases do not drift.

What's new in v6.0.0

Major release. 18 new backend service modules and 20 new CLI subcommands. Every new capability is gated behind optional dependencies that degrade gracefully when missing, so the v5.x feature set keeps working with no extra installs. See CHANGELOG.md and docs/COMPETITIVE_RESEARCH.md.

v6 highlights

  • MCP server — expose your bookmark library as a Model Context Protocol server. MCP-compatible clients can now search_bookmarks, semantic_search, chat_with_collection, summarize_bookmark, and 23 other tools directly. Run with python -m bookmark_organizer_pro.mcp_server.
  • Local semantic search + hybrid RRFlancedb vector store fronted by an embedder chain (fastembedmodel2vecsentence-transformers). Hybrid search fuses BOP's keyword engine with vectors via Reciprocal Rank Fusion. All local, all optional.
  • Single-file HTML snapshotsmonolith (Rust) → single-file (Node) → built-in BS4 inliner fallback chain. Each snapshot is a portable, self-contained HTML file stored alongside the bookmark.
  • Citation-aware AI summaries — LLM emits inline [#cN] tokens that resolve to specific text spans in the source page. Click-to-source highlighting in the UI; trustworthy at a glance.
  • Conversational RAG over your collection — single-turn or chat history; can be restricted to a subset of bookmark IDs.
  • NL → structured query — type "unread Rust articles I saved last month"; an LLM fills a typed query schema, validated and executed locally. Never runs LLM-generated SQL.
  • Tag normalization linter — detects near-duplicate tags, casing drift, and singular/plural variants. Knows 14 canonical aliases.
  • Hybrid duplicate detector — URL canonical → SimHash → embedding cosine, layered review queue (never auto-merges).
  • Trafilatura-based ingest — extracts text, reading time, language, content type at save time. Powers the search/summary/chat features without LLM cost.
  • Per-bookmark ZIP exporter (Readeck-style) — portable archive with metadata + notes + snapshot + extracted text.
  • Encrypted-DB toggle — AES-256-GCM via PBKDF2-HMAC-SHA256.
  • Scheduled dead-link scanner — background daemon, persistent queue.
  • Daily digest — on-this-day, this-week-last-year, rediscover, read- later, stale-but-loved (Shaarli-inspired).
  • Flows / research trails — ordered, annotated bookmark sequences (Grimoire-inspired). Different mental model from tags + folders.
  • RSS / Atom feed ingestor — per-feed AI tagging modes (PREDEFINED / EXISTING / AUTO_GENERATE / DISABLED) layered on top of static default tags.
  • Read-later as a first-class boolean field, not a tag.
  • 5 new importers — Pocket export, Readwise Reader CSV, Pinboard JSON, Instapaper CSV, Reddit Saved JSON.

MCP setup

Add to your MCP config:

{
  "mcpServers": {
    "bookmark-organizer-pro": {
      "command": "python",
      "args": ["-m", "bookmark_organizer_pro.mcp_server"]
    }
  }
}

After restart, the MCP-compatible client can query your bookmark library directly.

v6 CLI quickstart

# Ingest, embed, then search semantically
python -m bookmark_organizer_pro.cli ingest
python -m bookmark_organizer_pro.cli embed
python -m bookmark_organizer_pro.cli hybrid "python async tutorials"

# Snapshot a bookmark to portable HTML
python -m bookmark_organizer_pro.cli snapshot 12345

# Ask the AI about your collection
python -m bookmark_organizer_pro.cli ask "what have I saved about CRDTs?"

# Detect tag drift
python -m bookmark_organizer_pro.cli lint-tags
python -m bookmark_organizer_pro.cli lint-tags --apply

# Daily digest
python -m bookmark_organizer_pro.cli digest

# Run the MCP server
python -m bookmark_organizer_pro.cli mcp-server

Browser extension MVP

The browser-extension/ folder contains an unpacked Manifest V3 extension that saves the active HTTP/HTTPS tab through the local BOP API.

# Terminal 1: keep the local API available
bop api-server --port 8765

# Terminal 2: optional token lookup for extension Options
Get-Content "$env:USERPROFILE\.bookmark_organizer\api_token.txt"

Load browser-extension/ as an unpacked extension, open its Options page, enter the API token and port, then use the toolbar popup to save the current tab. Native messaging and offline category/tag suggestions remain on the roadmap.

Features

Core Features

  • Multi-format Import: HTML (Chrome, Firefox, Edge, Safari), JSON, CSV, OPML, TXT
  • Nested Categories: Hierarchical category organization with drag-and-drop
  • Advanced Tagging: User tags + AI-suggested tags with color coding
  • Premium List Workspace: Dense, searchable bookmark table with zoom, command palette, and polished empty states
  • Full-text Search: Advanced syntax with filters, boolean operators, and highlighting
  • Undo/Redo: Full command history for all operations

AI Features

  • Auto-categorization: AI suggests categories based on URL and content
  • Tag Generation: Automatic tag suggestions using AI
  • Title Improvement: Clean up and improve bookmark titles
  • Content Summarization: Generate summaries for bookmarks
  • Multiple Providers: OpenAI, Anthropic, Google Gemini, Groq, Ollama (local)

UI/UX

  • 10+ Built-in Themes: GitHub Dark/Light, Dracula, Nord, Monokai, Tokyo Night, and more
  • Custom Themes: Create, import, and export custom color schemes
  • High DPI Support: Crisp rendering on high-resolution displays
  • System Tray: Quick access without opening full window
  • Keyboard Shortcuts: Complete keyboard navigation
  • Command Palette: Quick access to all commands (Ctrl+P)

Data Management

  • Automatic Backups: Timestamped backups with easy restore
  • Export Options: HTML, JSON, CSV, OPML, XBEL, Markdown formats
  • Soft Delete / Trash: Recoverable deletion with trash management
  • URL Validation: Check for broken links with concurrent checking
  • Smart Duplicate Detection: Academic-grade URL normalization (strips 60+ tracking params, normalizes scheme/host/port/path, sorts query params)
  • Duplicate Merger: Auto-merge duplicates keeping best title, combined tags, earliest date, summed visits
  • Favicon Caching: Fast, cached favicon display with multi-size support

Bookmark Intelligence

  • Health Scoring: 0-100 health score per bookmark based on 7 factors (validity, title, tags, recency, categorization)
  • Page Metadata Fetch: Auto-fetch title, description, and favicon from live URLs
  • Wayback Machine Integration: Check archive.org for snapshots, submit pages for archival
  • URL Normalization: RFC 3986 canonicalization for precise deduplication
  • 4,200+ Categorization Patterns: 32 categories covering 3,400+ domains with 768 keyword fallbacks
  • Redirect Detection: Link checker detects and offers to fix redirected URLs
  • Batch Metadata Refresh: Multi-threaded re-fetch of all bookmark titles/descriptions
  • Random Bookmark: Rediscover forgotten bookmarks
  • Auto-Clean URLs: Strip tracking params transparently on add

Installation

Requirements

  • Python 3.10 or higher
  • Tkinter (usually included with Python)

Quick Start

# Clone or download the repository
git clone https://github.com/SysAdminDoc/Bookmark-Organizer-Pro.git
cd Bookmark-Organizer-Pro

# Run the application
python main.py

On first run, the application will:

  1. Check for required dependencies
  2. Show a dialog to install missing packages
  3. Create the data directory at ~/.bookmark_organizer/

Dependencies

Required (auto-installed):

  • beautifulsoup4 - HTML parsing for bookmark import
  • requests - HTTP requests for favicon downloads
  • tksheet - virtualized Tk table for large bookmark lists

Optional (recommended):

  • Pillow - Image processing for favicons and screenshots
  • pystray - System tray integration

Manual Installation

pip install beautifulsoup4 requests tksheet Pillow pystray

Usage

Basic Operations

Adding Bookmarks

  1. Click the + Add button or press Ctrl+N
  2. Enter the URL (title auto-fetched)
  3. Select a category or let AI suggest one
  4. Add tags (optional)
  5. Click Save

Importing Bookmarks

  1. Click Import or press Ctrl+I
  2. Select your bookmark file(s)
  3. Choose import options (merge duplicates, etc.)
  4. Click Import

Supported formats:

  • Chrome/Edge: Export as HTML from chrome://bookmarks
  • Firefox: Export as HTML from Bookmarks Manager
  • Safari: Export as HTML from File menu
  • JSON: Bookmark Organizer Pro native format
  • CSV: Spreadsheet format with URL, Title, Category columns

Searching

Use the search bar with advanced syntax:

python tutorial                    # Basic search
"machine learning"                 # Exact phrase
title:react                        # Search in title only
url:github.com                     # Search in URL only
tag:programming                    # Filter by tag
category:Development               # Filter by category
-deprecated                        # Exclude term
python AND tutorial                # Boolean AND
react OR vue                       # Boolean OR

Keyboard Shortcuts

Shortcut Action
Ctrl+N Add new bookmark
Ctrl+F Focus search
Ctrl+L Focus search (alternative)
Ctrl+I Import bookmarks
Ctrl+O Import bookmarks (alternative)
Ctrl+S Export bookmarks
Ctrl+E Edit selected
Ctrl+A Select all
Ctrl+Z Undo
Ctrl+Y Redo
Ctrl+P Command palette
Delete Delete selected
F5 Refresh
Escape Clear search / Close dialog

AI Configuration

  1. Open the AI toolbar menu and choose AI Settings
  2. Select a provider (OpenAI, Anthropic, Google, Groq, or Ollama)
  3. Enter your API key if the provider requires one
  4. Select a model
  5. Click Test Connection to verify
  6. Click Save

Free Options:

Safety Notes

  • Network tools skip private, localhost, and unsupported URL schemes to avoid leaking or fetching internal resources.
  • AI API keys are stored locally in ~/.bookmark_organizer/ai_config.json; use environment variables if you prefer not to write keys into the app config file.
  • Imports, exports, settings, and category files are written defensively with atomic writes where supported.

Theme Customization

  1. Go to Settings > Theme Settings
  2. Browse available themes
  3. Click a theme to apply it
  4. To create a custom theme:
    • Click Create Custom
    • Choose a base theme
    • Adjust colors using the color picker
    • Save with a name

Configuration

File Locations

File Location Purpose
Bookmarks ~/.bookmark_organizer/master_bookmarks.json Main bookmark data
Categories ~/.bookmark_organizer/categories.json Category definitions
Tags ~/.bookmark_organizer/tags.json Tag definitions
Settings ~/.bookmark_organizer/settings.json App preferences
AI Config ~/.bookmark_organizer/ai_config.json AI provider settings
Themes ~/.bookmark_organizer/themes/ Custom themes
Backups ~/.bookmark_organizer/backups/ Automatic backups
Favicons ~/.bookmark_organizer/favicons/ Cached favicons
Logs ~/.bookmark_organizer/logs/ Application logs

Settings File Format

{
  "theme": "github_dark",
  "view_mode": "list",
  "show_favicons": true,
  "confirm_delete": true,
  "auto_backup": true,
  "backup_count": 10,
  "sidebar_width": 250,
  "check_urls_on_import": false
}

Environment Variables

Variable Description
BOOKMARK_DEBUG Set to 1 to enable console logging
BOOKMARK_DATA_DIR Override data directory location

Troubleshooting

Common Issues

"Module not found" errors

# Reinstall dependencies
pip install --upgrade beautifulsoup4 requests Pillow pystray

Favicons not loading

  1. Check internet connection
  2. Clear favicon cache: Tools > Clear Favicon Cache
  3. Check if domain blocks favicon requests

High CPU usage

  • Disable URL validation on large imports
  • Reduce favicon download concurrency in settings

Blurry text on Windows

The app should auto-detect DPI. If text is blurry:

  1. Right-click the Python executable
  2. Properties > Compatibility > Change high DPI settings
  3. Check "Override high DPI scaling behavior"
  4. Select "Application"

Import fails with encoding error

Try saving your bookmark file as UTF-8:

  1. Open in text editor
  2. Save As > Encoding: UTF-8
  3. Re-import

AI features not working

  1. Verify API key is correct
  2. Check internet connection
  3. Test connection in Settings > AI Configuration
  4. Check logs at ~/.bookmark_organizer/logs/

Log Files

Enable debug logging:

# Windows
set BOOKMARK_DEBUG=1
python main.py

# macOS/Linux
BOOKMARK_DEBUG=1 python main.py

Log file location: ~/.bookmark_organizer/logs/bookmark_organizer.log

Backup and Recovery

Create manual backup:

  • Tools > Create Backup

Restore from backup:

  • Tools > Restore from Backup
  • Select a backup file from the list
  • Confirm restoration

Automatic backups:

  • Created on every save (if enabled)
  • Stored in ~/.bookmark_organizer/backups/
  • Named with timestamp: bookmarks_backup_20260107_143052.json

Reset to Defaults

To completely reset the application:

# Backup your data first!
rm -rf ~/.bookmark_organizer

# On Windows:
rmdir /s %USERPROFILE%\.bookmark_organizer

API Reference

Command Line Interface

# Add a bookmark
python main.py add "https://example.com" --title "Example" --category "General"

# Search bookmarks
python main.py search "python tutorial"

# Export bookmarks
python main.py export --format html --output bookmarks.html

# Import bookmarks
python main.py import bookmarks.html

# List categories
python main.py categories

# Show statistics
python main.py stats

Python API

from bookmark_organizer_pro import (
    BookmarkManager,
    CategoryManager,
    TagManager,
    Bookmark
)

# Initialize managers
category_mgr = CategoryManager()
tag_mgr = TagManager()
bookmark_mgr = BookmarkManager(category_mgr, tag_mgr)

# Add a bookmark
bookmark = bookmark_mgr.add_bookmark(
    url="https://example.com",
    title="Example Site",
    category="General",
    tags=["example", "test"]
)

# Search bookmarks
results = bookmark_mgr.search("python")

# Get statistics
stats = bookmark_mgr.get_statistics()
print(f"Total bookmarks: {stats['total']}")

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests (if available)
  5. Submit a pull request

Code Style

  • Follow PEP 8 guidelines
  • Use type hints for function signatures
  • Add docstrings to public methods
  • Use the existing logging system (log.info(), log.error(), etc.)

License

MIT License - see LICENSE file for details.

Acknowledgments

  • Theme color palettes inspired by popular editor themes
  • Icons from various emoji sets
  • Built with Python and Tkinter

Version History

v6.0.0 (April 2026)

Major release — see the What's new in v6.0.0 section above and CHANGELOG.md for the full list. Headlines:

  • MCP server (python -m bookmark_organizer_pro.mcp_server) — first OSS bookmark manager exposed via Model Context Protocol
  • Local semantic search via lancedb + fastembed/model2vec
  • Hybrid keyword + semantic search via Reciprocal Rank Fusion
  • Single-file HTML snapshot archiver (monolith / single-file / built-in)
  • Citation-aware AI summaries with click-to-source highlights
  • Conversational RAG over collections
  • NL → structured query smart collections
  • Tag normalization linter
  • Hybrid duplicate detector (URL + SimHash + embedding)
  • Trafilatura ingest pipeline (reading time, language, content type)
  • Per-bookmark ZIP exporter (Readeck-style)
  • Encrypted-DB toggle (AES-256-GCM + PBKDF2)
  • Scheduled dead-link scanner (background daemon)
  • Daily digest (on-this-day, rediscover, stale-but-loved)
  • Flows / research trails (ordered, annotated bookmark sequences)
  • RSS / Atom ingestor with per-feed AI tagging modes
  • Read-later as a first-class field
  • 5 new importers (Pocket / Readwise / Pinboard / Instapaper / Reddit Saved)
  • 20 new CLI subcommands
  • 5 AI clients now expose generic complete() for free-form generation

v5.2.2 (April 2026)

  • Reliability & UX hardening pass across 14 files
  • Stricter data/config validation and defensive model from_dict
  • Atomic persistence and safer path handling in storage
  • Extra SSRF / open-redirect guards in network paths
  • Hardened import/export escaping across all formats
  • Category tree auto-repair on load
  • Search query parser hardened against malformed input
  • UI feedback paths surface errors via log/toast instead of failing silently
  • Expanded regression test coverage (tests/test_core.py +166 lines)

v5.2.1 (April 2026)

  • Repo cleanup: renamed bookmark_organizer_pro_v4.pymain.py. The _v4 suffix was misleading legacy from the v4.x line. The modular bookmark_organizer_pro/ package is the canonical backend; main.py is the UI entry point that imports from it.
  • Build spec / version_info metadata updated to reflect current version.

v5.2.0 (April 2026)

  • Fixed HTML entity display bug — imported bookmark titles like "Love, Death & Robots" now correctly display "Love, Death & Robots"
  • html.unescape() applied to titles, URLs, folder names, and tags in all HTML-parsing importers (Netscape, Pocket, Raindrop, OPML)
  • Right sidebar Analytics panel widened 300 → 360px to prevent clipping at 115% default zoom
  • Left sidebar widened 280 → 320px for consistent breathing room
  • Zoom scaling now applies to ALL text (Tk named fonts + custom FONTS) so default launch is no longer cramped

v5.1.0 (April 2026)

  • Ollama local LLM support — server URL field + auto-detect models in AI settings
  • Ollama model catalog expanded: llama3.3, qwen3, phi4, gemma3, deepseek-r1, mixtral, codellama, command-r
  • Default zoom bumped 100% → 115% for better readability on high-DPI displays
  • Centralized FONTS dataclass now respects zoom multiplier

v5.0.0 (April 2026)

  • 4,224 categorization patterns (3,405 domains + 768 keywords) — up from 1,963 (+115%)
  • Researched top 3,000 websites via Cloudflare Radar, Similarweb, Tranco, and a parallel research pass
  • All 32 categories at 23+ patterns, average 132 per category
  • Security hardening: SSRF protection, path traversal guards, open redirect blocking, thread-safe BookmarkManager
  • Premium UX: empty state, toast notifications, search placeholder, theme display names, drag-drop collapse
  • 37-test suite covering Bookmark model, PatternEngine, URL normalization, SearchQuery, fuzzy match
  • Removed 3,800+ lines of dead code (2 unused app classes, 2 unused FaviconManager classes, duplicate methods)
  • GitHub Actions CI/CD for PyInstaller builds on Windows/macOS/Linux
  • Import from Browser: auto-detect Chrome/Firefox/Edge/Brave profiles
  • Atomic JSON writes for settings/tags persistence
  • Favicon cache eviction (500MB limit)
  • Fixed broken keyboard shortcuts (Ctrl+A, F5, Delete were never registered)
  • Fixed custom theme persistence (ThemeManager load order bug)
  • requirements.txt for standard pip workflows

v4.10.0 (April 2026)

  • Removed 2,558 lines of dead code (BookmarkOrganizerApp + EnhancedBookmarkOrganizerApp)
  • Added requirements.txt for standard pip/venv workflows
  • Added GitHub Actions CI/CD (PyInstaller builds for Windows/macOS/Linux on tag push)
  • Import from Browser: detect and import directly from Chrome, Firefox, Edge, Brave profiles
  • Search placeholder text ("Search bookmarks... Ctrl+F") with focus/blur behavior
  • Theme dropdown shows display names (e.g., "GitHub Dark") instead of internal keys
  • Drag-drop import area collapses to "Import more..." link after first successful import

v4.9.0 (April 2026)

  • Premium UX polish pass
  • Empty state: Beautiful centered empty state with icon, heading, and CTA buttons when no bookmarks exist
  • Toast notifications: Non-blocking toast system replacing modal messageboxes for import/export/link-check feedback
  • Category sidebar: Count badges separated from names, proper frame-based hover on full row
  • Font consistency: Replaced all hardcoded "Segoe UI" font references with centralized FONTS system
  • Fixed Image.Image type hint crash when Pillow not installed
  • Build metadata: Corrected author/website to SysAdminDoc/GitHub

v4.8.0 (April 2026)

  • Expanded categorization from 1,583 to 1,963 patterns (+380)
  • Sports: 10 → 60 patterns (leagues, betting, fantasy, stats)
  • Automotive: 9 → 60 patterns (brands, parts, reviews, repair)
  • Food & Dining: 11 → 62 patterns (recipes, grocery, delivery, chains)
  • Education: 17 → 64 patterns (MOOCs, textbooks, .edu catch-all, K-12)
  • Social Media: 17 → 36 patterns (messaging, photo/video social)
  • Added 100+ keyword fallbacks across all categories for long-tail coverage

v4.7.0 (April 2026)

  • Modular extraction phase 2: AI providers, search engine, importers, link checker, URL utilities extracted to package (~2,010 lines moved)
  • Main file reduced from 22,924 to 20,914 lines
  • Package now exports 83 public names
  • Fixed README clone URL and added version badge
  • Fixed .gitignore (removed *.spec exclusion blocking PyInstaller spec)

v4.6.0 (April 2026)

  • Expanded categorization from 150 to 894 patterns across 32 categories
  • Added 5 new categories: SysAdmin & IT, Weather, Downloads & Torrents, Media Production, Software & Customization, Productivity
  • Fixed PatternEngine domain matching (proper suffix matching instead of substring)
  • Expanded icon mapping to 65+ keyword-to-emoji associations

v4.1.0 (January 2026)

  • Added professional dependency management UI
  • Added centralized StyleManager for consistent ttk styling
  • Added DPI awareness for Windows high-DPI displays
  • Added comprehensive logging system
  • Added enhanced status bar with counts and progress
  • Added comprehensive keyboard shortcuts
  • Standardized font usage across application
  • Fixed duplicate class definitions
  • Fixed bare except clauses
  • Code quality improvements

v4.0.0 (January 2026)

  • Initial release with full feature set
  • 10+ built-in themes
  • AI-powered categorization and tagging
  • Advanced search with boolean operators
  • System tray integration
  • Grid and list view modes

Building Standalone Executable

Prerequisites

# Install PyInstaller
pip install pyinstaller

# Install dependencies
pip install beautifulsoup4 requests tksheet Pillow pystray

Build Commands

Windows:

# Using spec file (recommended)
pyinstaller packaging/bookmark_organizer.spec --clean --noconfirm

# Or use the build script
scripts\build_windows.bat

macOS/Linux:

# Using spec file (recommended)
pyinstaller packaging/bookmark_organizer.spec --clean --noconfirm

# Or use the build script
chmod +x scripts/build_unix.sh
./scripts/build_unix.sh

Build Output

The executable will be created in the dist/ folder:

  • Windows: dist/BookmarkOrganizerPro.exe
  • macOS: dist/BookmarkOrganizerPro (or .app bundle)
  • Linux: dist/BookmarkOrganizerPro

Customizing the Build

Edit packaging/bookmark_organizer.spec to customize:

# Single file vs folder
# Default is single file. For folder, uncomment COLLECT section

# Console window
console=False  # Set to True for debugging

# UPX compression
upx=True  # Set to False if UPX not installed

# macOS app bundle
# Uncomment BUNDLE section for .app creation

Build Size Optimization

The spec file already excludes unnecessary packages. For smaller builds:

  1. Use UPX: Install UPX and ensure upx=True in spec
  2. Remove unused features: Comment out unused hidden_imports
  3. Strip debug info: Set strip=True (may cause issues on some systems)

Icon Files

The distribution includes these icon files:

  • assets/bookmark_organizer.ico - Windows executable icon
  • assets/bookmark_organizer.png - Cross-platform icon (256x256)

Code Signing (Optional)

Windows:

signtool sign /f certificate.pfx /p password /t http://timestamp.url dist\BookmarkOrganizerPro.exe

macOS:

codesign --deep --force --verify --verbose --sign "Developer ID" dist/BookmarkOrganizerPro.app

File Manifest

File Description
main.py UI entry point (Tk app). Imports backend from bookmark_organizer_pro/
bookmark_organizer_pro/ Modular backend package (models, core, utils, importers, AI, search, link checker, URL utils)
assets/ Source-controlled app icons and README screenshot
packaging/bookmark_organizer.spec PyInstaller build specification
packaging/version_info.txt Windows version metadata
scripts/build_windows.bat Windows build script
scripts/build_unix.sh macOS/Linux build script
scripts/clean_workspace.py Removes generated caches/build output
docs/REPOSITORY_STRUCTURE.md Repository layout guide
docs/ARCHITECTURE.md Architecture boundaries and refactor map
README.md This documentation

Read on GitHub → github.com/SysAdminDoc/Bookmark-Organizer-Pro

Recent Releases

Latest tagged notes pulled from GitHub release history for this project.

  • v6.8.0

    **Full Changelog**: https://github.com/SysAdminDoc/Bookmark-Organizer-Pro/compare/v6.7.0...v6.8.0

  • v6.7.0

    **Bookmark Organizer Pro v6.7.0** — AI-in-build and bookmark-list interaction release. · - **DeepSeek / OpenAI-compatible AI now works in the Windows `.exe`.** The `openai` SDK is bundled, so DeepSeek categorization, tag

Esc
Start with the strongest work, a key route, or the full archive.