Omnom: Self-hosted bookmarking with searchable, wysiwyg snapshots
omnom.zonea bit of background. this is a rewrite of omnom by asciimoo - the guy who also made searx. originally i wrote omnom, back in the days when del.icio.us was enshittified and gone down the drain. instead of complaining i was taking the opportunity to write a replacement that i would want, it became omnom, and for many years me and a bunch of users were very happy with it.
but the fast moving world of browser extensions made maintenance (for a non-commercial free software side project) too expensive, so the extension support became erratic, until it died completely. for a year or two i didn't use it.
but then asked asciimo if he could have a look a the extensions (since he was recently working on another extension, so had some experience), he looked at it, and rewrote the whole thing in go and fixed the extension. he even got support from nlnet/ngi0.
if you want to have your own self-hosted libre software bookmarking service for you and your community, give it a go, it's very simple, privacy respecting and most robust when it comes to snapshotting. asciimoo did a great job.
I love bookmarks. I have made RSS app with bookmarking mechanism.
My links about bookmarks and links below.
https://github.com/rumca-js/Django-link-archive - django app, RSS client, simple web crawler, under construction
https://github.com/rumca-js/RSS-Link-Database - my bookmarks repository
https://github.com/rumca-js/RSS-Link-Database-2025 - RSS links for year 2025
https://github.com/rumca-js/RSS-Link-Database-2024 - RSS links for year 2024
https://github.com/rumca-js/RSS-Link-Database-2023 - RSS links for year 2023
https://github.com/rumca-js/Internet-Places-Database - I also maintain a list of domains found in the Internet
https://rumca-js.github.io/search - search that uses links maintained in zip files
https://rumca-js.github.io/music - my music library, browsable
https://rumca-js.github.io/bookmarks - my bookmarks, browsable
Damn this is internet gold. Gonna be lost in those repos for days, man.
Awesome work!
I've been using Karakeep (formerly Hoarder) for a few months. So far, I like it. I particularly like having an iOS app so sharing new bookmarks from different apps is really easy. Instead of pulling from the browser, it retrieves its own copy with a headless Chrome, so if you need a login, the snapshot breaks. But, overall, I've been pretty happy.
But, I'll definitely check out Omnom too!
https://karakeep.app/
I know OP personally and have a high regard for him. His blog at https://www.ctrlc.hu/~stef/blog/ is also worth following.
After quite some exploring around and struggles I made my peace with https://raindrop.io. Am I happy with that? Of course not. But that's the only hosted one which has extensions and apps for almost every browser and OS I use. I wish there a functional open source service (hosted) with wide range of platforms support that I could pay for and use.
I agree, I made my peace with Raindrop.io as well. Being able to use it on any system and most any browser, plus a full API for interacting with my bookmarks. Nothing free and open source compared and now I have 6k+ bookmarks in Raindrop that I would like to move elsewhere, but I'll have to check out the project linked here.
I made an app for this actually, called Showcase. You can bookmark any content——Youtube videos, websites, Tweets, Instagram posts—— and store it all together. You can use it on browser where you can paste directly onto the canvas (+ chrome extension coming) or iOS that has a Share Extension too.
It's also free ;)
Demo for Showcase: https://www.youtube.com/watch?v=ehGolVAHm8U
App Store link: https://apps.apple.com/gb/app/showcase-co/id6740991352?platf...
Looks really nice. ETA on play store release? Or do you have a alpha/beta apk?
Oh wow this is super nice I'll definitely be using this
Does Omnom not? They have FF and Chrome extensions...
Is there anything like omnom or karakeep that allows for storing things without having to manually bookmark or add them to the system? I want any URL I hit to have its content sent to my service so that I can search it later.
I have settled on https://readeck.org/ it's absolutely brilliant. It supports postgres and a service with systemd. omnom looks promising, will keep an eye on it.
My dream tool allows me to create snapshots from either mobile or desktop browser, then read and highlight on my Android eInk reader or phone, then export my highlights and notes into Logseq...all without collecting all my data and selling it to advertisers (which basically leaves me with FOSS tools).
Omnivore was as close as I've ever gotten to this dream, even though their Android app wasn't great and certainly didn't have an "eInk pagination" option, but Readeck is at least giving me some hope again once Omni sold out.
I encourage you to check out my app ;)
Demo for Showcase: https://www.youtube.com/watch?v=ehGolVAHm8U
App Store link: https://apps.apple.com/gb/app/showcase-co/id6740991352?platf...
Your app looks really and the website is also cool but Readeck and Omnom are both selfhosted bookmark managers. A cool app is good to have but not a requirement.
Use readeck, too. It’s exactly what I need, the only feature I miss is not being able to add arbitrary comments to text passages.
looks nifty, but does it do snapshotting?
It also does highlighting which is absolutely amazing. No need to save an entire page just for a piece of text. Also, you can have opds for ebooks.
Yes it does. Also written in Go and pretty hackable.
the only factor that's stopping me from moving to readeck is a lack of import functionality for evernote bookmarks. otherwise, i'd be 100% on readeck.
I've wanted something like this for a while, although I've not looked into it much.
That said, the snapshot search either isn't working, or isn't doing what I'd expect it to do. If I search for `fsf`, the snapshot search finds the FSF's website. But if I search for text that appears in the snapshot of the homepage (e.g. "sysop" or "sysops"), then I get no results.
I would expect the snapshot search to work roughly like Google, but for these limited snapshots of pages, but it appears to only search the URLs, maybe the page titles?
You can find detailed search (including title/content) using the bookmarks endpoint. Snapshot search is currently only for finding multiple snapshots for a single URL/domain. Probably it should be emphasized, or content based search should be available there as well. Thanks for the feedback!
Question: Does this use single file or something similar? I've basically been dying for an easy to use local bookmarking service that uses singlefile?
Second question: How easy is it to crawl the local store and apply LLMs or RAG?
Since it requires a browser extension anyway, is it possible to build something like this local-first and lean on Chrome/Firefox built-in syncing?
+1 for local-first. there needs to be a local first bookmark/snapshot manager. where you can own your data without requiring hosting or installing things.
Buku does this. You have to run bukubrowse server locally, but the extension then connects to localhost. I have a cli that lists my bookmarks and makes it easy for me to copy/paste or clickopen.
I use archivebox for this. No requirement for an extension, just a simple bookmarklet.
After trying many bookmarking solutions, settled on Goodlinks.
Pros: - stores data in your icloud - stores a copy where possible - full-text search
Cons: - not open-source - works on mac/ios only
https://goodlinks.app/
Take a look at our creation which is free. Also, you may try Full Sort's demo without sign up to see if you like the interface and features. https://fullsort.com
When I saw the name, I immediately thought of https://omnomchocolate.com/
> if you want to have your own self-hosted libre software bookmarking service for you and your community, give it a go
I haven't worked with go - where could I host that myself?
Could I do this with the free tier of https://cloud.google.com/run/docs/quickstarts/build-and-depl...
Awesome. A few months ago I posted my bookmarking site. Now I see that my site is almost a subset of yours.
If you want to take a look check this: https://cloudmark.site
I wish ArchiveBox had such a feature where you can archive “private” and logged in pages. I often had the case where I then realized I only archived some login page.
I use Linkding for my bookmarking. It has the ability to snapshot the links by using SingleFile, which is super handy cause it produces a single .html file that you can send or save separately if you want.
To save logged in content, you can either pass it cookies.txt with the login cookies it needs, and it works pretty well. Alternatively, you can also use the SingleFile extension to snapshot what you want and upload it in place of the automated snapshot. This is also handy because the extension allows you to remove private data prior to screenshot, such as your name or username.
I personally have cookies in place for most common social media sites that need login (twitter, reddit), and if I need to snapshot something else occasionally, I do it manually and upload it to Linkding.
https://linkding.link/
https://linkding.link/archiving/
https://www.getsinglefile.com/
ArchiveBox also supports SingleFile from what I remember, but I wish there was a extension to just pass everything (Browser context) to ArchiveBox. Having to keep cookies in sync with a second service is a bit of a hassle.
If you read the Linkding archiving page, you can see that it is possible to set up SingleFile extension to auto-snapshot the page when the page is added, from the browser you're using at that moment. The advantage is that loing is handled implicitly, but a disadvantage is that this only works in the browser, and not for example when you use the Android app. But for me that's fine,
Also, it is possible to configure SingleFile extension to automatically push a snapshot to a REST Form API. You can even make it do so when you bookmarks something in your browser, to achive a flow where bookmarking something in the browser saves the page via SingleFile extension and gives it to ArchiveFile.
https://docs.archivebox.io/dev/Contents.html#api-reference
Also, look in the SingleFile extension options, under Destination.
That sounds like that does the job, thanks! I’ll try to set this up.
You can pass cookies or Chrome user data into ArchiveBox, but you do risk account suspensions if your account gets flagged for scraping.
I've been using Wallabag for articles I want to deal with later, with the Frigoligo app on iOS for offline reading. For bookmarks, I've been using the Floccus extension with the Nextcloud Bookmarks app.
I'm missing the social aspect of bookmarks on del.icio.us though, so I'll check out Omnom and the other mentions in this thread of what people are using.
I have a static web page with a table of A href's. Source controlled under git. Problem solved.
sure, for bookmarking that's fine. but it does not help against linkrot, or censorship, or pages changing with time.
I agree. Saving web-links is a solved problem. Saving the CONTENT afaik is not solved and I've wanted a solution for YEARS, as well as the rest of humanity has needed this (including those who don't even know they need it, haha!).
Closest thing would be to "print" to PDF but that always creates a trainwreck in the PDF and is never good enough for me. Looking forward to trying Omnom if it's open source.
It's not only open source, it is free software. Take a look at https://github.com/asciimoo/omnom - suggestions/contributions are appreciated =)
That looks like a pretty heavy-weight solution, with a lot of complexity, and I don't mean that as a criticism at all. I'm not a 'go' developer myself. I've always wanted a pure JS solution (as a browser extension, maximum of 200 lines of code) that can capture the content of a web page (doing a virtual scroll to the bottom, to capture the whole page). Since there's no perfect way to translate HTML to PDF, my idea had always been to capture the IMAGE of the page (aside from capturing keywords for DB indexing which can be done separately just for 'search' support later on).
The fly in the ointment is of course the scrolling too, because some apps have "infinite" scrolling, and so in many SPAs there's literally no such thing as "The whole page". Anway, I haven't tried your app yet, because of not-JS and not-Small, reasons, but I'm just sharing my perspective on this topic. Thanks for sharing your project!
I created something like that for my spouse and myself. An app that creates an archive.ph url, extracts full text and generates summaries via an llm. I‘d open source it, but as I also extract paid articles via archive.ph, I think it wouldn’t be ethical to publish it.
the difference is, that archive.ph snapshots something in headless. omnom snapshots the exact same state that your browser is displaying you. so if there is js interactions that change the dom, those will be snapshotted, unlike with archive.ph.
also lets not forget that archive.ph wraps everything in their own frame and has their own way of mangling the result. not in a bad way, it's just not the original as it would have been rendered in your browser.
Archive.ph is often used, because the "js interactions that change the dom" is typically a paywall. And you won't want it.
omnom is for snapshotting, not for circumventing paywalls. i'm merely comparing the snapshot feature of the two projects. circumventing paywalls is out of scope.
your bookmarks will never linkrot away.
btw it is perfectly fine to circumvent a paywall with archive.ph and then to snapshot it with omnon so your bookmark never linkrots away. also when i say "js manipulation" i also mean stuff like captchas, or dynamic documents that you change by interacting with it, or even private services like e.g. rocket chat hidden behind some barrier like http auth, or private vpn. archive.ph will never have access to what your browser might have access to.
I've been using linkwarden the last few months and loving it.
https://github.com/linkwarden/linkwarden
btw if you want to have a look at more than a decade of snapshots, try https://links.ctrlc.hu/ my private and membership invitation-only instance.
I am happy user of https://historio.us/
Does this kind of service really need a subscription? Immediate turn off.
I am getting used to paying for the services I need. To me at least it makes sense to be paying for something being maintained.
I have a thought on "sharing" the snapshots. Many pages nowadays are behind a paywall.
Typically you are required to log in (pay or not) to remove them. I'm aware of archive.org and others, but it is not the main point :)
The point is, that if you are logged in, some private information about yourself may be stored in the snapshot. It is less dangerous when it is something on the screen -> you can make a decision. But if is is some hidden field with your ip address for example.
Very nice! but why not contributing updates to some widely used project like Karakeep?