Your Karakeep bookmarks, as Trilium notes¶
karakeep-trilium-sync copies the bookmarks you tag in Karakeep into Trilium, with the article text Karakeep saved. Save a page from the browser extension or your phone's share sheet, and it shows up in your notes a few minutes later.
It's one small container next to Trilium:
karakeep-trilium-sync:
image: ghcr.io/marceltov/karakeep-trilium-sync:latest
environment:
KARAKEEP_API_ADDR: https://karakeep.example.com
KARAKEEP_API_KEY: ${KARAKEEP_API_KEY}
TRILIUM_SERVER_URL: http://trilium:8080
TRILIUM_ETAPI_TOKEN: ${TRILIUM_ETAPI_TOKEN}
What it does¶
- Tag to import. Tag a bookmark
triliumin Karakeep, or put it in a list, and the next run turns it into a Trilium note. Afterwards the bookmark is taggedtrilium-imported. - The text, not just the link. Articles arrive as Karakeep extracted them, with author, publisher and publish date. PDFs and images bring their extracted text, and text bookmarks their text.
- Goes where you want it. Pick the parent note by ID or by a label search, sort notes into dated folders like
2026/10, and add your own labels to every note. - Never imports twice. Each note carries a
#karakeepIdlabel, so a bookmark is imported once even if a run fails halfway. - Reddit works. Reddit shows crawlers a login page instead of the post, so the sync gets Reddit posts from Reddit's own feeds. See Reddit.
- Talks to the APIs only. It polls Karakeep's REST API and writes through Trilium's ETAPI, so the three can run on different hosts. It needs no MCP, no OAuth and no public endpoint.
---
config:
flowchart:
curve: linear
---
flowchart LR
you["<img src='icons/you.svg' width='40' height='40'><br>You<br>browser, phone"]
karakeep["<img src='icons/karakeep.svg' width='40' height='40'><br>Karakeep"]
reddit["<img src='icons/reddit.svg' width='40' height='40'><br>Reddit feeds"]
sync["<img src='logo.svg' width='48' height='48'><br>karakeep-trilium-sync"]
trilium["<img src='icons/trilium.svg' width='40' height='40'><br>Trilium"]
you -- "save + tag" --> karakeep
karakeep -- "tagged bookmarks" --> sync
reddit -. "Reddit posts" .-> sync
sync -- "new notes" --> trilium
classDef accent fill:#6d28d91f,stroke:#8b5cf6,stroke-width:1.5px
class sync accent
Keeping an LLM wiki in Trilium?
The sync can feed a wiki's raw sources: point it at the Sources note and sort by year, see the example. The LLM wiki skill of trilium-plugin sets up such a wiki and ingests the imported sources into it. Why I built this shows the whole setup.