Clip deja una página web en tus notas con el resumen ya escrito. Desde hoy se abre a todas las cuentas de Telli.sh.
Clip no solo guarda una página web: la convierte en una nota de Telli.sh con un título y un resumen de una línea escritos por IA. Se publicó detrás de una marca de administrador, así que dos contadores de analítica no se dispararon ni una sola vez. Esa barrera ya no está: las cuentas gratuitas tienen 30 guardados y 10 resúmenes de IA al día, y la versión 1.18 de la extensión del navegador añade un «Guardar en Telli.sh» en el menú del clic derecho que se autentica con un token que no sabe hacer nada más que guardar clips.
Hay un tipo concreto de fallo que ninguna batería de pruebas atrapa: la función funciona y nadie puede llegar a ella.
Clip lleva semanas terminado. La ventana modal guarda mediante POST /v1/clip, rellena la tarjeta de enlace con las etiquetas meta públicas de la página, genera un resumen de IA de una línea, invalida la caché de notas y ya distingue entre «guardado, pero tu cuota de resúmenes se agotó» y «esto ha fallado». Todo ello, funcionando. Y en PostHog, los dos eventos que reporta —clip_opened y clip_created— no se habían disparado nunca. Ni una vez, no es que fueran raros. Cero.
El motivo eran tres líneas de código de frontend. El botón de la barra lateral y la ventana modal dependían ambos de user.is_master, y el botón llevaba un distintivo ámbar de Vista previa de administrador. El backend nunca comprobó is_master: aplica cuotas diarias por plan, que es el sitio correcto para un límite. La función no estaba sin usar. Era inalcanzable.
Desde el commit 64852ac del 5 de septiembre de 2026, la condición es «hay alguien con la sesión iniciada». Esta entrada es un anuncio de producto, así que está centrada en el producto por diseño: esto es lo que hace Clip, lo que te cuesta, lo que envía la extensión del navegador y lo que deliberadamente no lee nunca.
TL;DR
- Clip está abierto a todas las cuentas con sesión iniciada. El botón de la barra lateral perdió su distintivo de administrador el 5 de septiembre de 2026.
- Los límites son cuotas diarias, no una barrera. Free tiene 30 guardados y 10 resúmenes de IA por día UTC; Plus, Pro y Pro+ suben desde ahí. Las cifras exactas están en la tabla de más abajo.
- Quedarte sin cuota de resúmenes no te hace perder el clip. El enlace y sus metadatos se guardan igualmente; solo se omite el resumen, y la aplicación te lo dice.
- La extensión del navegador puede guardar la página en la que estás. «Guardar en Telli.sh» está en el menú del clic derecho de cualquier página http(s) y se lleva lo que tuvieras seleccionado. La versión 1.18 está en revisión en Chrome Web Store mientras publicamos esto: todavía no se puede instalar.
- La extensión se autentica con un token que solo puede guardar clips. No puede leer tus notas, cambiar tu cuenta, llegar a la facturación ni acuñar otro token. Ves el secreto exactamente una vez, y puedes revocarlo.
- La extensión lee lo que la página ya te está enseñando. Título, enlace canónico, etiquetas
og:/twitter:públicas y tu selección. No el cuerpo del artículo. Nada sale del navegador sin tu clic, y sin un token guardado la entrada del menú no hace absolutamente nada.
Qué hace Clip de verdad con una URL
Abre Clip desde la barra lateral, pega una URL y la ventana modal llama a POST /v1/clip/metadata. Ese endpoint descarga el HTML de la página y lee únicamente sus etiquetas meta públicas: og:title, og:description, og:image, og:site_name, article:author, article:published_time y el <link rel="canonical">. Título, descripción, sitio e imagen vuelven ya rellenados. Si la descarga falla, la ventana lo dice y te deja guardar el enlace de todos modos, con el nombre de host haciendo de nombre del sitio.
Después guardas, y el clip se convierte en una nota. No un adjunto, no un marcador en una lista aparte: una nota con note_type="clip", colocada en Todas las notas junto a lo demás, buscable, archivable en carpetas, compartible y exportable con la misma maquinaria. La URL de origen y la tarjeta de enlace completa se conservan en el contexto de la nota, así que la procedencia nunca se pierde detrás del resumen.
Si hay algo que resumir —una descripción, el texto que seleccionaste, una nota que pegaste—, se ejecuta un resumen general y escribe una línea de resumen en la nota. Esa es la línea que ves bajo el título en la lista.

