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. /JavaScript
  3. /bluesky-later
nicnocquee

bluesky-later

A JavaScript SDK for Bluesky and AT Protocol by nicnocquee

A simple web app to schedule post to Bluesky

GitHub Stats

16stars
5forks
1contributors
4open issues

Dates

Created:November 8, 2024
Last updated:August 21, 2025

README

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

Bluesky Later

A web application to schedule posts on Bluesky. There are two versions of the app: Browser Mode and Self Hosted Mode.

Features

  • Schedule posts on Bluesky.
  • View scheduled posts.
  • Attach an image to the post.
  • A link in the post will be displayed as a social card.
  • Generate alt text for the image using OpenAI's GPT-4o-mini model. You bring your own API key and system prompt. The key will be saved in your browser's local storage.

Usage

Requirement: you need to create an app password in Bluesky.

The easiest way to use the app is by using the Browser Mode by clicking the link here.

You can also deploy the app to your own server and run it in self hosted mode.

Continue reading to learn about the different modes.

Browser Mode

  • Completely free. You can use it now here: https://app.blueskylater.com
  • This is the default mode of the app.
  • It uses the browser's IndexedDB to store the Bluesky credentials (handle and app password) and the scheduled posts.
  • The scheduled posts will be sent to Bluesky at the scheduled time as long as the browser tab is open and you have internet connection.
  • You can deploy this web app to your own GitHub Pages by simply forking this repository and add these repository variables:
    • VITE_IMAGE_PROXY_URL: https://allorigins.magic.coolify.nico.fyi/raw?url=.
    • VITE_METADATA_FETCHER_URL: https://linkpreview.magic.coolify.nico.fyi/api/v1/preview?url=.

You can set different values for these variables. Read Website Card Embeds for more details.

Self Hosted Mode

  • You need a server to host the app.
  • The scheduled posts will be sent to Bluesky at the scheduled time from the API server so you don't need to keep the tab open like in the browser mode.
  • The scheduled posts and Bluesky credentials (the handle and the app password) are stored in a PostgreSQL database.
  • You can deploy this mode using the docker-compose-example.yml file provided in the repository and set the environment variables accordingly.
  • After installing it on your server, you will be prompted to set an admin credential (username and password) which will be used to secure access to the API end points. This means that the instance of Bluesky Later will only be accessible to you. This API credential is different from the Bluesky credentials.

Environment Variables

  • POSTGRES_USER: The username of the PostgreSQL database.
  • POSTGRES_PASSWORD: The password of the PostgreSQL database.
  • POSTGRES_DB: The name of the PostgreSQL database.
  • DATABASE_URL: The URL of the PostgreSQL database which will be used by the API server. This should be in the format postgresql://<username>:<password>@<host>:<port>/<database>, where the <username>, <password>, and <database> values must be the same as the ones used in the POSTGRES_USER, POSTGRES_PASSWORD, and POSTGRES_DB environment variables.
  • CRON_SECRET: A secret key that is used to authenticate the cron endpoint.
  • VITE_METADATA_FETCHER_URL: The URL of the metadata fetcher service.
  • VITE_IMAGE_PROXY_URL: The URL of the image proxy service.
  • VITE_API_URL: The URL of the API server.

The docker-compose-example.yml file sets default values for these environment variables. You must change them especially the POSTGRES_PASSWORD and CRON_SECRET if you want to use the app in production.

Components

The app has the following components:

  • API server (api folder): This is the server that handles the scheduled posts and credentials. It connects to the PostgreSQL database and sends the scheduled posts to Bluesky.
  • Frontend (src folder): This is the frontend of the app where user can schedule posts and view the scheduled posts. It connects to the API server to fetch the scheduled posts and credentials.

Docker

A docker image of Bluesky Later is available on Docker Hub: nicnocquee/bluesky-later. You can create and run a container using the following command:

docker run --env-file .env  -d -p 80:80 -p 3000:3000 nicnocquee/bluesky-later

Make sure you have the .env file and set the environment variables accordingly.

You can also use the docker-compose-example.yml file provided in the repository to run the app in self hosted mode.

Website Card Embeds

Bluesky unfortunately does not automatically generate a social card for the website when a user posts a link to a website via the API. The application needs to generate the social card manually. In this app, it uses the service specified in the VITE_METADATA_FETCHER_URL environment variable to fetch the metadata of the website. And for the image of the card, it uses the service specified in the VITE_IMAGE_PROXY_URL environment variable to fetch the image to work around the CORS issue. By default, the application uses

  • linkpreview.magic.coolify.nico.fyi for the metadata fetcher. The source code of the service is available here. You can host it yourself on your own server.
  • allorigins.magic.coolify.nico.fyi for the image proxy. The source code of the service is available here. You can host it yourself on your own server.

Tech Stack

  • Frontend: React, Vite, Tailwind CSS, Shadcn UI, TypeScript (src folder)
  • Backend: Node.js, Express, TypeScript (api folder)
  • Database: PostgreSQL
  • External Services: Metadata fetcher, Image proxy, Open AI
  • Docker

License

MIT

Author

@nico.fyi

Links

  • How to deploy Bluesky Later on your own server using Coolify
  • How to deploy Bluesky Later to DigitalOcean Droplet

Topics

blueskyreactvite

Related SDKs

suvam0451dhaaga

Dhaaga - An indie SNS app that blends sleek design 💅, useful features ✨ and fun ways to discover and connect 🎉

98•JavaScript
FxEmbedFxEmbed

Fix X/Twitter and Bluesky embeds! Use multiple images, videos, polls, translations and more on Discord, Telegram and others

3788•JavaScript
ascorbicbluesky-comments-tag

71•JavaScript
mary-extatcute

a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.

395•JavaScript
scaiqueunfollowers-bluesky

Unfollowers for Bluesky é uma aplicação web intuitiva que identifica usuários que não seguem de volta um determinado perfil na rede social Bluesky. Com uma interface simples, basta pesquisar pelo nome de usuário desejado, selecioná-lo e a plataforma exibirá rapidamente a lista de não-seguidores.

5•JavaScript
mary-extatproto-scraping

Git scraping of AT Protocol/Bluesky instances

158•JavaScript

Resources

GitHub RepositoryProject Website

License

MIT

Author

nicnocquee
nicnocquee

Activity

Last commit: August 21, 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 listFirstoCoast Fire CalculatorAsphalt CalculatorDog Names World

This website may contain affiliate links

© 2026 BskyInfo. All rights reserved.