Dev.to AI 🤖 Ai 👁 0 📖 3 min read

I Automated My Bluesky Presence for $0 — Full Build Walkthrough

Keeping a Bluesky account active takes more consistency than most people have time for. You need something to post regularly, and ideally something that doesn't feel like the same three posts on repeat. Most tools that d

Keeping a Bluesky account active takes more consistency than most people have time for. You need something to post regularly, and ideally something that doesn't feel like the same three posts on repeat. Most tools that do this charge a monthly fee per account.

I built a version that costs nothing to run, using GitHub Actions and an AI model to generate the posts. Here's the actual build.

What it needed to do

Three things: generate a post on a schedule, keep it on-topic and in a consistent voice, and publish it to Bluesky without me touching anything. Optionally, react to some activity — likes, replies, follows — based on simple rules, without needing a server running all the time.

Why GitHub Actions instead of a server

Bluesky posting tools are usually SaaS products because they assume you need something always running — checking for replies, posting on a timer, handling retries. But a scheduled workflow does the "post on a timer" part for free, and you don't need a server sitting idle the rest of the time waiting for a cron job to fire.

GitHub Actions has a schedule trigger that runs on a cron expression, generous free minutes for this kind of light, infrequent job, and no infrastructure to manage. That's most of what a paid scheduler is charging you for.

The actual pieces

The workflow itself is a YAML file with a schedule trigger and a job that runs a script. The script does three things: builds a prompt from the topics and personality you've set, calls an LLM (I used Gemini) to generate the post text, and calls the Bluesky API to publish it. Secrets — the Bluesky login and the Gemini API key — live in GitHub's encrypted repo secrets, not in the code.

The part that took the most iteration wasn't the posting — it was the prompt. Getting consistent tone and topic focus out of the model, without it drifting into generic filler after a few dozen posts, took some trial and error on how specific the prompt needed to be.

I wrote the complete version of this, including the actual workflow file and prompt structure, in this Bluesky automation build guide. If you'd rather not build it from scratch, there's a free, ready-to-use version with the topics, personality, and schedule left configurable, and a more advanced paid version that adds AI-generated images and can reply to comments, like, and follow based on keywords — with built-in limits so it doesn't overdo it.

Where the "free" part has limits

GitHub Actions' free tier is generous for something posting a few times a day, but it's not unlimited, and running it far more frequently — or across a lot of accounts — will eventually hit usage limits or need a paid GitHub plan. The Gemini API also has its own free tier with rate limits, so a very high posting frequency could bump into that before GitHub Actions becomes the bottleneck.

For a normal posting cadence — a handful of posts a day — none of this matters. It only becomes a real constraint if you're trying to run this at a scale closer to a full social media operation than a personal or small-project account.

What actually changed

The account posts consistently now without me remembering to. That's the whole win. It's not a growth hack — it just removes the part where consistency depends on me actually opening the app that day.

Full write-up and code for this build: Build a Bluesky Automation Bot for Free with GitHub Actions and Gemini AI.

More free build walkthroughs like this over at Procwire.

📰 Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.