{
  "$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"
}