bookmark-manager

Save and organize URLs with tags, full-text search, and auto-generated screenshots. Use when you need to save a URL for later, organize links into collections, search saved bookmarks, or import browser bookmarks. Triggers include "save this link", "bookmark", "organize URLs", "find that article I saved", or any task involving managing a personal URL library.

7 stars

Best use case

bookmark-manager is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Save and organize URLs with tags, full-text search, and auto-generated screenshots. Use when you need to save a URL for later, organize links into collections, search saved bookmarks, or import browser bookmarks. Triggers include "save this link", "bookmark", "organize URLs", "find that article I saved", or any task involving managing a personal URL library.

Teams using bookmark-manager should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/bookmark-manager/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/web-applications/bookmark-manager/skills/bookmark-manager/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/bookmark-manager/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How bookmark-manager Compares

Feature / Agentbookmark-managerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Save and organize URLs with tags, full-text search, and auto-generated screenshots. Use when you need to save a URL for later, organize links into collections, search saved bookmarks, or import browser bookmarks. Triggers include "save this link", "bookmark", "organize URLs", "find that article I saved", or any task involving managing a personal URL library.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# bookmark-manager

Self-hosted bookmark manager with tags, screenshots, and full-text search.

## When to use

- Saving URLs to read or reference later
- Organizing links into collections by topic
- Searching across all saved bookmarks by content
- Importing browser bookmarks from Chrome/Firefox/Safari
- Sharing a curated collection of links publicly

## Prerequisites

1. A running bookmark-manager instance (self-hosted or Docker)
2. Access to the web UI at the configured BASE_URL
3. Password set during first-run setup

## Quick Start

```bash
# Run with Docker
docker compose up -d
# Open http://localhost:3000
# Set your password on the first-run screen
# Start saving bookmarks
```

## Key Operations

### Save a bookmark

POST to the API or use the web UI form:

```bash
curl -X POST http://localhost:3000/api/bookmarks \
  -H "Cookie: session=your-session-token" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","tags":["dev","reference"]}'
```

Response: `{"id":42,"url":"...","title":"Example","screenshot_status":"pending"}`

### Search bookmarks

```bash
curl "http://localhost:3000/api/search?q=javascript+promises&page=1" \
  -H "Cookie: session=your-session-token"
```

Returns paginated results with FTS5 `<mark>` snippets.

### Import from browser

```bash
curl -X POST http://localhost:3000/api/import \
  -H "Cookie: session=your-session-token" \
  -F "file=@bookmarks.html"
```

Returns: `{"imported":312,"skipped":28,"errors":2}`

### Export all bookmarks

```bash
curl http://localhost:3000/api/export \
  -H "Cookie: session=your-session-token" \
  > my-bookmarks.html
```

### Share a collection

```bash
curl -X POST http://localhost:3000/api/collections/3/share \
  -H "Cookie: session=your-session-token"
```

Returns: `{"shareUrl":"https://bookmarks.example.com/s/abc123..."}`

## API Reference

| Method | Endpoint | Description |
|---|---|---|
| POST | `/api/auth/login` | Login with password |
| POST | `/api/auth/logout` | End session |
| GET | `/api/bookmarks` | List bookmarks (paginated) |
| POST | `/api/bookmarks` | Create bookmark |
| GET | `/api/bookmarks/:id` | Get single bookmark |
| PUT | `/api/bookmarks/:id` | Update bookmark |
| DELETE | `/api/bookmarks/:id` | Delete bookmark |
| POST | `/api/bookmarks/bulk` | Bulk tag/delete |
| GET | `/api/search` | Full-text search |
| GET | `/api/collections` | List collections |
| POST | `/api/collections` | Create collection |
| POST | `/api/collections/:id/share` | Share/unshare collection |
| GET | `/api/tags` | List tags with counts |
| POST | `/api/import` | Import Netscape HTML |
| GET | `/api/export` | Export Netscape HTML |
| GET | `/api/share/:token` | Public collection (no auth) |
| GET | `/api/screenshot/queue` | Screenshot queue status |

## Query Parameters

| Param | Description |
|---|---|
| `q` | Search query (FTS5) |
| `tag` | Filter by tag name |
| `collection` | Filter by collection ID |
| `pinned=1` | Only pinned bookmarks |
| `page` | Page number (1-indexed) |
| `per_page` | Results per page (default 24, max 100) |

## Environment Variables

| Variable | Default | Description |
|---|---|---|
| `PORT` | `3000` | HTTP port |
| `DATA_DIR` | `./data` | SQLite DB and screenshots directory |
| `SESSION_SECRET` | (required) | Session signing secret |
| `SCREENSHOT_ENABLED` | `1` | Enable Puppeteer screenshots (0/1) |
| `SCREENSHOT_CONCURRENCY` | `2` | Parallel Puppeteer workers |
| `SCREENSHOT_TIMEOUT_MS` | `15000` | Per-page capture timeout |
| `SHARE_ENABLED` | `1` | Allow public share links (0/1) |
| `BASE_URL` | `http://localhost:3000` | Public URL for share links |

## Troubleshooting

### Screenshots not capturing

Check `SCREENSHOT_ENABLED=1` and that Chromium is installed. View the queue at `/screenshot-queue` to see errors.

### Import shows 0 imported

The HTML file may not be in Netscape bookmark format. Export from Chrome: Bookmark Manager > three-dot menu > Export bookmarks.

### "Unauthorized" on all API calls

Session cookie expired or not sent. POST to `/api/auth/login` to get a new session cookie.

### Search returns no results

FTS5 index may be out of sync. Rebuilding is triggered automatically on startup. Check that the query does not contain unbalanced quotes.

Related Skills

Skill: clinic-queue-manager API

7
from heldernoid/agentic-build-templates

## When to use this skill

appointment-manager

7
from heldernoid/agentic-build-templates

Schedule and track healthcare appointments, manage provider contacts, build pre-appointment checklists, attach documents, receive reminders, and export appointment history. Use when a user needs to add, view, update, or export healthcare appointments.

dns-record-manager

7
from heldernoid/agentic-build-templates

Operate dns-record-manager -- manage DNS records across Cloudflare and Route 53, review change history, and configure providers.

env-manager

7
from heldernoid/agentic-build-templates

Manage encrypted .env file vaults across projects and environments using env-file-manager

terminal-bookmarks

7
from heldernoid/agentic-build-templates

Save, tag, and fuzzy-search shell commands from the terminal. Use when you need to store a complex command for later recall, search through saved commands, execute a bookmark, manage tags, or sync bookmarks across machines. Triggers include "save this command", "bookmark command", "find my docker command", "recall command", "shell history bookmark", "tbm", or any task involving managing reusable shell commands.

ssh-config-manager

7
from heldernoid/agentic-build-templates

Manage SSH host configurations in ~/.ssh/config from the terminal. Use when adding, editing, or searching SSH hosts, cloning host configs, testing connections, or importing configs. Triggers include "ssh config", "ssh host", "sshm", "add ssh host", "edit ssh config", "test ssh connection".

Skill: farm-task-manager

7
from heldernoid/agentic-build-templates

## Purpose

Skill: Uptime Monitoring

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.