Strava CLI + IA: Construyendo tu propio entrenador personal inteligente

5 min lectura · strava cli typescript ia llm
Aprende a combinar la API de Strava con modelos de lenguaje (LLMs) para obtener un análisis profundo de tu rendimiento deportivo que ninguna app te ofrece.

Terminas de correr, pulsas “Guardar” en tu reloj y los datos vuelan a la nube. Strava te muestra un mapa, tu ritmo medio y quizás un par de gráficas de frecuencia cardíaca. Pero, ¿realmente entiendes qué significan esos datos para tu progreso a largo plazo?

La mayoría de nosotros acumulamos cientos de actividades que se quedan ahí, cogiendo polvo digital. Tenemos la información, pero nos falta el contexto. Por eso decidí crear Running Agent, un proyecto que utiliza una CLI para extraer tus datos de Strava y un agente de IA para analizarlos con la profundidad de un entrenador profesional.

El concepto: De datos crudos a insights accionables

El flujo de trabajo es sencillo pero transformador: extraemos el JSON detallado de una actividad (o de todo un mes) y se lo pasamos como contexto a un LLM (como GPT-4, Claude o Llama 3).

Lo que antes era una lista interminable de coordenadas y pulsaciones, se convierte en una conversación sobre tu salud y rendimiento.

Antes: Análisis básico de una actividad ❌

{
  "name": "Tirada larga domingo",
  "distance": 18500,
  "moving_time": 5400,
  "average_heartrate": 155,
  "suffer_score": 82
}

Resultado: “Has corrido 18.5km. Tu esfuerzo ha sido alto”. No nos dice nada que no sepamos ya.

Después: Análisis con Running Agent + IA ✅

Usuario: “Analiza mi fatiga basándote en esta actividad comparada con las de la última semana.”

IA: “He observado que en este rodaje de 18km tu frecuencia cardíaca ha sido 5 latidos superior a la media para este mismo ritmo. Además, tu cadencia ha bajado en los últimos 3km. Esto indica fatiga acumulada. Te recomiendo 48h de recuperación activa antes de tu próxima sesión de intensidad.”

Construyendo la herramienta: Strava CLI

Para que la IA pueda “razonar”, necesita datos limpios. He construido la CLI con TypeScript y Zod para asegurar que la estructura que enviamos al modelo es siempre perfecta.

Extracción de datos con precisión

La CLI se encarga del trabajo sucio: manejar el flujo de OAuth 2.0, refrescar tokens y parsear la API de Strava. Al usar @clack/prompts, la experiencia en la terminal es fluida y visual.

# Extraer actividades y pasarlas directamente a un análisis
npm run dev -- activities list --json --per-page 5 > context.json

El Agente de IA: ¿Qué podemos preguntarle?

La magia ocurre cuando alimentamos al agente con el contexto adecuado. Al ser agnóstico al modelo, puedes usar OpenAI si buscas la máxima precisión o Ollama si prefieres que tus datos de salud nunca salgan de tu máquina local.

1. Detección de sobreentrenamiento

Al pasarle un histórico de varias semanas, la IA puede detectar patrones que nosotros ignoramos, como un aumento progresivo de la frecuencia cardíaca en reposo o una pérdida de eficiencia aeróbica.

2. Optimización de ritmos

Podemos pedirle que analice en qué zonas de frecuencia cardíaca pasamos más tiempo: “¿Estoy entrenando demasiado tiempo en ‘tierra de nadie’ (Zona 3) en lugar de hacer rodajes fáciles en Zona 2?“

3. Planificación adaptativa

A diferencia de un plan estático, la IA puede ajustar tu próxima sesión basándose en cómo te has sentido hoy: “Hoy el viento era de 30km/h y mi pulso se disparó. Ajusta mi sesión de intervalos de mañana.”

Stack Tecnológico: Por qué TypeScript

Elegí TypeScript para este proyecto por una razón principal: La API de Strava es enorme y compleja.

Usar Zod para definir los esquemas de las actividades nos da una seguridad que JavaScript no puede ofrecer. Sabemos exactamente qué campos tenemos disponibles para enviar al modelo de IA, evitando errores de “undefined” en mitad de un análisis crítico.

// Esquema de validación para asegurar datos consistentes para la IA
const ActivityDetailsSchema = z.object({
  distance: z.number(),
  moving_time: z.number(),
  total_elevation_gain: z.number(),
  average_speed: z.number(),
  max_speed: z.number(),
  has_heartrate: z.boolean(),
  average_heartrate: z.number().optional(),
});

Conclusión: El futuro del entrenamiento es programable

Ya no necesitamos conformarnos con los análisis genéricos que nos dan las grandes plataformas. Como desarrolladores, tenemos la capacidad de construir nuestras propias herramientas de análisis, adaptadas a nuestras necesidades específicas y utilizando la potencia de la Inteligencia Artificial.

Running Agent es solo el principio. La combinación de APIs deportivas y LLMs abre la puerta a una nueva era de rendimiento deportivo basado en datos reales y razonamiento humano (o casi).

Si eres de los que disfruta tanto de un buen commit como de una buena carrera, te invito a probar el proyecto y contribuir: github.com/jalucenyo/running-agent

¿Qué métrica te gustaría que tu IA analizara hoy?


FAQ

¿Qué modelos de IA funcionan mejor para analizar entrenamientos? Modelos con una ventana de contexto amplia y buen razonamiento lógico como Claude 3.5 Sonnet o GPT-4o dan resultados increíbles. Para uso local, Llama 3 (8B o 70B) es más que suficiente para análisis de tendencias.

¿Es seguro enviar mis datos a un LLM? Si usas la API de OpenAI o Anthropic, tus datos se procesan según sus políticas de privacidad. Si la privacidad es tu prioridad absoluta, Running Agent permite usar modelos locales mediante Ollama, donde nada sale de tu ordenador.

¿Necesito saber programar para usar la CLI? Está pensada para desarrolladores, pero si sabes usar una terminal y configurar un archivo .env, puedes ponerla en marcha siguiendo el README del repositorio.


Artículos relacionados

Newsletter

Aprende algo útil cada semana.

Ideas sobre programación, arquitectura e IA para mejorar tu código en menos de 5 minutos de lectura.

Sin spam · Baja cuando quieras