Helper library to post to Bluesky Social
A simple library that allows posting to Bluesky via the API.
With all the uncertainty surrounding the future of X (née Twitter), I decided to take a look at Bluesky, which somewhat ironically has its roots in Twitter, where it was started as an internal project. I worry about Bluesky's long-term, given that ultimately it too has to make money, something that Twitter has singularly failed to do. None of this, of course, affects the topic today, which is posting to Bluesky via the API.
I needed a way to post to Bluesky from PHP and so I searched for a library to help and when I couldn't find one I wrote this.
NOTE This is for v2 of php2Bluesky. If you are looking for the v1 details you can find that here.
Running the script is very straightforward:
composer.phar require cjrasmussen/bluesky-api
composer.phar require williamsdb/php2bluesky
Now you can inspect example.php to get some examples and/or see below.
If you are interested in what is happening under the hood then read this series of blog posts.
Requirements are very simple, it requires the following:
Read more about the requirements for video upload here.
Here's a few examples to get you started.
Note: connection to the Bluesky API is made via Clark Rasmussen's BlueskyApi which this makes a connection to Bluesky and manages tokens etc. See here for more details.
require __DIR__ . '/vendor/autoload.php';
use williamsdb\php2bluesky\php2Bluesky;
$php2Bluesky = new php2Bluesky();
$handle = 'yourhandle.bsky.social';
$password = 'abcd-efgh-ijkl-mnop';
// connect to Bluesky API
$connection = $php2Bluesky->bluesky_connect($handle, $password);
$text = "This is some text with a #hashtag.";
$response = $php2Bluesky->post_to_bluesky($connection, $text);
print_r($response);
if (!isset($response->error)){
$url = $php2Bluesky->permalink_from_response($response, $handle);
echo $url.PHP_EOL;
}
$filename1 = 'https://upload.wikimedia.org/wikipedia/en/6/67/Bluesky_User_Profile.png';
$text = 'Screenshot of Bluesky';
$alt = 'This is the screenshot that Wikipedia uses for their https://en.wikipedia.org/wiki/Bluesky entry.';
$response = $php2Bluesky->post_to_bluesky($connection, $text, $filename1, '', $alt);
print_r($response);
if (!isset($response->error)){
$url = $php2Bluesky->permalink_from_response($response, $handle);
echo $url.PHP_EOL;
}
$filename1 = 'https://upload.wikimedia.org/wikipedia/en/6/67/Bluesky_User_Profile.png';
$filename2 = '/Users/neilthompson/Development/php2Bluesky/Screenshot1.png';
$filename3 = 'https://www.spokenlikeageek.com/wp-content/uploads/2024/11/2024-11-18-19-28-59.png';
$filename4 = '/Users/neilthompson/Development/php2Bluesky/Screenshot2.png';
$text = 'An example of four images taken both from a local machine and remote locations with some alt tags';
// send multiple images with text
$imageArray = array($filename1, $filename2, $filename3, $filename4);
$alt = array('this has an alt', 'so does this');
$response = $php2Bluesky->post_to_bluesky($connection, $text, $imageArray, '', $alt);
print_r($response);
if (!isset($response->error)){
$url = $php2Bluesky->permalink_from_response($response, $handle);
echo $url.PHP_EOL;
}
$filename1 = '/path/to/local/video.mp4';
$text = 'A beautiful video';
$response = $php2Bluesky->post_to_bluesky($connection, $text, $filename1);
print_r($response);
if (!isset($response->error)){
$url = $php2Bluesky->permalink_from_response($response, $handle);
echo $url.PHP_EOL;
}
$php2Bluesky = new php2Bluesky($linkCardFallback = 'RANDOM',
$failOverMaxPostSize = FALSE,
$randomImageURL = 'https://picsum.photos/1024/536',
$fileUploadDir='/tmp');
See the open issues for a full list of proposed features (and known issues).
Thanks to the follow who have provided techincal and/or financial support for the project:
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Distributed under the GNU General Public License v3.0. See LICENSE
for more information.
Bluesky - @spokenlikeageek.com
Mastodon - @spokenlikeageek
X - @spokenlikeageek
Website - https://spokenlikeageek.com
Project link - Github
BlueSky SDK is a comprehensive PHP library designed to seamlessly integrate with the BlueSky social network.
Simple helper for interacting with the Bluesky API/AT protocol
An small PHP library for Bluesky social using the AT Protocol.
Libphpsky is a PHP library designed to interact with Bluesky decentralized social media protocol - AT protocol.
Converting a BlueSky Starter Pack to User List
A PHP library for integrating with and communicating over the AT Protocol
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky