A full-featured Bluesky post composer — languages, hashtags, mentions,
link cards, quote posts, images — that shows you the exact
app.bsky.feed.post record CID a PDS would assign your post,
recomputed live as you type. Nothing here posts anything or needs a login.
the record's createdAt is part of what gets hashed — nudge it and watch the CID change even if the text doesn't.
non-standard via field some clients (witchsky, tokimeki) set to record the app that created the post. free-form text, omitted from the record if left blank.
The CID is computed exactly the way a PDS computes it: the record
above gets deterministically dag-cbor-encoded,
sha2-256 hashed, and wrapped as a CIDv1. Blob refs (images, link-card
thumbnails) use the same math with the raw codec over the
literal bytes — no upload needed to know what CID they'd get. Mentions
are resolved to DIDs and links/tags detected with the same
@atproto/api RichText code the real Bluesky
client uses, so the facets you see here are what it would actually send.