Tres clips guardados en una cuenta de producción el 5 de septiembre de 2026, en Todas las notas junto a notas corrientes. Los dos clips de artículos llevan un título escrito por IA y un resumen de una línea. La portada de Hacker News no publica ninguna etiqueta de descripción y no había texto seleccionado, así que no había nada que resumir: conservó su propio título y no tiene línea de resumen. Cuando Clip no tiene con qué trabajar, prefiere no decir nada a inventarse algo.
Ese último detalle es la regla de diseño que sostiene toda la función, y merece enunciarse por sí sola: lo que produce la IA nunca sustituye al original. La URL de origen, los metadatos del propio sitio y cualquier texto que hayas aportado se conservan; el resumen es un dato derivado puesto encima. Si el resumen es erróneo o inútil, lo que de verdad guardaste sigue ahí.
Los límites son una cuota diaria, y son el único límite
No hay ninguna barrera de plan en Clip. Hay una cantidad.
| Plan | Guardados al día | Resúmenes de IA al día |
|---|---|---|
| Free | 30 | 10 |
| Plus | 150 | 50 |
| Pro | 500 | 150 |
| Pro+ | 2,000 | 500 |
Valores por defecto de backend/config.py (CLIP_SCRAPE_DAILY_QUOTA_*, CLIP_SUMMARY_DAILY_QUOTA_*), leídos el 5 de septiembre de 2026.
Dos cuotas, no una, y fallan de forma distinta a propósito. Si se te acaban los guardados, el guardado se rechaza: el servidor responde 403 con un código estructurado clip_scrape_quota_exceeded y una fecha de reinicio. Si se te acaban los resúmenes, el clip se guarda igualmente; solo se omite el paso del resumen, y la aplicación te dice exactamente eso: «Clip guardado. La cuota de resúmenes de IA de hoy se ha agotado.»
Esa asimetría es deliberada. Guardar un enlace es barato y es lo que de verdad querías; resumir es la parte cara. Perder una página que pretendías conservar porque un modelo de lenguaje estaba limitado sería un trueque absurdo, así que no lo hacemos.
El contador es una simple fecha de calendario UTC. A las 00:00 UTC tu día se reinicia: el mismo instante para todo el mundo, no una ventana móvil de 24 horas sobre la que tengas que razonar.
«Guardar en Telli.sh» está a un clic derecho, en cuanto se apruebe la 1.18
La ventana modal de la web da por hecho que tienes la URL en el portapapeles. Normalmente lo que tienes es la página abierta.
Telli.sh: Every Translator 1.18 añade una entrada de menú contextual, Guardar en Telli.sh, registrada tanto para el contexto page como para selection en http://*/* y https://*/*: cualquier página web, no solo la treintena larga de sitios en los que la extensión traduce. Haz clic derecho en cualquier punto de un artículo y se guarda. Selecciona antes tres párrafos y se van con él, hasta 2.000 caracteres.
La respuesta viaja en el distintivo de la barra de herramientas que la extensión ya tiene: … mientras guarda, ✓ al conseguirlo, ! al fallar, cada uno con una explicación en el tooltip de la barra. Los mensajes de error son concretos porque los errores del servidor lo son. Un 401 significa que el token fue rechazado y necesitas uno nuevo. Un 403 significa una de dos cosas distintas, y la extensión las distingue buscando un código *_quota_exceeded en el cuerpo de la respuesta: cuota agotada («vuelve mañana») frente a un token sin permiso de clip («este token no puede hacer eso»). Mismo código de estado, consejo opuesto.
La versión 1.18 se envió a Chrome Web Store y está en revisión a 5 de septiembre de 2026. Todavía no puedes instalarla. Cuando se apruebe llegará como actualización automática, y el menú contextual aparecerá con ella.
Una clave de solo escritura: el token puede guardar clips y nada más
Esta es la parte que más nos importa, porque es donde este tipo de integración suele torcerse.
La versión perezosa de «conectar la extensión a tu cuenta» consiste en que pegues tu token de sesión en la extensión. Ese token lo abre todo: borra notas, exporta tus datos, toca la facturación. Estarías entregando credenciales completas de tu cuenta a cambio de un botón de marcadores, y se quedarían para siempre en el almacenamiento de la extensión.
Por eso Clip no usa ese token. Telli.sh emite tokens de API con alcance limitado, siguiendo el modelo de Cloudflare: un token lleva una lista de políticas en lugar de suplantarte, y cada política es un effect (allow o deny, y deny gana), un conjunto de resources y un conjunto de grupos de permisos. Hoy existe exactamente un grupo, clip_write, que se expande a los permisos clip:write y clip:metadata, y exactamente una forma de recurso, {"user": "self"}: tus propios datos, nada más.
Lo llamamos una clave de solo escritura, porque esa es su forma: puede meter cosas en tu cuenta y no sacar ninguna.
La invariante de seguridad que hace real todo esto es una frase del documento de diseño: un token de API nunca pasa por la ruta de autenticación de sesión. Las cookies de sesión y los JWT de acceso se resuelven a través de get_current_user_optional, que alcanza todos los endpoints del producto. Los tokens de API se resuelven únicamente a través de la dependencia require_permission(...), y si el permiso que esa dependencia pide no está en el token, la respuesta es 403. Rompe esa separación y un token con alcance limitado vuelve a ser calladamente un token de cuenta completa, por eso está enunciada como la regla más importante del diseño. Hay un efecto de segundo orden que ayuda: un token de API es una cadena opaca, así que la decodificación JWT siempre falla con él. Si alguno se colara por error en una ruta de código de sesión, se autenticaría como nadie.
La propia API de tokens está cerrada a los tokens. Crear, listar y revocar tokens exige una sesión real iniciada: un token no puede acuñar otro token.
Crear uno lleva unos quince segundos
Ve a Ajustes → Tokens de API. Antes de que tengas uno, la página es honesta sobre lo que puede hacer aquello que estás a punto de crear.

