product update15 min di lettura

Clip archivia una pagina web nelle tue note con il riassunto già scritto. Da oggi si apre a ogni account Telli.sh.

Clip non si limita a salvare una pagina web: la trasforma in una nota Telli.sh con titolo e riassunto di una riga scritti dall'IA. Era stato rilasciato dietro un flag da amministratore, così due contatori di analytics non si sono attivati nemmeno una volta. Quel cancello non c'è più: gli account gratuiti hanno 30 salvataggi e 10 riassunti IA al giorno, e la versione 1.18 dell'estensione per browser aggiunge un Salva su Telli.sh nel menu contestuale, che si autentica con un token capace di fare soltanto quello.

K
Ken Jo
#clip#web-clipper#browser-extension#product-update#api-tokens#privacy

Esiste un tipo preciso di bug che nessuna suite di test intercetta: la funzione funziona, e nessuno riesce ad arrivarci.

Clip è completo da settimane. Il modale salva tramite POST /v1/clip, riempie la scheda di collegamento con i meta tag pubblici della pagina, genera un riassunto IA di una riga, invalida la cache delle note e sa già distinguere tra «salvato, ma hai esaurito la quota di riassunti» e «questo è fallito». Tutto quanto, funzionante. E su PostHog i due eventi che riporta — clip_opened e clip_created — non si erano mai attivati. Non una volta, non di rado. Zero.

Il motivo erano tre righe di codice frontend. Il pulsante nella barra laterale e il modale erano entrambi condizionati a user.is_master, e il pulsante portava un badge ambra Anteprima admin. Il backend non ha mai condizionato nulla a is_master: applica quote giornaliere per piano, che è il posto giusto per un limite. La funzione non era inutilizzata. Era irraggiungibile.

Dal commit 64852ac del 5 settembre 2026, il cancello è «c'è qualcuno che ha effettuato l'accesso». Questo articolo è l'annuncio di un prodotto, quindi è dichiaratamente centrato sul prodotto: ecco cosa fa Clip, quanto ti costa, cosa invia l'estensione per browser e cosa non legge deliberatamente mai.

TL;DR

  • Clip è aperto a ogni account con accesso effettuato. Il pulsante nella barra laterale ha perso il badge da amministratore il 5 settembre 2026.
  • I limiti sono quote giornaliere, non un cancello. Il piano gratuito ha 30 salvataggi e 10 riassunti IA per giornata UTC; plus, pro e pro+ salgono da lì. I numeri esatti sono nella tabella qui sotto.
  • Esaurire la quota di riassunti non ti fa perdere il clip. Il collegamento e i suoi metadati vengono comunque salvati; salta solo il riassunto, e l'app te lo dice.
  • L'estensione per browser può salvare la pagina in cui ti trovi. «Salva su Telli.sh» sta nel menu contestuale di qualunque pagina http(s) e porta con sé ciò che avevi selezionato. Mentre pubblichiamo, la versione 1.18 è in revisione sul Chrome Web Store: non è ancora installabile.
  • L'estensione si autentica con un token che sa solo salvare clip. Non può leggere le tue note, modificare il tuo account, raggiungere la fatturazione o creare un altro token. Il segreto lo vedi esattamente una volta, e puoi revocarlo.
  • L'estensione legge ciò che la pagina ti sta già mostrando. Titolo, collegamento canonico, meta pubblici og:/twitter: e la tua selezione. Non il corpo dell'articolo. Nulla lascia il browser senza un tuo clic, e senza un token salvato la voce di menu non fa proprio niente.

Cosa fa davvero Clip con un URL

Apri Clip dalla barra laterale, incolli un URL e il modale chiama POST /v1/clip/metadata. Quell'endpoint scarica l'HTML della pagina e ne legge soltanto i meta tag pubblici — og:title, og:description, og:image, og:site_name, article:author, article:published_time e il <link rel="canonical">. Titolo, descrizione, sito e immagine tornano già compilati. Se il recupero fallisce, il modale lo dice e ti lascia comunque salvare il collegamento, con il nome host al posto del nome del sito.

Poi salvi, e il Clip diventa una nota. Non un allegato, non un segnalibro in un elenco a parte: una nota con note_type="clip", che sta in Tutte le note insieme a tutto il resto, ricercabile, archiviabile in cartelle, condivisibile ed esportabile dalla stessa macchina. L'URL di origine e l'intera scheda di collegamento sono conservati nel contesto della nota, così la provenienza non si perde mai dietro al riassunto.

