Episodio 025 — El límite de los 280
Serie: bitácora de ingeniería — caprini.dev
Contexto: el Web Intent del amplificador arma un texto largo: gancho, título, descripción, enlace al post y hashtags. En X el techo clásico sigue siendo 280 caracteres, pero el cómputo no es “lo que ves en el portapapeles”: cualquier URL en el tweet cuenta como 23 caracteres, porque la plataforma la sustituye internamente por un enlace t.co de longitud fija acotada. Pegar https://caprini.dev/blog/025-el-limite-de-los-280 no te “come” todos esos caracteres en la factura de X: cuenta 23. Esa regla es la que implementamos al truncar solo la descripción cuando el texto ponderado supera un margen (250), dejando siempre visible el título y el resto de la plantilla.
Plataformas y reglas distintas del editor
Cada red tiene su propio contador (peso de emojis, hilos, adjuntos, etc.). Para nuestro CLI basta internalizar: enlace en X → 23 en el presupuesto del tweet. Si ignoras eso, el preview en terminal puede parecer “corto” mientras el envío real aún se pasaría, o al revés.
¿Y un acortador externo (bit.ly, etc.)?
Un acortador sustituye la cadena visible, pero no resuelve el problema de la imagen en la tarjeta del enlace:
- Open Graph y caché: X (y otras) cachean metadatos del destino final que resuelve el enlace. Si publicas antes de que óg:image` y el PNG existan en producción, la vista previa puede quedarse en fallback vacío o antiguo. Acortar la URL no “sube” el archivo al hosting.
- Confianza y marca: enlaces genéricos de terceros diluyen que el log vive en caprini.dev; para una bitácora técnica, el slug canónico del blog es parte del mensaje.
- Coste de caracteres: en X, sigue siendo una URL → 23 en el cómputo. Ganarías poco en longitud frente a un path ya razonable, y añades dependencia externa.
La consigna operativa sigue siendo la del propio flujo: generar PNG → ñpm run deploy` → recién entonces abrir el Intent. El aviso en rojo al cerrar el script existe para romper la piloto automático: sin despliegue, la imagen no está donde el crawler la espera.
Qué hizo el código
- Ponderación del tweet con el enlace como 23 caracteres.
- Título intacto; descripción recortada con … si hace falta.
- Tarjeta Satori: badge tipo HACK_LEVEL con el número de episodio del nombre de fichero y línea de escaneo fina para textura de monitor.
Próximo paso sugerido: si un título de episodio alguna vez rompe el límite incluso sin descripción, documentar en SPEC-003 si merece un título corto opcional solo para redes — hoy priorizamos no tocar el titular del artículo.