An intelligent Chrome extension that helps you organize and manage your bookmarks using AI-powered analysis, part of the OSOM AI framework. Export your bookmarks to Notion, Obsidian, or XMind for better organization.
- AI-Powered Analysis: Automatically categorize bookmarks using intelligent URL and title analysis
- Smart Recommendations: Get suggestions for organizing your bookmarks into logical folders
- π Encrypted Credential Storage: AES-256-GCM encryption for secure Notion token storage
- Notion Integration: Export bookmarks directly to your Notion databases
- Multiple Export Formats: Support for Notion, Obsidian, and XMind
- Modern UI: Clean, user-friendly interface built with Tailwind CSS
- Real-time Processing: Analyze and organize bookmarks on-the-fly
chrome_bookmark_manager/
βββ extension/ # Chrome extension files
β βββ manifest.json # Extension manifest
β βββ popup.html # Popup interface
β βββ background.js # Background service worker
β βββ icons/ # Extension icons
β β βββ icon16.png
β β βββ icon48.png
β β βββ icon128.png
β βββ js/ # JavaScript modules
β β βββ popup.js # Main popup logic
β β βββ crypto.js # π Encryption utilities
β βββ integrations/ # Integration modules
β β βββ osom-integration.js # AI categorization engine
β β βββ notion-integration.js # Notion API wrapper
β βββ styles/ # Stylesheets
β βββ popup.css # Custom styles
β
βββ python_scripts/ # Python utilities
β βββ main.py # Main processing script
β βββ bookmarks_to_notion.py # Notion export utility
β
βββ docs/ # Documentation
β βββ SECURITY.md # Security information
β βββ INSTALLATION.md # Installation guide
β
βββ requirements.txt # Python dependencies
βββ CHANGELOG.md # Version history
βββ README.md # This file
Version 1.1.0 introduces AES-256-GCM encryption for protecting your Notion API credentials:
- Encryption Algorithm: AES-256-GCM (industry standard)
- Key Derivation: SHA-256 hash of extension ID + salt
- IV: Random 96-bit initialization vector per encryption
- Storage: Encrypted data stored in Chrome local storage
- When you save credentials, they are encrypted using Web Crypto API
- The encryption key is derived from your unique extension installation ID
- Data is encrypted with AES-GCM and a random IV
- Only the encrypted ciphertext is stored
- Credentials are decrypted only when needed
β Before (v1.0):
- Plain text storage
- Readable by any script
- Visible in DevTools
β After (v1.1):
- AES-256-GCM encrypted
- Requires decryption key
- Not visible in plain text
- Protected from casual inspection
Read more: docs/SECURITY.md
- Google Chrome (version 88 or higher)
- Python 3.7+ (optional, for Python scripts)
-
Clone or download:
git clone https://github.com/MarlinZH/chrome_bookmark_manager.git cd chrome_bookmark_manager -
Load in Chrome:
- Navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extensionfolder
- Navigate to
-
Done! The extension icon appears in your toolbar.
Detailed instructions: docs/INSTALLATION.md
- Click the extension icon
- Click "Analyze Bookmarks"
- View AI-generated categories
- See recommended folder names
- Select a recommended category OR enter a custom name
- Click "Create"
- Folder is added to your bookmarks
- Create Notion Integration: notion.so/my-integrations
- Create Database: Add a full-page database in Notion
- Share Database: Invite your integration to the database
- Get Database ID: Copy from the database URL
- Enter your Integration Token (encrypted on save)
- Enter your Database ID
- Click "Save" (credentials are encrypted with AES-256-GCM)
- Click "Export to Notion"
- Wait for completion message
For security, you can clear stored credentials:
- Click "Clear" button in the Notion section
- Confirm the action
- Encrypted credentials are permanently removed
Extension:
- Chrome Manifest V3
- JavaScript ES6 Modules
- Web Crypto API (for encryption)
- Tailwind CSS
- Chrome APIs (Bookmarks, Storage)
Python Scripts:
- Python 3.7+
- Notion API Client
- Pandas, NLTK, SpaCy (optional)
Handles all encryption/decryption:
encrypt(plaintext)- Encrypt data with AES-GCMdecrypt(ciphertext)- Decrypt datasecureStore(key, value)- Encrypt and storesecureRetrieve(key)- Retrieve and decryptsecureRemove(key)- Remove encrypted data
AI categorization engine that analyzes:
- URL domain patterns
- URL path structure
- Title keywords
- Weighted scoring
Categories: Technology, Business, Education, Entertainment, News, Social, Shopping, Health, Finance, Travel
Notion API wrapper:
- Create pages in databases
- Batch import bookmarks
- Test connection
- Error handling
python python_scripts/main.pyInteractive script that:
- Loads Chrome bookmarks
- Organizes by folder
- Extracts folder structure
- Exports to Notion
# Set environment variables
export NOTION_TOKEN="your_token"
export DATABASE_ID="your_db_id"
# Run
python python_scripts/bookmarks_to_notion.pyAuto-detects bookmark location and exports.
- Use Integration Tokens: Create dedicated integrations, not personal tokens
- Limit Permissions: Only grant necessary database access
- Rotate Regularly: Change tokens periodically
- Clear When Done: Use "Clear" button after exporting
- Lock Computer: Always lock when away
- Don't Share Profile: Keep Chrome profile private
Full security details: docs/SECURITY.md
Won't Load: Ensure you selected the extension folder, not root
No Icon: Check extension/icons/ folder exists
Analysis Fails: Check browser console for errors
Export Fails:
- Verify token is correct
- Ensure database is shared with integration
- Check Database ID is 32 characters
- Verify database has Name, URL, and Folder properties
Credentials Not Saving:
- Check browser console for encryption errors
- Ensure Chrome supports Web Crypto API
- Try clearing and re-entering
Module Not Found:
pip install -r requirements.txtNLTK Errors:
import nltk
nltk.download('punkt')
nltk.download('stopwords')- π AES-256-GCM encryption for credential storage
- New
CryptoManagerclass for encryption operations - "Clear" button to remove stored credentials
- Comprehensive security documentation
- Installation guide
- Reorganized project structure
- Moved extension files to
extension/directory - Moved Python scripts to
python_scripts/directory - Updated manifest to version 1.1.0
- Improved UI with better feedback
- Enhanced error handling
- Credentials now encrypted at rest
- Secure key derivation using extension ID
- Random IV generation per encryption
- Protection against casual data inspection
- Fixed critical bugs
- Added comprehensive documentation
- Improved error handling
- Initial release
Full changelog: CHANGELOG.md
Contributions welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style
- Add encryption for any new credential storage
- Test thoroughly
- Update documentation
- Include security considerations
This project is licensed under the MIT License.
MarlinZH
- GitHub: @MarlinZH
- Chrome Extensions documentation
- Web Crypto API
- Notion API team
- Tailwind CSS community
- Security reviewers and contributors
- Documentation: docs/
- Issues: GitHub Issues
- Security: See SECURITY.md
β Star this repo if you find it useful!
π Your credentials are now encrypted and protected!