Se c'è qualcosa da riassumere — una descrizione, il testo che hai selezionato, un appunto che hai incollato — parte un riassunto generico che scrive sulla nota un riassunto di una riga. È la riga che vedi sotto il titolo nell'elenco.

Tre pagine web salvate con Clip nell'elenco Tutte le note di Telli.sh: Hacker News senza riga di riassunto, Fetch API Overview and Practical Considerations e GitHub come piattaforma di sviluppo potenziata dall'IA, ciascuna con un riassunto di una riga sotto

Tre clip salvati su un account di produzione il 5 settembre 2026, in Tutte le note accanto a normali note. I due clip di articoli portano un titolo scritto dall'IA e un riassunto di una riga. La home page di Hacker News non pubblica alcun meta di descrizione e non c'era testo selezionato, quindi non c'era nulla da riassumere: ha tenuto il proprio titolo e nessuna riga di riassunto. Quando Clip non ha niente su cui lavorare, non dice niente invece di inventare qualcosa.

Quest'ultimo dettaglio è la regola di progettazione che sta sotto l'intera funzione, e vale la pena enunciarla da sola: l'output dell'IA non sostituisce mai l'originale. L'URL di origine, i metadati del sito e qualsiasi testo tu abbia fornito vengono conservati; il riassunto è un dato derivato sovrapposto. Se il riassunto è sbagliato o inutile, la cosa che hai davvero salvato è ancora lì.

I limiti sono una quota giornaliera, e sono l'unico limite

Su Clip non c'è nessun cancello di piano. C'è una quantità.

PianoSalvataggi al giornoRiassunti IA al giorno
Free3010
Plus15050
Pro500150
Pro+2,000500

Valori predefiniti da backend/config.py (CLIP_SCRAPE_DAILY_QUOTA_*, CLIP_SUMMARY_DAILY_QUOTA_*), letti il 5 settembre 2026.

Due quote, non una, e falliscono in modo diverso di proposito. Esaurisci i salvataggi e il salvataggio viene rifiutato: il server risponde 403 con un codice strutturato clip_scrape_quota_exceeded e una data di reset. Esaurisci i riassunti e il clip si salva comunque; salta solo il passaggio del riassunto, e l'app te lo dice con esattezza: «Clip salvato. La quota di riassunti IA di oggi è stata esaurita.»

Quell'asimmetria è voluta. Salvare un collegamento costa poco ed è la cosa che volevi davvero; riassumere è la parte cara. Perdere una pagina che intendevi conservare perché un modello linguistico era a corto di quota sarebbe uno scambio assurdo, quindi non lo facciamo.

Il contatore è una semplice data di calendario UTC. Alle 00:00 UTC la tua giornata riparte — lo stesso istante per tutti, non una finestra mobile di 24 ore su cui ragionare.

«Salva su Telli.sh» è a un clic destro di distanza — appena la 1.18 verrà approvata

Il modale web presuppone che tu abbia l'URL negli appunti. Di solito, invece, hai la pagina aperta.

Telli.sh: Every Translator 1.18 aggiunge una voce di menu contestuale, Salva su Telli.sh, registrata sia per il contesto page sia per selection su http://*/* e https://*/* — qualunque pagina web, non solo la trentina di siti su cui l'estensione traduce. Fai clic destro in un punto qualsiasi di un articolo e viene salvato. Seleziona prima tre paragrafi e quelli partono insieme, fino a 2.000 caratteri.

Il riscontro passa dal badge sulla barra degli strumenti che l'estensione già possiede: mentre salva, in caso di successo, ! in caso di errore, ciascuno con una spiegazione nel tooltip. I messaggi di errore sono specifici perché lo sono gli errori del server. Un 401 significa che il token è stato rifiutato e ne serve uno nuovo. Un 403 significa due cose diverse, e l'estensione le distingue cercando un codice *_quota_exceeded nel corpo della risposta — quota esaurita («torna domani») contro un token senza il permesso clip («questo token non può farlo»). Stesso codice di stato, consigli opposti.

La versione 1.18 è stata inviata al Chrome Web Store ed è in revisione al 5 settembre 2026. Non puoi ancora installarla. Quando sarà approvata arriverà come aggiornamento automatico, e con essa comparirà il menu contestuale.

