AD
Boost Your Brand on BlueSky—Exclusive banner space to amplify your reach within the BlueSky community.
BSkyInfo LogoBskyInfo
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryArticlesGuidesGlossaryBluesky SDKsSponsor
Submit
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryGuidesGlossaryArticlesBluesky SDKsSponsorSubmit
  1. SDKs
  2. /Ruby
  3. /bskyrb
ShreyanJain9

bskyrb

A Ruby SDK for Bluesky and AT Protocol by ShreyanJain9

Ruby Gem for interacting with BlueSky/AT Protocol

GitHub Stats

62stars
12forks
4contributors
1open issues

Dates

Created:April 17, 2023
Last updated:May 15, 2025

README

The following content is from bskyrb's GitHub repository. All rights reserved by the original author.

Bskyrb

  • Installation
  • Usage
  • Development
  • Code generation
    • Type checking
    • Tests
    • Formatting
  • Contributing
    • TODO
  • Contributors
  • License
  • Code of Conduct

Installation

Install the gem and add to the application's Gemfile by executing:

$ bundle add bskyrb

If bundler is not being used to manage dependencies, install the gem by executing:

$ gem install bskyrb

You can also install the gem by cloning this repository and running ./install-local.sh.

Usage

Create a new session:

require 'bskyrb'
username = 'your_username'
password = 'your_password'
pds_url = 'https://bsky.social'

credentials = Bskyrb::Credentials.new(username, password)
session = Bskyrb::Session.new(credentials, pds_url)
bsky = Bskyrb::RecordManager.new(session)
post_uri = bsky.create_post("Hello world from bskyrb!")["uri"]
bsky.like(post_uri)
bsky.repost(post_uri)
bsky.create_reply(post_uri, "Replying to post from bskyrb")

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, run ./deploy.sh and you will be guided through updating the version number, bundling the gem, and pushing it to RubyGems. You must be signed in with a RubyGems account that has push access to bskyrb.

And configure the type checker:

Code generation

We are working on a script to generate classes from the atproto lexicon. So far we have made non-query objects. To recreate them:

git submodule add https://github.com/bluesky-social/atproto.git
# or just clone it!
bin/codegen

This crawls the lexicon directory in your newly-cloned atproto repo, and generates formatted classes based on the json schemas embedded in the files. You can then hydrate them like so:

# make your RecordManager, then...

post_by_url = manager.get_post_by_url("https://staging.bsky.app/profile/naia.bsky.social/post/3jszsrnruws27")

my_post = Bskyrb::AppBskyFeedDefs::PostView.from_hash post_by_url["thread"]["post"]

=>
#<Bskyrb::AppBskyFeedDefs::PostView:0x000000010432a0a0
 @author=
  {"did"=>"did:plc:scx5mrfxxrqlfzkjcpbt3xfr",
   "handle"=>"naia.bsky.social",
   "displayName"=>"naia",
   "avatar"=>
    "https://cdn.bsky.social/imgproxy/0uv5pCOimHKw44PfnCt5_XpnOICHz1KeHCl8dknI_ZY/rs:fill:1000:1000:1:0/plain/bafkreibabes4xznjzdwxqj4hzirg7lofhl2detvabroibakewssfkr
      "alt"=>""}]},
 @indexedAt="2023-04-10T16:51:21.391Z",
 @labels=[],
 @likeCount=27,
 @record=
  {"text"=>"gm from the new deck chair i built yesterday\n\nthe sky is very blue",
   "$type"=>"app.bsky.feed.post",
   "embed"=>
    {"$type"=>"app.bsky.embed.images",
     "images"=>
      [{"alt"=>"",
        "image"=>{"$type"=>"blob", "ref"=>{"$link"=>"bafkreif52k6kev6xgy2ydptub5oryss3gsscajrec6zh5r2els4si2yj7i"}, "mimeType"=>"image/jpeg", "size"=>796921}}]},
   "createdAt"=>"2023-04-10T16:51:21.049Z"},
 @replyCount=4,
 @repostCount=2,
 @uri="at://did:plc:scx5mrfxxrqlfzkjcpbt3xfr/app.bsky.feed.post/3jszsrnruws27",
 @viewer={}>

Next steps:

  • Recursion--hydrate the classes embedded in the classes. Some parsing to enable this already happens in LexiconParser.
  • Generate classes for queries and other unusual object types.
  • Integrate our new classes into the API call methods.

Type checking

bskyrb uses .rbs type definitions. To check for accuracy, run bin/typecheck. Not all of the output will be useful, especially during rapid development, but it is a good idea to have types at least for the bluesky objects.

Use the rbs collection tool to manage definitions for third-party dependencies, for example HTTParty. Use bundle exec rbs collection install to download third-party definitions (you will need to do this before bin/typecheck will work).

Tests

Run the test suite with:

$ bundle exec rake test

Formatting

So nobody has to argue about formatting, bskyrb uses the standard gem. Run bin/format to format the code in this repo.

Contributing

Please do!

TODO

  • Build
  • More/better tests
  • (Eventually) Publish/release pipeline
  • Split into separate modules for XRPC, Lexicon, ATProto, etc

Contributors

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Bskyrb project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

Topics

atprotoatprotocolblueskyruby

Related SDKs

mackubablue_factory

A simple Ruby server using Sinatra that serves Bluesky custom feeds

25•Ruby
mackubadidkit

A library for handling DID identifiers used in Bluesky AT Protocol

15•Ruby
mackubaminisky

A minimal Ruby client of Bluesky/ATProto API

43•Ruby
mackubaskyfall

A Ruby gem for streaming data from the Bluesky/ATProto firehose

43•Ruby
mackubabluesky-feeds-rb

Template of a custom feed generator service for the Bluesky network in Ruby

35•Ruby
lasercatsproomniauth-atproto

An omniauth strategy for atproto

12•Ruby

Resources

GitHub Repository

License

MIT

Author

ShreyanJain9
ShreyanJain9
did:plc:scx5mrfxxrqlfzkjcpbt3xfr

Activity

Last commit: May 15, 2025
Commit frequency: Unknown

Our Sponsors

Your Brand Here!

50K+ engaged viewers every month

Limited spots available!

📧 Contact us via email🦋 Contact us on Bluesky
BSkyInfo LogoBskyInfo

The Most Comprehensive Bluesky Tools Directory

Stay updated with the latest Bluesky tools and ecosystem news 🦋

Bluesky butterfly logo
Quick LinksSubmit a ToolSponsorAboutLegal Information
ToolsFeed DirectoryLabeler DirectorySchedulingAnalyticsAll ToolsCategoriesCollectionsTags
ResourcesArticlesBluesky GuidesBluesky GlossaryBluesky SDKsBluesky ResourcesSkyRaffleMeida Coverage
Our ProductsRaffleBlueAiTeach ToolsLaiewAI affiliate listFirsto

This website may contain affiliate links

© 2025 BskyInfo. All rights reserved.