primitive · constellation
<atproto-distinct-count>
Count of distinct DIDs linking to a subject. The 'how many unique people' twin of atproto-generic-count.
Live
Total likes:
Followers (distinct DIDs):
<atproto-distinct-count
subject="at://..."
source="app.bsky.feed.like:subject.uri"
label="unique likers">
</atproto-distinct-count> Attributes
| Name | Type | Default | Description |
|---|---|---|---|
subject * | string | — | AT-URI, DID, or any backlink target. |
source * | string | — | 'collection:path' format. Path takes no leading dot — e.g. 'app.bsky.feed.like:subject.uri'. |
label | string | — | Suffix label after the count. |
constellation | string | — | Override the Constellation endpoint. |
Parts
External CSS can target these via atproto-distinct-count::part(<name>) { ... }.
| Part | What it is |
|---|---|
count / number / label | Outer span, numeric value, and optional label suffix. |
Why this exists
Constellation exposes two separate count shapes: total RECORDS and distinct DIDS. A single account posting two like records to the same post counts twice in total-records but once in distinct-dids. For most "how many people" questions, distinct-dids is the more honest number.
Use <atproto-generic-count> when you want record
count (raw engagement activity). Use
<atproto-distinct-count> when you want people count
(reach / breadth). Both share the same
subject / source / label API.
Why these can diverge
- A user toggles a like off and back on — two like records, one DID
- Follow records can be re-emitted after a migration — again, multiple records per DID
- For custom lexicons, you control what a "record per subject" means; distinct-DIDs is the aggregator-proof answer
Related
<atproto-generic-count> for total record count.
<atproto-backlinks> shows both simultaneously in a
table — discover which sources have interesting divergence.