DEV Community

Cover image for Why Bsky.app is Rising While X.com is Declining (and How to Automate Bsky Posts with Python)
Hugo Valters
Hugo Valters

Posted on

Why Bsky.app is Rising While X.com is Declining (and How to Automate Bsky Posts with Python)

As of 2025, X.com is slowly dying due to poor decisions, spam overload, AI-generated noise, and widespread disinformation. However, that’s not necessarily bad news — Bsky.app has been gaining more and more former X.com users every day. Not only are people signing up, but they are actively engaging, communicating with brands, and creating a lively atmosphere. Brands, too, have started opening accounts and posting actively.

Of course, as Bsky.app grows, it will also eventually face challenges like bots, fake accounts, and misinformation. Growth always brings new issues. But why are so many users currently migrating to Bsky.app?

From my perspective, the main reasons are:

  • Trust: Co-founded by Twitter’s original creator Jack Dorsey
  • Simplicity: It reminds users of the early Twitter experience — clean and user-friendly.
  • Independence: The platform is not tied to any government, unlike X.com, where Elon Musk is now heavily involved in U.S. and even global politics. In my opinion, that’s a mistake. Platforms like Starlink and X should remain politically neutral and focus on improving service quality — fixing fake engagement, bot issues, spam, misinformation, and creating better programs for content creators.

Still, that’s just my opinion. X is a private business and can operate however it wants.

Meanwhile, Bsky.app is starting to feel like “home” for many users, including myself. That’s why I decided to automate my Bsky.app activity — by creating a Python script that can post AI-generated messages. This could be very useful for companies to maintain an active profile without manual effort.

I’ve made a video guide available here:

Last year, I created a tutorial on automating X.com posts using Make.com, but since Make.com does not support Bsky.app directly, I decided to build a Python solution.

This is Version 1 of the script: it posts messages to Bsky.app. In the future, I plan to:

  • Dockerize the project
  • Add database support.
  • Expand it to support X.com, LinkedIn.com, and more.
  • Allow users to select different AI providers.

If you want to follow updates, subscribe to:

X.com: https://x.com/hugovalters
bsky.app: https://bsky.app/profile/hugovalters.bsky.social
YouTube: https://www.youtube.com/@hugovalters
Homepage: https://www.valters.eu
GitHub: https://github.com/hugovalters
Medium: https://blog.valters.eu

Getting Started: Requirements

  • OpenAI account (needs to be topped up with around 10 USD/EUR; it should last 4–6 months at low usage rates)
  • A VPS server (or your own PC/laptop/server)

Personally, I use a VPS from Zone.eu. They offer secure hosting, real 24/7 human support (no chatbots or AI), and competitive pricing. I highly recommend trying them!

Step 1: Setting Up the Server

Login to your server: On MacOS: open Terminal. On Windows: open CMD.

Update your package list:

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

Install Python and related packages:

sudo apt install -y python-is-python3 python3-venv python3-pip
Enter fullscreen mode Exit fullscreen mode

Install Git (if not already installed):

sudo apt-get install -y git
Enter fullscreen mode Exit fullscreen mode

Create a project directory:

mkdir /srv/socialmedia && cd /srv/socialmedia
Enter fullscreen mode Exit fullscreen mode

Clone the GitHub repository:

git clone https://github.com/ValtersIT/social-media-automation.git
Enter fullscreen mode Exit fullscreen mode

Step 2: Setting Up OpenAI API Key

Go to OpenAI Login

Log in or create an account (no credit card required to start).

Click the gear icon (top right) → API Keys.

Create a new secret key and save it safely.

You will also need to add credit (around 10 USD/EUR) to your account under the Billing section.

Step 3: Setting Up Bsky.app Credentials

If you don’t have a Bsky.app account yet, create one here: Bsky Signup.
You will need your email and password for the script (note: if you have Two-Factor Authentication enabled, the script might not work yet).

Step 4: Configuring the Python Script

Open the script for editing:

nano /srv/socialmedia/social-media-automation/bsky.py
Enter fullscreen mode Exit fullscreen mode

Replace the placeholders in the script:

  • OPENAI_API_KEY → your OpenAI secret key (starting with sk-…)
  • BSKY_USERNAME → your Bsky.app email.
  • BSKY_PASSWORD → your Bsky.app password

Topics: Add a list of topics you want your AI posts to be about. Example:


TOPICS = [
  "Cloud Security",
  "DevSecOps Practices",
  "Zero Trust Architecture",
  "Incident Response"
]
Enter fullscreen mode Exit fullscreen mode

Hashtags: For each topic, define related hashtags. Example:
“Incident Response”: [“#IncidentResponse”, “#CyberSecurity”, “#InfoSec”, “#DevSecOps”]
You can generate topics and hashtags easily by asking ChatGPT:

  • Give me 20 topics about CyberSecurity.
  • Give me 30 hashtags for Network Security.

Step 5: Running the Script

Make the script executable:

chmod +x /srv/socialmedia/social-media-automation/bsky.py
Enter fullscreen mode Exit fullscreen mode

Run the script manually:

python3 /srv/socialmedia/social-media-automation/bsky.py
Enter fullscreen mode Exit fullscreen mode

It will:

  • Randomly select a topic.
  • Ask ChatGPT to generate a post.
  • Add relevant hashtags.
  • Post to Bsky.app.

It also saves the generated messages to output_bsky.txt and a JSON file posted_bsky.json to avoid reposting the same content.

Step 6: Automating with Cron

If you want to post automatically every 30 minutes, set up a cron job:

Edit the crontab:

crontab -e
Enter fullscreen mode Exit fullscreen mode

At the end of the file, add:

*/30 * * * * python3 /srv/socialmedia/social-media-automation/bsky.py
Enter fullscreen mode Exit fullscreen mode

Save and exit.
Now your server will post automatically every 30 minutes!

Final Words

That’s it! Now you have a fully working Bsky.app auto-poster powered by ChatGPT.
If you found this guide useful, don’t forget to follow me:

X.com: https://x.com/hugovalters
bsky.app: https://bsky.app/profile/hugovalters.bsky.social
YouTube: https://www.youtube.com/@hugovalters
Homepage: https://www.valters.eu
GitHub: https://github.com/hugovalters
GitLab: https://gitlab.com/hugovalters

Medium: https://blog.valters.eu

Thank you for reading!
(Disclaimer: This post reflects my personal opinions and experiences.)

By Hugo Valters

Top comments (0)