Surtido: purge Aristegui + canales permanentes + corrida real local (2026-09-13)
Continuación de 2026-09-13-surtido-triage-local-r1.md.
Hecho
- Aristegui Noticias fuera de TODO el repo (config + prompts + históricos):
channels.json: entrada reemplazada por Quinto Elemento Lab (MX, independiente_local) y agregado Mother Jones (EEUU, grande). 55 canales.hn.py_MX: fuera “aristegui”, dentro “quinto elemento”/“quintoelemento”.prompt-boletin-best-of.md: quitado de grandes MX; Mother Jones añadido en EEUU grandes (§2.4).indice-credibilidad.json/.md: entrada reemplazada por Q. Elemento Lab y Mother Jones; hueco de verificación actualizado.- Históricos (reportes, briefes, candidatas, feed, observatorio, trainability,
prensa-perfil): cleanup con
limpiar_aristegui.py— 36 entradas de fuente estructurada y 31 líneas/menciones narrativas retiradas.transcripciones.jsonintacta (es caché de contenido, no registro de fuentes): conserva 1 mención sobre Aristegui como tema. JSONs validados.
- Corrida real:
ingest.pycompleto (55 canales ×5, skip-whisper) conOLLAMA_MODEL=deepseek-r1:8blocal →candidatas/2026-09-13.json. Resumen: PASA 12, DUDOSO 2, RECHAZA 1, ERROR 2, SIN_TRANSCRIPCION 245. - Fix de
ingest.pytriage(): limpieza<thinking>, validación objeto JSON,setdefault("veredicto","ERROR")(evita KeyError con DeepSeek-R1).
Canal IDs resueltos (ya en channels.json)
- Quinto Elemento Lab →
UCPmmDeal2PiucQZL330FdOA(MX, independiente_local) - Mother Jones →
UCbWB33FQvFiV0Pq9Calkgzw(EEUU, grande)
Pendientes / hallazgos de la corrida
- YouTube bloquea subtítulos por IP (
IpBlocked): 245/263 videos sin transcripción → se descartan. Mitigaciones posibles: rotar de IP (proxies/ tunnel), habilitar STT local (faster-whisper), o tolerar caché acumulada. - Títulos vacíos en scrape fallback (RSS 404): el modo scrape da
sin título, degradando el triage. Pendiente: extraer títulos en el scrape. - Model heredado vacío/off-schema: un JSON devolvió el esquema
(“PASA | RECHAZA | DUDOSO”) y otro "" en
veredicto. Pendiente: normalizar (solo aceptar los 3 valores + SIN_TRANSCRIPCION/ERROR) y re-triagear. - Imprimir TITULO real en el prompt de ingest (hoy resumido a 60 chars por log).
Cómo re-correr
LLM_BACKEND=ollama OLLAMA_MODEL=deepseek-r1:8b OLLAMA_URL=http://localhost:11434 \
nohup .venv/bin/python ingest.py --limit 5 --skip-whisper \
> /tmp/ingest_YYYY-MM-DD.log 2>&1 &
Triage de candidatas ya guardadas: .venv/bin/python triage_rapido.py.