Keepnet

Jeder kennt es: Man speichert sich auf X, TikTok, Instagram oder Reddit ständig Links "für später" – und wenn später dann kommt, ist das Video gelöscht, der Account weg oder man findet den Bookmark in der unsortierten Masse einfach nicht mehr. X versteckt die eigenen Bookmarks inzwischen sogar hinter einer Paywall-API.

Keepnet ist meine Antwort darauf: ein selbst-gehostetes "save it before it's gone"-System. Per iOS-Shortcut (oder PWA-Share-Target) teile ich einen Link an meine eigene Instanz – den Rest erledigt eine Pipeline im Hintergrund.

Die Ingest-Pipeline

Jeder geteilte Link durchläuft eine asynchrone Job-Pipeline auf Basis von pg-boss – ganz ohne Redis, die Queue lebt direkt in Postgres:

  • Kanonisieren & Deduplizieren – Shortener wie t.co oder vm.tiktok.com werden aufgelöst, Tracking-Parameter entfernt und die kanonische URL gehasht, damit doppelt geteilte Links nicht doppelt landen.
  • Medien-Archivierung – Videos und Bilder werden mit yt-dlp und ffmpeg heruntergeladen und in MinIO (S3) abgelegt – inklusive Sonderfällen wie TikTok-Foto-Karussells.
  • Transkription auf dem Mac – ein eigener Worker läuft als launchd-Agent auf meinem Mac und transkribiert Videos mit mlx-whisper auf der Apple-Silicon-GPU, 10–30× schneller als CPU-Whisper auf dem Server. Der Worker sieht dabei weder Datenbank noch S3-Credentials – Audio kommt über kurzlebige presigned URLs.
  • KI-Labeling – ein LLM ordnet jeden Bookmark automatisch einer selbst definierten Label-Taxonomie zu.

Suche, die wirklich findet

Die Bibliothek ist über eine dreistufige Suche in einer einzigen Postgres-Instanz durchsuchbar: gewichtete Volltextsuche, Trigram-Index als Tippfehler-Fallback und semantische Vektorsuche über pgvector mit HNSW-Index – fusioniert per Reciprocal Rank Fusion.

Dazu gibt es einen "Ask your library"-Endpoint: Ein LLM beantwortet Fragen über die eigene Bibliothek, ruft dabei selbstständig Such-Tools auf und zitiert die Quellen als verlinkte Bookmarks.

Importer für den Alt-Bestand

Damit auch die Bookmarks der letzten Jahre einziehen, gibt es Bulk-Importer für GitHub Stars, TikTok-Favoriten, Instagram Saved und Reddit Saved – und für die X-Bookmarks einen dokumentierten Console-Script-Workaround an der Paywall vorbei.

Keepnet läuft produktiv auf meinem eigenen Server und archiviert seitdem alles, was ich unterwegs teile.

Sprachen

  • Nuxt60.0%
  • TypeScript40.0%

Aktivität

44 Commits vor 23 Stunden