Bluesky follow farming: starter pack edition
In which a suspicious account uses starter packs in a spammy fashion to rapidly grow a following
Social media platform Bluesky continues to grow in popularity among U.S. liberals disillusioned with Elon Musk’s X (formerly Twitter). Many of these new users take advantage of Bluesky’s starter pack feature to rapidly follow large numbers of allegedly like-minded accounts. This situation has unsurprisingly been exploited by opportunists looking to rapidly build an audience on the platform, who create inauthentic accounts and follow large numbers of these starter packs in the hope of being followed back.
This technique can be quite effective. Consider the case of “Carol Marie West” (@carol-marie-west.bsky.social), a recently created (and even more recently suspended) Bluesky account with an unremarkable resistance liberal biography and a StyleGAN-generated face. Simply by following dozens of starter packs, this account managed to gain almost 3000 followers within 24 hours of signing up for Bluesky.
There are multiple indicators that “Carol Marie West’s” profile image is artificially generated. The boundaries between various elements blend together in surreal ways in several places; the effect is particularly noticeable where the skin, hair, and background meet in the lower right corner of the image. The earrings are mismatched, as are the visible portions of the ears. The image also displays the telltale facial feature positioning present in all unmodified StyleGAN-generated faces, such as those produced by thispersondoesnotexist.com.
from atproto import Client
import json
import pandas as pd
import time
#client = Client ()
#client.login ("****************", "****************")
fakes = ["did:plc:7s7kepc6l6d64neldqrnskgi"]
targets = list (pd.read_csv (
"carol-marie-west.bsky.social_following.csv")["did"])
def retry (method, params):
retries = 5
delay = 1
while retries > 0:
try:
r = method (params)
return r
except:
print (" error, sleeping " + str (delay) + "s")
time.sleep (delay)
delay = delay * 2
retries = retries - 1
return None
def get_relationships (actor, others, client):
r = retry (client.app.bsky.graph.get_relationships,
{"actor" : actor, "others" : others})
return r
def to_params (uri):
u = uri.replace ("at://", "").split ("/")
return {"repo" : u[0], "collection" : u[1], "rkey" : u[2]}
rows = []
for fake in fakes:
pos = 0
while pos < len (targets):
window = targets[pos:min (pos + 30, len (targets))]
pos = pos + 30
r = get_relationships (fake, window, client)
if r is not None:
r = r["relationships"]
for result, target in zip (r, window):
row = {"fake_did" : fake, "target_did" : target}
uri = result["following"]
row["follow_record"] = uri
try:
record = client.com.atproto.repo.get_record (
to_params (uri)).value
row["follow_timestamp"] = record.created_at
rows.append (row)
except:
print ("error, skipping: ")
print (result)
df = pd.DataFrame (rows)
df.to_csv ("carol-marie-west.bsky.social_follow_times.csv")
In its first 24 hours of existence, the “Carol Marie West” account followed almost eight thousand other Bluesky accounts. Bluesky follow records include the millisecond timestamp at which one account followed another, which can be harvested using the Python code above. (Code for downloading the set of accounts followed by a given account can be found in this previous article.)
Almost all of “Carol Marie West’s” follow activity took place in brief bursts where the account followed hundreds of accounts per minute, and frequently dozens within the same millisecond. This is due to the fact that the account operator did most of their following via starter packs, and when an account follows a starter pack, all of the follows happen within a tiny fraction of a second. There are also scattered single follows present here and there.
Overall, “Carol Marie West” followed at least 75 liberal/Democrat-themed starter packs, accounting for 6008 of 7780 accounts followed (77.2%). In several cases, the account operator found users with multiple packs and followed many or all of them. Roughly one in three users followed the account back.
For this analysis, the starter packs were mapped by checking Clearsky for likely candidates, and then downloading the list of accounts in each starter pack and comparing them against the accounts bulk followed by the “Carol” account to validate. There were likely several additional starter packs of reporters in the mix, but due to the sheer number of similar packs well-known journalists tend to be on, it was impossible to ascertain exactly which of these packs “Carol” followed.
The operator of the “Carol Marie West” account created five starter packs of their own, drawn largely from accounts that the “Carol” account had followed, named “Blue Wave Warriors! 1”, “Blue Wave Warriors! 2”, “Blue Wave Warriors! 3”, “Blue Wave Warriors! 4”, and “Blue Wave Warriors! 5”, respectively. Other than these packs, most of the account’s content was replies thanking other users for following the “Carol” account or one of its starter packs.
Among the accounts enthusiastically thanked by “Carol Marie West” was another newly created follow farming account, “Linda Miller” (@lindamiller4756984.bsky.social), which followed several of the same starter packs as the “Carol” account (as well as the “Carol” account’s own starter packs), and expressed outrage when the account was banned. Interestingly, this account responded to evidence of the “Carol” account’s spammy behavior by blocking the users presenting said evidence, and then self-deleted shortly afterward.

Although it is impossible to prove at this point, it would not be surprising to learn that the same person controlled both the “Carol” and “Linda” accounts. In any event, despite their extremely recent creation dates, neither is likely to be run by someone who is new to Bluesky, given the accuracy with which the account operator(s) zeroed in on starter packs of accounts that were likely to follow back (among other things). The operator of the “Linda” account even specified a target number of followers (20K) and complained about rate limiting, strongly indicating that their goal was to rapidly grow the account’s audience and reach.
Prior to deletion, the “Linda” account had cranked out a handful of political posts. These posts, which include an endorsement of Joe Biden in the 2028 presidential election and a brief rant blaming the left for Kamala Harris’s 2024 loss, suggest that (in addition to follow farming), the account operator may have been attempting to stir up drama between leftists and moderate liberals.