···2233A zero-dependency web component that displays a Bluesky conversation thread — replies, quote posts, and reposts — for any public Bluesky post. Drop it into any page with a single `<script>` tag.
4455+See it live on the [atproto.com blog](https://atproto.com/blog) or a [demo](https://jimray-bsky.tngl.io/bsky-conversation/).
66+57## Quick start
6879```html
···12141315That's it. No build step, no dependencies.
14161515-## Install via npm
1616-1717-```bash
1818-npm install bsky-conversation
1919-```
2020-2121-```js
2222-// Auto-registers the <bsky-conversation> element
2323-import 'bsky-conversation'
2424-2525-// Or import the class for manual registration
2626-import { BskyConversation } from 'bsky-conversation'
2727-customElements.define('my-conversation', BskyConversation)
2828-```
2929-3017## Attributes
31183219| Attribute | Default | Description |
···39264027## Template syntax
41284242-The `header-template` attribute supports a mini template language.
2929+The `header-template` attribute supports a mini template language to let you customize how you introduce the conversation on your site.
43304431**Simple tokens** — replaced with their value:
4532···126113127114## Behavior
128115129129-- Fetches from the public Bluesky API (no authentication needed)
116116+- Fetches directly from the public Bluesky API (no authentication needed)
130117- Rich text rendering with proper UTF-8 byte-offset facet handling (links, @mentions, #hashtags)
131118- Root post author's direct replies are filtered out (they're extensions of the original post, not conversation)
132119- Hidden replies (via threadgate) and detached quotes (via postgate) are filtered out