Triage local deepseek-r1:8b + canales nuevo (2026-09-13)

Contexto: pedido de correr el triage de surtido con el modelo local (ollama pull deepseek-r1:8b) y ajustar el set de canales de prueba: cambiar Aristegui Noticias por Quinto Elemento Lab, y sumar Mother Jones (lado inglés/EEUU).

Hecho

  • deepseek-r1:8b (5.2 GB) bajado y sirviendo en localhost:11434 (M1 Pro 16 GB).
  • Corrida de ingest.py con LLM_BACKEND=ollama OLLAMA_MODEL=deepseek-r1:8b sobre set de prueba (4 canales × 3 videos, --skip-whisper) → 6 PASA, 1 DUDOSO, 2 SIN_TRANSCRIPCION, 1 RECHAZA, 1 NINGUNA, 1 vacío.
  • Bug arreglado en ingest.py triage(): DeepSeek-R1 a veces responde JSON sin llave veredicto (o con razonamiento en <thinking>, o {}), lo que tiraba KeyError en la línea del resumen. Ahora se:
    1. limpian los bloques <thinking>…</thinking>,
    2. valida que sea objeto JSON,
    3. setdefault("veredicto", "ERROR") para veredictos ausentes/vacíos.

Canales resueltos (channel_id reales, NO estaban en channels.json)

  • Quinto Elemento Lab → UCPmmDeal2PiucQZL330FdOA (MX, humano)
  • Mother Jones → UCbWB33FQvFiV0Pq9Calkgzw (EEUU, grande)

Limitaciones vistas (para próximas corridas)

  • El scrape de canal (fallback cuando el RSS 404) devuelve videos SIN título (“sin título”) → el triage recibe título vacío y la calidad del veredicto baja. Pendiente: sacar títulos en el scrape o usar otra fuente RSS.
  • El veredicto “NINGUNA” y "" (no normalizados) aparecen cuando el modelo no sigue el esquema; triage_rapido/ingest solo los marcan, no los corrigen.
  • YouTube bloquea transcripts por IP (IpBlocked) en algún canal (Mother Jones): sin subtítulos y con STT saltado quedan SIN_TRANSCRIPCION descartados.

Cómo re-correr

LLM_BACKEND=ollama OLLAMA_MODEL=deepseek-r1:8b OLLAMA_URL=http://localhost:11434 \
  .venv/bin/python ingest.py --channels /tmp/channels_triage.json --limit 3 --skip-whisper \
  --out /tmp/candidatas-triage-YYYY-MM-DD.json

O sobre candidatas ya guardadas sin triage: triage_rapido.py (hoy no tenía pendientes).