Auto Refresh

Cómo funciona

Escrito para la versión que está ahora mismo en la Chrome Web Store.

Permisos, y por qué pedimos tan poco

Recargar una pestaña con un temporizador no requiere ningún acceso al sitio. La extensión le pide al navegador que recargue; nunca ve la página. Por eso, al instalarla no aparece el habitual aviso de «leer y cambiar todos tus datos en todos los sitios web».

Solo dos funciones necesitan leer la página: la cuenta atrás dibujada sobre ella y la monitorización por palabras clave. Esas piden acceso a un sitio cada vez, la primera vez que las usas allí. Todo lo concedido se lista en la página de opciones y se puede revocar sitio a sitio.

El paquete no incluye ningún content script declarativo. El código de página se inyecta solo en las pestañas que has autorizado, usando chrome.scripting: en un sitio que no has autorizado no se ejecuta ni una línea de nuestro código.

Intervalos, horarios y horas exactas

El intervalo fijo se repite cada N segundos. El aleatorio elige un valor nuevo dentro de un rango en cada ciclo, útil cuando no conviene un patrón de peticiones rítmicamente idéntico. El personalizado admite horas, minutos y segundos.

Un horario limita una regla a los días de la semana elegidos y a una franja de inicio y fin. Una franja cuyo fin es anterior a su inicio se interpreta como que cruza la medianoche, así que 22:00 → 02:00 funciona como esperarías.

Las horas exactas sustituyen por completo al intervalo: indica 09:30 y 14:00 y la página se recarga en esos momentos, pasando a mañana una vez que ya han transcurrido.

La cuenta atrás dibujada en la página

La extensión puede dibujar una pequeña cuenta atrás sobre la propia página para ver cuánto queda sin abrir la ventana de la barra de herramientas. Arrástrala donde quieras; la posición se recuerda por regla como un porcentaje del viewport, así que se mantiene al cambiar el tamaño de la ventana.

Es la única comodidad que exige acceso de lectura a un sitio. Desactívala y las recargas programadas siguen funcionando sin ningún permiso, y por eso se ofrece como opción de cada regla en vez de como un interruptor global.

El modo compacto quita el texto y deja solo los dígitos, pensado para una página que vigilas en una pantalla de pared desde el otro lado de la sala.

Sintaxis de las expresiones

El texto plano coincide sin distinguir mayúsculas en cualquier parte del texto visible.

Las expresiones regulares se escriben entre barras con indicadores opcionales: /\$\d+(\.\d{2})?/i. También se aceptan patrones sueltos precedidos de $ al pegar reglas traídas de otro sitio.

Los selectores CSS y XPath localizan elementos en vez de palabras. XPath empieza por // o por un punto.

Las expresiones booleanas combinan todo lo demás: (In Stock OR Available) AND NOT Sold Out. Entrecomilla una frase solo cuando contenga una de esas palabras clave.

Varias expresiones en un mismo monitor se combinan con OR. Cuando necesites un AND, escribe una única expresión booleana en lugar de confiar en una regla implícita.

Reglas ya preparadas

Las plantillas listas para usar cubren las situaciones para las que esto se usa de verdad: un artículo que vuelve al stock, un precio que cambia, una nueva oferta de empleo, una compilación que termina, un panel interno que empieza a dar un 500.

Elegir una rellena tanto la expresión como un intervalo sensato —treinta segundos para una reposición, diez minutos para una página de empleo— porque acertar con el intervalo es tan parte de la receta como las palabras. Todo sigue siendo editable después.

Las plantillas viajan dentro de la extensión en vez de descargarse. Bajarlas bajo demanda significaría que podríamos ver quién vigila qué y cuándo, que es justo lo que prometemos no saber.

Señalar un elemento en vez de escribir un selector

El selector visual resalta elementos mientras te mueves por la página; al hacer clic escribe el selector por ti. Úsalo allí donde se pida un selector CSS: la región vigilada, un objetivo de clic o el valor a extraer.

Prefiere un ancla estable como id o data-testid antes que una ruta posicional del tipo div:nth-child(3) > span. Las rutas posicionales se rompen la primera vez que el sitio añade un banner; las anclas por atributo suelen sobrevivir a un rediseño.

Si un selector se rompe, la reparación con IA toma el selector antiguo más un fragmento de la página nueva y propone un reemplazo, con una puntuación de confianza que puedes valorar antes de aceptarlo.

Aparece, desaparece, cambia cualquier cosa

«Aparece» se dispara cuando surge una coincidencia. «Desaparece» se dispara cuando todas las expresiones dejan de coincidir: útil para que se vaya un aviso de «agotado» o de mantenimiento.

