Leveling Up My Ghost Blog Sync: Now with Added Bluesky Power!

Upgrade alert! My Ghost blog sync app now speaks fluent Bluesky, takes random naps to avoid rate limits, and comes with a README so friendly it could make friends at a Python convention. Time to automate your social media game!

Leveling Up My Ghost Blog Sync: Now with Added Bluesky Power!

Are you tired of manually sharing your brilliant blog posts across the vast expanse of social media? Well, my fellow digital adventurers, I come bearing good news! I've just given my Ghost blog social media syncing scripts a turbocharged upgrade. Buckle up, because we're about to take a whirlwind tour of the latest and greatest features!

The Sky's the Limit: Introducing Bluesky Integration

Remember when we thought Twitter was the final frontier of microblogging? Oh, how naive we were! Enter Bluesky, the new kid on the block that's got everyone talking. And guess what? My Ghost sync app now speaks fluent Bluesky!

Here's what the new Bluesky integration brings to the table:

  1. Title Power: Your post titles will now shine brightly in the Bluesky-sphere.
  2. Link Love: Direct links to your blog posts are automatically included.
  3. Sneak Peek: A tantalizing excerpt of your post is added to whet your readers' appetites.
  4. Picture Perfect: If your post has a feature image, it'll be right there in the Bluesky post, catching eyes and turning heads.

But wait, there's more! The new sky_it.py script is a thing of beauty. It handles everything from logging in to Bluesky, uploading images, and even truncating your post text to fit Bluesky's character limit. It's like having a tiny, efficient robot assistant for your social media needs!

Farewell, Mastodon (For Now)

In the ever-changing landscape of social media, sometimes we have to say goodbye to old friends. I've bid adieu to my Mastodon account, so I've disabled Mastodon posting in the app. But fear not! The code is still there, patiently waiting for the day when I might return to the Fediverse. It's like that old band t-shirt in your closet – not currently in use, but full of potential for a comeback tour.

A README for the People

Let's face it: not everyone is a Python guru (shocking, I know). That's why I've given the README a makeover that would make any UX designer proud. It's now more beginner-friendly than a "Python for Dummies" book written by actual dummies.

Here's what's new:

  • Crystal Clear Prerequisites: We spell out exactly what you need to get started. No more guessing games!
  • Step-by-Step Installation: It's so detailed, you could probably set it up while sleepwalking (not recommended, but theoretically possible).
  • Configuration Made Easy: We walk you through setting up your .env file like a gentle guide in a complex maze of API keys.
  • Usage Instructions: Whether you're syncing all your posts or just want to shout into the void of a single platform, we've got you covered.

The Grand Finale: Random Sleep Times

To avoid looking like a bot (even though we totally are), I've implemented random sleep times between posts. It's like giving your script a coffee break, but instead of caffeine, it runs on random.randint(). This way, we keep the social media overlords happy and avoid any pesky rate limiting.

def random_sleep(min_minutes=5, max_minutes=30):
    seconds = random.randint(min_minutes * 60, max_minutes * 60)
    print(f"Sleeping for {seconds // 60} minutes and {seconds % 60} seconds")
    time.sleep(seconds)

Wrapping Up

There you have it, folks! My Ghost blog sync app has evolved faster than a Pokémon on rare candies. It's now ready to take on Bluesky, give newbie developers a helping hand, and outsmart rate limiters with the power of randomness.

Want to take it for a spin? Head over to the GitHub repository and give it a whirl. Who knows? You might just become the most efficient lazy blogger in the known universe!

Got questions? Suggestions? Just want to share your favorite Python joke? Hit me up on Warpcast or Twitter. Let's chat about the joys and perils of automated social media posting!

Have fun.