spatie/laravel-bluesky-notification-channel
Laravel notification channel for Bluesky (spatie/laravel-bluesky-notification-channel). Send posts via Laravel’s notification system using a simple BlueskyPost builder; automatically detects links, mentions, and hashtags and renders rich text.
This package makes it easy to send notifications to Bluesky using Laravel's notification system. Links, mentions and hashtags are automatically detected and rendered as rich text.
Here's how you can use it:
BlueskyPost::make()
->text('Hello from Laravel! Check out https://spatie.be')
->language('en');
In a notification:
<?php
use Illuminate\Notifications\Notification;
use Spatie\BlueskyNotificationChannel\BlueskyChannel;
use Spatie\BlueskyNotificationChannel\BlueskyPost;
class ServerDownNotification extends Notification
{
public function via($notifiable): array
{
return [BlueskyChannel::class];
}
public function toBluesky($notifiable): BlueskyPost
{
return BlueskyPost::make()
->text("Our server {$this->server->name} is down!");
}
}
We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.
We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.
You can install the package via composer:
composer require spatie/laravel-bluesky-notification-channel
Add your Bluesky credentials to config/services.php:
'bluesky' => [
'username' => env('BLUESKY_USERNAME'),
'password' => env('BLUESKY_PASSWORD'),
],
You can create a post using the BlueskyPost class:
BlueskyPost::make()
->text('Hello, Bluesky!')
->language('en');
The package automatically detects links, mentions (@handle.bsky.social) and hashtags (#topic) in your post text and converts them to rich text facets.
Link embeds (cards with title, description and thumbnail) are automatically resolved from the first link in your post. You can also specify an embed URL explicitly:
BlueskyPost::make()
->text('Check this out!')
->embedUrl('https://spatie.be')
If you want to disable automatic embed resolution, call withoutAutomaticEmbeds():
BlueskyPost::make()
->text('https://spatie.be')
->withoutAutomaticEmbeds()
You can also send posts without using notifications by resolving the BlueskyService from the container:
use Spatie\BlueskyNotificationChannel\BlueskyService;
app(BlueskyService::class)->createPost('Hello, Bluesky!');
You can swap out the default implementations by binding your own classes in a service provider:
use Spatie\BlueskyNotificationChannel\Facets\FacetsResolver;
use Spatie\BlueskyNotificationChannel\Embeds\EmbedResolver;
use Spatie\BlueskyNotificationChannel\IdentityRepository\IdentityRepository;
$this->app->singleton(FacetsResolver::class, MyCustomFacetsResolver::class);
$this->app->singleton(EmbedResolver::class, MyCustomEmbedResolver::class);
$this->app->singleton(IdentityRepository::class, MyCustomIdentityRepository::class);
composer test
Please see CHANGELOG for more information on what has changed recently.
Please review our security policy on how to report security vulnerabilities.
This package is a fork of innocenzi/bluesky-notification-channel by Enzo Innocenzi.
The MIT License (MIT). Please see License File for more information.
How can I help you explore Laravel packages today?