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 start→sharer.mjs`):
- Enumera los Markdown en
src/content/docs/system/episodes/y ordena por nombre de fichero. - Menú con inquirer — eliges el post por título y ves el slug en la misma línea.
- Frontmatter vía gray-matter:
titleobligatorio; para el texto del Intent se usametaDescriptiony, si falta (legacy),description. - Imagen — Satori + @resvg/resvg-js, fondo
#1a0b2e, titular cian centrado,logo-writer.pngbajopublic/assets/images/, fuente JetBrains Mono reutilizada del progress tracker. Salida:public/assets/images/shares/<slug>.png. - Intent — plantilla en castellano con enlace
https://caprini.dev/blog/<slug>(base configurable conCAPRINI_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.