La página de tokens de API en /settings/tokens antes de que exista ningún token, capturada el 5 de septiembre de 2026. La línea sobre el alcance está encima del formulario, no enterrada en un artículo de ayuda: «Un token solo puede guardar clips. No puede leer tus notas, cambiar tu cuenta ni llegar a tus datos de facturación.» Se ofrece un permiso porque un permiso es todo lo que existe.
Ponle nombre, marca Guardar clips, créalo. El secreto completo aparece una vez, en un panel que lo dice en rojo.

El panel del secreto de un solo uso. El token de esta captura está enmascarado, y la cuenta a la que pertenecía se ha eliminado. Un token es tsh_<prefijo de 12 caracteres>_<secreto de 43 caracteres>: 256 bits de aleatoriedad en base64url. Solo el prefijo se guarda en texto plano, como clave de búsqueda; el secreto se guarda como hash bcrypt y no lo podemos recuperar ni nosotros ni tú. Cierra este panel y desaparece para siempre.
Después, la lista muestra el prefijo y nada más. Eso basta para distinguir dos tokens y no le sirve de nada a quien robe la captura de pantalla.

El mismo token después de cerrar el panel del secreto: prefijo, alcance, momento de creación, momento del último uso y Revocar. last_used_at se escribe como mucho una vez por hora en lugar de en cada petición, así que te dice aproximadamente cuándo estuvo activo un token sin convertir cada clip en una escritura extra en la base de datos. Revocar establece revoked_at: inmediato, permanente y sin borrado duro, de modo que queda constancia de lo que existió.
Conectar la extensión: cinco pasos
- Inicia sesión en telli.sh y abre Ajustes → Tokens de API (
/settings/tokens). - Escribe un nombre que reconozcas más adelante —«Extensión del navegador» es el texto de ejemplo por algo—, marca Guardar clips y pulsa Crear token.
- Pulsa Copiar token mientras el panel de un solo uso esté abierto. No hay segunda oportunidad; si lo pierdes, revoca ese token y crea otro.
- Abre la página de ajustes de la extensión, busca la sección Telli.sh Clip, pega el token en Token de Telli.sh Clip y pulsa Conectar.
- Haz clic derecho en cualquier página web y elige Guardar en Telli.sh. El distintivo de la barra de herramientas parpadea con
✓y el clip ya está en Todas las notas.

