本文へ移動
Xアルゴリズム解体新書

リファレンス

全21フィルタ

スコアリング前に18個、選抜後に3個。逐次実行なので、1つでも引っかかった時点で消えます。点数は計算されず、通知も来ません。

スコア前
18個
選抜後
3個
フォローが免除にならない
17

21 / 21

#フィルタ
01
DropDuplicatesFilterスコア前

複数の候補ソースから同じ tweet_id が重複して入ってきたとき、先に来た1件だけを残して残りを落とす。

drop_duplicates_filter.rs:20

02
CoreDataHydrationFilterスコア前

author_id が 0 の候補、つまり本文と著者情報の取得(ハイドレーション)に失敗した候補を落とす。

core_data_hydration_filter.rs:13

03
AgeFilterスコア前

投稿から48時間を超えた候補。加えて tweet_id から生成時刻を復元できなかった候補も落とす(判定不能なら残さない fail-closed)。

48時間(MAX_POST_AGE = 48*60*60 / params/config.rs:36)

age_filter.rs:19

04
SelfTweetFilterスコア前

閲覧者自身が書いた投稿(author_id が閲覧者の user_id と一致するもの)。

self_tweet_filter.rs:16

05
OONRetweetReplyFilterスコア前フォローで免除

閲覧者がフォローしていない著者(in_network == false)のリポストと返信。加えて、フォロー内外を問わず祖先(返信先の親投稿)が取得できていない返信も落とす。

oon_retweet_reply_filter.rs:16

06
OONNsfwSimclustersFilterスコア前フォローで免除

SimClusters 経由で来た候補(served_type == ForYouSimclusters)のうち、閲覧者のフォロー外かつ著者が NSFW 判定になっているものを落とす。3条件のANDなので、どれか1つでも外れれば残る。

SimClustersソース有効時のみ発動(EnableSimclustersSource 既定 true / params/param.rs:48-53)

oon_nsfw_simclusters_filter.rs:19

07
RetweetDeduplicationFilterスコア前

同じ元投稿を指すリポストが複数あるとき、先に来た1件だけを残す。判定キーは retweeted_tweet_id(無ければ tweet_id)なので、元投稿そのものとそのリポストも同一扱いで重複になる。

retweet_deduplication_filter.rs:20

08
IneligibleSubscriptionFilterスコア前

サブスク限定投稿(subscription_author_id が付いた候補)を、その著者に課金購読していない閲覧者から落とす。

ineligible_subscription_filter.rs:24

09
PreviouslySeenPostsFilterスコア前

既読と判定された候補。判定対象は tweet_id・retweeted_tweet_id・in_reply_to_tweet_id の3つで、どれか1つでも既読ID集合か Bloom フィルタに当たれば落とす。

Bloomフィルタは確率的データ構造で偽陽性(未読を既読と誤判定)あり

previously_seen_posts_filter.rs:24

10
PreviouslySeenPostsBackupFilterスコア前

表示済みID(impressed_post_ids)に一致した候補。#9 と同じく tweet_id・retweeted_tweet_id・in_reply_to_tweet_id の3つを見る。impressed_post_ids が空なら何も落とさない。

previously_seen_posts_backup_filter.rs:26

11
PreviouslyServedPostsFilterスコア前

直近に配信済みのIDに一致した候補。これも tweet_id・retweeted_tweet_id・in_reply_to_tweet_id の3つを見る。

直近10分・100件(ExcludeServedTweetIdsDuration = 10分、ExcludeServedTweetIdsNumber = 100件 / params/param.rs:1071-1082)。既定で全リクエストに適用(EnableServedFilterAllRequests = true / params/param.rs:970-975)

previously_served_posts_filter.rs:28

12
MutedKeywordFilterスコア前

閲覧者が設定したミュートワードが、投稿の本文(tweet_text)に一致した候補。見るのは本文だけで、引用元本文・リポスト元本文・プロフィールは対象外。マッチは大小文字・アクセント・句読点に依存せず、複数語は連続フレーズ一致が必要。

muted_keyword_filter.rs:46

13
AuthorSocialgraphFilterスコア前

次の6条件のOR(1つでも該当すれば落とす)。①閲覧者があなたをミュート ②閲覧者があなたをブロック ③あなたが閲覧者をブロック ④あなたの引用先が閲覧者をブロック ⑤閲覧者があなたの引用先をブロック ⑥閲覧者があなたのリポスト元をブロック。

author_socialgraph_filter.rs:45

14
Brazil2026ElectionFilterスコア前フォローで免除

ハードコードされた665アカウントが、著者・リポスト元・引用先・祖先ユーザーの4経路のいずれかに現れた候補。閲覧者がそのアカウントをフォローしている場合は対象外になる。

665アカウント(BRAZIL_2026_ELECTION_USER_IDS、len() == 665 をテストで固定 / home-mixer/filters/brazil_2026_election_filter.rs:1540)。kill switch となるパラメータは存在せず、国コードによるゲートもリポジトリ内に実装なし

brazil_2026_election_filter.rs:1363

15
VideoFilterスコア前既定オフ

動画付きの投稿(min_video_duration_ms が設定されている候補)。ただしリクエストが明示的に動画除外(exclude_videos)を求めたときだけ発動する。

既定オフ(query.exclude_videos が true のときのみ有効)

video_filter.rs:9

16
TopicIdsFilterスコア前

トピック指定リクエストのとき、指定トピック(およびカテゴリ・スーパートピックへの展開)に該当しない候補。加えて、除外トピック指定に一致した候補。トピック指定も除外指定も無いリクエストでは発動しない。

トピック要求または除外トピック指定があるリクエストでのみ有効

topic_ids_filter.rs:15

17
NewUserMinEngagementFilterスコア前既定オフフォローで免除

新規ユーザー(アカウント作成から一定時間内)または復帰ユーザー(復帰から一定時間内)が閲覧者のとき、フォロー外かつエンゲージメント指標が閾値未満の候補。フォロー内(in_network が false 以外)は無条件で残す。

既定オフ(EnableNewUserMinEngagementFilter = false / params/param.rs:840-845)。有効時の既定は対象窓1800秒、指標 fav、閾値 0.0、比率換算オフ

new_user_min_engagement_filter.rs:65

18
InventoryHoldoutFilterスコア前既定オフ

post_id と閲覧者IDのハッシュで候補を0〜99のバケットに割り当て、種別(オリジナル/返信/リポスト)ごとに指定された割合未満のバケットに入った候補を落とす。内容は一切見ない。

既定オフ(EnableInventoryHoldout = false)。オリジナル/返信/リポストの割合はすべて0%(params/param.rs:977-1000)

inventory_holdout_filter.rs:52

19
VFFilter選抜後

Visibility Filtering が Drop と答えた投稿。安全性判定(SafetyResult)以外の理由が付いた投稿も無条件で落とす。

vf_filter.rs:22

20
AncillaryVFFilter選抜後

祖先(返信先の親投稿)・引用元・リポスト元のいずれかが Visibility Filtering で Drop された投稿。tombstone 扱いの祖先は判定から除外される。

ancillary_vf_filter.rs:15

21
DedupConversationFilter選抜後

同一会話に属する候補のうち、最高スコアの1件を除く全部。会話IDは祖先IDの最小値(無ければ元投稿ID)。スコアが同値なら先に来た候補が残る。

dedup_conversation_filter.rs:23