Skip to content

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.

Set it up Configuration

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 trilium in Karakeep, or put it in a list, and the next run turns it into a Trilium note. Afterwards the bookmark is tagged trilium-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 #karakeepId label, 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.