6 min

Bitcoin Spiral: dashboard en vivo narrado por IA en GitHub Pages

Construí un dashboard en vivo en GitHub Pages sin backend ni clave de pago: GitHub Models escribe el veredicto cada seis horas. Por qué el contenido estático está muerto para marketing.

La semana pasada pasé una tarde construyendo the Bitcoin Spiral, un dashboard en vivo en GitHub Pages sin backend, sin clave de API de pago y con un modelo frontera escribiendo el veredicto de tres líneas en la parte superior de la página cada seis horas. Todo el site no me cuesta nada de mantener. Lo construí para poner a prueba GitHub Models y salí convencido de que el contenido público narrado por IA es ya algo que un equipo de marketing puede publicar sin un desarrollador por medio.

Qué hace el dashboard

Abre el enlace de arriba. Lo primero en la página es una espiral polar. El precio mensual de Bitcoin se enrosca hacia afuera a lo largo de catorce años en escala logarítmica, y la banda naranja que la atraviesa es el canal Power-Law (el modelo de Giovanni Santostasi de 2018, que se ajusta a la curva log-log a largo plazo de Bitcoin con una estabilidad sorprendente). La espiral se renderiza en tu navegador en cuanto la página carga.

Debajo de la espiral se apila una pila de tiles: el precio de hoy, el valor justo del Power-Law, el Mayer Multiple (precio dividido por su media móvil de 200 días), la distancia al Pi Cycle Top, MVRV, el índice Fear and Greed, los flujos de ETF, la capacidad de Lightning Network y el hashrate actual de la red. Cada uno de esos números viene de una API pública gratuita. CoinGecko para el precio. Binance para las medias móviles. Alternative.me para el sentimiento. mempool.space para la salud de la red. Farside Investors para los flujos de ETF. Ninguna requiere registro. Ninguna me cobra. Si un feed se cae entre cargas de página, el tile recurre a un pequeño n/a y el dashboard sigue corriendo.

Arriba, en un tile difícil de perder, hay un veredicto de una palabra. Hoy: ACCUMULATE. Debajo, tres o cuatro frases planas explican la posición. Un modelo frontera escribió esas frases hace seis horas. Las reescribirá dentro de seis horas. Nadie de mi equipo las tocará.

Llevo tres semanas con él en marcha. No se ha roto ni una vez.

Qué es GitHub Models

GitHub Models es la parte que la mayoría de lectores aún no habrá usado. Es un catálogo alojado de modelos frontera de OpenAI, Meta, Mistral, DeepSeek y otros, accesible desde cualquier workflow de GitHub Actions vía el paso actions/ai-inference. La autenticación es el GITHUB_TOKEN que el repositorio ya tiene. Sin clave de API aparte. Sin cuenta de facturación. Sin dashboard de terceros donde iniciar sesión.

El plan gratuito tiene límite de uso y el techo de tokens por petición es pequeño (el mío es de 280 tokens de salida, el tamaño adecuado para una nota de mercado y el equivocado para un ensayo largo). El uso a escala de producción pasaría a un plan de pago o a un proveedor de inferencia distinto. Para prototipar, para dashboards editoriales, para proyectos cívicos, el límite de uso no es la restricción que importa. El dashboard llama al modelo cuatro veces al día y el plan gratuito lo maneja sin acercarse al techo.

Tuve que comprobar tres veces lo de «sin clave de API» yo mismo. Llegué esperando tener que provisionar al menos una credencial. No hay ninguna.

Cómo evito que el modelo invente números

La palabra del veredicto se calcula en Python plano a partir de seis señales ponderadas: valoración (dónde se sitúa el precio en el canal Power-Law), precio frente a valor justo, el Mayer Multiple, el hueco del Pi Cycle, la lectura de Fear and Greed y una puntuación de flujo de ETF a 7 días. Cada señal se mapea a un número entre -1 y +1. Los pesos están fijados en código. El compuesto es una media ponderada. La salida es una de cinco palabras: ACCUMULATE, LEAN BUY, NEUTRAL, LEAN SELL, DISTRIBUTE. Ejecuta las mismas entradas dos veces y la función devuelve la misma palabra dos veces. Esa es la parte determinista.

Solo después de que existan los números entra el modelo. El prompt que recibe dice, en efecto: aquí hay cuatro señales, aquí es lo que dicen ahora, escribe de tres a cuatro frases tranquilas explicando la posición. No inventes ni predigas ningún número. El modelo nunca ve la hoja de cálculo. Ve las cuatro frases que quiero que pegue.

