Build and operate a URL shortner on Cloudflare Workers with Upstash Redis and D1. Use when the user asks to create shortlinks, redirects, click tracking, analytics, request metadata capture (country/city/ip/user-agent), non-blocking tracking, or resilient alerting (for example Telegram) on failures.
Installation
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Build and operate a URL shortner on Cloudflare Workers with Upstash Redis and D1. Use when the user asks to create shortlinks, redirects, click tracking, analytics, request metadata capture (country/city/ip/user-agent), non-blocking tracking, or resilient alerting (for example Telegram) on failures.
Cloudflare Workers URL Shortner
Guia practica para disenar un URL shortner rapido, resiliente y observable usando Cloudflare Workers + Upstash Redis + D1.
Cuando usar esta skill
Usar cuando el usuario pida:
Crear shortlinks (/links/:id, /r/:slug, etc.)
Resolver redirects en Workers con baja latencia
Contar clicks en Redis
Guardar eventos de click en D1 con metadata de request.cf
Mantener tracking non-blocking (el redirect nunca debe fallar por analytics)
Alertar fallas de persistencia (por ejemplo Telegram) con throttle
Arquitectura recomendada
Objetivo principal
Resolver destination URL rapido.
Responder redirect inmediatamente.
Ejecutar tracking en background.
Si tracking falla, alertar sin romper UX.
Componentes
Cloudflare Worker:
Endpoint publico de redirect (GET /links/:id).
Lectura de target desde Redis.
waitUntil() para tracking async.
Upstash Redis:
Lookup rapido de target por id/slug.
Contador de clicks (INCR).
Timestamp ultimo click.
Locks de throttle para alertas (SET NX EX).
D1:
Tabla append-only de eventos de click para analitica detallada.
Canal de alertas (ej. Telegram):
Notificar errores de persistencia degradada.
Throttle para evitar spam.
Modelo de datos recomendado
Redis (fast path)
shortlink:target:<id>: URL destino
shortlink:clicks:<id>: contador total
shortlink:last-clicked-at:<id>: ISO timestamp
shortlink:alert-lock:d1-persist: lock para throttle de alertas