publicar cada post de blog como status de mastodon usando mastodon-bash-utils
index | about | archive | charlas | docs | links
dot
|
git
|
img
|
plt
|
tty
|
uml
Hola Mastodon Chau Pleroma
Por un par de meses tuve la cuenta del pleroma
1 de
cyberdelia
2 pero esta instancia murió sin backup,
aunque en mi caso no había publicado mucho que digamos…
Tenía pendiente participar del Fediverso
3 en modo
escritura y decidí retomar esta vez mediante la instancia rebel.ar
[fn:rebel.ar] de Mastodon
4
Esta vez, si bien no tenía muy claro que iba a escribir, quería hacerlo mediante la API de Mastodon, así de esta manera, si se muere esta instancia y no logro exportar los datos antes, contaría un backup local de todo lo que publicaría, y podría republicar nuevamente en el mismo orden en otra instancia e incluso tal vez hasta podría repetir la misma publicación en mas de una instancia.
Hola Mastodon API
Resultó muy simple interactuar con la Mastodon API 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).
curl -s -X POST "$URL_API" \ -H "Accept: application/json" \ -H "Authorization: Bearer $TOKEN" \ -F "status=$STATUS" \ -F "language=$STATUS_LANG" \ -F "visibility=$VISIBILITY" \ -F "media_ids[]=$MEDIA_ID" > "$JSON"
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
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
7 que recibe un archivo
.org
, 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
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:
- No todos los posts tenían todos los tags necesarios ni imágenes
- Cuándo publicar? En que orden? Cómo evitar duplicar posts?
blog2mastodon
La solución vino de la mano de blog2mastodon
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:
weekday | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
weekname | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
tag | Ansible | Bash | Evento | Git | GraphViz | SysAdmin | Blog |
Ahora blog2mastodon
se ejecuta mediante el cron
buscando y validando
archivos .org
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
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
[fn:ntfy.sh] 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 y en algún momente el crontab
se ocupará de publicar por mi en Mastodon.
Un ejemplo del log que genera blog2mastodon-alert
:
⌂ NTFY_SEND=0 blog2mastodon-alert No hay cambios locales para guardar Tu rama está actualizada con 'origin/master'. warning: redirigiendo a https://gitlab.com/osiux/osiux.gitlab.io.git/ Ya está actualizado. 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-02 weekday=2 weekname=Tuesday date_published_total=1 tag_total=5 tag_published=5 tag_unpublished=0 priority=Low tag=Bash next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-03 weekday=3 weekname=Wednesday date_published_total=0 tag_total=4 tag_published=4 tag_unpublished=0 priority=Urgent tag=Evento next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-04 weekday=4 weekname=Thursday date_published_total=0 tag_total=6 tag_published=4 tag_unpublished=2 priority=Low tag=Git next=2023-02-27-git-auto-commit-and-push-using-crontab.org 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-05 weekday=5 weekname=Friday date_published_total=0 tag_total=3 tag_published=3 tag_unpublished=0 priority=Urgent tag=GraphViz next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-06 weekday=6 weekname=Saturday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=SysAdmin next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-07 weekday=7 weekname=Sunday date_published_total=0 tag_total=3 tag_published=3 tag_unpublished=0 priority=Urgent tag=Blog next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-08 weekday=1 weekname=Monday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=Ansible next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-09 weekday=2 weekname=Tuesday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=Bash next=null 2023-05-02 09:59:39 blog2mastodon-alert weekday=0 total=36 published=34 unpublished=2 priority=Low tag=all next=null
first public release
Luego de semanas de usar mastodon-bash-utils
12
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
corregir sintaxis y agregar referencia a ntfy.sh en publicar cada post de blog como status de mastodon usandomastodon-bash-utils
2023-05-16 19:51
actualizar TITLE, DESCRIPTION y tags OpenGraph en publicar cada post de blog como status de mastodon usandomastodon-bash-utils
2023-05-16 19:19
agregar imagen y tags OpenGraph a publicar cada post de blog como status de mastodon usandomastodon-bash-utils
2023-05-16 19:31
agregar publicar cada post de blog como status de mastodon usandomastodon-bash-utils