ラベル

モデレーションラベルに関する全て

ラベルとは

Atprotoのモデレーションは、以下を含む複数のスタッカブルなシステムで構成されています。

  1. APIからコンテンツをフィルタリングする公開停止措置(takedown)
  2. モデレーションサービスによってコンテンツに紐付けられるラベル
  3. ミュートやブロックなどのユーザーコントロール

クライアントアプリケーションを構築する開発者は、ラベルとユーザーコントロールの適用方法を理解する必要があります。

ラベルは、ATエコシステム内のアカウントまたはコンテンツに関するメタデータ形式です。ラベルはモデレーションサービスによって公開され、アプリケーションにハードコードされているか、ユーザーによって選択されます。これらはレスポンスのlabelsフィールドでレコードに付与されます。

ラベルは以下の情報と共に公開されます。

{
  /** このラベルを作成したアクターのDID */
  src: string
  /** このラベルが適用されるレコード、リポジトリ(アカウント)、またはその他のリソースのAT URI */
  uri: string
  /** オプション:このラベルが適用される'uri'リソースのバージョンを指定するCID */
  cid?: string
  /** このラベルの値または種類を表す短い文字列名 */
  val: string
  /** trueの場合、これは以前のラベルを取り消す否定ラベル */
  neg?: boolean
  /** このラベルが作成されたときのタイムスタンプ */
  cts: string
}

ラベル値

ラベルのはその動作を決定します。ラベル値の例としては、porngorespamがあります。

ラベル値は文字列です。現在、小文字のa-zまたはダッシュ文字のみ(^[a-z-]+$)である必要があります。!で始まるものもいくつかありますが、グローバルラベル値でのみ使用できます。

ラベル値はその定義によって解釈されます。定義には以下の属性が含まれます。

  • blurs属性はcontentmedia、またはnoneになりえます
  • severity属性はalertinform、またはnoneになりえます
  • defaultSetting属性はhidewarn、またはignoreになりえます
  • adultOnly属性はブール値です

他にも定義属性がありますが、グローバルラベル値にのみ使用されます。

グローバルラベル値

プロトコルで定義されているいくつかのラベル値があります。

  • !hideはクリックできない汎用警告をコンテンツに置き、一覧からコンテンツをフィルタリングします。ユーザー設定の影響を受けません。
  • !no-unauthenticatedはラベルを尊重するアプリケーションにおいて、ログインしていない利用者からコンテンツをアクセス不可にします。
  • pornは画像に警告を置き、ユーザーが18歳以上かつアダルトコンテンツを有効にしている場合にのみクリックできます。
  • sexualpornと同じ挙動ですが、それほど過激ではない性的コンテンツに使われることを目的としています。
  • graphic-mediapornと同じ挙動ですが、暴力/流血のためのものです。
  • nudityは画像に警告を置きますが、18歳以上専用ではなく、デフォルトでは無視されます。

グローバルラベル値が存在する理由は2つあります。

1番目の理由は、グローバルに定義されているラベル値のみがセルフラベルとして使用できる(つまり、ラベラーではないユーザーによって設定される)からです。porn、sexual、gore、nudity、および!no-unauthenticatedラベルはこの理由でグローバルになっています。

2番目の理由は、「設定不可能」や「非ログインユーザーにのみ適用」などの特別な動作をカスタムラベルには規定できないからです。!hide、!warn、および!no-unauthenticatedラベルはこの理由でグローバルになっています。

カスタムラベル値

ラベラーは独自のラベル値を定義できます。すべてのラベラーは固有のラベル値定義の名前空間を持ちます。カスタム定義は、定義したラベラーにおけるすべてのグローバルラベルの定義を上書きできます。ただし、!で始まるものは予約されており、上書きできません。

2つの挙動属性(blursseverity)があり、それぞれ3つの値を持っているため、カスタムラベル値には9つパターンの挙動があります。

blursseverity説明
contentalertコンテンツを非表示にして、表示時に「危険」警告ラベルをコンテンツに置きます
contentinformコンテンツを非表示にして、表示時に「中立」情報ラベルをコンテンツに置きます
contentnoneコンテンツを非表示にします
mediaalertコンテンツ内の画像を非表示にして、表示時に「危険」警告ラベルをコンテンツに置きます
mediainformコンテンツ内の画像を非表示にして、表示時に「中立」情報ラベルをコンテンツに置きます
medianoneコンテンツ内の画像を非表示にします
nonealert「危険」警告ラベルをコンテンツに置きます
noneinform「中立」情報ラベルをコンテンツに置きます
nonenone視覚的効果なし

使うかもしれないラベルの定義例

  • ハラスメント:blurs=content + severity=alert
  • 蜘蛛注意:blurs=media + severity=alert
  • 誤情報:blurs=none + severity=alert
  • 認証済ユーザー:blurs=none + severity=inform
  • キュレーション優先度低:blurs=none + severity=none

defaultSettingは、ユーザーが最初にラベラーを登録するときにラベルがどのように設定されるかを規定します。

adultOnlyは、アダルトコンテンツが無効の場合、ラベルを設定可能にするべきかを規定します。

ラベル設定

ユーザーは、ラベラーからの各ラベルを非表示(hide)、警告(warn)、または無視(ignore)することを選択できます。非表示と警告は基本的に似ていますが、非表示はラベル付きコンテンツをフィードや一覧表示からフィルタリングします。無視はラベルを無視するだけです。環境設定でアダルトコンテンツが有効になっていない場合、挙動は上書き不可で非表示を強制する必要があります。

詳細については、ラベル仕様を参照してください。

関連・参考資料