AD
Boost Your Brand on BlueSky—Exclusive banner space to amplify your reach within the BlueSky community.
BSkyInfo LogoBskyInfo
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryArticlesGuidesGlossaryBluesky SDKsSponsor
Submit
All ToolsCategoriesCollectionsFeed DirectoryLabeler DirectoryGuidesGlossaryArticlesBluesky SDKsSponsorSubmit
  1. SDKs
  2. /PowerShell
  3. /PSA
StartAutomating

PSA

A PowerShell SDK for Bluesky and AT Protocol by StartAutomating

PowerShell Announcements (with AtProtocol)

GitHub Stats

7stars
1forks
1contributors
31open issues

Dates

Created:September 12, 2023
Last updated:January 6, 2025

README

The following content is from PSA's GitHub repository. All rights reserved by the original author.
PSA
❤️ ⭐

PowerShell Announcements (with AtProtocol)

PSA is:

  • A PowerShell Module For Making Announcements
  • A Beautiful BlueSky Client for the CLI
  • An (Almost) Perfect PowerShell Wrapper for the At Protocol
  • A GitHub Action to Automate Announcements

Getting Started

To connect to AtProtocol / BlueSky with PSA, simply use Connect-BlueSky:

$myCredential = Get-Credential # Provide your handle or email and an app-password
Connect-BlueSky -Authentication $myCredential

Getting Profiles and Posts

Once you're connected, you can talk to every part of the At Protocol.

In the At Protocol, users are called "Actors", so, to get a profile, we'd use:

Get-BskyActorProfile -Actor mrpowershell.bsky.social

You'll see a nice snapshot of a profile:

PSA Profile View

While this might look nice, it's actually a full object.

You can explore what that object can do by piping it to the PowerShell command, Get-Member

Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache | Get-Member

For instance, this would show the profile's first 50 posts.

PSA Posts View

