Three months in, I've committed enough infrastructure to Bluesky that calling this a real bet rather than a hedged experiment feels honest.
As of today, my automation follows 150 Bluesky accounts per day, runs a nightly unfollow pass that removes non-mutuals after 14 days, and routes every article published to ["devto", "hashnode", "bluesky"]. Each post includes a visual summary card rendered by a Playwright pipeline. I'm spending real GitHub Actions minutes and real development time on this. So it's worth being precise about what I'm actually claiming and what would prove it wrong.
The claim
By month 12 — April 2027 — Bluesky will be a top-three organic referral source for at least one of my three AI directory sites: Top AI Tools, Find Games Like, and Open Alternative To. I'll publish exact Cloudflare Analytics referral numbers at that point in a dedicated recap post.
The softer version, which I think is more likely to hold: Bluesky referral clicks will outpace Twitter/X in absolute volume within that timeframe, despite Twitter/X having a significantly larger developer user base today.
I'm not claiming search-equivalent traffic. Organic social referrals for a three-month-old site will be noise compared to what SEO eventually delivers. The bet is that Bluesky is the right social layer to build now, so it compounds at the same time the SEO starts working.
Why I think the structural case is real
The developer exodus from Twitter/X is well-documented, but the headline number isn't what matters. What matters is the composition of who moved.
From what I can observe — who follows back, who engages when I post about open-source alternatives and AI tool comparisons — Bluesky has disproportionately attracted the kind of developer who shares tools, follows through on link clicks, and writes articles on Dev.to or Hashnode. The Twitter/X developer community is larger but it includes a much higher proportion of people who post without clicking. My content is niche-interest content designed for the reader who actually clicks through. That segment may be over-indexed on Bluesky relative to its total size.
I can't prove that observation with data yet. It's an inference from behavior patterns, and it might be wrong. But if it's approximately right, the absolute follower gap matters less than the engagement rate per follower.
The chronological feed is the second structural factor. Twitter/X's algorithm suppresses link posts and amplifies engagement bait. Bluesky's default timeline is still largely chronological at the subscriber level, which means when I post an article link, the accounts that follow me see it. I had to add rate-limiting to the JSONL queue system — specifically, a one-post-per-category-per-day cap — because without it the feed felt spammy to followers who actually consumed it. That's an unusual problem to have on a platform where you're not sure your posts land at all.
The visual format is the third factor. Each article post includes a portrait-format summary card — a 1080×1350 PNG with key stats, a pipeline diagram, or a comparison grid. The image renders inline on Bluesky without requiring a click to expand. Twitter/X cards are 16:9 banners that blend into the feed. The format difference isn't decisive but it reduces the friction between "see post" and "click through" in a way the standard link unfurl doesn't.
Finally, the subject matter fits. My three sites cover AI tools, indie game alternatives, and open-source software alternatives. These are precisely the categories that Bluesky's current user base — developers who left centralized platforms out of genuine preference for decentralized infrastructure — tends to engage with. The audience self-selection is doing work before I've done anything.
The strongest counterargument, stated clearly
Bluesky follower counts are small. At 150 follows/day, if a third reciprocate and half of those unfollow within a month, the net mutual follower gain is maybe 25/day. Over three months that's roughly 2,000-3,000 engaged followers. A Twitter/X account with 10,000 developer followers posting a single link gets more absolute clicks from that one post than I'll see from Bluesky in a month.
The discovery gap compounds this. Bluesky doesn't have an effective trending page or keyword-based content discovery that surfaces new accounts to non-followers. My articles won't reach beyond my follow graph unless someone reposts them. Twitter/X's algorithm is blunt and often annoying, but it does amplify content across follower graphs in a way Bluesky currently doesn't.
There's also the baseline problem. Three months post-launch, I don't have meaningful referral traffic from any social channel. Zero from Twitter/X, effectively zero from Bluesky. I don't yet know whether my content gets organic sharing at all. The Bluesky bet presupposes that the content is shareable once it reaches the right people. That's not guaranteed.
The cross-channel distribution bet I wrote at month one acknowledged that social traffic would be irrelevant until month six or later. Nothing has changed that view. The point of investing in Bluesky now is that by month 12, the account will have compounding follower relationships instead of starting from zero.
What the automation actually does
The follow-growth script selects 150 accounts per day by keyword overlap and follows them via the AT Protocol API. It writes every follow to a permanent JSONL ledger that acts as a dedup store — an account that appears in the ledger is never re-followed, even after unfollow. The script runs in GitHub Actions at a fixed UTC time with randomized per-batch delays.
The unfollow pass runs separately at 14:37 JST — deliberate distance from the follow slots. It removes up to 30 accounts per day from the bot-followed set that haven't followed back after 14 days. Manual follows are untouched. Mutuals are untouched. The 14-day window avoids punishing accounts that follow back slowly; the 30/day cap prevents the kind of mass-unfollow behavior that platforms flag.
The daily post queue is filled by the article publish step and a separate site-update announcement. Before each post, a four-gate QC check confirms the canonical URL is live, the summary card image resolves, the character count is within limit, and the article hasn't been posted this week. None of this fails silently — failed gates write to the queue's JSONL error log and skip the post.
The entire system writes to the repo via GitHub Actions commits. Every follow, unfollow, and post is committed with the timestamp and outcome. When month-12 referral data comes in, I can match it against the posting timeline exactly.
The comparison I'm not making
I'm deliberately not framing this as "Bluesky vs Dev.to" or "social vs search." Those are different bets on different timescales.
Dev.to and Hashnode carry the canonical SEO weight. The article publishing pipeline treats them as primary; Bluesky is the downstream distribution step. An article lands on Dev.to first, the Hashnode cross-post defers to Dev.to's canonical URL, and the Bluesky post links back to Dev.to. The chain is designed so that Bluesky drives traffic toward the Dev.to article, which is indexed, which eventually links back to the directory sites.
I'm also not comparing Bluesky to paid acquisition. My $25/month budget for the entire project covers hosting, the Turso database, and the Claude Haiku API calls for content generation. Paid social isn't in scope. The bet is about what happens with automation and content quality alone.
The indirect return is actually what I'm most curious about. Bluesky followers who read articles become Dev.to followers who comment. Dev.to comment activity contributes to author page authority, which contributes to the link equity the directory sites need. The sentence uniqueness bet and the AdSense approval path depend on content quality that actually spreads. Bluesky is part of that loop even if direct referrals stay small.
The falsifiable timeline
Month 6 (October 2026): First hard check. If Bluesky referrals are fewer than 10 per month across all three sites with no upward trend, I'll cut the follow cap back and redirect the CI budget toward internal link improvements and ETL quality. Not calling the bet dead, but revising the investment.
Month 9 (January 2027): If Bluesky isn't the leading social referral source on at least one site by this point, the bet is probably wrong. I won't change the strategy mid-run, but I'll update this post to reflect the current trajectory.
Month 12 (April 2027): Verdict in the month-12 recap post. Bluesky in the top three organic sources on any of the three sites = bet confirmed. Not in top three on any site = the bet was wrong. I'll name it either way with the actual numbers.
What changes the bet early: If the AT Protocol ecosystem fractures, if Bluesky introduces API rate limits that make the current automation impossible, or if there's a clear mass return to Twitter/X among developer accounts — any of these would cause me to call the bet early. The structural argument depends on Bluesky maintaining its current trajectory. It isn't guaranteed.
What I'd want to be wrong about
The scenario I find most interesting to be wrong about: maybe the bet isn't "Bluesky vs Twitter/X" at all, and the real referral channel is something I'm ignoring. Dev.to's own recommendation algorithm? Hashnode's discovery pages? The Google Search Console data might show that organic search starts working faster than social in every scenario, making the Bluesky investment irrelevant to the growth story.
I've written this down because making the bet explicit means the month-12 data is evaluating a real claim, not an ambiguous one. The follow-growth and unfollow automation is already running. The post queue is already filling. The sunk cost is small enough that it makes sense to run the experiment to completion rather than prematurely optimizing toward what looks good in month 3.
FAQ
Why Bluesky and not Reddit?
Reddit has active subreddits (r/singularity, r/LocalLLaMA, r/programming) with more organic reach per post than I'll get from Bluesky for a long time. I've avoided it because Reddit's API situation and moderation friction make automated or semi-automated posting risky for account health. Manual posting at scale isn't sustainable for me as a solo developer. Bluesky's API is open by design. If bandwidth weren't a constraint, I'd do both.
How does the unfollow pass avoid violating Bluesky's terms of service?
The implementation follows, waits 14 days, then unfollows non-mutuals. The 30/day cap, 14-day wait, and per-batch randomized delays are designed to stay well within the range of human-credible follow behavior. Bluesky's developer documentation doesn't restrict this pattern, and the AT Protocol's design explicitly supports third-party clients. I'll update this if the platform's stance changes.
What if the content just isn't shareable?
That's the real risk behind the entire bet. Three months of posting has given me essentially no signal on whether my content organically spreads — the follower counts are too small to distinguish "good content that isn't discovered" from "content that doesn't resonate when discovered." Month 6 will give the first real signal. If no organic reposts appear by then despite reasonable follower counts, the content-fit assumption is wrong and the Bluesky question becomes secondary.
What's the current follower count?
I track the follow ledger (accounts the bot has followed) but not the net mutual follower count, which would require a separate API call. I'll publish both numbers at the month-6 checkpoint.
What does "top-three referral source" mean operationally?
Cloudflare Analytics for each of the three sites breaks down traffic by referrer. Top three means appearing alongside direct traffic and whatever organic search starts delivering — not just topping a category that includes zero sources. If all social referrals are under 10/month at month 12, the "top three" framing wouldn't mean much even if correct; I'll note that context in the verdict post.
Part of an ongoing 6-month experiment running three AI-curated directory sites. The technical claims here are real; this article was AI-assisted.
Top comments (0)