GET /xrpc/app.bsky.actor.searchActorsTypeahead typeahead.waow.tech
16
fork

Configure Feed

Select the types of activity you want to include in your feed.

add moderation methodology section to docs page

Explains: we respect bluesky's labels by default, but enrich banned accounts
via PDS-direct fallback so they can be un-hidden case-by-case. Slur handles
are always filtered. Links to atproto's credible exit philosophy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+28 -1
+28 -1
src/pages/docs.ts
··· 151 151 <li><strong>rate limited</strong> — 60 req/min per IP</li> 152 152 <li><strong>cached</strong> — results are edge-cached for 60s, so very recent profile changes may lag</li> 153 153 <li><strong>limit range</strong> — <code>1–100</code> (bluesky defaults to 10)</li> 154 - <li><strong>moderation</strong> — actors with <code>!hide</code> or <code>!takedown</code> labels are excluded</li> 154 + <li><strong>moderation</strong> — see <a href="#moderation">moderation</a> below</li> 155 155 <li><strong>CORS</strong> — enabled, so browser-based apps can call it directly</li> 156 156 </ul> 157 + 158 + <h2 id="moderation">moderation</h2> 159 + <p> 160 + atproto is a network, not a single app. bluesky PBC runs the largest appview and applies its 161 + own moderation labels — <code>!hide</code>, <code>!takedown</code>, <code>!suspend</code>, 162 + <code>spam</code> — which hide actors from its search results. we respect these labels by 163 + default: actors flagged by bluesky's moderation service 164 + (<code>did:plc:ar7c4by46qjdydhdevvrndac</code>) are excluded from search. 165 + </p> 166 + <p> 167 + however, not every account banned by bluesky PBC is harmful. some were suspended for policy 168 + disputes, handle issues, or reasons unrelated to abuse. because atproto is designed for 169 + <a href="https://atproto.com/articles/intent">credible exit</a>, we think these people should 170 + still be findable — identity is not content moderation. 171 + </p> 172 + <p> 173 + to support this, the index enriches banned/suspended accounts via their PDS directly 174 + (using <code>com.atproto.repo.getRecord</code>), so profiles are discoverable even when 175 + bluesky's API refuses to serve them. these accounts start hidden and can be explicitly 176 + un-hidden via an admin override on a case-by-case basis. 177 + </p> 178 + <p> 179 + handles containing explicit slurs are always filtered, regardless of override status. these 180 + regexes are 181 + <a href="https://github.com/bluesky-social/atproto/blob/main/packages/pds/src/handle/explicit-slurs.ts">ported 182 + from bluesky's own PDS</a> and catch Unicode diacritics, Cyrillic substitutions, and leetspeak. 183 + </p> 157 184 158 185 <h2>example: plyr.fm</h2> 159 186 <p>