{"id":15487813,"url":"https://github.com/myconsciousness/bluesky-post","last_synced_at":"2025-04-22T17:45:36.855Z","repository":{"id":165121637,"uuid":"612630800","full_name":"myConsciousness/bluesky-post","owner":"myConsciousness","description":"Use this action to send a post to Bluesky Social from GitHub actions workflow.","archived":false,"fork":false,"pushed_at":"2023-11-24T13:04:08.000Z","size":36,"stargazers_count":26,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-19T08:13:18.954Z","etag":null,"topics":["atproto","bluesky","bsky","dart","github-actions","post","social-media","utility"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/send-bluesky-post","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/myConsciousness.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-11T14:21:10.000Z","updated_at":"2024-09-04T11:29:34.000Z","dependencies_parsed_at":"2023-11-24T14:25:30.839Z","dependency_job_id":"e1bf84ca-f144-4fe1-b340-90e61c555165","html_url":"https://github.com/myConsciousness/bluesky-post","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myConsciousness%2Fbluesky-post","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myConsciousness%2Fbluesky-post/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myConsciousness%2Fbluesky-post/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myConsciousness%2Fbluesky-post/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myConsciousness","download_url":"https://codeload.github.com/myConsciousness/bluesky-post/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235300324,"owners_count":18967738,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atproto","bluesky","bsky","dart","github-actions","post","social-media","utility"],"created_at":"2024-10-02T06:41:49.829Z","updated_at":"2025-01-25T03:38:49.781Z","avatar_url":"https://github.com/myConsciousness.png","language":"Dart","funding_links":["https://github.com/sponsors/myConsciousness"],"categories":[],"sub_categories":[],"readme":"[![GitHub Sponsor](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=ff69b4)](https://github.com/sponsors/myConsciousness)\n[![GitHub Sponsor](https://img.shields.io/static/v1?label=Maintainer\u0026message=myConsciousness\u0026logo=GitHub\u0026color=00acee)](https://github.com/myConsciousness)\n\n[![Powered by atproto](https://img.shields.io/badge/Powered%20by-atproto-00acee.svg)](https://github.com/myConsciousness/atproto.dart/tree/main/packages/atproto)\n[![Powered by bluesky](https://img.shields.io/badge/Powered%20by-bluesky-00acee.svg)](https://github.com/myConsciousness/atproto.dart/tree/main/packages/bluesky)\n[![Powered by bluesky_text](https://img.shields.io/badge/Powered%20by-bluesky_text-00acee.svg)](https://github.com/myConsciousness/atproto.dart/tree/main/packages/bluesky_text)\n\n# Send a Post to Bluesky from GitHub Actions Workflow\n\nUse this action to send a post from GitHub actions workflow.\n\nThis action is implemented in the Dart language and uses **[bluesky](https://github.com/myConsciousness/atproto.dart/tree/main/packages/bluesky)** for posting to Bluesky Social.\n\n## Workflow Usage\n\nConfigure your workflow to use `myConsciousness/bluesky-post@v5`,\nand provide the post you want to send as the `text` input.\n\nProvide Bluesky's ATP server with `identifier` (handle or email) and `password` to create a session.\n\nFor example:\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\nNow whenever you push something to your repository, GitHub Actions\nwill post to Bluesky on your behalf.\n\n\u003e **Note** \u003c/br\u003e\n\u003e In the Bluesky API, the `mention`, `link` and `tag` functions will not work unless\n\u003e the `facet` parameter is set correctly when the request is sent,\n\u003e but this Action will automatically extract valid handle and link\n\u003e from the text and set the facet.\n\n## Specify Authority\n\nBluesky Social is a distributed microservice.\nSo you may possibly want to post to a ATP server other than `bsky.social`.\n\nIn that case, set the `service` parameter to the authority you wish to post as follows.\nIf the `service` parameter is omitted, the default is `bsky.social`.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n          service: \"boobee.blue\"\n```\n\n## Retry\n\nServer error or network errors may temporarily occur during API communication to the ATP server.\nIn such cases, retrying at regular intervals may result in successful processing.\n\nThis Actions supports `Retry`, and you can specify the maximum number of retries.\nThe default retry count is 5.\n\nYou can specify the following.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n          retry-count: 5\n```\n\n## Attach Media\n\nYou can also post a text with an image of a specified file path attached.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      # You must checkout resources\n      - uses: actions/checkout@v3\n\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          media: cool_photo.png\n          media-alt: \"This is a cool photo!\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n## Attach Language Tags\n\nYou can give the post you are sending **BCP47 format language tags**.\nOne or more language tags can be set and passed to the `langs` parameter in **_CSV format_** as follows.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          langs: \"en,ja\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n## Attach Self Labels\n\nYou can **label** any post you send.\nYou can set one or more labels, and pass the value of any label in the `labels` parameter in **_CSV format_** as follows.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          labels: \"spam,porn\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n## Attach Tags\n\nYou can **tag** any post you send.\nYou can set one or more tags, and pass the value of any tag in the `tags` parameter in **_CSV format_** as follows.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          tags: \"bluesky,awesome\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n\u003e **Note** \u003c/br\u003e\n\u003e The value specified in the `tags` parameter is different from hashtags in the text,\n\u003e which are generally displayed as metadata about the post in Bluesky's clients.\n\n## Markdown Link\n\nYou can specify links in a generic markdown format.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"[This is a markdown link!](https://atprotodart.com)\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n## Attach Link Preview\n\nYou can attach link preview (link card) with `link-preview-url` parameter.\n\nIf a `link-preview-url` parameter is also specified while a `media` parameter is present,\nthe `media` parameter will be used first.\n\n```yml\nname: Send Bluesky Post\n\non:\n    [push]\n\njobs:\n  post:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: myConsciousness/bluesky-post@v5\n        with:\n          text: \"Hello, Bluesky!\"\n          link-preview-url: \"https://atprotodart.com\"\n          identifier: ${{ secrets.BLUESKY_IDENTIFIER }}\n          password: ${{ secrets.BLUESKY_PASSWORD }}\n```\n\n## More Information\n\n**bluesky_post** was designed and implemented by **_Shinya Kato ([@myConsciousness](https://github.com/myConsciousness))_**.\n\n- [Creator Profile](https://github.com/myConsciousness)\n- [License](https://github.com/myConsciousness/atproto.dart/blob/main/LICENSE)\n- [Release Note](https://github.com/myConsciousness/atproto.dart/releases)\n- [Bug Report](https://github.com/myConsciousness/atproto.dart/issues)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyconsciousness%2Fbluesky-post","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyconsciousness%2Fbluesky-post","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyconsciousness%2Fbluesky-post/lists"}