Glossar

Wie ein Bluesky-Threadgate entscheidet, wer auf einen Post antworten darf

Taras Shynkarenko
Taras Shynkarenko
•Aktualisiert: •7 Min. Lesezeit
Wie ein Bluesky-Threadgate entscheidet, wer auf einen Post antworten darfWie ein Bluesky-Threadgate entscheidet, wer auf einen Post antworten darf

TL;DR, Kurze Antwort

7 Min. Lesezeit

Die Antwortkontrollen von Bluesky stecken in einem app.bsky.feed.threadgate-Record, dessen Record Key zum Root-Post des Threads passt. Sein allow-Array nimmt bis zu 5 Regeln: mentionRule, followerRule, followingRule und listRule. Ein leeres Array heißt, dass niemand antworten kann, ein fehlendes Array heißt, dass jeder es kann. Derselbe Record hält bis zu 300 URIs versteckter Antworten. Quote-Posts steuert ein separater app.bsky.feed.postgate-Record, dessen disableRule das Einbetten abschaltet und dessen detachedEmbeddingUris bis zu 50 abgelöste Zitate hält.

Was ist ein Bluesky-Threadgate?

Als Bluesky-Threadgate bezeichnet man den Record app.bsky.feed.threadgate, der entscheidet, wer auf einen Thread antworten darf. Das Lexicon beschreibt ihn als „Record defining interaction gating rules for a thread (aka, reply controls).“ Antwortkontrollen sind auf Bluesky weder eine Einstellung deines Kontos noch ein Flag am Post. Sie sind dieser Record, gespeichert in deinem eigenen Repository.

Er ist ein eigener Record, kein Feld am Post. Dieses Design hat eine Folge, die viele übersehen: Du kannst Antwortkontrollen für einen Post, der schon live ist, hinzufügen, ändern oder löschen, weil sich der Post-Record selbst nie ändert.

Das Lexicon legt fest, wo der Record liegen muss: „The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.“ Ein Threadgate gehört zu einem Root-Post, im eigenen Repo des Autors, unter demselben rkey.

Welche Felder hat der Threadgate-Record?

Vier, und zwei davon sind Pflicht.

FeldTypPflichtBeschreibung im Lexicon
postat-uriJa„Reference (AT-URI) to the post record.“
createdAtdatetimeJaKeine
allowArray, max. 5Nein„List of rules defining who can reply to this post.“
hiddenRepliesArray aus at-uri, max. 300Nein„List of hidden reply URIs.“

Ein vollständiger Record, der erwähnten Konten und einer Liste das Antworten erlaubt, sieht so aus:

{
  "$type": "app.bsky.feed.threadgate",
  "post": "at://did:plc:abc123/app.bsky.feed.post/3kxyzpost",
  "allow": [
    { "$type": "app.bsky.feed.threadgate#mentionRule" },
    {
      "$type": "app.bsky.feed.threadgate#listRule",
      "list": "at://did:plc:abc123/app.bsky.graph.list/3kxyzlist"
    }
  ],
  "createdAt": "2026-09-24T10:00:00.000Z"
}

Du schreibst ihn mit com.atproto.repo.createRecord, setzt collection auf app.bsky.feed.threadgate und rkey auf den rkey des Posts, also das letzte Segment der AT-URI des Posts. Blueskys Seite zu Thread Gates zeigt denselben Schritt in ihrem TypeScript-Beispiel: const { rkey } = new AtUri(postUri).

Welche allow-Regeln kann ein Bluesky-Threadgate nutzen?

Vier Regeltypen, jeder ein Objekt in allow. Blueskys Dokumentation listet sie mit einzeiligen Definitionen:

RegelWer antworten darf
app.bsky.feed.threadgate#mentionRule„Allow replies from actors mentioned in your post.“
app.bsky.feed.threadgate#followingRule„Allow replies from actors you follow.“
app.bsky.feed.threadgate#followerRule„Allow replies from actors following you.“
app.bsky.feed.threadgate#listRule„Allow replies from actors on a list.“

Drei der vier haben gar keine Properties. listRule ist die Ausnahme: Ihr Feld list ist Pflicht und nimmt die AT-URI eines app.bsky.graph.list-Records.

Die Regeln addieren sich, statt einzuschränken. Blueskys Beispiel packt mentionRule, followingRule und listRule in ein Array mit den Kommentaren „allow mentioned users“, „allow followed users“ und „allow list members“, jede Regel öffnet die Antworten also für eine weitere Gruppe.

mentionRule hängt davon ab, wie der Post seine Erwähnungen kodiert. In einem Post-Record ist eine Erwähnung ein Facet app.bsky.richtext.facet#mention, und das Facet-Lexicon merkt an: „The text is usually a handle, including a '@' prefix, but the facet reference is a DID.“ Ein @handle, das als reiner Text ohne Facet getippt wird, ist im Record keine Erwähnung. Die Byte-Offsets des Facets richtig zu setzen, ist ein eigenes Problem, behandelt in der Notiz zu Bluesky-Facets mit byteStart und byteEnd.

