CLI tool for interacting with the Karakeep bookmark manager.
Install
mkdir -p .claude/skills/karakeep && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18026" && unzip -o skill.zip -d .claude/skills/karakeep && rm skill.zipInstalls to .claude/skills/karakeep
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Official skill for how to use karakeep (the bookmark manager) and interact with it programmatically.Key capabilities
- →Add link bookmarks with auto-fetched metadata (title, description, image, screenshot, archive)
- →Save text snippets or quick notes as bookmarks
- →Upload images and PDFs directly as media bookmarks
- →Organize bookmarks into manual or smart lists
- →Apply lightweight tags to bookmarks for categorization
- →Search bookmarks using a capable query language with full-text search, boolean logic, and qualifiers
How it works
Karakeep is an open-source self-hosted bookmark manager that allows users to collect, organize, and search content. It supports various bookmark types (links, text, media), lists, tags, and a search query language, all accessible via a CLI.
Inputs & outputs
When to use karakeep
- →Add bookmark to karakeep
- →Search saved bookmarks
- →Attach notes to content
About this skill
Karakeep
Karakeep is an open source bookmark manager for collecting, organizing, and searching links, notes, images, and PDFs. Use this skill to operate a Karakeep instance through the official CLI.
When to use
Use this skill when the user asks to add, retrieve, search, organize, export, or otherwise manage content in Karakeep.
Prefer the CLI over writing direct HTTP requests. Run karakeep --help or karakeep <command> --help when a command is not covered here. karakeep skill prints the skill bundled with the installed CLI, which may be newer than a separately installed copy.
Core concepts
Karakeep stores three bookmark types:
- Links. Karakeep can fetch the page title, description, image, screenshot, readable content, and full-page archive.
- Text. Notes and text snippets stored as bookmarks.
- Assets. Images and PDFs uploaded as bookmarks.
Bookmarks can have tags, notes, highlights, favorite and archive state, and membership in one or more lists. Manual lists contain selected bookmarks. Smart lists use a saved search query and update as matching bookmarks change.
Saving a link that already exists does not create a duplicate. For ordinary saves, including the CLI, Karakeep restores the existing bookmark from the archive and moves it to the top. Metadata that the caller did not supply remains unchanged.
Karakeep can consume RSS feeds and publish lists as RSS feeds. Its rule engine can tag, favorite, or route new bookmarks to lists. Webhooks report bookmark events.
Search query language
Spaces between conditions mean and. Use and, or, and parentheses for explicit boolean logic. Prefix a qualifier with - or ! to negate it. Text that is not part of a qualifier becomes the search text.
| Qualifier | Meaning | Example |
|---|---|---|
is:fav | Favorite bookmarks | is:fav |
is:archived | Archived bookmarks | -is:archived |
is:tagged | Bookmarks with at least one tag | -is:tagged |
is:inlist | Bookmarks in at least one list | is:inlist |
is:link | Link bookmarks | is:link |
is:text | Text bookmarks | is:text |
is:media | Image or PDF bookmarks | is:media |
is:broken | Failed crawls or non-2xx responses | is:broken |
url:<value> | URL substring | url:github.com |
title:<value> | Title substring | title:"release notes" |
#<tag> or tag:<tag> | Tag name | #important, tag:"in progress" |
list:<name> | List name | list:"to review" |
after:<date> | Created on or after YYYY-MM-DD | after:2026-01-01 |
before:<date> | Created on or before YYYY-MM-DD | before:2026-06-01 |
age:<range> | Creation age using d, w, m, or y | age:<1w, age:>6m |
feed:<name> | Source RSS feed | feed:Hackernews |
source:<value> | Capture source | source:cli, -source:rss |
Valid capture sources are api, web, cli, mobile, extension, singlefile, rss, and import.
Examples:
is:fav after:2026-01-01 #important
is:archived and (list:reading or #work)
-is:tagged or -is:inlist
machine learning is:fav -is:archived
Install the CLI
npm install -g @karakeep/cli
The container image is also available:
docker run --rm ghcr.io/karakeep-app/karakeep-cli:release --help
Authenticate
Create an API key in the Karakeep settings page. The simplest persistent setup is:
karakeep auth init
karakeep whoami
auth init prompts for the server address and API key. It writes a mode 0600 JSON file to $XDG_CONFIG_HOME/karakeep/config.json, or ~/.config/karakeep/config.json when XDG_CONFIG_HOME is unset. It asks before changing an existing file. Use --force to overwrite it without confirmation.
For non-interactive setup, put the global options before auth init:
karakeep --server-addr "https://karakeep.example.com" --api-key "$KARAKEEP_API_KEY" auth init --force
The CLI resolves credentials in this order:
- Global command options,
--api-keyand--server-addr. KARAKEEP_API_KEYandKARAKEEP_SERVER_ADDRenvironment variables.- The persistent config file.
The server address defaults to https://cloud.karakeep.app. The API key has no default. Use global options for a one-off command without changing saved config:
karakeep --api-key <key> --server-addr <addr> whoami
Add and import bookmarks
# Add one or more links. Repeat --link for multiple URLs.
karakeep bookmarks add --link "https://example.com"
# Add tags and list membership while saving.
karakeep bookmarks add --link "https://example.com" --tag-name reading --tag-name work --list-id <list-id>
# Add text directly or from stdin.
karakeep bookmarks add --note "Review the proposal" --title "Reminder"
printf '%s\n' "Long note" | karakeep bookmarks add --stdin
# Upload an image or PDF as an asset bookmark.
karakeep bookmarks add --asset ./paper.pdf --title "Research paper"
Import a SingleFile HTML archive with its original URL:
karakeep bookmarks import-singlefile ./page.html --url "https://example.com/page"
karakeep bookmarks import-singlefile ./page.html --url "https://example.com/page" --if-exists overwrite-recrawl
--if-exists accepts skip, overwrite, overwrite-recrawl, append, or append-recrawl. The default is skip. The recrawl variants queue a crawl after storing the archive.
Find bookmarks
bookmarks search supports three modes:
ftsis the default full-text search.semanticsearches bookmark embeddings. It requires non-empty search text and configured embedding and vector-store providers. Results below the similarity threshold are omitted, so it may return fewer than the requested limit.hybridcombines full-text and semantic rankings. It falls back to full-text search when the query contains only qualifiers or semantic infrastructure is unavailable.
Semantic and hybrid searches support relevance sorting only when semantic ranking runs. The instance must also enable semantic search and automatic embedding indexing.
# Full-text search with qualifiers.
karakeep bookmarks search "rust is:fav" --limit 10
# Find conceptually related content even when wording differs.
karakeep bookmarks search "durable background jobs" --search-mode semantic
# Combine keyword and semantic ranking.
karakeep bookmarks search "rust async patterns #programming" --search-mode hybrid
# Include stored content and fetch every result page.
karakeep bookmarks search "incident review" --include-content --all
Use bookmarks list for structured filters that do not need the search language:
karakeep bookmarks list --list-id <list-id> --include-archived
karakeep bookmarks list --tag-id <tag-id> --all
Without --all, list and search commands print a cursor when another page exists. Pass it back with --cursor <cursor>.
Read content and download assets
Get bookmark metadata with bookmarks get. --include-content includes stored content in the result.
karakeep bookmarks get <bookmark-id>
karakeep bookmarks get <bookmark-id> --include-content
For long content, use the bounded readable-content command. It returns Markdown or plain text and prints a continuation cursor when more content remains.
karakeep bookmarks content <bookmark-id> --format markdown --max-chars 20000
karakeep bookmarks content <bookmark-id> --cursor <cursor>
The maximum chunk size is 50,000 Unicode characters. Download an attachment or asset by the asset ID shown by bookmarks get:
karakeep assets download <asset-id> --output ./download.pdf
karakeep assets download <asset-id> --output ./download.pdf --force
Update and organize bookmarks
karakeep bookmarks update <bookmark-id> --title "New title" --description "New description"
karakeep bookmarks update <bookmark-id> --archive
karakeep bookmarks update <bookmark-id> --no-archive
karakeep bookmarks update <bookmark-id> --favourite
karakeep bookmarks update-tags <bookmark-id> --add-tag important --remove-tag inbox
karakeep lists list
karakeep lists create --name "Reading" --icon "📚"
karakeep lists create --name "Recent AI" --icon "🤖" --type smart --query "#ai age:<1m"
karakeep lists get <list-id>
karakeep lists add-bookmark --list <list-id> --bookmark <bookmark-id>
karakeep lists remove-bookmark --list <list-id> --bookmark <bookmark-id>
karakeep tags list
karakeep tags get --name important
karakeep tags merge --into <target-tag-id> --from <tag-id> <tag-id>
karakeep highlights list --bookmark <bookmark-id>
karakeep highlights get <highlight-id>
Delete commands are available for bookmarks, lists, tags, and highlights. Confirm the target with the user before using them.
Machine-readable output
Use the global --json option when another program or agent will consume the result. Put it before the command to avoid ambiguity:
karakeep --json bookmarks search "#work" --all
karakeep --json whoami
When not to use it
- →When `KARAKEEP_API_KEY` environment variable is not set
- →When `KARAKEEP_SERVER_ADDR` is not set for self-hosted instances
- →When using CLI flags for authentication instead of environment variables
Prerequisites
Limitations
- →The CLI requires an API key for authentication
- →The server address must be provided for self-hosted instances
- →Groups in search queries cannot be negated
How it compares
Karakeep provides a self-hosted, open-source solution for complete bookmark management with advanced features like auto-fetching link metadata, smart lists, and a capable search query language, offering more control and customization
Compared to similar skills
karakeep side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| karakeep (this skill) | 0 | 4mo | Review | Intermediate |
| agent-memory-mcp | 8 | 7mo | Review | Intermediate |
| diary | 0 | 4mo | Review | Advanced |
| session-review | 0 | 3mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
agent-memory-mcp
davila7
A hybrid memory system that provides persistent, searchable knowledge management for AI agents (Architecture, Patterns, Decisions).
diary
Anhvu1107
ALWAYS use this when the request matches Diary: Unified Diary System: A context-preserving automated logger for multi-project development.
session-review
philoserf
Wraps up a session with two outputs — a sweep into the auto-memory system to preserve reusable insights for future Claude sessions, and a human-readable recap saved to the Obsidian notes vault. Use for retrospectives, debriefs, post-mortems, or end-of-session reflection.
my-daily-log
mike2ox
오늘 Claude Code 대화 로그를 분석하여 Obsidian 일지 초안을 생성합니다. 업무 종료 후 일지 작성 시 사용하세요.
harnesscp-memory
LSDIPPOLLC
>
ck
affaan-m
Persistent per-project memory for Claude Code. Auto-loads project context on session start, tracks sessions with git activity, and writes to native memory. Commands run deterministic Node.js scripts — behavior is consistent across model versions.