(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Posts

And this would show the first 50 liked posts.

(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Likes

This shows us the first 50 followers

(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Followers

This shows us the first 50 follows

(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Follows

To get more of any of these results, simply get the .More property

# Get the profile
$BlueSkyProfile = (Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache)
# Get the first 50 posts
$BlueSkyProfile.Posts
# Get the next 50 posts
$BlueSkyProfile.Posts.More

How PSA is Built

PSA is primarily built automatically.

It uses PipeScript to generate PowerShell commands automatically for every lexicon in the At Protocol.

EZOut is used to add formatting, so that posts and profiles look nice and can be clicked.

SendPSA - The GitHub Action

PSA can be used as a GitHub Action! Just add these few lines to any job:

- name: Run PSA
  uses: StartAutomating/PSA@main
  id: PSA

This will import PSA and look thru the workspace for any *.PSA.ps1 files and run them.

Check out PSA's PSA Script for a useful example.

PSA Commands

PSA exports 535 commands (118 functions and 417 aliases)

Functions

NameSynopsis
Add-AtProtoModerationReportcom.atproto.moderation.createReport
Add-AtProtoRepoRecordcom.atproto.repo.createRecord
Add-AtProtoServerAccountcom.atproto.server.createAccount
Add-AtProtoServerAppPasswordcom.atproto.server.createAppPassword
Add-AtProtoServerInviteCodecom.atproto.server.createInviteCode
Add-AtProtoServerInviteCodescom.atproto.server.createInviteCodes
Add-AtProtoServerSessioncom.atproto.server.createSession
Block-BskyGraphActorapp.bsky.graph.muteActor
Block-BskyGraphActorListapp.bsky.graph.muteActorList
Connect-AtProtoConnects to the AtProtocol
Disable-AtProtoAdminAccountInvitescom.atproto.admin.disableAccountInvites
Disable-AtProtoAdminInviteCodescom.atproto.admin.disableInviteCodes
Enable-AtProtoAdminAccountInvitescom.atproto.admin.enableAccountInvites
Get-AtProtoAdminDefinition
Get-AtProtoAdminInviteCodescom.atproto.admin.getInviteCodes
Get-AtProtoAdminModerationActioncom.atproto.admin.getModerationAction
Get-AtProtoAdminModerationActionscom.atproto.admin.getModerationActions
Get-AtProtoAdminModerationReportcom.atproto.admin.getModerationReport
Get-AtProtoAdminModerationReportscom.atproto.admin.getModerationReports
Get-AtProtoAdminRecordcom.atproto.admin.getRecord
Get-AtProtoAdminRepocom.atproto.admin.getRepo
Get-AtProtoLabelDefinition
Get-AtProtoModerationDefinition
Get-AtProtoRepocom.atproto.repo.describeRepo
Get-AtProtoRepoRecordcom.atproto.repo.getRecord
Get-AtProtoRepoRecordscom.atproto.repo.listRecords
Get-AtProtoServercom.atproto.server.describeServer
Get-AtProtoServerAccountInviteCodescom.atproto.server.getAccountInviteCodes
Get-AtProtoServerAppPasswordscom.atproto.server.listAppPasswords
Get-AtProtoServerDefinition
Get-AtProtoServerSessioncom.atproto.server.getSession
Get-AtProtoSyncBlobcom.atproto.sync.getBlob
Get-AtProtoSyncBlobscom.atproto.sync.listBlobs
Get-AtProtoSyncBlockscom.atproto.sync.getBlocks
Get-AtProtoSyncCheckoutcom.atproto.sync.getCheckout
Get-AtProtoSyncHeadcom.atproto.sync.getHead
Get-AtProtoSyncLatestCommitcom.atproto.sync.getLatestCommit
Get-AtProtoSyncRecordcom.atproto.sync.getRecord
Get-AtProtoSyncRepocom.atproto.sync.getRepo
Get-AtProtoSyncReposcom.atproto.sync.listRepos
Get-BskyActorDefinition
Get-BskyActorPreferencesapp.bsky.actor.getPreferences
Get-BskyActorProfileapp.bsky.actor.getProfile
Get-BskyActorProfilesapp.bsky.actor.getProfiles
Get-BskyActorSuggestionsapp.bsky.actor.getSuggestions
Get-BskyFeedapp.bsky.feed.getFeed
Get-BskyFeedActorFeedsapp.bsky.feed.getActorFeeds
Get-BskyFeedActorLikesapp.bsky.feed.getActorLikes
Get-BskyFeedAuthorFeedapp.bsky.feed.getAuthorFeed
Get-BskyFeedDefinition
Get-BskyFeedGeneratorapp.bsky.feed.getFeedGenerator
Get-BskyFeedGeneratorsapp.bsky.feed.getFeedGenerators
Get-BskyFeedLikesapp.bsky.feed.getLikes
Get-BskyFeedListFeedapp.bsky.feed.getListFeed
Get-BskyFeedPostsapp.bsky.feed.getPosts
Get-BskyFeedPostThreadapp.bsky.feed.getPostThread
Get-BskyFeedRepostedByapp.bsky.feed.getRepostedBy
Get-BskyFeedSkeletonapp.bsky.feed.getFeedSkeleton
Get-BskyFeedSuggestedFeedsapp.bsky.feed.getSuggestedFeeds
Get-BskyFeedTimelineapp.bsky.feed.getTimeline
Get-BskyGraphBlocksapp.bsky.graph.getBlocks
Get-BskyGraphDefinition
Get-BskyGraphFollowersapp.bsky.graph.getFollowers
Get-BskyGraphFollowsapp.bsky.graph.getFollows
Get-BskyGraphListapp.bsky.graph.getList
Get-BskyGraphListBlocksapp.bsky.graph.getListBlocks
Get-BskyGraphListMutesapp.bsky.graph.getListMutes
Get-BskyGraphListsapp.bsky.graph.getLists
Get-BskyGraphMutesapp.bsky.graph.getMutes
Get-BskyGraphSuggestedFollowsByActorapp.bsky.graph.getSuggestedFollowsByActor
Get-BskyNotificationsapp.bsky.notification.listNotifications
Get-BskyNotificationUnreadCountapp.bsky.notification.getUnreadCount
Get-BskyUnspeccedDefinition
Get-BskyUnspeccedPopularapp.bsky.unspecced.getPopular
Get-BskyUnspeccedPopularFeedGeneratorsapp.bsky.unspecced.getPopularFeedGenerators
Get-BskyUnspeccedTimelineSkeletonapp.bsky.unspecced.getTimelineSkeleton
Invoke-AtProtoInvokes the AT Protocol
Invoke-AtProtoAdminModerationActioncom.atproto.admin.takeModerationAction
Register-BskyNotificationPushapp.bsky.notification.registerPush
Remove-AtProtoRepoRecordcom.atproto.repo.deleteRecord
Remove-AtProtoServerAccountcom.atproto.server.deleteAccount
Remove-AtProtoServerSessioncom.atproto.server.deleteSession
Request-AtProtoServerAccountDeletecom.atproto.server.requestAccountDelete
Request-AtProtoServerEmailConfirmationcom.atproto.server.requestEmailConfirmation
Request-AtProtoServerEmailUpdatecom.atproto.server.requestEmailUpdate
Request-AtProtoServerPasswordResetcom.atproto.server.requestPasswordReset
Request-AtProtoSyncCrawlcom.atproto.sync.requestCrawl
Reset-AtProtoServerPasswordcom.atproto.server.resetPassword
Resolve-AtProtoAdminModerationReportscom.atproto.admin.resolveModerationReports
Resolve-AtProtoIdentityHandlecom.atproto.identity.resolveHandle
Revoke-AtProtoServerAppPasswordcom.atproto.server.revokeAppPassword
Search-AtProtoAdminReposcom.atproto.admin.searchRepos
Search-AtProtoLabelscom.atproto.label.queryLabels
Search-BskyActorsapp.bsky.actor.searchActors
Search-BskyActorsTypeaheadapp.bsky.actor.searchActorsTypeahead
Search-BskyFeedPostsapp.bsky.feed.searchPosts
Search-BskyUnspeccedActorsSkeletonapp.bsky.unspecced.searchActorsSkeleton
Search-BskyUnspeccedPostsSkeletonapp.bsky.unspecced.searchPostsSkeleton
Send-AtProtoSends to the At Protocol
Send-AtProtoAdminEmailcom.atproto.admin.sendEmail
Set-AtProtoRepoBlobcom.atproto.repo.uploadBlob
Set-AtProtoRepoRecordcom.atproto.repo.putRecord
Set-AtProtoRepoWritescom.atproto.repo.applyWrites
Set-BskyActorPreferencesapp.bsky.actor.putPreferences
Set-BskyUnspeccedLabelsapp.bsky.unspecced.applyLabels
Sync-AtProtoServerSessioncom.atproto.server.refreshSession
Unblock-BskyGraphActorapp.bsky.graph.unmuteActor
Unblock-BskyGraphActorListapp.bsky.graph.unmuteActorList
Undo-AtProtoAdminModerationActioncom.atproto.admin.reverseModerationAction
Update-AtProtoAdminAccountEmailcom.atproto.admin.updateAccountEmail
Update-AtProtoAdminAccountHandlecom.atproto.admin.updateAccountHandle
Update-AtProtoIdentityHandlecom.atproto.identity.updateHandle
Update-AtProtoServerEmailcom.atproto.server.updateEmail
Update-AtProtoTempRepoVersioncom.atproto.temp.upgradeRepoVersion
Update-BskyNotificationSeenapp.bsky.notification.updateSeen
Watch-AtProtoLabelscom.atproto.label.subscribeLabels
Watch-AtProtoSyncReposcom.atproto.sync.subscribeRepos
Watch-AtProtoSyncUpdatecom.atproto.sync.notifyOfUpdate

Aliases

NameResolvedCommand
Add-AtProtoModerationReport
Add-AtProtoRepoRecord
Add-AtProtoServerAccount
Add-AtProtoServerAppPassword
Add-AtProtoServerInviteCode
Add-AtProtoServerInviteCodes
Add-AtProtoServerSession
Block-BskyGraphActor
Block-BskyGraphActorList
Connect-AtProto
Disable-AtProtoAdminAccountInvites
Disable-AtProtoAdminInviteCodes
Enable-AtProtoAdminAccountInvites
Get-AtProtoAdminDefinition
Get-AtProtoAdminInviteCodes
Get-AtProtoAdminModerationAction
Get-AtProtoAdminModerationActions
Get-AtProtoAdminModerationReport
Get-AtProtoAdminModerationReports
Get-AtProtoAdminRecord
Get-AtProtoAdminRepo
Get-AtProtoLabelDefinition
Get-AtProtoModerationDefinition
Get-AtProtoRepo
Get-AtProtoRepoRecord
Get-AtProtoRepoRecords
Get-AtProtoServer
Get-AtProtoServerAccountInviteCodes
Get-AtProtoServerAppPasswords
Get-AtProtoServerDefinition
Get-AtProtoServerSession
Get-AtProtoSyncBlob
Get-AtProtoSyncBlobs
Get-AtProtoSyncBlocks
Get-AtProtoSyncCheckout
Get-AtProtoSyncHead
Get-AtProtoSyncLatestCommit
Get-AtProtoSyncRecord
Get-AtProtoSyncRepo
Get-AtProtoSyncRepos
Get-BskyActorDefinition
Get-BskyActorPreferences
Get-BskyActorProfile
Get-BskyActorProfiles
Get-BskyActorSuggestions
Get-BskyFeed
Get-BskyFeedActorFeeds
Get-BskyFeedActorLikes
Get-BskyFeedAuthorFeed
Get-BskyFeedDefinition
Get-BskyFeedGenerator
Get-BskyFeedGenerators
Get-BskyFeedLikes
Get-BskyFeedListFeed
Get-BskyFeedPosts
Get-BskyFeedPostThread
Get-BskyFeedRepostedBy
Get-BskyFeedSkeleton
Get-BskyFeedSuggestedFeeds
Get-BskyFeedTimeline
Get-BskyGraphBlocks
Get-BskyGraphDefinition
Get-BskyGraphFollowers
Get-BskyGraphFollows
Get-BskyGraphList
Get-BskyGraphListBlocks
Get-BskyGraphListMutes
Get-BskyGraphLists
Get-BskyGraphMutes
Get-BskyGraphSuggestedFollowsByActor
Get-BskyNotifications
Get-BskyNotificationUnreadCount
Get-BskyUnspeccedDefinition
Get-BskyUnspeccedPopular
Get-BskyUnspeccedPopularFeedGenerators
Get-BskyUnspeccedTimelineSkeleton
Invoke-AtProto
Invoke-AtProtoAdminModerationAction
Register-BskyNotificationPush
Remove-AtProtoRepoRecord
Remove-AtProtoServerAccount
Remove-AtProtoServerSession
Request-AtProtoServerAccountDelete
Request-AtProtoServerEmailConfirmation
Request-AtProtoServerEmailUpdate
Request-AtProtoServerPasswordReset
Request-AtProtoSyncCrawl
Reset-AtProtoServerPassword
Resolve-AtProtoAdminModerationReports
Resolve-AtProtoIdentityHandle
Revoke-AtProtoServerAppPassword
Search-AtProtoAdminRepos
Search-AtProtoLabels
Search-BskyActors
Search-BskyActorsTypeahead
Search-BskyFeedPosts
Search-BskyUnspeccedActorsSkeleton
Search-BskyUnspeccedPostsSkeleton
Send-AtProto
Send-AtProtoAdminEmail
Set-AtProtoRepoBlob
Set-AtProtoRepoRecord
Set-AtProtoRepoWrites
Set-BskyActorPreferences
Set-BskyUnspeccedLabels
Sync-AtProtoServerSession
Unblock-BskyGraphActor
Unblock-BskyGraphActorList
Undo-AtProtoAdminModerationAction
Update-AtProtoAdminAccountEmail
Update-AtProtoAdminAccountHandle
Update-AtProtoIdentityHandle
Update-AtProtoServerEmail
Update-AtProtoTempRepoVersion
Update-BskyNotificationSeen
Watch-AtProtoLabels
Watch-AtProtoSyncRepos
Watch-AtProtoSyncUpdate

Topics

announcement-generatorannouncementsatprotoatprotocolblueskybluesky-clientgithubactionspowershellpowershell-module

Related SDKs

jdhitsolutionsPSBluesky

A set of PowerShell 7 commands that use the BlueSky API. You can skeet and upload images from a PowerShell prompt as well as view your feed and timeline.

37•PowerShell
QuietImCodingbskybots

A collection of bots for bluesky along with some systemd services to keep them running. Might include more devop-y stuff later

24•PowerShell
ziodotshatfile

📦➔🦋 Store and retrieve files on the ATmosphere

118•PowerShell

Resources

GitHub Repository

License

MIT

Author

StartAutomating
StartAutomating

Activity

Last commit: January 6, 2025
Commit frequency: Unknown

Our Sponsors

Your Brand Here!

50K+ engaged viewers every month

Limited spots available!

📧 Contact us via email🦋 Contact us on Bluesky
BSkyInfo LogoBskyInfo

The Most Comprehensive Bluesky Tools Directory

Stay updated with the latest Bluesky tools and ecosystem news 🦋

Bluesky butterfly logo
Quick LinksSubmit a ToolSponsorAboutLegal Information
ToolsFeed DirectoryLabeler DirectorySchedulingAnalyticsAll ToolsCategoriesCollectionsTags
ResourcesArticlesBluesky GuidesBluesky GlossaryBluesky SDKsBluesky ResourcesSkyRaffleMeida Coverage
Our ProductsRaffleBlueAiTeach ToolsLaiewAI affiliate listFirsto

This website may contain affiliate links

© 2025 BskyInfo. All rights reserved.