Overview
Replace Readwise Reader’s web clipping with a self-hosted pipeline fully integrated into Akita.
Architecture
iOS Share Extension (client)
- Minimal SwiftUI app shell hosting a Share Extension
- JS preprocessing file runs Readability.js in the authenticated page context (access to paywalled DOM)
- Extracts:
title,content(clean HTML),textContent,byline,siteName,excerpt, OG metadata - POSTs JSON payload to Akita ingest endpoint via Cloudflare Tunnel
- Distributed via TestFlight (personal use, no App Store)
Akita ingest endpoint (server)
- REST endpoint behind Cloudflare Tunnel (e.g.
/api/clippings) - Auth via bearer token or shared secret
- Stores structured clipping in MongoDB
clippingscollection - Feeds plain text into corpus indexing pipeline (chunking + Qdrant embedding via Ollama)
MCP tools
clippings__list— list clippings with optional filters (site, date, tags)clippings__get— retrieve a clipping by ID (full content + metadata)clippings__search— semantic search across clippings via Qdrantclippings__delete— remove a clipping
Akita-web
/clippingspage listing saved articles- Individual clipping view rendering clean HTML
Key decisions
- Readability.js runs client-side (required for paywalled content)
- Server never needs site credentials
- Clippings flow into corpus → available in dossiers, briefings, signal reports