La primera vez que ejecuté el pipeline sin esa restricción, el modelo insertó objetivos de precio que sonaban plausibles y que había inventado de la nada. Estaban en el orden de magnitud correcto. Estaban escritos con confianza. Eran ficción. Un modelo frontera entrenado para ser útil, si le pides que «resuma la posición», produce una posición que resumir.

La restricción es el truco. Dos pasadas por salida mala antes de que lo averiguara.

Hacia dónde va la arquitectura a continuación

El pipeline ejecuta el modelo dentro de una GitHub Action. El resultado se commitea de vuelta al repositorio y el site estático sirve un párrafo cacheado de seis horas de antigüedad. El compromiso es la antigüedad: el veredicto puede tener hasta seis horas en cualquier momento. Bien para señales Power-Law que se mueven en semanas. Mal para cualquier cosa que se mueva en minutos.

Esa arquitectura está a punto de dejar de ser la más interesante disponible.

Chrome lleva tiempo entregando un runtime de IA integrado, la Prompt API, que permite a una página web consultar un modelo de lenguaje directamente dentro del navegador sin llamada de red. Está en un origin trial activo hasta Chrome 144 y la API se ha estabilizado en torno a window.ai.languageModel.create(). El modelo en sí es Gemini Nano (unos 1,5 a 2 GB, descargados una vez por Chrome y cacheados para cada origin que los pida). Microsoft Edge está cableando la misma interfaz. Para navegadores sin soporte nativo, transformers.js v4 corriendo sobre WebGPU ejecutará Gemma 4 E2B, Llama 3.2 1B, Phi-3-mini o Qwen3-0.6B localmente en 1,5 a 3 GB de VRAM. El proyecto WebLLM expone una API de Chat Completion compatible con OpenAI, de modo que el código de cliente que ya llama a GitHub Models puede llamar a un modelo corriendo en la pestaña del visitante simplemente cambiando la base URL.

La siguiente iteración del dashboard regenera el veredicto en el navegador del visitante en torno a 800 milisegundos, cada vez que abre la pestaña. La GitHub Action se queda en el pipeline como camino de respaldo para navegadores que no pueden alojar un modelo. El visitante nunca ve un párrafo antiguo.

Por ahora, la versión de GitHub Models es la que está en vivo. Publicaré la versión en el navegador el mes que viene y la escribiré por separado.

Qué significa esto para contenido como el tuyo

Hago trabajo de consultoría, y este es el punto que quiero que interioricen todos los clientes y responsables de marketing con los que hablo.

La mayoría de sites de empresas tienen una categoría de contenido llamada «contenido de autoridad». Casos de estudio. Informes del sector. Páginas de estadísticas. La del gráfico del algo contra algo del trimestre pasado. Casi todo es estático. Fue verdad una vez, se publicó y luego se deslizó colina abajo en el feed. La razón de que sea estático no es editorial. Los datos en vivo solían necesitar un backend, un backend solía necesitar un servidor, un servidor solía necesitar un sysadmin y una tarjeta de crédito, y el resumen con IA de arriba solía requerir una clave de API de pago. Eso dejó de ser cierto hace unos dieciocho meses.

Un dashboard en vivo convierte una de esas páginas de estadísticas estáticas en un destino. Se actualiza solo. Se gana enlaces y embebidos porque es útil y no promocional. Demuestra que entiendes tu mercado de una forma en la que ninguna listicle puede, porque no puedes falsificar un modelo funcional de aquello que a tus clientes les importa.

Sea lo que sea lo que vendes, hay un número en vivo que tu audiencia consulta, discute o por el que se preocupa. Tipos de hipoteca. Precios de la energía. Calendarios de carreras. Plazos de entrega de componentes. Volúmenes de contratación en tu sector. El S&P 500 contra la cartera de tu cliente. El dashboard adecuado se adueña de ese número y se convierte en la página que tu audiencia abre a las 8 de la mañana con su café.

El suelo técnico ha bajado hasta donde un equipo de marketing puede publicar uno sin un desarrollador por medio. La disciplina (el modelo pega frases; el código decide qué deberían decir) es la única parte difícil, y es difícil sobre todo porque es poco familiar.

El código del Bitcoin Spiral está en github.com/richyBaxter/Mandala bajo MIT. Hazle un fork. Quita Bitcoin. Apunta el pipeline al número que tu audiencia de verdad discute. Si lo haces, envíame el enlace.

¿Quieres uno de estos para tu negocio? Ponte en contacto.

Artículos relacionados