Przejdź do głównej zawartości


Z bloga do Mastodona i dalej w Fediwersum


Czyli jak być własnym botem typu rss 2 fedi


Obrazek/zdjęcie Osoby prowadzące blogi zastanawiają się, jak je “zintegrować” z #Fediwersum czy #Mastodon-em. Jest tyle rozwiązań, przez RSS, z linii poleceń, boty i inne wodotryski. Każde z nich ma swoje wady i zaletę (imo jedną, automatyzacja). Myślą również o przejściu na blogi stricte fediversowe, np. #WriteFreely, na którym ja piszę, a ty teraz czytasz tego posta. Ich wady są znane:
  • Nie można odpowiedzieć na komentarze pod postem (konto jest nieme)
  • Nie można zobaczyć (w prosty sposób) kto obserwuje profil.
  • Publikując obiekt ActivityPub typu Article, Mastodon przedstawi go jako tytuł i link. Nic nie poradzisz.
  • Publikując na #WordPress z wtyczką #ActivityPub możesz ustawić typ Note, cały tekst będzie widoczny, ale stracisz formatowanie.
  • Nie po to twój blog był graficznie i typograficznie cyzelowany, dopieszczany, by teraz zrobić z tej twojej treści mastodonowego tootka, takiego jak wszystkie inne.
  • Boty automatyczne najczęściej będą publikować / repostować treści “od teraz”, zapominając (nie widząc) wcześniejszych.
To tylko kilka przykładów wad takiego podejścia, a jest ich więcej, osoby będące autorami treści wiedzą, o czym mowa.

Tutaj opiszę jak poradzić sobie z niemal wszystkimi wadami tamtych rozwiązań, rezygnując z jedynej zalety: automatyzacji.

Do dzieła:

Załóż na wybranej instancji konto dla bloga (lub bota, jak zwał tak zwał). Polecam dużą instancję, dobrze sfederowaną. Najlepiej działająca głównie z twoim językiem, posiadającą wiele potencjalnie zainteresowanych osób. Twoje wpisy wylądują na lokalnej osi czasu tej instancji i dlatego ten wybór jest ważny. Nie będziesz korzystać z własnego profilu, to na nowym koncie zgromadzisz społeczność okołoblogową. Jeśli nie chcesz rozdzielać kont, to nie musisz. Ta recepta jest elastyczna, ale polecam ;)

Poustawiaj obrazki, avatar i tło, jak chcesz. Dodaj dowolne opisy i linki. Ma być zachęcająco i “na bogato”. Większość rozwiązań “automatycznych” tego nie oferuje, dostajesz jakąś bieda-ikonę awatara i opis z rss.

Napisz tootki o starszych wpisach na blogu. Dla zachęty. Twoje dzieła wybitne przypnij do nowego profilu. Obejdziesz problem pominięcia starszych, a wartościowych treści.

Pisząc tootki wybieraj takie fragmenty artykułów, które będą zachęcały do kliknięcia w link do treści na twoim blogu. Automaty wezmą tylko excerpt / wprowadzenie. Ty możesz wybrać, co chcesz, by dobrze “zasmaczyć” publiczność. I wykorzystać cały limit znaków.

Dodaj obrazek przyciągający uwagę. Pewnie weźmiesz ten z bloga, ale możesz go zmienić, by lepiej pasował (pamiętając o domyślnym przycinaniu na Mastodonie) albo dodać jakieś oznaczenia twojej marki. Znów są to rzeczy, których automat nie oferuje. Koniecznie pamiętaj o alt-text dla obrazka. Opisujesz galerię zdjęć? Dodaj kilka wybranych obrazów. Znów bot tego nie potrafi – a ty możesz to wykorzystać. Lub dodaj krótkie wideo, masz taką możliwość, bot nie.

