Invia al tuo reMarkable, invece di scaricarli, i PDF che incontri navigando.
Finiscono nella cartella ReadIT del tablet, pronti alla sincronizzazione
successiva. Estensione per Chrome e Safari da un solo sorgente.
Il flusso abituale di lettura su reMarkable è: scarico il PDF, apro l'app, trascino il file, aspetto la sincronizzazione. ReadIT lo riduce a un clic dalla pagina che stai leggendo. Il documento parte dal browser e arriva al cloud reMarkable senza passare da alcun server intermedio.
reMarkable non pubblica una API: quella usata dall'app desktop è nota solo per
reverse engineering. ReadIT si appoggia a
rmapi-js, che ne offre una
implementazione JavaScript utilizzabile direttamente nel browser — nessun
programma di supporto sul computer.
pagina web
│ clic (popup o tasto destro)
▼
processo di sfondo ──fetch(url, cookie inclusi)──► server del PDF
│ │
│ ◄─────────────── bytes del PDF ──────────────┘
│
├─ controllo firma "%PDF" (non il Content-Type)
├─ uploadPdf(nome, bytes) → arriva nella root del cloud
└─ move(hash, idCartella) → finisce in ReadIT
L'upload è in due passi perché l'endpoint compatibile con lo schema 4 del cloud deposita sempre nella root; lo spostamento successivo usa un indice a controllo ottimistico della concorrenza, quindi viene ritentato se il tablet sta sincronizzando. Se anche l'ultimo tentativo fallisce, il file resta caricato nella root: nessuna perdita, solo un avviso.
chrome://extensions→ attiva Modalità sviluppatore- Carica estensione non pacchettizzata → seleziona
dist/chrome - Fissa l'icona alla barra
Vale identico per Chromium, Brave, Edge, Vivaldi.
Safari carica le stesse WebExtension ma incapsulate in un'app macOS. Serve macOS con Xcode (non è possibile da Linux o Windows).
xcrun safari-web-extension-converter dist/safari \
--app-name "ReadIT" --bundle-identifier net.raucci.readit \
--macos-only --no-promptPoi in Xcode ⌘R, e in Safari: Sviluppo → Consenti estensioni non firmate,
Impostazioni → Estensioni per attivarla, e — passaggio non facoltativo —
Modifica autorizzazioni → Consenti su ogni sito web. Chrome concede i
permessi host all'installazione; Safari li tratta come autorizzazione per sito,
e senza la fetch verso il server del PDF viene bloccata. Il dettaglio completo
è in README-progetto.md.
- Popup → Opzioni
- Apri https://my.remarkable.com/device/browser/connect e accedi
- Copia il codice di 8 caratteri (monouso, scade in pochi minuti), incollalo, Abbina
Da lì l'estensione possiede un device token permanente, inviato solo a
*.remarkable.com.
- Scheda con un PDF → clic sull'icona → prima riga
- Pagina con link a PDF → clic sull'icona → sono elencati tutti
- Tasto destro su un link → Invia questo PDF a ReadIT
I PDF dietro login (riviste, portali della scuola) funzionano perché la fetch
porta con sé i cookie di sessione.
npm install # solo la prima volta
npm run build # src/ + common/ → dist/chrome e dist/safari
npm test # tre controlli in test/dist/ è rigenerabile e quindi non versionato. Se pubblichi via interfaccia web
di GitHub, esegui npm run build prima di caricare, così chi scarica trova le
cartelle pronte.
src/ |
processo di sfondo, accesso al cloud, shim del namespace |
common/ |
interfaccia, identica sui due browser |
manifest.base.json |
parte comune; build.mjs ne deriva i due manifest |
test/ |
caricamento, gestione errori, pacchetto Safari |
Documentazione estesa (architettura, differenze Chrome/Safari, risoluzione dei
problemi): README-progetto.md.
Le API non sono ufficiali: un cambio lato reMarkable si risolve con
npm update rmapi-js && npm run build. Tetto per file 200 MB. Trattati i PDF;
gli EPUB sarebbero banali da aggiungere (rmapi-js espone uploadEpub).
MIT — B. Raucci · www.raucci.net
Non affiliato a reMarkable AS.