Cartel ASCII de la edición del día (surtido)

Fecha: 2026-09-15 Estado: implementado y commiteado en experiments-ascii-cover

Qué es

Cartel constructor (temático, editorial) de cada edición de Surtidito — variante de la portada que hoy saca imagen.py con nanobanana. No réplica de una foto: composición a partir de los temas de la edición.

Por qué esto y no Twitter

  • Los “temas” ya son la edición del día (reporte/YYYY-MM-DD.json): tema_del_dia, secciones, notas, fuente, [EN]. Cero fuentes externas.
  • X API mató el tier gratis (feb 2026); trends ≈ $0.01/llamada si algún día se quiere volumen real de tweets. Va en una capa aparte, nunca necesaria.

Arquitectura (un constructor, dos renderers)

reporte/YYYY-MM-DD.json
  → componer()      (Lienzo de celdas por rol: tema en letras bloque 5×7,
                     viñetas, strips de conteo por sección, auditoría)
  → dibujar_texto()  [puro]  — espacio de caracteres, sin dependencias
  → dibujar_pixel()  [píxel] — Pillow, celda por celda con gradiente de papel,
                     tinta por rol (accento #9F2F2D, petróleo, oliva); PNG + ANSI
  • Letras bloque 5×7 embebidas (A–Z, 0–9, puntuación); héroes del tema = primeras palabras ≥5 letras fuera de stopwords (RENDICIÓN/CUENTAS/FRENTES en ed. 12).
  • Ramsa de relleno por palabra gigante: █ ▓ ▒ (profundidad visual).
  • Strip de secciones = barra █ por conteo + etiqueta, con color por sección.

Módulo y artefactos

  • cartel.py (raíz de surtido). Uso: .venv/bin/python cartel.py reporte/2026-09-14.json [--cols 92] [--ruta puro|pixel|ambas]
  • Salidas junto al JSON: .cartel.txt (puro), .cartel.ansi.txt + .cartel.png (píxel).
  • Idempotente: sobreescribe por base de edición, como imagen.py con la portada.

Pendiente / siguiente

  • Integrar al flujo de receta: artefacto opcional al generar la edición.
  • Emitir también como og:image/attached de mail si rinde.
  • Camino “píxel” sobre foto real (port de pic2ascii: imagen → ASCII) si se quiere, pero el constructor basa en NO depender de una foto.

Contexto

  • Repo: nef/surtido (Surtidito), boletín diario MX/US.
  • Rama: experiments-ascii-cover (la rama experiments existe; se sigue la convención experiments-<sufijo>).
  • Ver repos de referencia: wzshiming/pic2ascii, Im-Rises/video-stream-ascii.