«Cambia cualquier cosa» no necesita palabras clave. Toma una huella del texto visible y avisa cuando la huella se mueve. El primer escaneo solo fija una línea base, así que una regla recién creada nunca se dispara de inmediato.

Las huellas ignoran deliberadamente el HTML en bruto. Los nonces, las marcas de tiempo y los scripts en línea cambian en casi cada carga, así que un hash del marcado avisaría constantemente.

Opciones de escaneo

Esperar antes de escanear da tiempo a renderizar a las páginas dinámicas. Si un monitor nunca se dispara en un sitio que claramente coincide, casi siempre es por esto.

Restringir un monitor a una región con un selector CSS deja fuera todo el mobiliario de la página y es la forma más eficaz de reducir falsos positivos.

Escanear el código HTML en vez del texto visible también encuentra marcado oculto. Es una opción para desarrolladores; encontrará cosas que nadie puede ver.

Interacciones con la página

Un objetivo de interacción es un selector CSS con un XPath opcional de reserva: sirve para cerrar un aviso o un banner de cookies, desplegar una sección plegada o cambiar a la pestaña correcta. Se dispara tras cada recarga o solo cuando salta el monitor, y los objetivos se ejecutan en orden.

Usa el selector visual en vez de escribir selectores a mano: prefiere id y data-testid frente a rutas posicionales, lo que aguanta mucho mejor los rediseños del sitio.

La detección de captcha pausa la regla y te avisa. La extensión no intenta resolver, esquivar ni derrotar de ningún modo un desafío.

Rotación tipo kiosco

Dale a una regla una lista de URLs, una por línea, y la pestaña las va recorriendo con el temporizador en lugar de recargar la misma página. Es el modo que quieres para una pantalla de pared o un monitor de sobra que muestra varios paneles por turnos.

El cursor de rotación vive con el estado de ejecución de la regla, así que un reinicio del navegador o un service worker suspendido reanudan en la URL correcta en vez de empezar la lista de nuevo.

Los monitores siguen aplicándose durante la rotación, lo que significa que una sola regla puede recorrer cuatro paneles y avisarte cuando cualquiera de ellos empiece a mostrar un error.

Extraer un valor a lo largo del tiempo

Señala un precio, un recuento de stock o una posición y cada comprobación registra lo que decía. Los números se extraen de su entorno —se quitan símbolos de moneda y separadores de miles— así que 1 299,00 € se convierte en un número que puedes graficar y comparar.

Un umbral convierte la serie en un aviso: por debajo de una cifra, por encima de una cifra, o un movimiento porcentual desde la última muestra. Sin umbral, la serie se registra en silencio y solo aparece cuando vas a mirarla.

Todo se puede exportar a CSV. El gráfico del panel es deliberadamente una sola línea sin ejes: el panel mide 320px de ancho, y para leer con precisión está la exportación.

Historial de cambios

Cada vez que un monitor se dispara se anotan la hora, la página y el texto coincidente. Esto es lo que hace que merezca la pena dejar una vigilancia desatendida: horas después puedes ver exactamente qué pasó y cuándo, en vez de encontrarte una notificación que se te escapó.

Las instantáneas conservan el texto de alrededor en el momento del aviso, así que puedes comparar el antes y el después en lugar de saber solo que algo se movió.

El historial local es un búfer circular cuyo tamaño defines en las opciones; las entradas más antiguas caen a medida que llegan nuevas. La retención más larga vive en la cuenta, y solo si activas la sincronización en la nube.

Para qué sirve la IA

La creación de reglas toma una frase —«avísame cuando vuelva a haber stock y cueste menos de 200 $»— y devuelve una expresión, un modo y un intervalo sugerido. Es el atajo más rápido para saltarse la sintaxis, pensado para quien nunca aprenderá expresiones regulares y no tiene por qué hacerlo.

El resumen de cambios toma el texto de antes y después de un aviso y dice en una línea qué cambió realmente, algo que importa en una página donde la diferencia útil queda enterrada entre marcas de tiempo y anuncios rotatorios.

La clasificación de cambios juzga si una diferencia es significativa o ruido, y la reparación de selectores propone un reemplazo cuando un rediseño rompe uno. Las cuatro se ejecutan en nuestros servidores: no hay ninguna clave de modelo en el paquete de la extensión, y las peticiones llevan el fragmento analizado, no un historial de navegación.

Avisos

Dentro del navegador: una notificación, un sonido, resaltar la coincidencia en la página o traer la pestaña al frente.

Fuera del navegador: correo, un webhook, Telegram, Discord o Slack. Se configuran en el panel; requieren cuenta y plan Pro.

Los avisos no se reintentan. Un aviso de reposición que llega diez minutos tarde es peor que inútil, así que un envío fallido se informa en vez de encolarse.

Cada canal de abajo tiene su propia configuración en el panel, y el panel enlaza directamente de vuelta a estos párrafos.