Una chiave a sola scrittura: il token può salvare clip e nient'altro

Ecco la parte che ci sta più a cuore, perché è dove questo tipo di integrazione di solito va storto.

La versione pigra di «collega l'estensione al tuo account» è farti incollare il token di sessione dentro l'estensione. Quel token apre tutto: cancella note, esporta i tuoi dati, tocca la fatturazione. Consegneresti le credenziali complete dell'account in cambio di un pulsante da segnalibro, e resterebbero nell'archivio dell'estensione per sempre.

Perciò Clip non usa quel token. Telli.sh emette token API con ambito, modellati su quelli di Cloudflare: un token porta un elenco di politiche invece di prendere il tuo posto, e ogni politica è un effect (allow o deny, con deny che vince), un insieme di resources e un insieme di gruppi di permessi. Oggi esiste esattamente un gruppo, clip_write, che si espande nei permessi clip:write e clip:metadata, ed esattamente una forma di risorsa, {"user": "self"} — i tuoi dati, nient'altro.

La chiamiamo una chiave a sola scrittura, perché la forma è quella: può mettere cose dentro il tuo account e non tirarne fuori nessuna.

L'invariante di sicurezza che rende tutto questo reale è una frase nel documento di progettazione: un token API non passa mai per il percorso di autenticazione di sessione. I cookie di sessione e i JWT di accesso si risolvono tramite get_current_user_optional, che raggiunge ogni endpoint del prodotto. I token API si risolvono soltanto tramite la dipendenza require_permission(...), e se il permesso che quella dipendenza chiede non è nel token, la risposta è 403. Rompi quella separazione e un token con ambito torna silenziosamente a essere un token di account completo, ed è per questo che è enunciata come la regola più importante del progetto. C'è un utile effetto di secondo ordine: un token API è una stringa opaca, quindi la decodifica JWT su di esso fallisce sempre. Se per errore finisse in un percorso di sessione, si autenticherebbe come nessuno.

L'API dei token è a sua volta chiusa ai token. Creare, elencare e revocare token richiede una vera sessione con accesso effettuato: un token non può creare un altro token.

Crearne uno richiede circa quindici secondi

Vai su Impostazioni → Token API. Prima che tu ne abbia uno, la pagina è onesta su cosa può fare la cosa che stai per creare.

La pagina delle impostazioni dei token API di Telli.sh senza ancora nessun token: un modulo di creazione con il campo del nome del token e una singola casella di permesso Salva clip, e uno stato vuoto che recita Nessun token

La pagina dei token API su /settings/tokens prima che esista un token, catturata il 5 settembre 2026. La riga sull'ambito sta sopra il modulo, non sepolta in un articolo di assistenza: «Un token può solo salvare clip. Non può leggere le tue note, modificare il tuo account né raggiungere i dati di fatturazione.» Viene offerto un permesso, perché un permesso è tutto ciò che esiste.

Dagli un nome, spunta Salva clip, crea. Il segreto completo compare una volta sola, in un pannello che lo dice in rosso.

Il pannello del token una tantum che recita Copia ora il tuo token, con l'avviso che questa è l'unica volta in cui il token viene mostrato, un token tsh_ parzialmente mascherato e i pulsanti Copia token e L'ho salvato

Il pannello del segreto una tantum. Il token in questa schermata è mascherato, e l'account a cui apparteneva è stato eliminato. Un token è tsh_<prefisso di 12 caratteri>_<segreto di 43 caratteri> — 256 bit di casualità base64url. Solo il prefisso è conservato in chiaro, come chiave di ricerca; il segreto è conservato come hash bcrypt e non è recuperabile né da noi né da te. Chiudi questo pannello ed è perso per sempre.

Dopodiché l'elenco mostra il prefisso e nulla di più. Basta a distinguere due token ed è inutile a chiunque rubi la schermata.

L'elenco dei token con un token chiamato La mia estensione per browser con badge Attivo, il suo prefisso tsh_, l'ambito Salva clip, un timestamp di creazione, Ultimo utilizzo: Mai usato e un'azione rossa Revoca

Lo stesso token dopo che il pannello del segreto è stato chiuso: prefisso, ambito, data di creazione, ultimo utilizzo e Revoca. last_used_at viene scritto al massimo una volta all'ora e non a ogni richiesta, così ti dice all'incirca quando un token è stato attivo l'ultima volta senza trasformare ogni clip in una scrittura in più sul database. Revocare imposta revoked_at — immediato, permanente e non una cancellazione definitiva, così la traccia di ciò che è esistito sopravvive.

