/map-route: dos lugares, un mapa 3D, la ruta dibujándose
El usuario nombra dos lugares ("Times Square a Empire State", "Londres a París", "mi hotel en Lisboa al aeropuerto"). Tú los encuentras, obtienes la ruta real, verificas un fotograma, renderizas el video y entregas un MP4 silencioso (de unos 4.5 segundos).
${CLAUDE_SKILL_DIR} a continuación es la carpeta de esta habilidad (la que contiene este SKILL.md). Si tu entorno no la completa, usa la ruta de esa carpeta. Guarda todo en la carpeta actual del usuario, o en la carpeta que indique. Esta habilidad necesita conexión a Internet (búsquedas de mapas, rutas y teselas de mapas).
0. Verificación de configuración
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" --check
Tarda unos segundos; ejecútalo si no estás seguro de que este equipo esté configurado. "ready": true significa que se puede continuar. De lo contrario, ejecuta los comandos que aparecen debajo de "fix", informando al usuario que es una instalación única: python3 -m pip install playwright (el controlador del navegador), python3 -m playwright install chromium (solo cuando Google Chrome o Edge no estén instalados, unos 150 MB) y python3 -m pip install imageio-ffmpeg (solo cuando falte ffmpeg). Si pip se niega con "externally managed environment", crea un entorno privado una vez y usa su Python para todos los comandos: python3 -m venv ~/.animate-skills && ~/.animate-skills/bin/pip install playwright imageio-ffmpeg, luego ~/.animate-skills/bin/python -m playwright install chromium si es necesario. En Windows, usa py en lugar de python3.
1. Encontrar los lugares y la ruta
Haz que cada lugar sea lo suficientemente específico para una búsqueda en el mapa: agrega la ciudad (y el país si es ambiguo): "Empire State" → "Empire State Building, New York". Luego:
python3 "${CLAUDE_SKILL_DIR}/scripts/route.py" "Times Square, New York" "Empire State Building, New York" \
--labels "Times Square" "Empire State Building" --out map-<desde>-<hasta>.json
--labels: los nombres cortos que se muestran en los marcadores y la tarjeta.--mode:auto(por defecto: caminar si menos de 4 km en línea recta, conducir si menos de 900 km, volar más allá o cuando no hay conexión por carretera),walk,bike,drive,fly. Usa lo que el usuario pidió ("conducir desde...", "volar hasta..."). Dos lugares de interés en la misma ciudad suelen ser a pie: pasa--mode walkhasta ~5 km a menos que hayan indicado lo contrario.--style:light(por defecto),dark,color.--title "..."reemplaza la línea "A → B" en la tarjeta.--units:auto(millas cuando ambos lugares están en EE. UU. o Reino Unido),metric,imperial.--size:1080x1920(por defecto),1080x1080,1920x1080.
Imprime lo que encontró. Verifica que las líneas from y to correspondan a los lugares que el usuario quiso decir (la ciudad correcta, el edificio correcto; un museo puede aparecer como una de sus entradas, lo cual está bien). Si no, haz el texto de búsqueda más específico y vuelve a ejecutarlo, como máximo unas pocas veces: estos son servidores comunitarios gratuitos, una solicitud a la vez.
Los lugares también pueden ser coordenadas ("40.7580,-73.9855") o direcciones postales.
2. Verificar el último fotograma
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" map-<desde>-<hasta>.json --still end --out map-<desde>-<hasta>-check.png
Mira la imagen (tarda unos 10 segundos en generarse): ambos marcadores y sus nombres en pantalla, la ruta clara, la tarjeta correcta (distancia, tiempo, modo)?
3. Renderizar el video
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" map-<desde>-<hasta>.json --out map-<desde>-<hasta>.mp4
Unos 30-60 segundos: cada fotograma espera las teselas del mapa real. Si un renderizado sale negro o en blanco, agrega --no-gpu. Elimina la imagen de verificación.
4. Entregar
Entrega al usuario la ruta del MP4 (muéstralo si tu entorno puede mostrar archivos), junto con la distancia y el tiempo que muestra. No tiene sonido. Ofrece una variante (el estilo oscuro, otro modo, una versión más larga).
La especificación es JSON simple: puedes cambiar los nombres de los marcadores (from.name, to.name), title, subtitle (reemplaza la línea de distancia), style, color (el color de la ruta) o duration (segundos, por defecto ~4.5; uno más largo ralentiza todo el movimiento, por ejemplo, 7 para una versión más calmada) y renderizar de nuevo sin buscar nuevamente.
Sin acceso a Internet
El mapa necesita teselas de mapa en vivo y los servidores de enrutamiento. En un entorno limitado sin acceso a la red (o sin un navegador), informa al usuario en lugar de dibujar un mapa inventado.
Datos del mapa © Colaboradores de OpenStreetMap (ODbL), teselas de OpenFreeMap (esquema OpenMapTiles), rutas de OSRM en los servidores FOSSGIS. La línea de atribución permanece en el video.