Correo

Añade la dirección en el panel y le enviamos un único correo de confirmación. El canal permanece en silencio hasta que se abre el enlace que contiene; el enlace funciona una vez y caduca a las 24 horas.

Esta doble confirmación no es una formalidad. Sin ella, cualquiera con una cuenta podría escribir la dirección de un desconocido y hacer que nuestro dominio le entregue el texto que quiera: la forma exacta de un relay de correo abierto, y la vía rápida para perder la reputación de envío. Por eso el botón Probar no puede confirmar una dirección; solo se puede probar una dirección ya confirmada.

El correo es el único canal que consume la cuota diaria, porque es el único que pagamos. Los correos de confirmación no cuentan, pero reenviar uno tiene límite de frecuencia.

Webhook

Pega un endpoint https:// que controles. Hacemos POST de application/json con la forma { source, title, body, url, at }: el título y el cuerpo del aviso, la página en la que ocurrió y una marca de tiempo ISO.

Un intento, ocho segundos de espera, sin reintento. Se pueden guardar cabeceras personalizadas junto al canal cuando necesitas un token de autenticación en tu lado.

La URL debe ser https, y los hosts que resuelven a rangos privados o link-local se rechazan al añadir el canal, incluida la dirección de metadatos de la nube. Esa comprobación existe para que este formulario no pueda usarse para que nuestros servidores sondeen una red interna en nombre de alguien.

Telegram

Telegram necesita dos valores, y el panel pide ambos: un token de bot y un chat id. Escribe a @BotFather, envía /newbot y copia el token que devuelve. Después manda cualquier mensaje a tu nuevo bot —un bot no puede iniciar una conversación contigo— y lee chat.id en https://api.telegram.org/bot<token>/getUpdates.

Llamamos a sendMessage de la Bot API de Telegram con tu token. El token vive en tu cuenta, no se usa para nada más y nunca se entrega a la extensión; revocarlo en BotFather corta la entrega de inmediato.

Discord

Ajustes del servidor → Integraciones → Webhooks → Nuevo webhook, elige el canal, después Copiar URL del webhook y pégala en el panel.

Hacemos POST de un embed de Discord con el título, el texto coincidente y un enlace a la página. La URL es en sí misma la credencial —quien la tenga puede publicar en ese canal— así que trátala como un secreto. Borrar el webhook en Discord lo revoca al instante, sin tener que cambiar nada por nuestra parte.

Slack

En tu app de Slack, dentro de Incoming Webhooks, actívalos, añade uno al espacio de trabajo, elige el canal y copia la URL de hooks.slack.com.

Hacemos POST de { text } con el título, el texto coincidente y la URL de la página. El webhook está atado al único canal que elegiste y es la credencial en sí; revócalo en Slack para detener la entrega.

Cuando Chrome congela una pestaña en segundo plano

El ahorro de memoria de Chrome descarta las pestañas que cree inactivas, y eso detiene el ciclo de recarga. La extensión detecta una pestaña descartada y la recarga para recuperarla.

Mantener la ventana visible lo evita del todo. «Mantener el equipo despierto» en las opciones impide que la suspensión del sistema tenga el mismo efecto durante la noche.

Sincronización, dispositivos y qué sale de tu máquina

Sin una cuenta, no sale absolutamente nada de tu navegador.

Con la sincronización en la nube activada, guardamos las reglas que escribiste y los avisos que produjeron. No guardamos —ni nos interesa— una lista de los sitios que visitas.

La fusión ocurre en el dispositivo, por regla, según la fecha de última modificación: editar en un portátil nunca sobrescribe lo que montaste en el sobremesa. Las reglas atadas a una pestaña no se sincronizan nunca, porque un id de pestaña no significa nada en otra máquina.

La prueba, y qué conserva el plan gratuito

La prueba dura siete días con todo desbloqueado y se cuenta en local. No necesita cuenta ni tarjeta y no hay nada que cancelar: cuando termina, las funciones Pro pasan a solo lectura en lugar de desaparecer, así que no se pierde nada de lo que configuraste.

El plan gratuito pretende ser realmente utilizable y no una demostración: reglas de recarga ilimitadas, todas las opciones de la capa de recarga y tres monitores de texto plano. Los intervalos aleatorios, los sonidos y las notificaciones no se miden, porque cobrar por aviso es justo lo que hace incómodas a las extensiones de la competencia.

Lo que añade Pro es escala y nube: monitores ilimitados, expresiones avanzadas, programación, interacciones con la página, extracción, historial, IA y avisos que salen del navegador. El plan de por vida es el mismo conjunto de funciones con la cuota de IA renovándose cada año en lugar de cada mes: los costes de inferencia se repiten aunque el pago no.