Das Array allow ist auf 5 Einträge begrenzt, obwohl es nur vier Regeltypen gibt. Das Schema verbietet nicht, listRule zu wiederholen, der fünfte Platz bietet also Raum für eine zweite Liste.

Ein Vorhängeschloss an einem geschlossenen Holztor, das für einen Thread steht, in dem niemand antworten kann.

Was ist der Unterschied zwischen einem leeren und einem fehlenden allow-Array?

Alles. Das Lexicon zieht die Grenze in einem Satz: „If value is an empty array, no one can reply. If value is undefined, anyone can reply.“

Wert von allowWer antworten darf
FehltJeder
[]Niemand
Eine oder mehrere RegelnJeder, auf den eine der Regeln zutrifft

Blueskys Dokumentation formuliert das stattdessen auf Record-Ebene: „If a thread gate record is present but empty, then nobody can reply“ und „If a thread gate record is not present, then anybody can reply.“ Liest man beide Quellen zusammen, gibt es einen Fall, den die Doku-Seite auslässt. Ein Threadgate-Record kann ohne Feld allow existieren, etwa einer, der nur hiddenReplies auflistet. Nach dem Wortlaut des Lexicons ist dieser Thread weiterhin für alle offen. Wenn dein Code eine Antwort versteckt, indem er ein Threadgate anlegt, und dann jemand die Regel „Record vorhanden heißt gesperrt“ anwendet, dreht er die Logik um.

Kann man eine Antwort mitten im Thread sperren?

Nein. Der rkey des Threadgates muss zu „the thread's root post“ passen, es gibt also ein Threadgate pro Thread, angehängt an dessen ersten Post. Antworten weiter unten können keine eigenen Antwortkontrollen tragen.

AdaptlyPost
AdaptlyPost

Jetzt 7 Tage kostenlos testen

Plattformübergreifende Analysen

Sozialer Posteingang

KI-gestützter Assistent

Das Array hiddenReplies liegt auf demselben Root-Record und ist auf 300 URIs begrenzt. Blueskys Ankündigung der Funktion zu App-Version 1.90 sagt „Only the original creator of the thread can hide replies“ und dass „All hidden replies will be placed behind a Hidden replies screen.“ Dort bleiben sie erreichbar, „but much less visible.“ Derselbe Beitrag warnt, dass versteckte Antworten, samt der Information, welche Posts der Autor versteckt hat, „are still public data.“ Alles in einem Threadgate-Record kann jeder lesen, der dein Repository liest.

Eine Hand unterstreicht eine zitierte Passage in einem gedruckten Buch, als Bild für das Zitieren eines fremden Posts.

Was ist der Postgate-Record?

Das Postgate ist das Gegenstück zum Threadgate für Quote-Posts. app.bsky.feed.postgate ist ein „Record defining interaction rules for a post“, und es folgt derselben Platzierungsregel: Sein rkey „must match the record key of the post, and that record must be in the same repository.“

FeldTypPflichtBeschreibung im Lexicon
postat-uriJa„Reference (AT-URI) to the post record.“
createdAtdatetimeJaKeine
embeddingRulesArray, max. 5Nein„List of rules defining who can embed this post.“
detachedEmbeddingUrisArray aus at-uri, max. 50Nein„List of AT-URIs embedding this post that the author has detached from.“

embeddingRules hat heute einen einzigen Regeltyp, app.bsky.feed.postgate#disableRule, beschrieben als „Disables embedding of this post.“ Das ist der Schalter hinter dem Abschalten von Quote-Posts.

Beachte, dass die Standardwerte des Postgates von denen des Threadgates abweichen. Für embeddingRules gilt: „If value is an empty array or is undefined, no particular rules apply and anyone can embed.“ Ein leeres Array sperrt in einem Threadgate die Antworten, lässt in einem Postgate aber Zitate offen. Um Zitate zu blockieren, brauchst du eine ausdrückliche disableRule.

Das Postgate unterscheidet sich auch im Geltungsbereich. Es muss zu „the record key of the post“ passen, nicht zum Root des Threads, also kann jeder Post, auch eine Antwort, sein eigenes Postgate tragen.

detachedEmbeddingUris hält die Zitate fest, von denen du dich schon gelöst hast. Blueskys Ankündigung zu 1.90 beschreibt es: „you can detach your original post from someone's quote post“ und „Like blocks, quote post removals are public data.“ Das Array fasst 50 URIs.

Woran erkennt ein Client, dass ein Post gesperrt ist?

An der Post-Ansicht, nicht durch Abrufen der Records. app.bsky.feed.defs#postView enthält ein Feld threadgate, das den Record zusammen mit den referenzierten Listen zurückgibt. Der Viewer-State für das angemeldete Konto ergänzt zwei Booleans, replyDisabled und embeddingDisabled, mit denen ein Client die Antwort- und Zitat-Buttons für diese Person ausgrauen kann.

