Bluesky
Post to Bluesky (AT Protocol) directly from FaustBot. Share stream announcements, clips, and updates with your followers on the decentralized social network.
Overview
FaustBot connects to Bluesky using the AT Protocol, enabling full social media functionality:
Create Posts
Post text updates up to 300 characters.
Image Uploads
Attach up to 4 images per post.
Link Cards
Create posts with rich link previews.
Replies & Quotes
Reply to posts and create quote posts.
Like & Repost
Interact with other users' content.
Follow Management
Follow, block, and mute users.
Setup
Connect to Bluesky
Create App Password
In Bluesky, go to Settings → App Passwords → Add App Password. Give it a name like "FaustBot" and copy the generated password.
Connect in FaustBot
In FaustBot, go to Bluesky in the sidebar. Enter your handle
(e.g., yourname.bsky.social) and the app password. Click Connect.
Verify Connection
Once connected, your profile information will be displayed. You can now post to Bluesky from FaustBot.
App Password Security
Never share your app password. Use a dedicated app password for FaustBot so you can revoke it independently if needed. Never use your main account password.
Effects
Posting
Create Post
Post text to Bluesky.
Post with Images
Post with up to 4 image attachments.
Post with Link
Create post with link card preview.
Reply to Post
Reply to an existing post.
Quote Post
Create a quote post.
Delete Post
Remove a post by URI.
Interactions
Like Post
Like a post by URI.
Unlike Post
Remove a like from a post.
Repost
Repost content to your feed.
Unrepost
Remove a repost.
User Management
Follow User
Follow a user by DID or handle.
Unfollow User
Unfollow a user.
Block User
Block a user.
Unblock User
Unblock a user.
Mute User
Mute a user.
Unmute User
Unmute a user.
Scripting API
Post to Bluesky programmatically from your scripts:
Connection & Info
# Check connection
if CPH.BlueskyIsConnected():
info = CPH.BlueskyGetConnectionInfo()
handle = CPH.BlueskyGetHandle()
did = CPH.BlueskyGetDid()
CPH.Log(f"Connected as: {handle}")Creating Posts
# Simple text post (max 300 characters)
CPH.BlueskyCreatePost("Going live now! Come hang out!")
# Post with images (max 4 images)
image_paths = ["/path/to/thumbnail.png"]
alt_texts = ["Stream thumbnail"]
CPH.BlueskyCreatePostWithImages(
"Check out this amazing moment!",
image_paths,
alt_texts
)
# Post with link card
CPH.BlueskyCreatePostWithLink(
"I'm live on Twitch!",
"https://twitch.tv/yourchannel",
"YourChannel - Twitch",
"Playing some games!"
)
# Reply to a post
CPH.BlueskyCreateReply(
"Thanks for watching!",
parent_uri,
parent_cid,
root_uri,
root_cid
)
# Quote post
CPH.BlueskyCreateQuotePost(
"This was an epic moment!",
quoted_uri,
quoted_cid
)Interactions
# Like a post
CPH.BlueskyLikePost(post_uri, post_cid)
# Unlike a post
CPH.BlueskyUnlikePost(like_uri)
# Repost
CPH.BlueskyRepostPost(post_uri, post_cid)
# Remove repost
CPH.BlueskyUnrepostPost(repost_uri)
# Delete your own post
CPH.BlueskyDeletePost(post_uri)User Management
# Follow by DID
CPH.BlueskyFollowUser(user_did)
# Follow by handle (resolves DID automatically)
CPH.BlueskyFollowUserByHandle("someone.bsky.social")
# Unfollow
CPH.BlueskyUnfollowUser(follow_uri)
# Block user
CPH.BlueskyBlockUser(user_did)
# Unblock user
CPH.BlueskyUnblockUser(block_uri)
# Mute user
CPH.BlueskMuteUser(user_did)
# Unmute user
CPH.BlueskyUnmuteUser(user_did)
# Resolve handle to DID
CPH.BlueskyResolveHandle("someone.bsky.social")Fetching Data
# Get your timeline
CPH.BlueskyGetTimeline(50) # Get 50 posts
# Get a user's feed
CPH.BlueskyGetAuthorFeed("someone.bsky.social", 25)
# Get post thread
CPH.BlueskyGetPostThread(post_uri, depth=6)
# Get notifications
CPH.BlueskyGetNotifications(50)
# Get unread count
CPH.BlueskyGetUnreadCount()
# Mark notifications as seen
CPH.BlueskyMarkNotificationsSeen()
# Get user profile
CPH.BlueskyGetProfile("someone.bsky.social")
# Get followers/following
CPH.BlueskyGetFollowers("someone.bsky.social", 100)
CPH.BlueskyGetFollowing("someone.bsky.social", 100)See the full API reference for all available Bluesky methods.