Collegare l'estensione: cinque passaggi

  1. Accedi su telli.sh e apri Impostazioni → Token API (/settings/tokens).
  2. Inserisci un nome che riconoscerai più avanti — «Estensione per browser» è il segnaposto per un motivo — spunta Salva clip e premi Crea token.
  3. Premi Copia token mentre il pannello una tantum è aperto. Non c'è una seconda occasione; se lo perdi, revoca quel token e creane un altro.
  4. Apri la pagina delle impostazioni dell'estensione, trova la sezione Telli.sh Clip, incolla il token nel campo Token Telli.sh Clip e premi Connetti.
  5. Fai clic destro su una pagina web qualsiasi e scegli Salva su Telli.sh. Il badge nella barra degli strumenti lampeggia e il clip è in Tutte le note.

La sezione Telli.sh Clip delle impostazioni dell'estensione: un campo per il token Clip, i pulsanti Connetti e Disconnetti, lo stato Connesso come tsh_0wjkFr24mTcX e un collegamento Dove ottenere un token

L'estensione dopo il passaggio 4, catturata il 5 settembre 2026. La riga di stato mostra solo il prefisso: l'estensione mostra ciò che mostra l'elenco dei token. Il testo di aiuto enuncia chiaramente il modello di archiviazione: «È conservato solo su questo dispositivo, e il salvataggio dei clip resta disattivato finché non aggiungi un token.» Niente token, niente clip; la voce di menu esiste ma non fa nulla.

Cosa legge esattamente l'estensione

Le dichiarazioni sulla privacy costano poco. Ecco il comportamento del codice, che è l'unica versione che conta.

Quando fai clic su Salva su Telli.sh, l'estensione inietta una funzione nella pagina e legge otto campi: og:title o twitter:title con ripiego su document.title; og:description, twitter:description o description; il collegamento canonico; og:image o twitter:image; og:site_name o application-name; article:author o author; article:published_time; e window.getSelection().

Rileggi quell'elenco per ciò che manca. Non c'è document.body. Non c'è estrazione del testo dell'articolo, nessun passaggio di leggibilità, nessuna scansione del DOM. Sette degli otto campi sono metadati che la pagina pubblica per Google e per le anteprime sui social — dati scritti per essere letti da estranei. L'ottavo è il testo che hai evidenziato tu.

In codice valgono altre quattro proprietà:

Nulla viene inviato senza un clic. La funzione dei metadati gira dentro il gestore del menu contestuale. Non c'è alcuna sveglia in background, nessun hook al caricamento della pagina, nessuna modalità «raccogli mentre navighi».

Senza token non succede assolutamente nulla. Il gestore controlla prima se c'è un token Telli.sh salvato e si ferma lì se non c'è, mostrando un badge che ti dice di collegarne uno. Su un'installazione appena fatta la voce di menu è inerte.

Il tuo cookie di sessione non può essere preso in prestito. L'estensione detiene un permesso host per telli.sh, il che di norma significa che le sue chiamate fetch portano automaticamente i cookie con cui hai effettuato l'accesso — e il cookie autenticherebbe prima del token, concedendo l'accesso completo all'account invece dell'ambito solo-clip che abbiamo progettato. Perciò la richiesta viene inviata con credentials: 'omit'. Il token è l'unica credenziale in gioco, e l'ambito che hai scelto è l'ambito che vale. È quella singola opzione a rendere la chiave a sola scrittura davvero a sola scrittura.

Dove l'estensione non ha accesso alla pagina, invia meno, non di più. L'iniezione di script richiede l'accesso host, che l'estensione detiene solo per i siti dichiarati nel suo manifest. Ovunque altro l'iniezione semplicemente fallisce e il clip ripiega sul solo URL; poi è il server a riempire la scheda con i meta tag pubblici della pagina. La modalità di fallimento è «meno dati», mai «chiedere permessi più ampi».

E quando il server scarica un URL, lo fa come un visitatore, non come un crawler. Rifiuta localhost, qualunque host .local e qualunque nome host che risolva a un indirizzo IP privato, di loopback, link-local, multicast, riservato o non specificato — risolto e verificato, non solo confrontato con uno schema, così viene respinto anche un nome DNS pubblico che punta a 10.0.0.1. Segue al massimo 3 redirect e legge al massimo 256 KB di HTML. Non effettua accessi, non porta i tuoi cookie e non tenta nulla che un visitatore non autenticato non potrebbe scaricare. Le pagine a pagamento e private restano a pagamento e private: da quelle salva piuttosto il testo che hai selezionato tu.

