How I Schedule Bluesky Posts Without SaaS
Ninapanga machapisho matatu ya Bluesky kila siku nikitumia GitHub Actions na faili ya JSONL. Situmii huduma ya nje ya kupanga ratiba.
Mfumo huu unafanya kazi kwa kutumia faili moja: content/bluesky-queue.jsonl.
Kila mstari katika faili hii ni JSON object.
- Mistari ambayo haijachapishwa ina maandishi pekee.
- Mistari iliyochapishwa inajumuisha timestamp na URI ya chapisho.
Script inasoma faili kuanzia juu kwenda chini. Inatafuta mstari wa kwanza ambao hauna timestamp, inaichapisha, na kisha inahuisha mstari huo.
Kwa nini ninatumia JSONL badala ya database:
- Ni rahisi kufuatilia mabadiliko katika Git.
- Kazi yoyote ya CI inaweza kuongeza mstari mpya kwenye faili.
- Inafanya usanidi uwe rahisi na bila gharama.
Handling Bluesky API Requirements Bluesky inahitaji "facets" kwa ajili ya viungo na hashtag. Huwezi kutuma maandishi pekee. Lazima utoe nafasi sahihi za byte kwa vipengele hivi.
Ninatumia script kukokotoa nafasi hizi. Ninatumia TextEncoder kupata UTF-8 byte offsets. Hii inazuia makosa unapotumia emoji. Wahusika (characters) na byte si kitu kimoja.
Optimizing GitHub Actions GitHub Actions mara nyingi huchelewa ikiwa utapanga kazi kwenye mwanzo wa saa. Ili kurekebisha hili, ninatumia off-minute offset. Badala ya 00:00, ninatumia 23:37. Hii inapunguza ucheleweshaji.
Pia ninaongeza ucheleweshaji wa nasibu kati ya dakika 0 na 5 kabla ya kuchapisha. Hii inafanya mtindo wa kuchapisha uonekane wa kibinadamu zaidi. Inajiepusha na muda sahihi wa mashine ambao baadhi ya algoriti hupunguza umuhimu wake.
Preventing Infinite Loops Script inapohuisha foleni, inafanya commit ya mabadiliko hayo kwenye repository. Hii inaweza kuamsha workflow tena.
Ninatatua hili kwa kutumia ulinzi wa ujumbe wa commit (commit message guard):
- Script inaongeza [skip bluesky-queue] kwenye ujumbe wa commit.
- Workflow inakagua tag hii.
- Ikiwa tag ipo, workflow haifanyi kazi.
Mfumo huu ni sehemu ya jaribio la muda mrefu la tovuti zinazochujwa na AI. Unabaki kuwa mwepesi, rahisi, na wa kuaminika.
