میں بغیر کسی SaaS کے Bluesky پوسٹس کیسے شیڈول کرتا ہوں
میں GitHub Actions اور ایک JSONL فائل کا استعمال کرتے ہوئے روزانہ تین Bluesky پوسٹس شیڈول کرتا ہوں۔ میں کسی بیرونی شیڈولنگ سروس کا استعمال نہیں کرتا۔
یہ سسٹم ایک ہی فائل کے ذریعے کام کرتا ہے: content/bluesky-queue.jsonl۔
اس فائل کی ہر لائن ایک JSON آبجیکٹ ہے۔
- غیر پوسٹ شدہ لائنوں میں صرف ٹیکسٹ ہوتا ہے۔
- پوسٹ شدہ لائنوں میں ٹائم اسٹیمپ اور پوسٹ URI شامل ہوتے ہیں۔
اسکرپٹ فائل کو اوپر سے نیچے تک پڑھتا ہے۔ یہ ٹائم اسٹیمپ کے بغیر پہلی لائن تلاش کرتا ہے، اسے پوسٹ کرتا ہے، اور پھر اس لائن کو اپ ڈیٹ کر دیتا ہے۔
میں ڈیٹا بیس کے بجائے JSONL کیوں استعمال کرتا ہوں:
- Git میں تبدیلیوں کو ٹریک کرنا آسان ہے۔
- کوئی بھی CI جاب فائل میں نئی لائن شامل کر سکتی ہے۔
- یہ سیٹ اپ کو سادہ اور مفت رکھتا ہے۔
Bluesky API کی ضروریات کو سنبھالنا
Bluesky کو لنکس اور ہیش ٹیگز کے لیے "facets" کی ضرورت ہوتی ہے۔ آپ صرف ٹیکسٹ نہیں بھیج سکتے۔ آپ کو ان عناصر کے لیے درست بائٹ پوزیشنز (byte positions) فراہم کرنی ہوں گی۔
میں ان پوزیشنز کا حساب لگانے کے لیے ایک اسکرپٹ استعمال کرتا ہوں۔ میں UTF-8 بائٹ آفسیٹس (byte offsets) حاصل کرنے کے لیے TextEncoder کا استعمال کرتا ہوں۔ یہ ایموجیز (emojis) استعمال کرتے وقت غلطیوں سے بچاتا ہے۔ کیریکٹرز اور بائٹس ایک جیسے نہیں ہوتے۔
GitHub Actions کو بہتر بنانا
اگر آپ گھنٹے کے آغاز پر جابز شیڈول کرتے ہیں تو GitHub Actions اکثر دیر سے چلتا ہے۔ اسے ٹھیک کرنے کے لیے، میں ایک 'off-minute offset' استعمال کرتا ہوں۔ 00:00 کے بجائے، میں 23:37 استعمال کرتا ہوں۔ اس سے تاخیر کم ہو جاتی ہے۔
میں پوسٹ کرنے سے پہلے 0 سے 5 منٹ کے درمیان ایک رینڈم تاخیر (random delay) بھی شامل کرتا ہوں۔ اس سے پوسٹنگ کا پیٹرن زیادہ انسانی لگتا ہے۔ یہ اس بالکل درست مشین ٹائمنگ سے بچاتا ہے جسے کچھ الگورتھم کم اہمیت دیتے ہیں۔
انفینٹ لوپس (Infinite Loops) سے بچنا
جب اسکرپٹ کیو (queue) کو اپ ڈیٹ کرتا ہے، تو یہ تبدیلی کو ریپوزٹری (repository) میں واپس کمٹ (commit) کر دیتا ہے۔ اس سے ورک فلو (workflow) دوبارہ شروع ہو سکتا ہے۔
میں اسے کمٹ میسج گارڈ (commit message guard) کے ذریعے حل کرتا ہوں:
- اسکرپٹ کمٹ میسج میں
[skip bluesky-queue]شامل کرتا ہے۔ - ورک فلو اس ٹیگ کو چیک کرتا ہے۔
- اگر ٹیگ موجود ہو، تو ورک فلو نہیں چلتا۔
یہ سسٹم AI-curated سائٹس کے ساتھ ایک طویل مدتی تجربے کا حصہ ہے۔ یہ سادہ، سستا اور قابل اعتماد رہتا ہے۔
