publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`

[IMG]

[1]

Hola *Mastodon* Chau *Pleroma*

Por un par de meses tuve la cuenta del `pleroma` ^1[2] de `cyberdelia` ^2[3] pero esta instancia muriΓ³ sin *backup*, aunque en mi caso no habΓ­a publicado mucho que digamos...

TenΓ­a pendiente participar del `Fediverso` ^3[4] en modo escritura y decidΓ­ retomar esta vez mediante la instancia `rebel.ar`

Hola *Mastodon API*

ResultΓ³ muy simple interactuar con la *Mastodon API* ^4[5] y como era de esperarse lo hice usando `curl`, `jq` y `BASH`, inicialmente hice pruebas en modo privado hasta que salΓ­a algo presentable.

BΓ‘sicamente, publicar un `toot` o `status` es pasar el contenido del estado en la variable `STATUS`, el idioma `STATUS_LANG`, la visibilidad (*public, unlisted, private, direct*), y los *IDs* de la media que querΓ©s adjuntar (imΓ‘genes, videos, etc).

El resultado es un `json` con toda la metadata, con *links* directos a cada *tag*, a las imΓ‘genes y mucha informaciΓ³n relacionada.

`org2mastodon`

Ahora que ya tengo un `mastodon-statuses-new` ^5[6] debΓ­a pensar quΓ© iba a publicar y como no soy muy amante del *micro-blogging* simplemente porque *no tengo capacidad para resumir*, pensΓ© que tal vez serΓ­a una buena idea publicar cada *post* de mi *blog* en forma de *status* de *Mastodon*.

Entonces surgiΓ³ `org2mastodon` ^6[7] que recibe un archivo `.gmi`, extrae del *header* los *tags* `TITLE, DESCRIPTION, KEYWORDS, LANGUAGE` y obtiene la primer imagen que este en el archivo o la imagen definida en los *tags* de `OpenGraph` ^7[8] y se ocupa de publicar un nuevo *status* de *Mastodon*.

Ya estaba muy cerca de salir a publicar a lo pavote, pero surgieron 2 problemas a resolver:

1. No todos los *posts* tenΓ­an todos los *tags* necesarios ni imΓ‘genes

2. CuΓ‘ndo publicar? En que orden? CΓ³mo evitar duplicar *posts*?

`blog2mastodon`

La soluciΓ³n vino de la mano de `blog2mastodon` ^8[9] que revisa mi *blog* y compara posts publicados en *Mastodon* con los pendientes de publicaciΓ³n, para sistematizar de alguna manera, se me ocurriΓ³ asignar un *Tag* a cada dΓ­a de la semana y de esta manera saldrΓ­a un posible cronograma de publicaciΓ³n, en base al primer *Tag* definido en `KEYWORDS` de cada archivo a publicar y es el siguiente:

Ahora `blog2mastodon` se ejecuta mediante el `cron` buscando y validando archivos `.gmi` para convertirlos a *Mastodon* y publicarlos automΓ‘ticamente sin mi intervenciΓ³n.

Obviamente esto fallΓ³ varias veces y al principio lo ejecutaba manualmente o a una hora definida en el `cron` para monitorear comportamiento, pero luego de unos dΓ­as, comenzΓ³ a funcionar solito y solo.

`blog2mastodon-alert`

`blog2mastodon-alert` ^9[10] se ocupa de avisarme si hay algo publicable, luego de publicarlo enviΓ‘ndome el la *URL* y lo mΓ‘s importante, alertΓ‘ndome mediante `ntfy.sh` ^10[11] si no hay nada para publicar con diferentes niveles de criticidad, entonces en el mejor de los casos solo basta que me ocupe de completar DESCRIPTION, KEYWORDS y verificar si cuenta con una imagen un *post*, realizar el *commit* en el *repo* de mi *blog* ^11[12] y en algΓΊn momente el *crontab* se ocuparΓ‘ de publicar por mi en *Mastodon*.

Un ejemplo del *log* que genera `blog2mastodon-alert`:

*first public release*

Luego de semanas de usar `mastodon-bash-utils` ^12[13] en modo *developer* aprovecho a generar el primer *release* pΓΊblico! y seguramente estarΓ© compartiendo una *review* mas detallada de cΓ³mo fue realizar 1 mes entero de *posts*, segΓΊn el cronograma deberΓ­a ser el prΓ³ximo *Domingo*.

ChangeLog

1: file:img/blog2mastodon.png

2: https://pleroma.social/

3: https://cyberdelia.com.ar/

4: https://fediverse.info/

5: https://docs.joinmastodon.gmi/api/

6: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/mastodon-statuses-new

7: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/org2mastodon

8: https://ogp.me/

9: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/blog2mastodon

10: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/blog2mastodon-alert

11: https://ntfy.sh/

12: https://gitlab.com/osiux/osiux.gitlab.io/

13: https://gitlab.com/osiux/mastodon-bash-utils/

14: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/ac85a947896421b22647e437f0820f0a22ad47af

15: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/5eff6c558b6d882c094da5370b7f32d17ad1a25e

16: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/983c54f1862f2095f6953572733c198cc5af1fc9

17: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/21d086fe86f970ed81b77ba00791f944ccae3aa6