- Statik sitelerde bile Bluesky API kullanarak yorumları gösterebilen bir uygulama örneği
- Bluesky, hesap doğrulama, spam yönetimi, depolama ve moderasyonu üstlendiği için ayrı bir sunucu sürdürmek gerekmiyor
- Uygulama yaklaşık 200 satır TypeScript kodundan oluşuyor ve
@bluesky/api ile Tanstack react-query kullanıyor
- Yorumlar salt okunur biçimde gösteriliyor; her blog yazısının meta verisine Bluesky gönderi kimliği bağlanarak otomatik yükleniyor
- Açık sosyal platformlarla statik blogların birleştirilebileceğini gösteren deneysel bir uygulama
Bluesky yorum bölümünü uygulamanın arka planı
- Çıkış noktası, statik olarak oluşturulan bir sitede yorum özelliğini doğrudan barındırmanın zor olması
- CDN'e dağıtılan statik içerikte dinamik veri depolamak mümkün değil
- Ayrı bir VPS ya da bulut hizmeti işletmek ise maliyet ve yönetim yükü getiriyor
- Bluesky, genel API ve AT Protocol tabanlı açık bir platform olarak yorum yönetimi için gereken işlevleri zaten sunuyor
- Hesap doğrulama, spam filtreleme, depolama ve moderasyonu Bluesky üstleniyor
- Blog tarafında ise yalnızca API çağrısı yapıp yorumları göstermek yeterli
Diğer alternatifler ve Bluesky'nin seçilme nedeni
- Twitter, Disqus, giscus (GitHub Discussions tabanlı) gibi alternatifler de değerlendirildi
- Bluesky, merkeziyetsiz AT Protocol üzerine kurulduğu için belirli bir şirketin kontrol riskini daha az taşıyor
- GitHub tabanlı seçeneklere kıyasla sohbet odaklı bir platform olarak yorum barındırmaya daha uygun
Uygulama yöntemi
- Cory Zue'nin yayımladığı bluesky-comments paketi incelendi, ancak doğrudan geliştirme tercih edildi
- Site tasarımına uygun özelleştirme ve ileride genişletme esnekliği için kod sıfırdan yazıldı
- Tüm uygulama, UI bileşenleri ve API işlevleri dahil yaklaşık 200 satırdan oluşuyor
- Başlangıçta OAuth üzerinden doğrudan gönderi yazma özelliği de düşünüldü, ancak UI karmaşıklığı ve zaman kısıtı nedeniyle çıkarıldı
- Sonuç olarak yalnızca salt okunur yorum gösterimi uygulandı
Teknik yapı
- Site, React Server Components ve Parcel kullanılarak inşa edildi
- İçerikler MDX ile yazıldığı için doğrudan JavaScript/JSX eklemek mümkün
- Her yazının
metadata nesnesine bskyPostId eklenerek ilgili Bluesky gönderisiyle eşleştiriliyor
- Bluesky TypeScript SDK'sı (
@bluesky/api) kullanılarak getPostThread endpoint'inden yorum iş parçacığı verisi alınıyor
- API istekleri Tanstack react-query ile yönetiliyor
- Hata, yüklenme ve yeniden deneme durumları otomatik işleniyor
UI tasarımı
- Bluesky yanıtından yalnızca metin içeriği çıkarılarak sade bir yorum arayüzünde gösteriliyor
- İş parçacığı yapısı, girinti ve soldaki sınır çizgisiyle ayırt ediliyor
- Profil resmi ve gönderi tarihi için Bluesky tasarımı referans alındı
- Üst kısma, özgün Bluesky gönderisine giden bir bağlantı eklenerek sohbete katılım teşvik ediliyor
- Yorum yazma özelliği yok; kullanıcılar yanıtlarını doğrudan Bluesky üzerinde bırakıyor
Gelecekteki olasılıklar
- Gerekirse bu uygulama bağımsız bir paket olarak yayımlanabilir
- Ancak mevcut kod şu anda kişisel siteye göre uyarlanmış durumda
- Yapı basit olduğu için diğer geliştiriciler de kaynak koddan yararlanarak kolayca benzerini kurabilir
- Bluesky yorum entegrasyonunun blogda etkileşimi artırmaya yardımcı olup olmayacağı ise henüz belirsiz
Bluesky kullanıcı tepkileri
- Çeşitli Bluesky kullanıcıları yorumlarda “iyi fikir”, “hızlı tepki süresi”, “Disqus için uygun bir alternatif” gibi olumlu geri bildirimler bıraktı
- Bazıları spam yönetimi, iç içe yorumların işlenmesi ve ek desteği hakkında sorular sordu
- Yazar, Bluesky'nin kişisel moderasyon özelliği sayesinde belirli yorumların gizlenebileceğini açıkladı
1 yorum
Hacker News görüşleri
Blogunuzu veya web sitenizi static site generator ile render ediyorsanız, yorumları içerik dosyaları olarak içe alıp build sürecine dahil etme yöntemi öneriliyor
.mdya da.htmldosyaları olarak kaydetmekBu süreç zahmetli olsa da, spam engelleme ve veri üzerinde tam sahiplik gibi avantajlar sunuyor
React kullanmak istemiyorsanız, yaptığım Bluesky yorum web component’ine bakabilirsiniz
GitHub deposu ve tema playground’u üzerinden inceleyebilirsiniz.
Tema özelleştirmesi çok kolay
Ana yazıdaki fikirden yola çıkarak bunu Mastodon tabanlı bir yorum sistemi olarak uyguladım
Ayrıntılar blog yazımda var
Bakınız: ilgili blog yazısı
AB’deki nefret söylemiyle ilgili yasalar nedeniyle site yöneticileri yorumları filtrelemezse cezalandırılabiliyormuş deniyor; bunun pratikte nasıl işlediğini merak ediyorum
Bu yüzden ben yorum özelliğini tamamen kapattım
Blogum tamamen statik bir yapıda ve 50 satırlık bir Cloudflare Worker scripti ile yorumları alıp doğrudan Markdown’a ekliyorum.
Yorum özelliğini embed etmeden de bu yapılabiliyor
Bluesky API ile, belirli bir blog bağlantısını içeren ilk gönderiyi otomatik olarak bulup yorumlara bağlayacak şekilde otomasyon da kurulabilir
Bunun Bluesky’nin büyümesine de katkı sağlayabileceğini düşünüp deneme amaçlı bir hesap açtım. Oldukça eğlenceli bir growth hacking fikri gibi görünüyor
İdeal olarak self-hosted ya da Fediverse tabanlı bir yorum sistemi daha sürdürülebilir olur
Blogum çok popüler değil ama geçmişte spam ve nefret yorumu cehennemi yaşadım
Bu yüzden kişisel blogumda bir daha asla yorum özelliğini açmayı düşünmüyorum
Bluesky tabanlı bir sistemde bile, doğrudan bir labeler ekleyip belirli etiketlere sahip yorumları filtreleyerek kendi sansürünüzü uygulayabilirsiniz
Ben de benzer bir fikirle, kendi blogumun dışında cartes.app üzerinde OSM konumlarına göre yorum özelliği ekledim
ATproto hesabıyla inceleme bırakılabiliyor ve veriler PDS’de kullanıcıya ait JSON olarak saklanıyor