La extensión después del paso 4, capturada el 5 de septiembre de 2026. La línea de estado muestra solo el prefijo: la extensión enseña lo que enseña la lista de tokens. El texto de ayuda expone el modelo de almacenamiento con claridad: «Se guarda solo en este dispositivo, y guardar clips seguirá desactivado hasta que añadas un token.» Sin token no hay clips; la entrada del menú existe, pero no hace nada.
Qué lee exactamente la extensión
Las promesas de privacidad son baratas. Aquí está el comportamiento del código, que es la única versión que cuenta.
Cuando pulsas Guardar en Telli.sh, la extensión inyecta una sola función en la página y lee ocho campos: og:title o twitter:title con respaldo en document.title; og:description, twitter:description o description; el enlace canónico; og:image o twitter:image; og:site_name o application-name; article:author o author; article:published_time; y window.getSelection().
Vuelve a leer esa lista fijándote en lo que falta. No hay document.body. No hay extracción del texto del artículo, ni pasada de legibilidad, ni recorrido del DOM. Siete de los ocho campos son metadatos que la página publica para Google y para las vistas previas de las redes sociales: datos escritos para que los lean desconocidos. El octavo es el texto que tú mismo has resaltado.
Hay cuatro propiedades más que se sostienen en el código:
Nada se envía sin un clic. La función de metadatos se ejecuta dentro del manejador del menú contextual. No hay alarma en segundo plano, ni gancho en la carga de la página, ni modo «recoger mientras navegas».
Sin token no pasa absolutamente nada. El manejador comprueba primero si hay un token de Telli.sh guardado y se detiene ahí si no lo hay, mostrando un distintivo que te dice que conectes uno. En una instalación recién hecha, la entrada del menú es inerte.
Tu cookie de sesión no se puede tomar prestada. La extensión tiene un permiso de host para telli.sh, lo que normalmente significa que sus llamadas fetch llevan automáticamente tus cookies de sesión, y la cookie se autenticaría antes que el token, concediendo acceso completo a la cuenta en lugar del alcance limitado a clips que diseñamos. Por eso la petición se envía con credentials: 'omit'. El token es la única credencial en juego, y el alcance que elegiste es el alcance que se aplica. Esa única opción es lo que hace que la clave de solo escritura sea de verdad de solo escritura.
Donde la extensión no tiene acceso a la página, envía menos, no más. La inyección de scripts necesita acceso al host, y la extensión solo lo tiene para los sitios declarados en su manifiesto. En todos los demás la inyección simplemente falla y el clip se queda con la URL a secas; el servidor rellena entonces la tarjeta a partir de las etiquetas meta públicas de la página. El modo de fallo es «menos datos», nunca «pedir permisos más amplios».
Y cuando el servidor descarga una URL, lo hace como un visitante, no como un rastreador. Rechaza localhost, cualquier host .local y cualquier nombre de host que resuelva a una dirección IP privada, de bucle invertido, de enlace local, multidifusión, reservada o sin especificar: resuelta y comprobada, no solo comparada con un patrón, de modo que un nombre DNS público que apunte a 10.0.0.1 también se rechaza. Sigue como mucho 3 redirecciones y lee como mucho 256 KB de HTML. No inicia sesión, no lleva tus cookies y no intenta nada que un visitante sin sesión no pudiera descargar. Las páginas de pago y privadas siguen siendo de pago y privadas: guarda de ellas tu propio texto seleccionado.
Una última nota sobre medición, ya que abrimos esta entrada con una historia de analítica. Los clips hechos desde la extensión no tocan nunca la aplicación web, así que el frontend no puede verlos; para esos es el servidor quien reporta clip_created. Ese evento lleva la aplicación de origen, el tipo de origen, si se incluyó una selección, si se generó un resumen y el plan. No lleva URL, ni título, ni texto seleccionado: cuántos clips se hicieron y por qué vía, nunca qué había dentro.
En resumen: una aplicación de notas que solo guarda lo que dijiste es media memoria
Telli.sh empezó como un sitio para el trabajo hablado: graba una reunión, transcríbela en el idioma en el que realmente se habló, tradúcela, resúmela y guarda las cuatro capas en una misma nota. Eso cubre lo que dijiste.
No cubre lo que leíste, que es la mayor parte de lo que sabes. La pestaña que dejaste abierta tres días. La página de documentación que volverás a necesitar dentro de un mes. El hilo de comentarios donde está la respuesta de verdad. Todo eso vive en un historial de navegación que nunca vas a buscar y en una barra de marcadores que dejaste de abrir en 2019.
Clip es la otra mitad llegando: la misma nota, la misma búsqueda, las mismas carpetas, la misma exportación, a la que llegas con un clic derecho en vez de con un micrófono. La dirección es una única base de datos personal donde tus palabras y tus fuentes están una al lado de la otra, y esta es la primera superficie de recogida apuntada a la web.
La barrera ya no está. Los contadores por fin tienen adónde ir.
Pruébalo: inicia sesión, abre Clip en la barra lateral y pega la URL de eso que llevas tiempo queriendo guardar. Las cuentas gratuitas tienen 30 guardados y 10 resúmenes de IA al día. Cuando la extensión 1.18 pase la revisión de Chrome Web Store, lo mismo se convertirá en un clic derecho en cualquier página que ya estés leyendo.
Abrir Telli.sh y guardar tu primer clip
Fuentes
- Repositorio de Telli.sh, commit
64852ac, 5 de septiembre de 2026: «feat(clip): open Clip to every signed-in user», que eliminó la barrerais_mastery el distintivo de Vista previa de administrador, y dejó constancia de queclip_createdyclip_openedno se habían disparado nunca en PostHog. - Repositorio de Telli.sh,
backend/config.py: los valores por defectoCLIP_SCRAPE_DAILY_QUOTA_*yCLIP_SUMMARY_DAILY_QUOTA_*, leídos el 5 de septiembre de 2026. - Repositorio de Telli.sh,
docs/SUPERAPP_BASELINE.md: la base de Clip y sus reglas de seguridad: sin saltarse inicios de sesión ni muros de pago, sin scraping masivo, resumen limitado al texto aportado por la persona usuaria y a los metadatos públicos, y la regla de que lo que produce la IA nunca sustituye al original. - Repositorio de Telli.sh,
docs/design/API_TOKEN_RBAC_DESIGN.md: el diseño de los tokens con alcance limitado: estructura de políticas, el formatotsh_<prefix>_<secret>, el almacenamiento con bcrypt y la invariante de que los tokens de API nunca se resuelven por la ruta de autenticación de sesión. - Repositorio de Telli.sh,
extension/extension/background.js:readClipMetadataFromPage,collectClipMetadataysaveClip, 5 de septiembre de 2026: los ocho campos de metadatos, el disparo solo por clic, la salida temprana sin token ycredentials: 'omit'. - Telli.sh: Every Translator en Chrome Web Store: la ficha a la que se envió la versión 1.18; en revisión a 5 de septiembre de 2026.
- Página de producto de Telli.sh: Every Translator — los sitios compatibles, los modos de visualización, los proveedores y los compromisos de privacidad en un solo lugar.
- La ventana emergente de la extensión respondía a la pregunta equivocada. En la 1.16 dibuja la página en la que estás., 4 de septiembre de 2026: la versión anterior de la extensión, para la página de ajustes en la que vive el campo del token de Clip.