{
"$type": "site.standard.document",
"bskyPostRef": {
"$type": "com.atproto.repo.strongRef",
"cid": "bafyreicjd4674fmhnhyvpunqmv3fap4v5or7qz726sqrubypy4uumqneca",
"uri": "at://did:plc:v46ojbiop5ebs5h7gaomixcc/app.bsky.feed.post/3moe5islpdc2m"
},
"content": {
"$type": "at.unthread.content",
"content": "prompt: \n\nBuild 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).\n\n1. Text → my handle. Save as `handle`.\n2. Text → my app password. Save as `apppw`.\n3. Get Contents of URL (GET):\n https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=[handle]\n Then Get Dictionary Value `did`. Save as `did`.\n4. Get Contents of URL (GET): https://plc.directory/[did]\n Get Dictionary Value `service` → Get Item from List (First) → Get Dictionary Value `serviceEndpoint`. Save as `pds`.\n5. Get Contents of URL (POST) to [pds]/xrpc/com.atproto.server.createSession\n Header: Content-Type = application/json\n Body (JSON): identifier = [handle], password = [apppw]\n Save result as `session`. Pull `accessJwt` → `jwt` and `did` → `did`.\n6. Ask for Input (Text) → save as `text`.\n7. Current Date → Format Date → ISO 8601 → save as `now`.\n8. Get Contents of URL (POST) to [pds]/xrpc/com.atproto.repo.createRecord\n Headers: Authorization = Bearer [jwt], Content-Type = application/json\n Body (JSON):\n repo = [did]\n collection = app.bsky.feed.post\n record (Dictionary): $type = app.bsky.feed.post, text = [text], createdAt = [now]\n9. Show Notification with the result.\n\nPlain text only, no facets. If any request returns non-2xx, stop and show the status and response body instead of continuing.",
"reply": {
"parent": {
"$type": "com.atproto.repo.strongRef",
"cid": "bafyreiefeskhuv55jnrw5wjdgkt2ktbgi2qtenwvd64kzbssxksd52cg7a",
"uri": "at://did:plc:v46ojbiop5ebs5h7gaomixcc/app.bsky.feed.post/3moe5ayrdyk2m"
},
"root": {
"$type": "com.atproto.repo.strongRef",
"cid": "bafyreiefeskhuv55jnrw5wjdgkt2ktbgi2qtenwvd64kzbssxksd52cg7a",
"uri": "at://did:plc:v46ojbiop5ebs5h7gaomixcc/app.bsky.feed.post/3moe5ayrdyk2m"
}
}
},
"createdAt": "2026-06-15T20:42:31.053Z",
"path": "/@brookie.blog/3moe5hzsgei23",
"publishedAt": "2026-06-15T20:42:31.053Z",
"site": "https://unthread.at",
"textContent": "prompt: \n\nBuild 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).\n\n1. Text → my handle. Save as handle.\n2. Text → my app password. Save as apppw.\n3. Get Contents of URL (GET):\n https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=[handle]\n Then Get Dictionary Value did. Save as did.\n4. Get Contents of URL (GET): https://plc.directory/[did]\n Get Dictionary Value service → Get Item from List (First) → Get Dictionary Value serviceEndpoint. Save as pds.\n5. Get Contents of URL (POST) to [pds]/xrpc/com.atproto.server.createSession\n Header: Content-Type = application/json\n Body (JSON): identifier = [handle], password = [apppw]\n Save result as session. Pull accessJwt → jwt and did → did.\n6. Ask for Input (Text) → save as text.\n7. Current Date → Format Date → ISO 8601 → save as now.\n8. Get Contents of URL (POST) to [pds]/xrpc/com.atproto.repo.createRecord\n Headers: Authorization = Bearer [jwt], Content-Type = application/json\n Body (JSON):\n repo = [did]\n collection = app.bsky.feed.post\n record (Dictionary): $type = app.bsky.feed.post, text = [text], createdAt = [now]\n9. Show Notification with the result.\n\nPlain text only, no facets. If any request returns non-2xx, stop and show the status and response body instead of continuing.",
"title": "Continue reading on Unthread"
}