Ein Scheduling-Tool hat einen zusätzlichen Schritt. Das Threadgate ist ein zweiter Record, also bedeutet ein geplanter Post mit Antwortkontrollen zwei Schreibvorgänge: den Post, dann das Gate unter demselben rkey. Die Notiz dazu, wie du Bluesky-Posts planst, behandelt die Posting-Seite, und beide Schreibvorgänge zählen gegen die Limits aus der Notiz zum Bluesky API Rate Limit.

Einen Post mit Antwortkontrollen veröffentlichen
1
Post schreiben. Den Post-Record anlegen und seine AT-URI behalten.
2
rkey übernehmen. Er ist das letzte Segment der AT-URI des Posts.
3
Threadgate schreiben. Gleiches Repository, Collection app.bsky.feed.threadgate, gleicher rkey.
4
Postgate ergänzen, wenn Zitate aus sein sollen. Ein eigener Record mit dem rkey des Posts und einer disableRule.
Jedes Gate ist ein eigener Schreibvorgang zusätzlich zum Post.

Häufig gestellte Fragen

Wie verhindere ich über die API, dass jemand auf einen Bluesky-Post antwortet?

Erstelle einen app.bsky.feed.threadgate-Record mit dem rkey des Posts und "allow": []. Das Lexicon sagt „If value is an empty array, no one can reply.“

Kann ein Bluesky-Threadgate nur meinen Followern das Antworten erlauben?

Ja. Füge app.bsky.feed.threadgate#followerRule zu allow hinzu. Bluesky definiert die Regel als „Allow replies from actors following you.“

Wie viele Regeln kann ein Threadgate enthalten?

Fünf. Das Array allow hat im Lexicon eine maxLength von 5.

Kann ich die Antwortkontrollen ändern, nachdem ein Post veröffentlicht ist?

Ja. Das Threadgate ist ein separater Record, du kannst es also erstellen, aktualisieren oder löschen, ohne den Post selbst anzufassen.

Wie schalte ich Quote-Posts auf Bluesky über die API ab?

Erstelle einen app.bsky.feed.postgate-Record mit dem rkey des Posts und füge app.bsky.feed.postgate#disableRule zu embeddingRules hinzu. Ein leeres Array blockiert keine Zitate.

Sind versteckte Antworten privat?

Nein. Bluesky sagt, versteckte Antworten und die Information, welche Posts der Autor versteckt hat, „are still public data.“ Sie stehen im Array hiddenReplies des Threadgates, das jeder lesen kann.

AdaptlyPost
AdaptlyPost

Jetzt 7 Tage kostenlos testen

Plattformübergreifende Analysen

Sozialer Posteingang

KI-gestützter Assistent

Wer kann Antworten in einem Bluesky-Thread verstecken?

Nur der Ersteller des Threads kann Antworten verstecken, so steht es in Blueskys Ankündigung zu Version 1.90. Die URIs der versteckten Antworten stehen im Array hiddenReplies des Threadgates, bis zu 300. Sie liegen hinter einem Bildschirm "Hidden replies" und bleiben dort erreichbar.

Schaltet ein leeres embeddingRules-Array Quote-Posts ab?

Das tut es nicht. In einem Postgate bedeutet ein leeres oder fehlendes embeddingRules, dass keine besonderen Regeln gelten und jeder den Post einbetten darf. Um Zitate zu blockieren, brauchst du app.bsky.feed.postgate#disableRule.

Wie löse ich einen Quote-Post von meinem Original-Post auf Bluesky?

Trage die AT-URI des Quote-Posts in das Array detachedEmbeddingUris des Postgates deines Posts ein. Das Array fasst bis zu 50 URIs. Bluesky weist darauf hin, dass entfernte Quote-Posts wie Blocks öffentliche Daten sind.

Kann ein Threadgate mehrere allow-Regeln kombinieren?

Die Regeln addieren sich. Jede Regel in allow öffnet die Antworten für eine weitere Gruppe, also können erwähnte Nutzer, gefolgte Nutzer und eine Liste im selben Array stehen. Das Array nimmt bis zu 5 Regeln auf, und listRule braucht die AT-URI eines app.bsky.graph.list-Records.

War dieser Artikel hilfreich?

Teilen Sie uns Ihre Meinung mit!

Sieh uns öfter bei Google

Ein Klick macht AdaptlyPost zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in deinen Top-Meldungen, im KI-Modus und in den KI-Übersichten.

Bevor Sie gehen...

AdaptlyPost

AdaptlyPost

Planen Sie Ihre Inhalte für alle Plattformen

Verwalten Sie alle Ihre Social-Media-Konten an einem Ort mit AdaptlyPost.

Plattformübergreifende Analysen

Sozialer Posteingang

KI-gestützter Assistent

Verwandte Glossarbegriffe

Verwandte Artikel