Continue reading on Unthread
Brookie
June 15, 2026
prompt:
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 as did.
- Get Contents of URL (GET): https://plc.directory/[did] Get Dictionary Value service → Get Item from List (First) → Get Dictionary Value serviceEndpoint. Save as pds.
- 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. Pull accessJwt → jwt and did → 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.
Discussion in the ATmosphere