Publikuj tootki o dobrych godzinach. Wtedy, kiedy jest spore audytorium. Mastodon to w mniejszym stopniu “bieżączka” niż Twitter z jego algorytmami, ale zawsze. Podbij swojego tootka kolejnego dnia, również o dobrej godzinie. Dla lepszej skuteczności. Automat opublikuje tylko raz i zrobi to, kiedy on chce :(

Publikuj tootki dopiero wtedy, gdy masz pewność, że wpis na blogu wygląda tak, jak chcesz. Masz go sprawdzonego w Twitter card dev czy Facebooku. Że adres jest odpowiedni, zdjęcie ładnie skadrowane, SEO ogarnięte. Dlaczego to ważne? Bo w fediverse nie będziesz mieć kontroli nad “odświeżeniem” wyglądu publikacji, gdy już ją puścisz do publiczności. Cache serwerów będzie działał, ile będzie chciał, podając starą wersję. Bez twoich ewentualnych poprawek. Tutaj działa jedynie prewencja.

W przeciwieństwie do automatów – ty jako bot własnego bloga – możesz pisać o jednym artykule na blogu wielokrotnie. Za każdym razem taka publikacja zaprosi nową społeczność do poczytania. Nie bój się poprosić o boost. Same lajki nie zapewnią w fediverse sporych zasięgów.

Wzmiankuj (mention) konto bota-bloga we własnych wpisach. Podbijaj jego tootki. Jeśli masz profile na innych instancjach – podbij z nich. Wtedy tootek wyląduje również na ich lokalnej osi czasu.

Pamiętaj, że konto takiego profilu “bota” dla bloga też ma swój kanał RSS (jak każde na Mastodon: https://twoja.instancja/@twojProfil.rss). Możesz go wykorzystać. Jeśli będziesz pamiętać o obrazkach, w czytnikach RSS twoje wpisy będą wyglądać atrakcyjnie.

To rzeczy, które przyszły mi do głowy. Temat jest bardzo szeroki, może jeszcze do niego wrócę. Nie poruszyłem kwestii widoczności na innych instancjach, tzw. back-fill, innych rzeczy. Nie obawiaj się zapytać, jeśli coś jeszcze przyjdzie ci do głowy.

A może znasz bota, automat, który to wszystko potrafi i nie ma wspomnianych wad? Koniecznie daj mi znać!

Miłego bot-owania własnego bloga ;)

I udanego 2023 roku, bo piszę chyba ostatni post w tym już starym 2022. Fajnej imprezki :)

— Chcesz wesprzeć? Postaw kawę :)Postaw mi kawę na buycoffee.to

Fedi: m0bi13@mastodon.socialE-mail: m0bi@e.email

3 użytkowników udostępniło to dalej

@m0bi13@mastodon.social A co to jest ten back-fill bo się nie spotkałem z tym zagadnieniem?
@m0bi
Jedną z cech #ActivityPub jest rozsyłanie wiadomości do listy odbiorców. Więc nie jesteś na liście - nie dostajesz. Gdy zaobserwujesz, oczywiście zaczniesz dostawać wiadomości. Ale "od teraz", czyli wcześniejsze nie, bo nie było cię na liście do wysyłki, gdy były rozsyłane.

Starsze wiadomości / tootki są dostępne, ale trzeba by je jakoś pobrać. Back-fill to właśnie technika na pobranie starszych wiadomości.

Opisałem to (trochę technicznie) tutaj:
https://zb3.org/m0bi13/jak-pobrac-liste-ostatnich-postow-dla-grupy-guppe-groups

@m0bi13@zb3.org

Jak pobrać listę ostatnich postów dla grupy Guppe Groups


Czyli wstęp do własnego #backfiller-a dla #Mastodon-a


Grupa na @a.gup.pe zasubskrybowana, ale nie widzisz, co ludzie ciekawego w niej wczesniej pisali. To naturalne, niestety, zobaczysz jedynie nowe posty, czyli “od teraz”. Ale co ze starymi? Przecież gdzieś są?

No oczywiście, że są. Twoja instancja mogłaby, gdyby chciała, zapytać serwer grup o ostatnie posty. To samo dotyczy zresztą nowo obserwowanych osób – też nie widzisz ich starszych postów. Ale instancja “nie chce”, bo ActivityPub “tak ma”. W zasadzie to Gargron nie chce tego zaimplementować ;) (żarcik)

Skoro ustaliliśmy, że starsze posty z grupy są pamiętane, to gdzie?

Tam, gdzie zwykle w ActivityPub, czyli w “outbox” aktora, jakim jest konto grupy. Przyjmijmy, że sprawdzamy grupę “rower”. Jej outbox to:
https://a.gup.pe/u/rower/outbox

Jak go pobrać?

Najpierw pytamy o kolekcję:
curl https://a.gup.pe/u/rower/outbox -H 'Accept: application/ld+json;'

W odpowiedzi dostajemy adres “first” do naszej OrderedCollection:
{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],"id":"https://a.gup.pe/u/rower/outbox","type":"OrderedCollection","first":"https://a.gup.pe/u/rower/outbox?page=true","totalItems":94}

No i teraz już z górki, dostaniemy w odpowiedzi ostatnie posty na grupie:
curl https://a.gup.pe/u/rower/outbox?page=true -H 'Accept: application/ld+json;

W zasadzie wiemy już wszystko, w naszej tablicy orderedItems[] mamy interesujące dane, adres url posta z grupy jest w polu object.

A jak wyciągnąć całą listę postów? Posłużmy się skryptem #bash z wykorzystaniem niezawodnego #jq, odpytując w pętli o wszystkie adresy postów:
#!/usr/bin/env bash

instance="https://a.gup.pe"
group="rower"

json=$(curl -s -H "Accept: application/activity+json" $instance/u/$group/outbox?page=true)
echo "$json" | jq -r .orderedItems[].object | xargs -I% echo "%"
next=$(echo "$json" | jq -r .next)

