Karakeep(旧Hoarder)は、リンク・メモ・画像・PDFをまとめて保存できる自己ホスト型のブックマーク管理アプリです。AIによる自動タグ付けと要約、全文検索、OCR、フルページアーカイブなどを備え、Webダッシュボードとブラウザ拡張、モバイルアプリ、CLI、MCPサーバーから同じデータを扱えます。
リポジトリはpnpmワークスペースのモノレポで、NextJS(app router)によるWebダッシュボードを中心に、Drizzleでデータベースとマイグレーションを管理し、NextAuthで認証、tRPCでクライアント・サーバー間通信を行っています。ブックマーク保存時はPuppeteerでページをクロールしてタイトル・説明・画像を取得し、monolithでフルページアーカイブ、yt-dlpで動画を保存します。取得したコンテンツはOpenAI互換のLLM(ollamaなどローカルモデルも対応)に渡して自動タグ付けと要約を行い、Meilisearchで全文・セマンティック検索用に索引化します。apps/browser-extensionはVite+Reactで作られ、tRPCクライアント経由でサーバーAPIを呼び出してポップアップから即時保存します。apps/cliはCommander.jsベースでtRPCを叩き、apps/mcpはModel Context Protocol経由でLLMエージェント(OpenClaw、Hermesなど)がbookmarks・assets・highlightsを操作できるツール群を公開しています。テストファイル(bookmarks.test.tsなど)を見ると、各MCPハンドラはKarakeepのREST APIクライアントをモックして入出力を検証する構成です。
- STEP 01
docker composeでKarakeepを起動すると、NextJSダッシュボードとMeilisearch、ワーカープロセスが立ち上がり、ブラウザからログイン画面が表示されます。
- STEP 02
URLを1件保存すると、バックグラウンドでPuppeteerによるクロールが走り、数秒後にタイトル・説明・サムネイル画像が自動的に埋まります。
- STEP 03
OpenAI APIキーやollamaを設定していれば、保存直後にタグが自動生成され、要約文がブックマークカードに表示されます。
- STEP 04
ブラウザ拡張をインストールしてOptionsPageでサーバーアドレスとAPIキーを設定すると、ツールバーからワンクリックでページを保存できるようになります。
- STEP 05
apps/cliをnpm経由で導入し karakeep auth login した後 karakeep bookmarks add --url でコマンドラインからも保存や一覧取得ができます。
- STEP 06
apps/mcpを設定すると、LLMエージェントがsearch-bookmarksやget-asset、get-bookmark-listsといったツールを呼び出し、保存済みコンテンツを検索・要約に利用できます。
自己ホストのブックマーク・メモ・画像アーカイブ環境が手に入り、保存したコンテンツにはページ本文のアーカイブ、AIタグ、要約、全文・セマンティック検索インデックスが付与されます。Web・拡張機能・CLI・MCPの4つの経路から同一データへアクセスでき、LLMエージェントに検索ツールとして接続することも可能です。
Puppeteerによるクロールやollama、Meilisearch、AIタグ付けなど複数のサービスを組み合わせる構成のため、docker composeでのセットアップ後も各コンポーネントの起動確認やAPIキー設定など初期の調整作業が必要です。
LLMベースの自動タグ付けと要約はOpenAI APIキーまたはollamaのローカルモデル設定が前提であり、未設定の場合はこの機能が動作しません。
READMEのデモは読み取り専用モードのため、実際の書き込み・保存体験はセルフホスト環境を構築してはじめて確認できます。
個人や小規模チームで、Pocketやraindropのような読み下げ用サービスを自前サーバーで運用したい人、かつAIタグ付けやMCP経由でのLLMエージェント連携まで欲しい人に向いています。README記載のスタック(NextJS、Drizzle、tRPC、Puppeteer、Meilisearch)とapps/cli・apps/mcp・apps/browser-extensionの実装ファイル、CIワークフロー構成が一致しており、機能説明と実装の対応関係は明確に確認できるため、インストールせずとも構成や動作フローの信頼性は高いと判断できます。