Episodio 020 — El mito de la automatización total
Serie: bitácora de ingeniería — caprini.dev
Hilo: la herramienta ya genera el texto y la tarjeta PNG; lo que no hace es sustituir tu pulso en el botón de publicar. Eso es una decisión de producto, no de pereza.
Qué añadimos en el tracker
Al terminar ñpm startenprojects/001-progress-tracker/, el script construye una URL de **Twitter Web Intent** (https://twitter.com/intent/tweet?text=…`) con el mismo bloque que ya imprimíamos para copiar, más un enlace a https://caprini.dev o, si configuras PROGRESS_BLOG_SLUG (o CAPRINI_SHARE_URL), a la página del episodio bajo /blog/<slug>. El texto va codificado con éncodeURIComponent` para que la URL sea válida.
Opcionalmente, con la librería **ópen**, se abre el navegador en esa URL para que el tweet quede **prefill** y solo falte adjuntar la imagen generada (latest.png) y pulsar publicar. En entornos sin GUI o en CI, TWITTER_INTENT_NO_OPEN=1` evita abrir ventanas.
Por qué no la API oficial (por ahora)
-
Coste y complejidad operativa — Los productos de la API de X van por planes de pago y límites; un blog estático y un script de latido no necesitan suscribir un producto ni negociar cuotas para un gesto que ocurre unas pocas veces por semana. El Web Intent no consume tu presupuesto de API: es solo un enlace.
-
Seguridad y superficie de ataque — Publicar en tu nombre implica OAuth 2.0, refresh tokens, almacenamiento de secretos y rotación si algo filtra. El tracker ya necesita
GITLAB_TOKENpara leer commits; añadir credenciales de escritura en X multiplica el daño posible si el entorno se compromete. Con Intent, no hay token de X en el servidor: el envío ocurre en tu sesión del navegador. -
Toque humano — La imagen 1200×675 y el texto son automáticos, pero el feed no es un tubo sin fricción. Queremos revisar tono, hashtags y que la captura se vea bien en el compositor de X antes de soltarla. La API invita al “publica ya”; el Intent invita al “mira y confirma” — más alineado con vibecoding consciente que con un bot que dispara solo.
Cuándo sí tendría sentido la API
Si el volumen fuera alto, hubiera cola programada o integración con varias cuentas sin intervención, la API (o un servicio intermedio auditado) podría justificarse. Hasta entonces, Intent + ópen` es el compromiso barato, seguro y honesto: la máquina prepara; la persona envía.
Referencias rápidas
- Implementación:
projects/001-progress-tracker/tracker.mjs—buildTweetTextForIntent,buildTwitterIntentUrl. - Variables opcionales: ver
projects/001-progress-tracker/.env.example.