Surtidito — enlace de anonimización de video + diagnóstico de envío (2026-08-11)
Síntoma
“No me llegó el correo de Surtidito y revisando el sitio no se hizo el retreival.”
Diagnóstico (verificado con datos reales)
- El correo: el cron SÍ corrió (feed regenerado 11 ago 08:31 UTC, visible en
Supabase artefactos + /feed). La edición #1 (9 ago) SÍ se envió por broadcast
(bfb4506e, status “sent”, entregada a [usuario]@pm.me el 10 ago 20:14 UTC).
NO se envió nada más porque no existe edición nueva desde el 9 de agosto:
_enviar_edicion_diaria()devuelve “ya enviada” cuandoenvio_ultimo.edicion== edición más reciente. El cron NO genera ediciones: solo portada, feed, nube, análisis y envío. Ingest → reporte es manual/local. - El retreival del sitio: el feed se regeneró, pero con 0 items X y 0 items YouTube (solo fallback “SITIO”): las 3 instancias de Invidious están muertas (yewtu.be 403 anti-bot, inv.riverside.rocks redirige a un blog personal, invidious.materialio.us sin respuesta) y xcancel/nitter bloquean.
- Causa raíz del email: no hay edición del 10 ni 11 de agosto. candidatas/ 2026-08-10.json existe pero nunca se convirtió en reporte/2026-08-10.json.
Decisión
- Enlace de anonimización
/v/{video_id}: mide la incidencia del clic en Tinybird (datasourcevideo_clics, pipevideo_incidencia) ANTES de redirigir. Destino: primera instancia Invidious viva (probe con detección anti-bot y verificación de host + reproductor), si ninguna → YouTube directo. Antes moría en instancias muertas (caía al primer inviduous aunque estuviera en 403 anti-bot o secuestrado). - Feed de YouTube con fallback al RSS oficial (
_fetch_yt_rss): si las 3 instancias de Invidious fallan, usa https://www.youtube.com/feeds/videos.xml (misma cadena que ingest.py). Las URLs del feed y del email (mailing.py_anon()) ahora son/v/{id}anonimizadas. - Correo: los enlaces de video en el HTML del email pasan por WEB_URL/v/{id}.
Cómo verificar en el futuro
- Feed actualizado:
https://surtido-alpha.vercel.app/feed(pie: “generado … UTC”). - Incidencia:
curl "$TINYBIRD_API_URL/v0/pipes/video_incidencia.json?token=$TINYBIRD_TOKEN&limit=10" - Envíos:
.venv/bin/python mailing.py list/status <id> - Estado del cron: no hay log; se infiere del timestamp de feed en Supabase.
Pendiente editorial (para que llegue el correo)
- Generar edición nueva:
.venv/bin/python ingest.py→ triage/edición →.venv/bin/python reporte.py reporte/2026-08-XX.json→ commit/push (Vercel auto-deploy, ver nota de deploy manual abajo).
Nota operativa: deploy
- El push a GitHub a veces deja el deploy de Vercel en UNKNOWN/colgado (sin
logs). Remedio:
vercel link --project surtido --yes && vercel --prod --yesy si hace faltavercel alias <deploy-url> surtido-alpha.vercel.app. OJO: el directorio estaba linkeado al proyecto “surtidito” (proyecto equivocado); el correcto es “surtido” (team nef-projects).