README file from
GithubBookmarker for Obsidian
Save any web page into your Obsidian vault as a clean Markdown note, with a preview image, AI-proposed tags, and an AI-proposed destination folder. It works on desktop and mobile, keeps everything inside the vault, and runs no backend of its own.
The goal is a Raindrop-style bookmarking experience that lives entirely in plain Markdown files you own.
What's new
Bookmark bar. A browser-style strip across the top of the workspace, above the ribbon and both sidebars. Starred bookmarks sit on it as one-click buttons with their favicons; each category becomes a button that drops down its links. Clicking one opens the site, Cmd/Ctrl-click opens the note instead, and the note you are working in stays fully visible the whole time. It is off by default: turn it on in Settings, then toggle it from the ribbon icon or the "Toggle bookmark bar" command, which takes a hotkey.
Local cover images. A card's cover can now be an image stored in your vault rather than a remote URL. Sites like Instagram rotate their thumbnail URLs, so a saved preview eventually stops loading; a vault image does not. Right-click a card to pick one with "Set cover from vault…", or use "Save cover to vault" to download the current preview into _bookmarks/_assets/ once and keep it. The reference is stored as a wikilink, so renaming or moving the image never breaks the card. Refreshing a card also no longer wipes a cover when the page has since dropped its og:image.
Deleting a bookmark now takes its downloaded cover with it, so _bookmarks/_assets/ stops growing forever. Only images the plugin downloaded into that folder are ever removed, only when no other note still points at one, and they go to the trash like any other deleted file. An image you picked from elsewhere in your vault is yours and always survives the bookmark.
Full notes for every version are on the releases page.
What it does
- One-click capture. Save the current browser tab through a small companion extension, or trigger a capture from inside Obsidian. On iOS/iPad the same path works from the Share Sheet via an Apple Shortcut.
- AI tags and folder. A Claude classifier reads the page and proposes tags plus a destination subfolder, reusing the tags and folders already in your vault instead of inventing a fresh taxonomy. An offline heuristic mode is available with no API key.
- Review before saving. A review window lets you edit the title, tags, and destination folder before the note is written. Turn it off for a silent one-click save.
- Preview images. Bookmarker extracts the page's Open Graph, Twitter, and JSON-LD image, falls back to a Microlink screenshot when a page exposes none, and can serve images through the wsrv.nl cache/proxy. A cover picker in the review window lets you choose among candidates or paste a custom image URL.
- Duplicate awareness. Before saving it checks whether the URL is already bookmarked: an exact match is blocked, a same-page-different-tracking match is flagged, and other pages from the same domain raise a quiet notice with a link to them.
- Type detection and favorites. Each bookmark is tagged as an article, video, image, document, audio, or link, and can be starred with one click on its card, no need to open the note.
- Broken-link checker. An on-demand command tests every saved URL and flags dead ones in frontmatter. It is deliberately conservative: only a 404/410 or a network failure counts as broken, so anti-bot 403/429 and 5xx responses are left alone.
- Organize. Bulk tidying for a collection that has grown messy: deduplicate notes that point to the same URL, re-tag in batches, move misfiled bookmarks to a better folder, and remediate dead links by archiving, moving, or marking them. Every operation previews its changes and applies only what you approve.
- Import. Pull your whole Raindrop library straight from the Raindrop API, covers and collections included, with a token set in settings. You can also bring in a Pocket, Raindrop, or browser HTML export, or a Raindrop CSV.
- Bookmark bar. An optional horizontal bar pinned above the workspace, in the spirit of a browser's bookmark bar: starred bookmarks as favicon buttons, then a dropdown per category. It shrinks the workspace rather than covering it, so the note you are reading stays visible. Off by default; toggle it from the ribbon icon or a hotkey.
- Insert bookmark link. A command that fuzzy-searches your saved bookmarks and drops a wiki-link to the one you pick at the cursor, in whatever note you're currently editing.
Several helpers degrade gracefully and stay out of the way: a favicon fallback service, an optional Wayback Machine snapshot, and the image proxy can each be turned off.
Board view
Opening the board lands you on a Categories screen first: a tile per subfolder, each showing an icon and a bookmark count, with an always-last "Uncategorized" tile for root-level bookmarks. Click a tile to drill into a card grid scoped to that category, click "▦ All cards" to see everything at once, or type in the search box to jump straight into a global card search. Each category tile has an edit affordance to give it a custom accent color and icon (emoji or a searchable Lucide icon picker).
Inside the card grid:
- Filters: tag panel (collapsible, frequency- or A–Z-sorted, with its own search box), folder and type dropdowns, a domain chip, and Favorites/Broken/Hidden toggle chips. A scope selector lets you search within the current category or across all bookmarks.
- Card size, sort order, and title source (frontmatter title vs. file name) are controlled from the board toolbar.
- Selection: every card has a checkbox, with Select all/none in the toolbar. A selection feeds the two AI Organize commands, a "Delete broken" bulk action, and a "Hide selected" bulk action; with nothing selected, those commands fall back to whatever the current filters show.
- Right-click a card for: open URL, show related bookmarks (ranked by shared tags, domain, and type), refresh the card (re-fetch the page, re-classify tags and folder, re-pick a cover, then reopen the review window with the update pre-filled), set the cover from a vault image, save the current cover into the vault, remove the cover, move to another category, add a dated note, regenerate tags, hide/unhide, or delete (moves to system trash, recoverable).
- Local covers: a cover can be an image stored in your vault instead of a remote URL. Pick one with "Set cover from vault…", or use "Save cover to vault" to download the current preview into
_bookmarks/_assets/once and keep it forever — useful for sites like Instagram whose image URLs rotate and break. The reference is stored as a wikilink, so renaming or moving the image never breaks the card. The same picker is available in the review window during capture. - Hidden bookmarks can be locked behind a password (set in Settings): once locked, revealing hidden cards in a board session asks for the password first.
- Tag management: editing a tag from the tag panel lets you rename it everywhere (case-insensitive merge) or delete it from every bookmark that carries it, vault-wide.
- The board refreshes itself automatically as files change, created, or renamed, no manual reload needed.
Bookmark bar
The board is a full tab, which is the wrong shape when you only want to jump to a link without losing sight of the note you're writing. The bookmark bar covers that: a thin horizontal strip inserted above the workspace, spanning the full window width above the ribbon and both sidebars. It shrinks the area below rather than floating over it, so nothing is covered.
Turn it on under Settings → Bookmark bar, then toggle it with the ribbon icon or the Toggle bookmark bar command, which accepts a hotkey. It is off by default.
- Starred bookmarks come first, each as a favicon plus title. The count is configurable (4–30). A bookmark with no usable favicon falls back to a link glyph.
- Categories follow, one button each, in the same order as the board's tiles and wearing the same accent color and icon. Clicking one opens a dropdown of that category's bookmarks; past 40 it offers "Open in board" instead.
- Click opens the site in your browser, Cmd/Ctrl-click opens the bookmark note, right-click a starred item for open URL / open note / unstar.
- The bar tracks the vault live: star a card on the board and it appears here without a reload; rename a category folder and its button follows.
It works on desktop and mobile. Two limitations worth knowing: popout windows get no bar, and hidden bookmarks never appear on it.
How a note looks
Every bookmark is a Markdown file with YAML frontmatter and an optional preview card:
---
url: https://example.com/article
title: The article title
description: A short summary pulled from the page.
created: 2026-06-14T10:00:00.000Z
domain: example.com
type: article
favorite: false
tags:
- reading
- research
image: https://wsrv.nl/?url=...
favicon: https://example.com/favicon.ico
archive: ""
source: obsidian-bookmarker
---
# The article title
```embed
title: The article title
image: https://wsrv.nl/?url=...
description: A short summary pulled from the page.
url: https://example.com/article
favicon: https://example.com/favicon.ico
aspectRatio: 1.91
The fallback link at the bottom works even without a preview plugin installed.
When the cover is a vault image, `image` holds a wikilink instead of a URL and the body
uses a native embed, so it renders without any preview plugin at all:
```markdown
image: "[[_bookmarks/_assets/The article title.png]]"
# The article title
![[_bookmarks/_assets/The article title.png]]
Requirements
- Obsidian 1.7.2 or newer, desktop or mobile.
- An Anthropic API key for the Claude classifier. This is optional: the heuristic mode classifies offline with no key.
- The obsidian-link-embed community plugin to render preview cards. Without it the note still saves, showing the raw embed block and the fallback link. The plugin settings include an install button for it.
Install
From inside Obsidian: open Settings, go to Community plugins, Browse, search for "Bookmarker", and install. Then enable it.
To install manually instead:
- Download
main.js,manifest.json, andstyles.cssfrom a release. - Copy them into
<your vault>/.obsidian/plugins/bookmarker/. - Enable Bookmarker in Community plugins, then reload.
Browser extension (desktop one-click)
Install it from the Chrome Web Store (Chrome, Edge, Brave, Arc). Click its toolbar button on any page and Obsidian saves the bookmark.
The extension/ folder also holds the source. To run it unpacked for development: Chrome chrome://extensions → Developer mode → Load unpacked → select extension/. The button opens obsidian://bookmark?url=<current tab>, which hands the URL to the plugin. See extension/README.md for details.
Mobile (iOS/iPad)
No extension is needed. Make an Apple Shortcut on the Share Sheet that opens obsidian://bookmark?url= followed by the shared URL. The plugin handles the rest.
Usage
Commands available from the command palette:
- Bookmark a URL: opens the capture window, prefilled if your clipboard holds a link.
- Open bookmarks board: also available from the ribbon icon. Opens the Categories view.
- Check for broken links: scans every saved bookmark and flags dead URLs.
- Import bookmarks…: opens the import window for an HTML or CSV file.
- Import from Raindrop: pulls every bookmark from your Raindrop account through the API, with covers and collections. Set the token in settings first.
- Insert bookmark link: fuzzy-search your saved bookmarks and insert a wiki-link to the one you pick at the cursor.
Organize
Four commands tidy a collection that has grown messy. Each one scans, shows a review window where every proposed change has a checkbox, and applies only what you keep checked.
- Deduplicate bookmarks: groups notes that point to the same URL (ignoring trackers,
www., and trailing slashes), keeps the richest note in each group, merges the others' tags, notes, and favorite flag into it, then deletes the duplicates you confirm. - Bulk re-tag selected bookmarks: re-runs the classifier and replaces tags, showing the old set next to the new one.
- Suggest folder moves for selected bookmarks: proposes a better subfolder for notes that look misfiled and moves the ones you approve.
- Clean up broken links: finds dead URLs and offers a per-item fix: swap in a Wayback Machine snapshot, move the note to a
_brokenfolder, or mark it with abrokenflag and a#brokentag. Nothing is deleted.
The two AI commands work on the cards you tick on the board (each card has a selection checkbox, with Select all / Select none in the toolbar). With nothing selected they fall back to the cards currently visible under your filters. A batch cap keeps a single run bounded; re-run to continue.
Settings
The settings tab covers the classifier (mode, model, API key), the vault layout (root folder, review before saving), the bookmark bar (show it, how many starred bookmarks it holds), preview behavior (image proxy, screenshot fallback), the free service layers (favicon, Wayback), classification behavior (allow new tags, allow new folders, duplicate and same-domain warnings, max tags, excerpt length), the Organize commands (batch cap, broken-link folder, default broken-link remediation), a Raindrop API token for the Raindrop import, and a password for the board's Hidden-cards lock. The API key and token fields each have a Test button to check they work.
Card size, sort order, title source, and per-category color/icon styling live on the board toolbar itself rather than in this tab, since they're board-viewing preferences rather than plugin configuration.
Privacy
- The Anthropic API key is stored in plaintext in
.obsidian/plugins/bookmarker/data.json. If you sync your.obsidianfolder, the key syncs with it. Exclude that file from sync. - The Claude classifier sends the page title, description, and a text excerpt to the Anthropic API. Use the heuristic mode to keep everything offline.
- The image proxy (wsrv.nl) and the screenshot fallback (Microlink) see the image and page URLs you save. Both are optional and can be turned off in settings.
- The Hidden-cards password is a soft lock stored as a hash, meant to keep bookmarks out of casual view on the board. It is not encryption: hidden notes remain readable as plain Markdown files on disk.
How it is built
The capture pipeline is: validate the URL, fetch the HTML with Obsidian's requestUrl, extract metadata with DOMParser, resolve a preview image, classify, optionally review, then write the note into the chosen subfolder. All network and file access goes through the Obsidian API so the plugin stays mobile-safe, with no Node-only modules. The classifier is a swappable interface with Claude and heuristic implementations. ADR-001 in docs/architecture/ records the one-click capture design.
Development
npm install
npm run dev # esbuild watch
npm run build # type-check + production bundle
Type-check on its own: npx tsc -noEmit -skipLibCheck.
License
MIT. See LICENSE.