Skip to main content

The post

Bluesky has one content unit, a BlueskyPost. id is the record key (rkey); uri is the global AT Protocol identity. url is the web link on bsky.app. Text, languages, author (handle + DID), metrics (likes, reposts, replies, quotes) and an optional embed (images, external link, record, video) travel together. Do not call it a skeet in product language, and do not reuse Post: Reddit owns that envelope key.

Coverage

A search on Bluesky requires a search term and/or an author: at least one must be set. Optional lang narrows a text search. These are this Source’s own criteria: on the keyword they go in the search’s overrides.filters (see Keywords).
  • With author, each tick polls that author’s feed.
  • With query (and no author), each tick polls post search, newest first.
Bluesky search operators work as-is: from:handle, #tag, "exact phrase", and the rest of the grammar. Interval: 120 to 86400 seconds. At most 20 active Bluesky searches per Account. Each tick costs 1 credit.

What an event carries

The first tick establishes a silent baseline and emits nothing. Later ticks emit bluesky_post.created with the full post in the blueskyPost envelope key. webhookUrl is optional: without it the keyword still records every match, readable through GET /v1/keywords/{id}/events in the same shape. See Webhooks.
Polling one author’s feed instead:

Errors

A search whose author no longer resolves reports the failure in the keyword’s activity rather than going quiet: read it through GET /v1/keywords/{id}/activity. A temporary Source failure is 503 and is not charged.