sagas/odisea-del-blog-maestro/022-el-script-que-da-voz.md

2026-03-24 published

Episodio 022 — El script que da voz

Episodio 022 — El script que da voz

Serie: bitácora de ingeniería — caprini.dev
Hilo: durante el 021 fijamos qué debía hacer el amplificador; aquí entra el cómo mínimo y honesto: un .mjs que pregunta, lee, dibuja y abre el compositor.


Qué existe ya en el repo

En projects/003-blog-sharer/ vive el blog sharer (ñpm startsharer.mjs`):

  1. Enumera los Markdown en src/content/docs/system/episodes/ y ordena por nombre de fichero.
  2. Menú con inquirer — eliges el post por título y ves el slug en la misma línea.
  3. Frontmatter vía gray-matter: title obligatorio; para el texto del Intent se usa metaDescription y, si falta (legacy), description.
  4. ImagenSatori + @resvg/resvg-js, fondo #1a0b2e, titular cian centrado, logo-writer.png bajo public/assets/images/, fuente JetBrains Mono reutilizada del progress tracker. Salida: public/assets/images/shares/<slug>.png.
  5. Intent — plantilla en castellano con enlace https://caprini.dev/blog/<slug> (base configurable con CAPRINI_SITE_BASE); ópen** salvo **TWITTER_INTENT_NO_OPEN=1`.

Orden global interno de esta entrega: SPEC-006 (implementación ejecutable de lo acordado como SPEC-003 en documentación de proyecto).


Límites conscientes

Subir la imagen al post en X sigue siendo gesto humano. El script solo deja el PNG en ruta predecible y el texto listo en el navegador — misma filosofía que el episodio 020.


Próximo uso

Cuando publiques un episodio nuevo, basta con ejecutar la CLI, elegir la entrada y revisar el borrador en X antes de pulsar publicar. El taller gana voz sin perder criterio.