Karakeep 是一套可以自己架的「什麼都存」書籤系統:連結、圖片、PDF、純文字筆記丟進去,它會自動抓標題、截圖、存整頁快照,再用 LLM 產生標籤與摘要,最後用全文加語意搜尋找回來。Docker Compose 三個服務、四個環境變數就能跑起來,用 Ollama 本地模型的話 AI 成本為零。
為什麼要換掉瀏覽器書籤
| 痛點 | 瀏覽器書籤 | Raindrop | Karakeep | |
|---|---|---|---|---|
| 換裝置就亂 | 要登入同步,常衝突 | 已停止服務 | 雲端,不能自架 | 自架,資料在自己手上 |
| 只記得「大概在講什麼」 | 只能搜標題 | 弱 | 關鍵字 | 全文+語意搜尋 |
| 原文三個月後消失 | 只剩連結 | 有存檔但會關 | 有限 | 整頁快照(monolith)+影片(yt-dlp) |
| 分類要自己動手 | 手動資料夾 | 手動 | 手動 | LLM 自動標籤+規則引擎 |
| 幻燈片、截圖裡的文字 | 搜不到 | 搜不到 | 部分 | OCR 進全文索引 |
Pocket 在 Mozilla 宣布關閉後,這類需求大量轉向自架方案;Karakeep 正是吃下這批使用者的專案之一(前身叫 Hoarder,2024 年 2 月開源)。
一表看懂
| 項目 | 內容 |
|---|---|
| 專案 | karakeep-app/karakeep(前身 Hoarder) |
| 最新版本 | v0.34.0(2026-10-17 發布) |
| GitHub 星數 | 29,754(2026-10-18 以 GitHub API 查詢) |
| Fork/開啟中 issue | 1,577/702 |
| 授權 | AGPL-3.0(由 Localhost Labs Ltd 持有) |
| 語言 | TypeScript(Next.js + tRPC + Drizzle) |
| 搜尋引擎 | Meilisearch(全文)+ embedding(語意) |
| 爬取 | Puppeteer/真實 Chrome(v0.34 起改用 patchright 降低反爬誤擋) |
| 部署 | Docker Compose(web + chrome + meilisearch 三個容器) |
| 雲端版 | 免費 50 個書籤;Pro 每月 4 美元或每年 40 美元 |
| 自架版 | 免費、功能全開、無書籤數上限 |
⚠️ 官網首頁寫「28k+ stars」,API 實測是 29,754。兩者都是官方來源,官網數字較可能是快取;本文以 API 為準並註明查證時間。
它實際怎麼運作
| 步驟 | 行為 | 用到的元件 |
|---|---|---|
| 1. 收進來 | 瀏覽器套件、手機 App、分享選單、RSS、API、CLI 都可以丟 | web |
| 2. 爬取 | 用真實 Chrome 開頁面,抓標題、描述、OG 圖、截圖 | chrome 容器 |
| 3. 存證 | 整頁 HTML 快照(monolith)、影片用 yt-dlp 下載 | web + 儲存卷 |
| 4. 理解 | 抽全文、OCR 圖片、LLM 產生標籤與摘要、算 embedding | 你的 LLM 供應商 |
| 5. 索引 | 全文丟 Meilisearch,向量丟向量索引 | meilisearch |
| 6. 找回 | 關鍵字、語意、篩選語法、清單、標籤 | web/App/CLI/API |
三步安裝(Docker Compose)
步驟 1:建目錄、抓 compose 檔
mkdir karakeep-app && cd karakeep-app
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
步驟 2:建立 .env(最小可用版本)
KARAKEEP_VERSION=release
NEXTAUTH_SECRET=用openssl產生的隨機字串
MEILI_MASTER_KEY=另一個隨機字串
NEXTAUTH_URL=http://localhost:3000
OPENAI_API_KEY=sk-xxx
隨機字串用 openssl rand -base64 36 產生。NEXTAUTH_URL 要改成你的網域,正式站一定要走 HTTPS,否則登入 cookie 會有問題。KARAKEEP_VERSION=release 會跟著最新穩定版,想控制升級節奏就釘版本號(例如 0.34.0)。
步驟 3:啟動
docker compose up -d
打開 http://localhost:3000 會看到登入頁;第一個註冊的帳號會自動成為管理員。之後再進 Admin Settings 把註冊關掉。
官方 compose 檔的三個服務長這樣(原文摘要):
services:
web:
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
ports:
- 3000:3000
volumes:
- data:/data
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
DATA_DIR: /data # DON'T CHANGE THIS
chrome:
image: ghcr.io/karakeep-app/karakeep-chrome:release
init: true
command: ["--disable-gpu", "--disable-dev-shm-usage", "--hide-scrollbars",
"--disable-blink-features=AutomationControlled", "--window-size=1440,900"]
meilisearch:
image: getmeili/meilisearch:v1.41.0
volumes:
- meilisearch:/meili_data
更新時:釘版本就改版本號再 docker compose up -d;用 release 標籤則要 docker compose up --pull always -d 強制拉新版。
接 AI:七種供應商,Local 也能跑
自動標籤與摘要靠 LLM,語意搜尋靠 embedding。所有設定都是環境變數,改完重啟 docker compose up -d 生效。
| 供應商 | 關鍵設定 | 適合誰 |
|---|---|---|
| OpenAI | OPENAI_API_KEY | 想最快跑起來、不在乎幾美元成本 |
| Ollama(OpenAI 相容,推薦) | OPENAI_API_KEY=ollama+OPENAI_BASE_URL=http://你的IP:11434/v1 | 有 GPU、要完全離線 |
| Ollama(原生 API) | OLLAMA_BASE_URL,且不能設 OPENAI_API_KEY | 舊教學沿用 |
| Gemini | OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta | 已有 Google 帳單 |
| OpenRouter | OPENAI_BASE_URL=https://openrouter.ai/api/v1 | 想混用多家模型 |
| Perplexity | OPENAI_BASE_URL=https://api.perplexity.ai | 已在用 sonar |
| Azure OpenAI | OPENAI_BASE_URL=https://<資源>.openai.azure.com/openai/v1/ | 企業合規需求 |
| Cloudflare Workers AI | OPENAI_BASE_URL=https://api.cloudflare.com/client/v4/accounts/<id>/ai/v1 | 想用邊緣免費額度 |
本機 Ollama 的完整範例(模型要先 ollama pull):
OPENAI_API_KEY=ollama
OPENAI_BASE_URL=http://192.168.1.50:11434/v1
INFERENCE_TEXT_MODEL=gemma3
INFERENCE_IMAGE_MODEL=llava
EMBEDDING_TEXT_MODEL=embeddinggemma
EMBEDDING_DIMENSIONS=768
EMBEDDING_CONTEXT_LENGTH=2048
兩個常見坑:第一,容器裡的 localhost 是你自己,不是主機,要用內網 IP 或 compose 服務名。第二,模型不支援結構化輸出時要加 INFERENCE_OUTPUT_SCHEMA=plain,否則標籤產生會一直失敗。
成本實算:6,000 個書籤不到 1 美元
官方「Tagging Costs」頁的說法:
| 類型 | 使用模型 | 官方估算 |
|---|---|---|
| 文字標籤 | gpt-6-luna | 約 6,000+ 個書籤 < 1 美元 |
| 圖片標籤 | gpt-4o-mini(低解析度模式) | 約 1,000+ 張圖 < 1 美元 |
| 自架 Ollama | 你自己選的模型 | 0 元,只吃電與顯存 |
換句話說,一天存 20 個連結,一整年的 AI 成本大概是一杯手搖飲的價格。真正貴的從來不是 API,是你在那邊手動分類的時間。
搜尋語法:比資料夾好用太多
Karakeep 內建一套查詢語法,空白等於 AND,and/or 可明確組合,前面加 - 或 ! 代表排除,括號可群組。
| 語法 | 意思 | 範例 |
|---|---|---|
is:fav | 我的最愛 | is:fav |
-is:archived | 排除已封存 | -is:archived |
is:tagged | 有標籤的 | is:tagged |
has:notes | 有寫筆記 | has:notes |
has:highlights | 有畫重點 | has:highlights |
is:link / is:text / is:media | 依型別 | is:media |
is:broken | 連結失效或爬取失敗 | is:broken |
url: / title: | 子字串比對 | title:"Docker 教學" |
#tag 或 tag: | 標籤 | #docker |
list: | 清單 | list:reading |
after: / before: | 建立日期 | after:2026-01-01 |
feed: | 來自某個 RSS | feed:hn |
實用組合:#ai -is:archived has:highlights after:2026-07-01 = 今年下半年、有畫重點、還沒封存的 AI 主題書籤。
CLI 與 AI Agent 整合
這版最容易被忽略的功能:Karakeep 有官方 CLI 與 Agent Skills,等於把書籤庫變成 agent 可以讀寫的資料層。
npm install -g @karakeep/cli
# 或用 Docker,不裝 Node
docker run --rm ghcr.io/karakeep-app/karakeep-cli:release --help
karakeep --api-key <你的key> --server-addr https://你的網域 whoami
karakeep bookmarks list --json
karakeep bookmarks add --url https://example.com
API key 在 Settings 裡產生;也可以寫進 ~/.config/karakeep/config.json:
{ "serverAddr": "https://your-karakeep.example.com", "apiKey": "你的key" }
Agent 端安裝 skill:
npx skills add karakeep-app/karakeep
裝好之後,Claude Code、Codex、Hermes 這類代理就能用自然語言「幫我找出上個月存的所有 RAG 文章,整理成清單」直接操作。對每天在餵 agent 資料的人來說,這比 UI 好用。
把舊資料搬進來
| 來源 | 方式 |
|---|---|
| Chrome 書籤 | 內建匯入器(HTML) |
| 內建匯入器(趁服務關閉前先匯出) | |
| Linkwarden | 內建匯入器 |
| Omnivore | 內建匯入器 |
| Tab Session Manager | 內建匯入器 |
| 瀏覽器書籤雙向同步 | floccus |
| 任何工具 | REST API 或 CLI 批次匯入 |
與同類方案比較
| 專案 | 星數(2026-10-18 API) | 授權 | 定位 | 自架 | AI 自動標籤 |
|---|---|---|---|---|---|
| Karakeep | 29,754 | AGPL-3.0 | 書籤+筆記+圖片+PDF,AI 標籤與語意搜尋 | ✅ | ✅(可本地) |
| Linkwarden | 20,142 | AGPL-3.0 | 連結/文章存檔、團隊協作收藏 | ✅ | 部分 |
| Wallabag | 13,017 | MIT | 老牌 read-it-later,PHP | ✅ | ❌ |
| memos | 63,894 | MIT | 輕量碎片筆記(Go),時間軸式 | ✅ | ❌ |
| Raindrop.io | 未開源 | 專有 | 打磨很好的雲端書籤 | ❌ | 部分 |
| 已停止服務 | — | 前一代霸主 | ❌ | ❌ |
選型邏輯很簡單:想要「存了會自己長出秩序」選 Karakeep;只是要「把文章存起來慢慢讀」選 Wallabag 或 Linkwarden;只想快速記一句話,memos 更輕。
風險與限制(自架前務必看)
1. 爬蟲就是一台瀏覽器在你的網段上跑。 官方安全文件明講:任何能提交書籤的使用者,都可以讓你的伺服器去爬他指定的網址,這可能洩漏你的來源 IP、被拿來探測內網端點。Karakeep 有基本的 SSRF 防護,但官方明說只擋掉部分風險。不要開放給不信任的使用者註冊,要就讓爬蟲走外部代理或 Browserless。
2. 備份要自己做。 資料在 data volume 的 SQLite,搜尋索引在 Meilisearch volume。備份要一起備,索引重建很慢。官方有 backup worker 與 API,但沒幫你排程到雲端。
3. API 成本會失控的兩種情況。 一次匯入幾萬個書籤會瞬間觸發大量 inference;把 INFERENCE_TEXT_MODEL 指到貴的旗艦模型也是。建議匯入前先設好便宜模型,跑完再視需要重算。
4. AGPL-3.0。 自己用、公司內部用都沒問題;若要拿去做成對外服務並修改原始碼,就必須開源你的修改。商業產品要特別注意。
5. 版本節奏。 v0.34.0 才剛在 2026-10-17 發布,行動 App 的更新還要等 App Store/Google Play 審核(官方 release note 自己寫的)。專案有 702 個開啟中 issue,屬於「功能長很快、雜訊也不少」的階段,正式環境建議釘版本號。
6. 中文支援。 介面有多語系,但自動標籤的中文品質取決於你選的模型;用 gpt 系列或 Qwen 類模型標中文內容會比小模型穩。這點官方沒有實測數據,屬於社群經驗。
誰適合,誰不需要
| 適合 | 不需要 |
|---|---|
| 每天存 10 篇以上文章、需要日後找回 | 一個月存不到 10 個連結 |
| 已經有 NAS/VPS/homelab | 完全不想維護伺服器 |
| 在意資料留在自己手上 | 只想要「按一下就好」的體驗 |
| 想讓 AI agent 讀自己的資料庫 | 只需要瀏覽器書籤列 |
| 常存 PDF、圖片、截圖需要 OCR | 只存純文字連結 |
怎麼開始
- 先試再架:官方 demo(
try.karakeep.app)是唯讀的,可以先看介面。 - 不想維運:雲端 Pro 每月 4 美元或每年 40 美元(省 17%),50,000 個書籤、50GB、含 AI 標籤;免費版 50 個書籤、100MB。
- 要自己架:照上面三步裝完,先接 OpenAI 跑一週,確認工作流真的用得到,再把模型換成 Ollama 省錢。
- 接 agent:裝 CLI 與 agent skill,讓它變成你 AI 工作流的知識底座。
站內延伸閱讀
- FreshRSS 完整教學:16K 星開源 RSS 閱讀器自架指南 — 把 RSS 收進來的內容再丟進 Karakeep,等於自動化情報流
- Syncthing 完整教學:89K 星開源 P2P 檔案同步 — 把 Karakeep 的備份同步到另一台機器
- Paperless-ngx 完整教學:中文 OCR+AI 自動分類的自架文件管理 — PDF 要長期管理,交給 Paperless 更合適
- LibreChat 完整教學:自架 AI 聊天平台,整合 Ollama — 同一台機器上跑本地模型的鄰居
資料來源與查證方法
- Karakeep GitHub Repo 與 README(README 原文:
raw.githubusercontent.com,2026-10-18 讀取) - 官方文件:Docker 安裝、環境變數、不同 AI 供應商、標籤成本、安全考量、CLI、搜尋語法
- 官方定價頁(2026-10-18 抓取)
- GitHub API
api.github.com/repos/karakeep-app/karakeep(星數/授權/最後推送時間,2026-10-18 查詢) - Release note v0.34.0(2026-10-17,patchright 與行動版功能說明)
本文未實測項目:未實際以 Ollama 跑完整標籤流程、未測試大規模匯入(萬級以上)的耗時、未驗證行動 App 離線下載品質。文中成本為官方文件估算值,實際依內容長度與模型而定。
