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. /Dart
  3. /bluesky-post
myConsciousness

bluesky-post

A Dart SDK for Bluesky and AT Protocol by myConsciousness

Use this action to send a post to Bluesky Social from GitHub actions workflow.

GitHub Stats

43stars
2forks
0contributors
1open issues

Dates

Created:March 11, 2023
Last updated:April 5, 2025

README

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

GitHub Sponsor GitHub Sponsor

Powered by atproto Powered by bluesky Powered by bluesky_text

Send a Post to Bluesky from GitHub Actions Workflow

Use this action to send a post from GitHub actions workflow.

This action is implemented in the Dart language and uses bluesky for posting to Bluesky Social.

Workflow Usage

Configure your workflow to use myConsciousness/bluesky-post@v5, and provide the post you want to send as the text input.

Provide Bluesky's ATP server with identifier (handle or email) and password to create a session.

For example:

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Now whenever you push something to your repository, GitHub Actions will post to Bluesky on your behalf.

Note
In the Bluesky API, the mention, link and tag functions will not work unless the facet parameter is set correctly when the request is sent, but this Action will automatically extract valid handle and link from the text and set the facet.

Specify Authority

Bluesky Social is a distributed microservice. So you may possibly want to post to a ATP server other than bsky.social.

In that case, set the service parameter to the authority you wish to post as follows. If the service parameter is omitted, the default is bsky.social.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}
          service: "boobee.blue"

Retry

Server error or network errors may temporarily occur during API communication to the ATP server. In such cases, retrying at regular intervals may result in successful processing.

This Actions supports Retry, and you can specify the maximum number of retries. The default retry count is 5.

You can specify the following.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}
          retry-count: 5

Attach Media

You can also post a text with an image of a specified file path attached.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      # You must checkout resources
      - uses: actions/checkout@v3

      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          media: cool_photo.png
          media-alt: "This is a cool photo!"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Attach Language Tags

You can give the post you are sending BCP47 format language tags. One or more language tags can be set and passed to the langs parameter in CSV format as follows.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          langs: "en,ja"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Attach Self Labels

You can label any post you send. You can set one or more labels, and pass the value of any label in the labels parameter in CSV format as follows.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          labels: "spam,porn"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Attach Tags

You can tag any post you send. You can set one or more tags, and pass the value of any tag in the tags parameter in CSV format as follows.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          tags: "bluesky,awesome"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Note
The value specified in the tags parameter is different from hashtags in the text, which are generally displayed as metadata about the post in Bluesky's clients.

Markdown Link

You can specify links in a generic markdown format.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "[This is a markdown link!](https://atprotodart.com)"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

Attach Link Preview

You can attach link preview (link card) with link-preview-url parameter.

If a link-preview-url parameter is also specified while a media parameter is present, the media parameter will be used first.

name: Send Bluesky Post

on:
    [push]

jobs:
  post:
    runs-on: ubuntu-latest
    steps:
      - uses: myConsciousness/bluesky-post@v5
        with:
          text: "Hello, Bluesky!"
          link-preview-url: "https://atprotodart.com"
          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}
          password: ${{ secrets.BLUESKY_PASSWORD }}

More Information

bluesky_post was designed and implemented by Shinya Kato (@myConsciousness).

  • Creator Profile
  • License
  • Release Note
  • Bug Report

Topics

atprotoblueskydartgithub-action

Related SDKs

myConsciousnessatproto.dart

🦋 AT Protocol and Bluesky things for Dart and Flutter.

196•Dart
skyfeed-devindexer

ATProto/Bluesky Indexer powered by SurrealDB.

39•Dart
videahSkyBridge

A work in progress bridge/proxy that lets you use Mastodon apps with Bluesky

598•Dart

Resources

GitHub RepositoryProject Website

License

BSD-3-Clause

Author

myConsciousness
myConsciousness

Activity

Last commit: April 5, 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.