Un'ultima nota di misurazione, visto che questo articolo si è aperto con una storia di analytics. I clip creati dall'estensione non passano mai dalla web app, quindi il frontend non li vede; per quelli è il server a riportare clip_created. Quell'evento porta con sé l'app di origine, il tipo di origine, se era inclusa una selezione, se è stato generato un riassunto e il piano. Non porta URL, né titolo, né testo selezionato — quanti clip sono stati creati e per quale strada, mai cosa contenevano.

In conclusione: un'app di note che conserva solo ciò che hai detto è mezza memoria

Telli.sh è nato come luogo per il lavoro parlato: registra una riunione, trascrivila nella lingua in cui è stata davvero parlata, traducila, riassumila, tieni tutti e quattro gli strati in un'unica nota. Questo copre ciò che hai detto.

Non copre ciò che hai letto, che è la maggior parte di ciò che sai. La scheda che hai tenuto aperta tre giorni. La pagina di documentazione che ti servirà di nuovo tra un mese. Il thread di commenti con dentro la risposta vera. Quelle cose vivono in una cronologia del browser che non cercherai mai e in una barra dei segnalibri che hai smesso di aprire nel 2019.

Clip è l'altra metà che arriva: la stessa nota, la stessa ricerca, le stesse cartelle, la stessa esportazione — raggiunte con un clic destro invece che con un microfono. La direzione è un unico database personale in cui le tue parole e le tue fonti stanno una accanto all'altra, e questa è la prima superficie di raccolta puntata sul web.

Il cancello non c'è più. Ora i contatori hanno un posto dove andare.


Provalo: accedi, apri Clip nella barra laterale e incolla l'URL di qualcosa che volevi conservare da tempo. Gli account gratuiti hanno 30 salvataggi e 10 riassunti IA al giorno. Quando l'estensione 1.18 supererà la revisione del Chrome Web Store, la stessa cosa diventerà un clic destro su qualunque pagina tu stia già leggendo.

Apri Telli.sh e salva il tuo primo clip

Fonti

  • Repository Telli.sh, commit 64852ac, 5 settembre 2026 — «feat(clip): open Clip to every signed-in user», che ha rimosso il cancello is_master e il badge Anteprima admin, e ha registrato che clip_created e clip_opened non si erano mai attivati su PostHog.
  • Repository Telli.sh, backend/config.py — valori predefiniti di CLIP_SCRAPE_DAILY_QUOTA_* e CLIP_SUMMARY_DAILY_QUOTA_*, letti il 5 settembre 2026.
  • Repository Telli.sh, docs/SUPERAPP_BASELINE.md — la base di riferimento di Clip e le regole di sicurezza: nessun aggiramento di login o paywall, nessuno scraping massivo, riassunti limitati al testo fornito dall'utente e ai metadati pubblici, e la regola che l'output dell'IA non sostituisce mai l'originale.
  • Repository Telli.sh, docs/design/API_TOKEN_RBAC_DESIGN.md — il progetto dei token con ambito: struttura delle politiche, formato tsh_<prefix>_<secret>, archiviazione bcrypt e l'invariante secondo cui i token API non si risolvono mai tramite il percorso di autenticazione di sessione.
  • Repository Telli.sh, extension/extension/background.jsreadClipMetadataFromPage, collectClipMetadata e saveClip, 5 settembre 2026: gli otto campi di metadati, l'attivazione solo al clic, il ritorno anticipato senza token e credentials: 'omit'.
  • Telli.sh: Every Translator sul Chrome Web Store — la scheda a cui è stata inviata la versione 1.18; in revisione al 5 settembre 2026.
  • Pagina prodotto di Telli.sh: Every Translator — i siti supportati, le modalità di visualizzazione, i provider e gli impegni sulla privacy in un unico posto.
  • Il popup dell'estensione rispondeva alla domanda sbagliata. Nella 1.16 disegna invece la pagina in cui ti trovi., 4 settembre 2026 — la release precedente dell'estensione, per la pagina delle impostazioni su cui vive il campo del token Clip.

Torna al blog