while true; do
        json=$(curl -s -H "Accept: application/activity+json" "$next")
        echo "$json" | jq -r .orderedItems[].object | xargs -I% echo "%"
        next=$(echo "$json" | jq -r .next)
        if [ -z "$next" ]; then
                break
        fi
done

Dobra, mamy listę adresów postów z grupy. Co można z nimi zrobić?

Możesz każdy z nich wkleić w pole “szukaj” twojej web apki mastodona. Instancja go znajdzie, pobierze, wyświetli, “sfederuje”, pojawi się on na liście “ostatnich” postów profilu grupy. Będzie od teraz widoczny nie tylko dla ciebie, ale dla wszystkich użytkowników twojej instancji.

Można to zautomatyzować? Tak. Ale musisz mieć token, żeby autoryzować się na twojej instancji. Api search wymaga “zalogowania”. Wcześniej pytaliśmy o dane publiczne i autoryzacja nie była wymagana.

Ja używam #python-owego narzędzia toot do pracy z mastodonem z linii poleceń. Polecam go. To również cały tekstowy klient mastodona, odpal: toot tui

Po zainstalowaniu toot i zalogowaniu przez:
toot login

Możesz znaleźć token przez:
toot auth

i sprawdzić wskazany plik.
Są inne sposoby, by pozyskać token. Najprościej chyba to podejżeć w przeglądarce, co wysyła w nagłówku twoja apka do instancji mastodona w nagłówku request-u Authorization: Bearer.

Jak już masz token, to wywołanie API jest proste:
curl "https://twoja.instancja/api/v2/search?q=adresPostaDoWyszukania&resolve=true&limit=20&type=statuses" -H "Accept: application/json" -H "Authorization: Bearer TWÓJ_TOKEN"

A czy można wykorzystać ten mechanizm do backfill-owania tootków również nowo obserwowanych użytkowników? Myślę, że tak.

Jak?

Napiszę o tym w następnym poście, stay tuned.

Ten wpis to trochę notatki na szybko, zanim pójdę spać :)

Udanego backfill-owania postów z grupy!

Masz pytania? Uwagi? Komentarz? Zapraszam do rozmowy pod tootkiem:https://mastodon.social/@m0bi13/109515778432111992

— Chcesz wesprzeć? Postaw kawę :)Postaw mi kawę na buycoffee.to

Fedi: m0bi13@mastodon.socialE-mail: m0bi@e.email

Oj to już raczej nie na moją głowę. Ale idea grup w sumie działa jak e-mailowa subskrypcja np. newslettera. Też się przecież nie dostaje poprzednich wydań więc w idea jest słuszna, ale wiadomo fajnie mieć też wtootkowane poprzednie wiadomości.
@ftdl Z WordPressana FireFisha i pewnie na Misskey idzie z pełnym formatowaniem. Nie wiem, czy to jest sprawa protokołu, czy klienta.
@ftdl Najchętniej zautomatyzowałbym przekazywanie wiadomości pomiędzy wtyczką Events Calendar w WordPressie a czymkolwiek w Fediwersum. A jakby to jeszcze potrafiło publikować do FB, to już by była pełnia szczęścia.Przez RSS na Friendicę idzie, ale jako zwykły post, nie jako wydarzenie Friendiki i ludzie nie mogą sobie dodawać do kalendarza.

m0biudostępnił to.

RSS chyba wycina dane eventowe zostawiając tylko standardowe pola?

Poszedłbym w coś z #wordpress-a, wtyczkę. Zazwyczaj nie polecam Jetpack-a, ale obsługuje chyba i #Mastodon i fb i eventy?

Widziałem tutaj posty nim wrzucane.

Korzystałem kiedyś z Buffer, obsługuje obecnie Mastodona i Facebooka jednocześnie, ale nie wiem, czy będzie przezroczysty dla danych event-u.

Możesz też rozważyć w drugą stronę -> eventy natywne dla #fediverse, np. #Gancio https://gancio.org (czy #Mobilizon https://joinmobilizon.org, albo #Gathio https://gath.io), większy zasięg w fedi i ich import do wp np. przez https://pl.wordpress.org/plugins/wpgancio/

Może #FediPomoc #FediTipsPL ma jakiś pomysł?

@m0bi13@zb3.org @ftdl

m0biudostępnił to.

- nie używałem kalendarza, o którym mowa, ale...

Wtyczka do publikacji z awP na Mastodona pozwala na łatwe robienie hooków, więc jesli wydarzenia z tego kalendarza są postami, to wystarczy dodać hooka, ktory sprawdzi czy post ma pola z kalendarza i dokleić je do wychodzącego tootka.

m0biudostępnił to.

@mason
Dzięki, spróbuję z #mobilizon i wtyczką do #Wordpress
Pola doklejone do tootka nie będą raczej się importować ludziom do kalendarzy, więc pewnie lepiej Fedi>WP
A tak wygląda import do Masto