Notes on Self-Hosted Bookmark Service
I mainly tried Karakeep, ArchiveBox and linkding, but in the end I chose the forked linkding-cn.
My Requirements
Required Features
- Provide a browser extension for quickly saving webpage bookmarks
- Be able to tag bookmarks and search by tag
- Support importing/exporting
Netscape HTML
Optional Features
- Support webpage snapshots, and try to store them locally to avoid wasting archive.org resources
- Support browser extension snapshot capture, to avoid triggering CAPTCHA and firewall page issues
- Support recursive bookmarks, making it convenient to split and organize bookmarks by major category
- Support AI auto-tagging
Karakeep
It satisfies the following features:
- Provide a browser extension for quickly saving webpage bookmarks
- Be able to tag bookmarks and search by tag
- Support importing/exporting
Netscape HTML - Support webpage snapshots, and try to store them locally to avoid wasting archive.org resources
- Support snapshot capture through a browser extension, avoiding CAPTCHA and firewall page issues
- Support recursive bookmarks for convenient splitting and organizing bookmarks by major category
- Support AI auto-tagging
On first try I felt the UI design was nice and the webpage also had mobile adaptation, but in the end I did not adopt it, for the following reasons.
The AI tagging feature is not easy to use
The AI tagging feature is not user-friendly in its default state. It often creates new tags even when there are already matching existing tags, and the newly created tags exist in multiple versions such as Simplified Chinese, Traditional Chinese and even Japanese characters.
Although you can manually select the usable tag scope one by one and add model prompt lines in the settings to process them, it could have been made more convenient.
The webpage snapshot effect is average
The service captures webpage snapshots through a browser container, but this approach often triggers anti-crawling firewalls and CAPTCHA. Although the provided browser extension can also capture snapshots, for some unknown reason some webpages take very long to capture (apparently related to the number of multimedia resources), and the captured snapshots always lose their layout.
ArchiveBox
- Provide a browser extension for quick webpage bookmark saving
- Be able to tag bookmarks and search by tag
- Support importing/exporting
Netscape HTML - Support webpage snapshots, try to store them locally to avoid wasting archive.org resources
- Support snapshot capture through a browser extension, avoiding CAPTCHA and firewall page issues
- Support recursive bookmarks, making it convenient to split and organize bookmarks by major category
- Support AI auto-tagging
Strictly speaking, the core purpose of this service is to archive pages, just like archive.org does; bookmarks are merely incidental. Therefore the pages are relatively simple and the configuration is relatively complex.
The main reason for not adopting it is still the snapshot capture having the same problem as Karakeep. Also, connecting the server seems to require a command to generate a token, which cannot be generated directly in the backend admin page.
linkding
- Support to provide a browser extension for quick bookmarking webpages
- Be able to tag bookmarks and search by tag
- Support importing/exporting
Netscape HTML - Support webpage snapshots, try to store them locally to avoid wasting archive.org resources
- Support browser extension to capture snapshots, avoiding CAPTCHA and firewall page problems
- Support recursive bookmarks for easy splitting and organizing bookmarks by major category
- Support AI auto-tagging
I used it for a long time in the past, and to be honest it can be called a small and beautiful service.
But the biggest problem lies in the code architecture. Because the strings are hardcoded in code, multi-language has not made progress all along, Chinese tags are not sorted, and the one way to find a tag is to scan through it with your own eyes.
Final Choice — linkding-cn
- Provide a browser extension for quick collection of webpage bookmarks
- Be able to tag bookmarks and search by tag
- Support importing/exporting
Netscape HTML - Support webpage snapshots, try to store them locally to avoid wasting archive.org resources
- Support browser extension snapshot capture to bypass various anti-bot and firewall issues
- Support recursive bookmarks for organizing tips and organizing bookmarks by major category
- Support AI auto-tagging
The final choice is linkding-cn, a fork of linkding. The latest version works well so far; it is lighter than Karakeep because it does not need a browser container to capture webpage snapshots, and its interface is more attractive than ArchiveBox’s.
As for snapshots, you can create a token in the website’s “Settings → Integrations” page, then download the SingleFile plugin, configure the plugin: save location → save to the REST form API, then configure the following in order:
- URL: such as
https://linkding.example.com/api/bookmarks/singlefile/ - Auth token: the token you just created
- File field name:
file - URL field name:
url
Then the flow to add a bookmark goes as follows:
- If you only want to save webpage links, just use the original browser extension of linkding, connect to the server with your token configured in the extension settings and operate exactly the same
- If you want some websites to only save links and some to capture snapshots, you can first save with the linkding extension, then save with SingleFile plugin, which will automatically import the snapshot
- If you want all websites to automatically capture snapshots, enable Run with SingleFile after adding a new bookmark in the linkding browser extension, which will be automatically called when creating a new bookmark; old bookmarks need to be manually triggered.
Besides, even if you do not perform the above configuration, the server side still collects snapshots. They will still encounter the same CAPTCHA and the firewall problems as Karakeep collects with the server-side.
Summary
Open source projects all have their own strengths, and finding a self-hosted project that fits you is still quite pleasant. The other projects are not bad; they are simply not suitable for me, for the reasons mentioned above.
Even if some features still have imperfections for now, they have a large number of community contributors who will continue providing updates, fixing bugs and adding features. Moreover, the code is open source, and anything you are not satisfied with can be modified by yourself.
Thank you for all the hard work of the open source contributors, salute you🫡!