publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`
- AUTHOR: Osiris Alejandro Gomez
- EMAIL: osiux@osiux.com
- DATE: 2023-04-30 08:22
[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
- `2023-05-17 08:46`[14] corregir sintaxis y agregar referencia a ntfy.sh en *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
- `2023-05-16 19:51`[15] actualizar TITLE, DESCRIPTION y tags OpenGraph en *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
- `2023-05-16 19:19`[16] agregar imagen y tags OpenGraph a *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
- `2023-05-16 19:31`[17] agregar *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
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
9: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/blog2mastodon
10: https://gitlab.com/osiux/mastodon-bash-utils/-/raw/develop/blog2mastodon-alert
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