Skip to main content
net6.0net8.0net9.0

Simple client for posting to Bluesky

Published
Mar 22, 2025
1y ago
Total Downloads
15.6K
15,593

Install

dotnet add package X.Bluesky --version 2.0.1-beta
ProductVersions
.NET
net6.0net8.0net9.0

README

X.Bluesky

NuGet Version Twitter URL

The X.Bluesky is a .NET library designed to make it easy for developers to post messages to Bluesky, a decentralized social network.

By leveraging the Bluesky API, this project allows for straightforward integration into .NET applications, enabling posts to be made programmatically.

Features

  • Post text messages directly to Bluesky
  • Attach images to posts with support for alt text
  • Add URLs to posts with automatic preview card generation
  • Specify post language settings
  • Authenticate with Bluesky using an identifier and password
  • Support for session management and reuse
  • Automatically generate tags, mentions and URL cards
  • Customizable base URI for different Bluesky instances
  • Embed external content with rich preview cards

Getting Started

Prerequisites

  • .NET SDK (compatible with the version used by the project)
  • An account on Bluesky with an identifier and password

Installation

To use the X.Bluesky library in your project, include it as a dependency in your project's file (e.g., csproj).

See the NuGet package page for the latest version.

Usage

Basic Usage
var identifier = "your.bluesky.identifier";
var password = "your-password-here";

IBlueskyClient client = new BlueskyClient(identifier, password);
// Simple text post
await client.Post("Hello from X.Bluesky!");

// Post with hashtags
await client.Post("Read this post from #devdigest: https://yourlink.com/post/123");

// Post with URL (generates preview card)
await client.Post("Read this post!", new Uri("https://yourlink.com/post/123"));
// Create a client
var client = new BlueskyClient(
identifier,
password,
reuseSession: true,
baseUri: new Uri("https://bsky.social"));
// Create a fully customized post
var post = new Post
{
    Text = "Check out this image with my thoughts on #AI development!",
    Images = new[]
    {
        new Image
        {
            Content = File.ReadAllBytes("path/to/image.jpg"),
            MimeType = "image/jpeg",
            Alt = "A diagram showing AI architecture"
        }
    },
    Url = new Uri("https://yourblog.com/ai-article"),
    Languages = new[] { "en" },
    GenerateCardForUrl = true  // Generate a rich preview card for the URL
};
// Post to Bluesky
await client.Post(post);

Advanced Usage with Post Object The core method of the library is Post(Models.Post post) which gives you full control over your post content:

// Create a client
var client = new BlueskyClient(
identifier,
password,
reuseSession: true,
baseUri: new Uri("https://bsky.social"));

// Create a fully customized post
var post = new Post
{
    Text = "Check out this image with my thoughts on #AI development!",
    Images = new[]
    {
        new Image
        {
            Content = File.ReadAllBytes("path/to/image.jpg"),
            MimeType = "image/jpeg",
            Alt = "A diagram showing AI architecture"
        }
    },
    Url = new Uri("https://yourblog.com/ai-article"),
    Languages = new[] { "en" },
    GenerateCardForUrl = true  // Generate a rich preview card for the URL
};

// Post to Bluesky
await client.Post(post);

The Post object allows you to combine multiple elements like text, images, URLs, and metadata in a single post. This is especially useful for more complex posts that require fine-grained control over the content and presentation.

Changes from Previous Version

No structural changes between v2.0.0-beta and v2.0.1-beta.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

This version is marked prerelease. Validate its API and upgrade path before production use.No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.