{"id":"8af77482-7cc8-4798-b9f7-75336616cdc9","entityType":"agent","slug":"clawhub-crawlora-org-bluesky-research","name":"bluesky-research","canonicalUrl":"https://www.xpersona.co/agent/clawhub-crawlora-org-bluesky-research","canonicalPath":"/agent/clawhub-crawlora-org-bluesky-research","generatedAt":"2026-10-12T12:09:48.492Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":null},"description":"Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 979 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:bluesky-research","sourceUrl":"https://clawhub.ai/crawlora-org/bluesky-research","homepage":"https://clawhub.ai/crawlora-org/skills/bluesky-research","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/crawlora-org/bluesky-research","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/crawlora-org/skills/bluesky-research","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"bluesky-research technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":null},"stars":null,"forks":null,"downloads":979,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.17","tractionLabel":"979 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:07:26.564Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T23:07:26.581Z","lastCrawledAt":"2026-10-11T23:07:26.564Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T23:07:26.564Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.17","createdAt":"2026-09-21T01:28:35.213Z","changelog":"Sync skill instructions, references, and helper from GitHub 0cfbceba40b050ba434a0a3f4945ca97b668c805","fileCount":5,"zipByteSize":6796},{"version":"1.0.16","createdAt":"2026-09-17T10:17:14.376Z","changelog":"Security hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.","fileCount":5,"zipByteSize":6472},{"version":"1.0.15","createdAt":"2026-09-14T01:33:11.130Z","changelog":"Sync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d","fileCount":5,"zipByteSize":7024},{"version":"1.0.14","createdAt":"2026-09-10T12:30:14.928Z","changelog":"Validate API keys before curl config","fileCount":5,"zipByteSize":6894},{"version":"1.0.13","createdAt":"2026-09-10T12:14:13.236Z","changelog":"Keep API keys out of process arguments","fileCount":5,"zipByteSize":6649},{"version":"1.0.12","createdAt":"2026-09-10T12:04:46.249Z","changelog":"Reject curl local-file query syntax","fileCount":5,"zipByteSize":6647},{"version":"1.0.11","createdAt":"2026-09-10T11:53:47.376Z","changelog":"Stream helper request bodies through curl stdin","fileCount":5,"zipByteSize":6391},{"version":"1.0.10","createdAt":"2026-09-10T11:33:41.276Z","changelog":"Scope helper routes and remove secret-shaped key examples","fileCount":5,"zipByteSize":6431}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:bluesky-research","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:bluesky-research` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/crawlora-org/bluesky-research before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T12:09:48.489Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-bluesky-research/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":null},"readme":"Skill: bluesky-research\n\nOwner: crawlora-org\n\nSummary: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n\nTags: latest:1.0.17\n\nVersion history:\n\nv1.0.17 | 2026-09-21T01:28:35.213Z | user\n\nSync skill instructions, references, and helper from GitHub 0cfbceba40b050ba434a0a3f4945ca97b668c805\n\nv1.0.16 | 2026-09-17T10:17:14.376Z | user\n\nSecurity hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.\n\nv1.0.15 | 2026-09-14T01:33:11.130Z | user\n\nSync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d\n\nv1.0.14 | 2026-09-10T12:30:14.928Z | user\n\nValidate API keys before curl config\n\nv1.0.13 | 2026-09-10T12:14:13.236Z | user\n\nKeep API keys out of process arguments\n\nv1.0.12 | 2026-09-10T12:04:46.249Z | user\n\nReject curl local-file query syntax\n\nv1.0.11 | 2026-09-10T11:53:47.376Z | user\n\nStream helper request bodies through curl stdin\n\nv1.0.10 | 2026-09-10T11:33:41.276Z | user\n\nScope helper routes and remove secret-shaped key examples\n\nv1.0.9 | 2026-09-10T06:30:23.145Z | user\n\nMigrate publisher from tonywangcn to crawlora-org for brand consistency with the plugins\n\nv1.0.8 | 2026-09-08T04:28:28.183Z | user\n\nRefresh stale REST examples, endpoint references, and Bash helper from crawlora-skills 1.17.1.\n\nv1.0.7 | 2026-09-07T13:16:46.878Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.6 | 2026-09-07T08:05:09.630Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.5 | 2026-09-07T06:27:41.101Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.4 | 2026-08-24T07:02:22.218Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.3 | 2026-08-24T06:17:51.327Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.2 | 2026-08-24T05:00:45.472Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.1 | 2026-08-14T18:19:17.336Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.0 | 2026-08-10T18:59:55.636Z | user\n\nInitial publish\n\nArchive index:\n\nArchive v1.0.17: 5 files, 6796 bytes\n\nFiles: reference/endpoints.md (5382b), scripts/crawlora.sh (3791b), skill-card.md (1963b), SKILL.md (4474b), _meta.json (136b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1789954115213\n}\n\nFile v1.0.17:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**11 endpoints across 1 platform group(s).**\n\n## Bluesky (11)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_likes`\n\n- **HTTP:** `GET /bluesky/post-likes`\n- **What:** List actors who liked a Bluesky post. Returns public actors who liked a post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination cursor; `limit` (integer, optional) — Page size, 1-100; `uri` (string, **required**) — The post's at:// URI\n\n### `bluesky_post_quotes`\n\n- **HTTP:** `GET /bluesky/post-quotes`\n- **What:** List quotes of a Bluesky post. Returns public posts that quote the specified post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination cursor; `limit` (integer, optional) — Page size, 1-100; `uri` (string, **required**) — The quoted post's at:// URI\n\n### `bluesky_post_reposted_by`\n\n- **HTTP:** `GET /bluesky/post-reposted-by`\n- **What:** List actors who reposted a Bluesky post. Returns public actors who reposted a post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination cursor; `limit` (integer, optional) — Page size, 1-100; `uri` (string, **required**) — The post's at:// URI\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_posts`\n\n- **HTTP:** `GET /bluesky/posts`\n- **What:** Look up Bluesky posts in a batch. Returns public Bluesky posts for 1-25 at:// post URIs. Missing, deleted, or blocked posts are omitted when the public AppView omits them.\n- **Params:** `uris` (array, **required**) — One or more at:// post URIs (1-25); repeat the parameter for multiple URIs\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and agents use this skill to retrieve public Bluesky profile, post, thread, graph, search, and trending-topic data through Crawlora instead of scraping the Bluesky app or calling the AT Protocol directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Using the skill sends Bluesky handles, post URIs, search terms, and the Crawlora API key to Crawlora.\n\nMitigation: Use it only when that data sharing is acceptable, keep the API key in CRAWLORA_API_KEY, and avoid private or sensitive data.\n\nRisk: The skill is designed for public Bluesky data and may be unsuitable for private or sensitive investigations.\n\nMitigation: Limit use to public Bluesky profiles, posts, graph data, account search, and trending topics.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands that return JSON from the Crawlora API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses CRAWLORA_API_KEY and supports cursor-paginated public Bluesky endpoints.]\n\n## Skill Version(s):\n\n1.0.17 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.16: 5 files, 6472 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (3609b), skill-card.md (1859b), SKILL.md (4474b), _meta.json (136b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1789640234376\n}\n\nFile v1.0.16:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower and follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, and analysts use this skill to look up public Bluesky account profiles, recent posts, post threads, follower and follows graphs, account search results, and trending topics through Crawlora instead of scraping Bluesky directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Crawlora receives the API key and query details when the helper runs.\n\nMitigation: Provide the key only through CRAWLORA_API_KEY and avoid using private or sensitive text as search terms.\n\nRisk: The skill depends on a third-party service for public Bluesky lookups.\n\nMitigation: Install it only when Crawlora is an acceptable third-party service for the intended use case.\n\n## Reference(s):\n\n- [Endpoint Reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API Base](https://api.crawlora.net/api/v1)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, JSON, Guidance]\n\n**Output Format:** [Markdown guidance with shell command examples and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and is limited to public Bluesky data available through Crawlora.]\n\n## Skill Version(s):\n\n1.0.16 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.15: 5 files, 7024 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (4528b), skill-card.md (2184b), SKILL.md (4474b), _meta.json (136b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1789349591130\n}\n\nFile v1.0.15:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.15:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower and follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, and external users use this skill to inspect public Bluesky profiles, posts, threads, account graphs, account search results, and trending topics without scraping the Bluesky app directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Bluesky lookup terms and the Crawlora API key are sent to Crawlora when the helper is used.\n\nMitigation: Install only if this third-party API use is acceptable, keep the API key in CRAWLORA_API_KEY, and do not hardcode or commit it.\n\nRisk: The skill is intended for public Bluesky data and may be inappropriate for private or sensitive queries.\n\nMitigation: Use the helper for public Bluesky profiles, posts, and graph lookups, and avoid private or sensitive research targets.\n\nRisk: Trending topic responses are the least stable endpoint surface and may change shape without notice.\n\nMitigation: Treat trending topic output as time-sensitive and validate its structure before relying on it in downstream workflows.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands; API helper responses are JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and uses documented public Bluesky endpoints.]\n\n## Skill Version(s):\n\n1.0.15 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.14: 5 files, 6894 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (3903b), skill-card.md (2375b), SKILL.md (4474b), _meta.json (136b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1789043414928\n}\n\nFile v1.0.14:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nResearches public Bluesky profiles, posts, follower and follows graphs, account search, and trending topics through the Crawlora API, returning JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nResearchers, analysts, and developers use this skill to retrieve public Bluesky profile, post, thread, follower, follows, account-search, and trending-topic data without scraping the Bluesky app directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requested handles, post URIs, search terms, trending-topic requests, and usage may be visible to Crawlora.\n\nMitigation: Use the skill only for public Bluesky lookups, avoid private or sensitive data in request parameters, and install it only when Crawlora is an acceptable third-party service.\n\nRisk: The Crawlora API key could be exposed if it is pasted into prompts, commands, query parameters, or committed files.\n\nMitigation: Store the key only in the CRAWLORA_API_KEY environment variable and use the bundled helper, which avoids putting the key in command-line arguments.\n\nRisk: Trending-topic responses are less stable than the other Bluesky endpoints and may change shape over time.\n\nMitigation: Treat trending-topic output as time-sensitive public data and verify downstream parsing before relying on a fixed response structure.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [JSON responses with concise Markdown guidance and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY; requests access public Bluesky data through Crawlora's API.]\n\n## Skill Version(s):\n\n1.0.14 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.13: 5 files, 6649 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (3646b), skill-card.md (2138b), SKILL.md (4474b), _meta.json (136b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789042453236\n}\n\nFile v1.0.13:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower and follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and social research agents use this skill to query public Bluesky profiles, posts, threads, follower and following lists, account search, and trending topics through Crawlora.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A poisoned CRAWLORA_API_KEY environment value could alter curl behavior when written into the helper's curl config file.\n\nMitigation: Set CRAWLORA_API_KEY only from a trusted secret source, review the helper before use, and prefer a release that validates or safely escapes the key before writing the curl config.\n\nRisk: Bluesky lookups and search terms are sent to the Crawlora API and may reveal sensitive research interests.\n\nMitigation: Avoid sensitive queries and use the skill only for public Bluesky data appropriate to share with the Crawlora service.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n- [ClawHub publisher profile](https://clawhub.ai/user/crawlora-org)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Guidance]\n\n**Output Format:** [Markdown guidance with shell command examples and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY; returns public Bluesky data from documented Crawlora endpoints.]\n\n## Skill Version(s):\n\n1.0.13 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.12: 5 files, 6647 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (3321b), skill-card.md (2472b), SKILL.md (4518b), _meta.json (136b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/bluesky/followers?actor=bsky.app&limit=50\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789041886249\n}\n\nFile v1.0.12:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower and follows graphs, account search, and trending topics through the Crawlora API, returning normalized JSON for public Bluesky research.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and agents use this skill to query public Bluesky profiles, author feeds, post threads, follower and following pages, account search results, and trending topics through Crawlora. It is useful when normalized JSON is preferred over scraping the Bluesky app or calling the AT Protocol API directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends requested Bluesky handles, search queries, post URIs, and the Crawlora API key to Crawlora.\n\nMitigation: Use the skill only when sharing those request details with Crawlora is acceptable, and keep CRAWLORA_API_KEY in the environment rather than hardcoding, logging, or committing it.\n\nRisk: The skill is intended for public Bluesky data only.\n\nMitigation: Limit use to public profiles, posts, graph pages, account search, and trending topics, and avoid treating it as a way to access private or authenticated Bluesky content.\n\nRisk: Trending topics are described as the least stable endpoint surface.\n\nMitigation: Treat trending-topic output as time-sensitive and shape-variable, and validate downstream parsing against current responses before relying on automation.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n- [ClawHub skill listing](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [json, text, shell commands, configuration, guidance]\n\n**Output Format:** [JSON responses plus Markdown guidance and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and uses documented Crawlora Bluesky endpoints for public data.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.11: 5 files, 6391 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (3021b), skill-card.md (2039b), SKILL.md (4518b), _meta.json (136b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/bluesky/followers?actor=bsky.app&limit=50\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1789041227376\n}\n\nFile v1.0.11:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nResearches public Bluesky profiles, posts, follower and follows graphs, account search, and trending topics through the Crawlora API, returning normalized JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and social researchers use this skill to retrieve public Bluesky account, post, thread, graph, search, and trend data through Crawlora for account audits, thread pulls, and network mapping.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requests send Bluesky lookup parameters to Crawlora with the user's Crawlora API key.\n\nMitigation: Install only when this third-party API use is acceptable, keep CRAWLORA_API_KEY in the environment, and never hardcode, commit, or pass the key in URLs.\n\nRisk: The bundled helper can accidentally send readable local file contents to Crawlora when crafted GET arguments are used.\n\nMitigation: Use trusted, explicit key=value GET arguments and avoid untrusted or generated raw arguments until GET parameter validation is fixed.\n\n## Reference(s):\n\n- [Endpoint Reference](reference/endpoints.md)\n- [Crawlora API Base](https://api.crawlora.net/api/v1)\n- [ClawHub Skill Page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and sends public Bluesky lookup parameters to Crawlora.]\n\n## Skill Version(s):\n\n1.0.11 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.10: 5 files, 6431 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (2973b), skill-card.md (2274b), SKILL.md (4518b), _meta.json (136b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/bluesky/followers?actor=bsky.app&limit=50\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1789040021276\n}\n\nFile v1.0.10:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and analysts use this skill to research public Bluesky accounts, posts, threads, follower/following graphs, account search results, and trending topics. It helps agents choose documented Crawlora API calls and return normalized JSON instead of scraping Bluesky directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Bluesky handles, search terms, post URIs, and the Crawlora API key are sent to a third-party API.\n\nMitigation: Use the skill only for public Bluesky research where sending those values to Crawlora is acceptable.\n\nRisk: The Crawlora API key could be exposed if hardcoded, committed, or placed in request URLs.\n\nMitigation: Keep CRAWLORA_API_KEY in the environment as documented and avoid embedding it in files, query parameters, logs, or shared prompts.\n\nRisk: The trending topics endpoint is described as less stable than the other Bluesky surfaces.\n\nMitigation: Treat trending-topic output as volatile and verify downstream assumptions before relying on its exact response shape.\n\n## Reference(s):\n\n- [bluesky-research endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY; list endpoints are cursor-paginated; trending topics may change shape.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.9: 5 files, 5924 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (2005b), skill-card.md (2046b), SKILL.md (4492b), _meta.json (135b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- `export CRAWLORA_API_KEY=sk_your_key_here`\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/bluesky/followers?actor=bsky.app&limit=50\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1789021823145\n}\n\nFile v1.0.9:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower and follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to look up public Bluesky account profiles, feeds, post threads, follower or following lists, account search results, and current trending topics through Crawlora instead of scraping Bluesky directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The helper can use the Crawlora API key to call Crawlora services beyond the seven documented Bluesky GET endpoints.\n\nMitigation: Review proposed commands before execution and restrict usage to the documented Bluesky endpoints unless broader Crawlora API access is intended.\n\nRisk: Bluesky handles, post URIs, search terms, usage metadata, and the Crawlora API key are sent to Crawlora.\n\nMitigation: Use the skill only when sharing those values with Crawlora is acceptable, and keep the API key in CRAWLORA_API_KEY rather than hardcoding or committing it.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY; responses contain public Bluesky data returned by the Crawlora API.]\n\n## Skill Version(s):\n\n1.0.9 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.8: 5 files, 5827 bytes\n\nFiles: reference/endpoints.md (3895b), scripts/crawlora.sh (1870b), skill-card.md (1969b), SKILL.md (4492b), _meta.json (135b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- `export CRAWLORA_API_KEY=sk_your_key_here`\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/bluesky/followers?actor=bsky.app&limit=50\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Bluesky\nendpoint this skill uses.\n\n## Examples\n\n- **Account audit:** `/bluesky/profile` + `/bluesky/author-feed` for a\n  handle to check follower count, posting cadence, and recent engagement.\n- **Thread pull:** grab a post's `at://` URI from an author-feed or\n  search-actors result, then `/bluesky/post-thread` to read the full\n  reply tree (and parent chain if it's itself a reply).\n- **Network mapping:** page `/bluesky/followers` and `/bluesky/follows` for\n  an account to build its follower/following graph.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts, sourced from the AT Protocol's\n  public, credential-free AppView API; no login, no private content.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- List endpoints (`author-feed`, `followers`, `follows`, `search-actors`) are\n  cursor-paginated — follow the returned `cursor` to walk beyond the first page.\n- `post-thread` needs a full `at://` post URI, not a bsky.app URL — get it\n  from an `author-feed` or `search-actors` result's post `uri` field.\n- `trending-topics` has no params and is explicitly the least stable surface\n  in this family — Bluesky may change its shape without notice.\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1788841708183\n}\n\nFile v1.0.8:reference/endpoints.md\n\n# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**7 endpoints across 1 platform group(s).**\n\n## Bluesky (7)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_thread`\n\n- **HTTP:** `GET /bluesky/post-thread`\n- **What:** A Bluesky post and its reply tree. Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `depth` (integer, optional) — Reply-tree depth, 1-10; `uri` (string, **required**) — The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field\n\n### `bluesky_profile`\n\n- **HTTP:** `GET /bluesky/profile`\n- **What:** A Bluesky account's full public profile. Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)\n\n### `bluesky_search_actors`\n\n- **HTTP:** `GET /bluesky/search-actors`\n- **What:** Search Bluesky accounts. Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100; `q` (string, **required**) — Search text\n\n### `bluesky_trending_topics`\n\n- **HTTP:** `GET /bluesky/trending-topics`\n- **What:** Bluesky's current trending topics. Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.\n- **Params:** _none_\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nResearches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[tonywangcn](https://clawhub.ai/user/tonywangcn)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and external agents use this skill to gather public Bluesky account, post, graph, search, and trend data through documented Crawlora API endpoints.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled helper can use an overridden API base and may send the API key and caller-supplied data to a destination outside the documented Crawlora API.\n\nMitigation: Use the skill only in an environment you control, leave CRAWLORA_API_BASE unset unless the destination is trusted, and review commands before execution.\n\nRisk: The helper is broader than the advertised Bluesky endpoints.\n\nMitigation: Restrict use to the documented Bluesky paths in the endpoint reference and avoid sending sensitive data through the helper.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/tonywangcn/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands that return JSON from the Crawlora API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a Crawlora API key in CRAWLORA_API_KEY; list endpoints are cursor-paginated.]\n\n## Skill Version(s):\n\n1.0.8 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: bluesky-research Owner: crawlora-org Summary: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly. Tags: latest:1.0.17 Version ","codeSnippets":[],"executableExamples":[{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"},{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"},{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"},{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"},{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"},{"language":"sh","snippet":"# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: bluesky-research\ndescription: Researches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON. Use when the user wants a Bluesky account's stats, a post's thread/engagement, a Bluesky account search, or what's trending on Bluesky — instead of scraping the app or the AT Protocol API directly.\n---\n\n# Bluesky research\n\nLook up public Bluesky profiles, author feeds, post threads, follower/follows\ngraphs, account search, and trending topics — all as normalized JSON from the\nCrawlora API, no app scraping or direct AT Protocol client needed.\n\n## When to use this skill\n\n- \"What's <handle>'s profile / follower count on Bluesky?\"\n- \"Pull <handle>'s recent posts on Bluesky.\"\n- \"Show this Bluesky post's replies / thread.\"\n- \"Who follows <handle> on Bluesky?\" / \"Who does <handle> follow?\"\n- \"Search Bluesky for accounts about <topic>.\"\n- \"What's trending on Bluesky right now?\"\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\nPick the job:\n\n1. **Profile** — `/bluesky/profile` (`actor` = handle or DID). Display name,\n   description, avatar/banner, follower/follows/posts counts.\n2. **Author feed** — `/bluesky/author-feed` (`actor`, optional `cursor`,\n   `limit`). A page of an account's posts, newest first, with engagement\n   counts and any attached images/link card/quoted post.\n3. **Post thread** — `/bluesky/post-thread` (`uri` = the post's `at://` URI,\n   optional `depth`). The post plus its nested replies and, if it's a reply,\n   its parent chain.\n4. **Followers / follows graph** — `/bluesky/followers` and `/bluesky/follows`\n   (`actor`, optional `cursor`, `limit`). Page through an account's followers\n   or the accounts it follows.\n5. **Search accounts** — `/bluesky/search-actors` (`q`, optional `cursor`,\n   `limit`). Accounts matching a query against display name, handle, and\n   profile description.\n6. **Trending** — `/bluesky/trending-topics` (no params). Bluesky's current\n   trending topics and suggested feeds.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile + author feed:\nscripts/crawlora.sh /bluesky/profile actor=bsky.app | jq '.'\nscripts/crawlora.sh /bluesky/author-feed actor=bsky.app limit=20 | jq '.'\n\n# Search + trending:\nscripts/crawlora.sh /bluesky/search-actors q=\"web scraping\" | jq '.'\nscripts/crawlora.sh /bluesky/trending-topics | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoin"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"bluesky-research\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1789954115213\n}"},{"path":"reference/endpoints.md","content":"# bluesky-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**11 endpoints across 1 platform group(s).**\n\n## Bluesky (11)\n\n### `bluesky_author_feed`\n\n- **HTTP:** `GET /bluesky/author-feed`\n- **What:** A Bluesky account's posts. Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_followers`\n\n- **HTTP:** `GET /bluesky/followers`\n- **What:** A Bluesky account's followers. Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_follows`\n\n- **HTTP:** `GET /bluesky/follows`\n- **What:** Accounts a Bluesky account follows. Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.\n- **Params:** `actor` (string, **required**) — A handle (e.g. bsky.app) or DID; `cursor` (string, optional) — Pagination cursor from a previous response's cursor field; `limit` (integer, optional) — Page size, 1-100\n\n### `bluesky_post_likes`\n\n- **HTTP:** `GET /bluesky/post-likes`\n- **What:** List actors who liked a Bluesky post. Returns public actors who liked a post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination cursor; `limit` (integer, optional) — Page size, 1-100; `uri` (string, **required**) — The post's at:// URI\n\n### `bluesky_post_quotes`\n\n- **HTTP:** `GET /bluesky/post-quotes`\n- **What:** List quotes of a Bluesky post. Returns public posts that quote the specified post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination cursor; `limit` (integer, optional) — Page size, 1-100; `uri` (string, **required**) — The quoted post's at:// URI\n\n### `bluesky_post_reposted_by`\n\n- **HTTP:** `GET /bluesky/post-reposted-by`\n- **What:** List actors who reposted a Bluesky post. Returns public actors who reposted a post, with an optional cursor for pagination.\n- **Params:** `cursor` (string, optional) — Pagination"},{"path":"skill-card.md","content":"## Description:\n\nResearches Bluesky profiles, posts, follower/follows graphs, account search, and trending topics via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and agents use this skill to retrieve public Bluesky profile, post, thread, graph, search, and trending-topic data through Crawlora instead of scraping the Bluesky app or calling the AT Protocol directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Using the skill sends Bluesky handles, post URIs, search terms, and the Crawlora API key to Crawlora.\n\nMitigation: Use it only when that data sharing is acceptable, keep the API key in CRAWLORA_API_KEY, and avoid private or sensitive data.\n\nRisk: The skill is designed for public Bluesky data and may be unsuitable for private or sensitive investigations.\n\nMitigation: Limit use to public Bluesky profiles, posts, graph data, account search, and trending topics.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/bluesky-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands that return JSON from the Crawlora API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses CRAWLORA_API_KEY and supports cursor-paginated public Bluesky endpoints.]\n\n## Skill Version(s):\n\n1.0.17 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1449,"uniquenessScore":37,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:07:26.581Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T12:09:48.492Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}