Continue reading on Unthread
B
Jun 15, 20262 min read
rompt:
Build me an iOS Shortcut that resolves a Bluesky account's PDS and posts a post. Use these actions in order. For any URL, use a URL action or type it straight into the field — never a Text action (it throws a Rich Text → URL error).
- Text → my handle. Save as
handle. - Text → my app password. Save as
apppw. - Get Contents of URL (GET):
https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=[handle]
Then Get Dictionary Value
did. Save asdid. - Get Contents of URL (GET): https://plc.directory/[did]
Get Dictionary Value
service→ Get Item from List (First) → Get Dictionary ValueserviceEndpoint. Save aspds. - Get Contents of URL (POST) to [pds]/xrpc/com.atproto.server.createSession
Header: Content-Type = application/json
Body (JSON): identifier = [handle], password = [apppw]
Save result as
session. PullaccessJwt→jwtanddid→did. - Ask for Input (Text) → save as
text. - Current Date → Format Date → ISO 8601 → save as
now. - Get Contents of URL (POST) to [pds]/xrpc/com.atproto.repo.createRecord Headers: Authorization = Bearer [jwt], Content-Type = application/json Body (JSON): repo = [did] collection = app.bsky.feed.post record (Dictionary): $type = app.bsky.feed.post, text = [text], createdAt = [now]
- Show Notification with the result.
Plain text only, no facets. If any request returns non-2xx, stop and show the status and response body instead of continuing.
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.