
뉴질랜드도 16세 미만 소셜 금지로 간다 — 호주의 6개월 성적표는 이미 나왔다
뉴질랜드 온라인안전법안이 인스타그램·틱톡·스냅챗·페이스북에 16세 이상 확인을 요구한다. 먼저 시행한 호주의 6개월 결과는 대부분의 지표에서 효과를 확인하지 못했다.
X 알고리즘 저장소가 열렸다. 2023년에 한 번 공개하고 방치했던 그 코드가 아니라, 지금 For You 피드를 실제로 돌리는 코드다. 커밋은 8월 25일까지 들어와 있고, 8월 13일과 14일 두 번의 업데이트 노트가 README에 그대로 붙어 있다.
앞서 우리는 X 알고리즘의 가중치가 공개됐다에서 외신 보도를 정리했다. 이번에는 저장소를 직접 열어 읽었다. 그 결과 두 가지가 분명해졌다. 하나는 가중치 숫자를 배수로 읽은 해석이 X 스스로 코드에 주석을 달아 부정할 만큼 잘못됐다는 것이고, 다른 하나는 마케터가 실제로 손댈 수 있는 지점이 가중치가 아니라 그 앞뒤에 있다는 것이다.
xai-org/x-algorithm은 Apache 2.0 라이선스로 공개돼 있다. 크게 두 갈래다. 요청이 들어온 순간 피드를 조립하는 요청 경로, 그리고 게시물과 계정에 라벨을 붙여두는 라벨링 경로다.
요청 경로의 중심은 home-mixer다. Rust로 짜였고, 후보를 모아 거르고 점수를 매겨 자르는 파이프라인 전체가 여기 있다. 랭킹 모델 Phoenix는 JAX 학습 코드와 Rust 서빙 엔진이 함께 들어왔다. 이번 릴리스에서 X는 예제 모델이 아니라 프로덕션 구현 자체라고 못 박았다. 합성 데이터 생성기까지 포함돼 있어서, GPU 한 장으로 축소판 모델을 끝까지 학습시켜 볼 수도 있다.
라벨링 경로는 8월 13일 업데이트에서 통째로 들어왔다. 노출 여부를 결정하는 visibility-filtering, 그 판단의 재료인 라벨을 만드는 시스템들(grox, agatha, bdsm, user-cred-v2, scarecrow, botmaker, abuse-enforcement-service), 그리고 이미지·영상 분류 모델까지다.
8월 14일 노트는 성격이 다르다. 새 기능이 아니라 정정이다. 공개 직후 퍼진 해석이 틀렸다며, X는 코드 두 곳에 주석을 달았다. 사람과 LLM이 읽고 오해하지 않도록.
For You를 한 번 당기면 아래 순서가 돈다.
세 곳에서 동시에 긁어온다.
여기에 별도 소스 800건까지 더해진다. 대략 3,000건 안팎이 출발점이다.
점수를 매기기 전에 17개 필터가 순서대로 돈다. 이 단계에서 걸리면 아무리 좋은 콘텐츠여도 점수 계산 자체가 안 된다.
| 필터 | 걸러내는 것 |
|---|---|
| DropDuplicatesFilter | 여러 소스에서 중복으로 올라온 같은 글 |
| CoreDataHydrationFilter | 본문·메타데이터 로딩에 실패한 글 |
| AgeFilter | 48시간이 지난 글 |
| SelfTweetFilter | 본인이 쓴 글 |
| OONRetweetReplyFilter | 비팔로우 계정의 리포스트와 답글 |
| OONNsfwSimclustersFilter | 성인물 플래그 계정의 SimClusters 후보 |
| RetweetDeduplicationFilter | 같은 글의 반복 리포스트 |
| IneligibleSubscriptionFilter | 접근 권한 없는 구독자 전용 글 |
| PreviouslySeenPostsFilter | 이미 노출된 글 |
| PreviouslySeenPostsBackupFilter | 두 번째 노출 기록에 남은 글 |
| PreviouslyServedPostsFilter | 같은 세션에서 이미 내보낸 글 |
| MutedKeywordFilter | 뮤트 키워드에 걸린 글 |
| AuthorSocialgraphFilter | 차단·뮤트한 계정의 글 |
| VideoFilter | 영상 제외 요청 시 영상 게시물 |
| TopicIdsFilter | 요청 토픽 밖의 글, 제외 토픽의 글 |
| NewUserMinEngagementFilter | 신규 계정에게 보여줄 참여도 미달 비팔로우 글 |
| InventoryHoldoutFilter | 실험용으로 결정적 규칙에 따라 빼는 일정 비율 |
세 번째 줄이 중요하다. 48시간이다. 그 이후에는 점수가 얼마든 후보에 들어오지 못한다.
살아남은 후보에 Phoenix가 행동별 확률을 매긴다. 좋아요, 답글, 리포스트, 인용, 공유, DM 공유, 링크 복사 공유, 각종 클릭, 체류, 영상 시청, 작성자 팔로우, 그리고 관심없음·뮤트·차단·신고 같은 부정 행동까지다.
RankingScorer가 이걸 하나로 합친다.
최종 점수 = Σ (가중치 × P(행동))
정렬해서 상위 50건을 남긴다. 그다음 visibility-filtering에 게시물마다 물어본다. 여기서 드롭 판정이 난 글이 빠진다. 최종 응답 크기는 35건이다. 3,000건에서 출발해 35건이 남는다.
랭킹된 게시물에 모델이 매기지 않는 것들이 섞인다. 광고, 팔로우 추천, 프롬프트다. 팔로우 추천은 6번째 자리처럼 고정 위치에 들어가고, 기본 광고 블렌더는 광고 인접성을 맞추려고 게시물 순서를 한 번 더 손댄다.
home-mixer/params/param.rs에 적힌 값 그대로다.
| 행동 | 가중치 |
|---|---|
| 링크 복사 공유 | 20.0 |
| 답글 | 5.0 |
| 인용 | 5.0 |
| DM 공유 | 5.0 |
| 작성자 팔로우 | 4.0 |
| 공유 | 2.0 |
| 리포스트 | 1.0 |
| 게시물 클릭 | 0.4 |
| 링크 열기 | 0.2 |
| 좋아요 | 0.5 |
| 영상 열기 | 0.07 |
| 사진 확대 | 0.05 |
| 체류 | 0.05 |
| 체류 시간(연속값) | 0.004 |
| 프로필 클릭 | 0.0 |
| 관심없음 | −43.2 |
| 작성자 차단 | −31.2 |
| 작성자 뮤트 | −58.8 |
| 신고 | −234.0 |
| 체류 안 함 | −0.02 |
여기에 맞팔 답글 부스트 +15.0이 별도로 붙는다. 뒤에서 다시 다룬다.
링크 복사 공유 20.0을 좋아요 0.5로 나누면 40이 나온다. 신고 −234를 0.5로 나누면 468이 나온다. 그래서 링크 복사 한 번이 좋아요 40개, 신고 하나가 좋아요 468개를 상쇄한다는 말이 돌았다.
X가 8월 14일 코드에 붙인 주석은 이 계산을 정면으로 부정한다.
가중치는 예측 확률에 곱해진다. 실제 카운트에 곱해지는 게 아니다. 점수 식이 Σ(가중치 × P(행동))이지 Σ(가중치 × 행동 횟수)가 아니라는 뜻이다. 곱해지는 건 이 사람이 이 글을 신고할 확률이지, 이 글이 받은 신고 수가 아니다.
그러면 왜 신고 가중치만 −234로 큰가. 신고가 일어날 기본 확률이 좋아요보다 1,000배 이상 낮기 때문이다. 확률이 극단적으로 작으니 가중치를 크게 잡아야 최종 점수에 영향이라도 준다. 큰 숫자는 중요도가 아니라 스케일 보정이다.
여기서 하나 더 따라 나온다. 조직적인 대량 신고·차단으로 특정 계정 도달을 떨어뜨리는 시나리오 말이다. X는 코드 주석에서 이걸 세 가지 이유로 부정한다.
첫째, 추천은 개인화돼 있다. 악의적 계정들의 신고는 주로 그들과 비슷한 사용자의 추천에 반영된다. 모든 사람에게 같은 크기로 작동하지 않는다.
둘째, 랭킹에 반영되려면 그 행동이 홈 타임라인에 노출된 글 위에서 일어나야 한다. 단톡방에 링크를 뿌려 직접 들어가서 신고하는 방식은 랭킹에 영향이 없다.
셋째, 특정 글을 자기 타임라인에 재현 가능하게 띄우는 방법이 사용자에게는 없다.
가중합이 끝이 아니다. 세 가지가 순서대로 곱해진다.
같은 작성자의 글이 여러 건 후보에 있으면, 두 번째부터 점수가 깎인다. 공식은 이렇다.
배수 = (1 − 하한) × 감쇠^순번 + 하한
감쇠 = 0.5, 하한 = 0.25
계산하면 첫 글 1.0, 두 번째 0.625, 세 번째 0.4375, 네 번째 0.34375로 떨어지고 0.25에서 멈춘다. 한 번의 피드 조립 안에서 같은 계정 글을 네 개 밀어 넣어도 네 번째는 첫 번째의 3분의 1 남짓으로 평가된다는 뜻이다.
팔로우하지 않은 계정의 글은 점수에 0.75가 곱해진다. 토픽 기반 요청이면 0.5다. 팔로우한 계정이라도 그 계정의 답글과 리포스트에는 같은 할인이 붙는다.
여기 눈에 띄는 상수가 하나 있다. 계정 생성 후 일정 기간이 안 지났고 팔로우가 5개 이상인 신규 사용자에게는 이 계수가 0.00001로 내려간다. 사실상 0이다. 갓 가입한 사용자의 피드에는 팔로우한 계정 글만 들어간다고 보면 된다.
노출이 적은 작성자의 글은 위로 끌어올린다. 조건이 코드에 박혀 있다. 노출 1,000회 미만, 팔로워 1,000명 이하, 게시 후 24시간 이내. 목표 슬롯은 15~16번째다. 다만 부스트로 갈 수 있는 위치는 전체의 85%까지로 제한된다.
그다음 VMRanker가 별도 서비스를 불러 한 번 더 순서를 바꾼다. 임베딩 기반 DPP로, 점수를 조금 포기하는 대신 옆자리 글끼리 덜 비슷하게 만든다.
저장소에는 알고리즘 변경 하나를 diff로 따라가는 문서가 들어 있다. 7월에 화제가 됐던 상호 팔로우 부스트다.
7월 10일, X는 A/B 테스트를 시작했다. 소수 사용자에게 부스트 값 5, 10, 15, 20을 무작위 배정했다. 나머지는 0이었다. 7월 13일, 결과가 좋아 값 20을 다수 사용자에게 적용했다. 7월 24일, 월드컵 기간에 팔로우하지 않은 계정 글이 안 보인다는 피드백이 나오자 15로 낮췄다. 지금 코드에 적힌 기본값이 15다.
작동 방식은 단순하다. 상호 팔로우 관계인 작성자의 글이면 답글 가중치에 15를 더한다. 5.0이 20.0이 된다. 네 배다.
조건이 있다. 코드의 bidirectional_boost_eligible은 세 가지를 모두 요구한다. 답글이 아닐 것, 리포스트가 아닐 것, 상호 팔로우 작성자일 것. 즉 맞팔 상대의 원본 게시물에만 붙는다. 같은 사람이 쓴 답글이나 리포스트에는 붙지 않는다.
이 저장소가 분명히 하는 설계 원칙이 있다. 랭킹은 순서를 정하고, 가시성 필터는 보여줄지 말지를 정한다. 서로 다른 서비스, 다른 입력, 다른 규칙이다.
visibility-filtering은 게시물과 사용자 조합마다 셋 중 하나를 답한다. 허용, 인터스티셜(가림막을 탭해서 보는 상태), 드롭이다. 규칙은 순서대로 평가되고, 처음으로 드롭이 나오면 거기서 끝난다.
핵심은 여기다. 규칙 중 일부는 팔로우하지 않은 계정의 추천일 때만 적용되고, 그 규칙들은 드롭만 할 수 있다. 재현율을 높게 잡아 걸러낸 스팸 같은 것들이다.
같은 글이 팔로워에게는 정상 노출되고 비팔로워에게는 추천되지 않는다. 흔히 말하는 섀도밴의 실체에 가장 가까운 구간이 이것이고, 규칙 이름도 그대로 드러나 있다. RecommendationsOnlyRule, AbusiveHighRecallRule, DoNotAmplifyNonFollowerRule, MaliciousUrlOonDropRule 같은 것들이다.
계정 단위 지표에서는 이게 이상하게 보인다. 팔로워 반응은 평소와 같은데 노출만 주저앉는다. 도달이 줄었는데 참여율은 유지되는 패턴이면 이 구간을 의심할 근거가 된다.
가시성 규칙이 읽는 라벨은 요청 경로 밖에서 계속 만들어진다.
agatha의 축이 시사적이다. 차단과 신고의 절대 수가 아니라 좋아요 대비 비율을 본다. 반응이 큰 계정이 신고도 같이 받는 건 정상 범위로 처리된다는 뜻이다.
X는 일부를 뺐다고 명시했다. Grox의 LLM 프롬프트 파일, 그리고 일부 botmaker 규칙이다. 이유는 어뷰징이다. 규칙 전문이 공개되면 우회 설계가 가능해진다.
대신 Under the Hood라는 도구를 시험 운영 중이다. 자기 계정과 게시물에 붙은 노출 제한 라벨을 집계 통계로 보여준다. X가 도달 제한 코드를 공개했다에서 다룬 그 도구다. 코드로 규칙을 읽고 도구로 내 계정에 붙은 라벨을 확인하는 조합이, X가 제시한 투명성 모델이다.
한 가지 더 짚을 만한 것이 있다. 8월 14일 노트에 브라질 2026년 선거 필터가 들어왔다. 브라질 선거법에 따라 선거법원에 신고된 계정의 글을 For You에서 제외하되, 사용자가 직접 팔로우한 경우는 예외로 두는 규칙이다. 계정 목록은 8월 25일에 갱신됐다. 국가별 법률 대응이 코드에 어떻게 들어오는지 그대로 보인다.
48시간이 전부다. AgeFilter가 그 이후를 잘라낸다. 롱테일로 계속 도달되는 콘텐츠라는 개념이 For You에는 없다. 발행 시점과 초기 몇 시간이 사실상 수명 전체다.
하루 게시 수를 늘려도 비례하지 않는다. 작성자 다양성 감쇠 때문에 같은 피드 조립 안에서 네 번째 글은 첫 번째의 34% 수준으로 평가된다. 다섯 개를 몰아 올리는 것보다 두세 개를 시간대를 벌려 올리는 쪽이 산술적으로 맞다.
맞팔 관계가 가장 큰 단일 레버다. 상호 팔로우 작성자의 원본 게시물은 답글 가중치가 4배가 된다. 팔로워 수를 늘리는 것과 상호 팔로우를 만드는 것은 알고리즘상 다른 일이다. 업계 계정, 파트너, 고객사 담당자와의 맞팔은 숫자상으로 의미가 있다.
리포스트와 답글로는 부스트를 못 받는다. 부스트 조건이 원본 게시물로 한정돼 있고, 비팔로우 계정의 답글·리포스트는 아예 사전 필터에서 잘린다. 채널 전략이 리포스트 중심이면 구조적으로 불리하다.
좋아요를 KPI에서 내리되 배수 계산은 하지 말자. 좋아요 0.5는 실제로 낮다. 하지만 링크 복사 40개가 좋아요 1,600개라는 식의 환산은 성립하지 않는다. 방향만 읽으면 된다. 밖으로 퍼가고 싶게 만드는 콘텐츠, 답글을 부르는 콘텐츠가 더 크게 평가된다.
신규 계정 대상 캠페인은 팔로우가 선행돼야 한다. 갓 가입한 사용자의 OON 계수는 0.00001이다. 그들의 피드에 들어가려면 추천이 아니라 팔로우가 필요하다.
도달이 떨어졌는데 참여율은 그대로면 라벨을 의심한다. 랭킹 문제가 아니라 가시성 필터 문제일 수 있다. Under the Hood에서 계정에 붙은 라벨을 먼저 확인하는 게 콘텐츠를 갈아엎는 것보다 빠르다.
마지막으로, X는 트래픽 10% 이상 규모의 실험은 저장소에서 보이게 하겠다고 했고, 크론으로 프로덕션 기본값을 코드에 반영하고 있다고 밝혔다. 파라미터 값이 바뀌면 diff로 남는다. 7월의 맞팔 부스트가 20에서 15로 내려간 것도 그렇게 확인된다. X 관련 도구를 다루는 다른 축으로는 X가 광고 MCP 서버를 열었다를 함께 보면 된다. 발표를 기다리는 대신 저장소를 구독해 두면, 다음 변경은 기사보다 먼저 읽을 수 있다.
아니다. 가중치는 행동 횟수가 아니라 예측 확률에 곱해진다. 신고가 일어날 기본 확률이 좋아요보다 1,000배 이상 낮기 때문에 가중치를 크게 잡아야 점수에 영향을 준다. X가 2026년 8월 14일 코드에 주석을 달아 이 배수 해석을 직접 부정했다.
나오지 않는다. AgeFilter가 점수를 매기기 전 단계에서 48시간 초과 게시물을 후보에서 제거한다. 점수가 아무리 높아도 계산 대상에 들어가지 않는다. 다만 이는 For You 피드에 한정된 규칙이고, 검색이나 프로필 방문에는 적용되지 않는다.
상호 팔로우 관계인 작성자의 원본 게시물에만 적용된다. 코드의 조건은 답글이 아닐 것, 리포스트가 아닐 것, 상호 팔로우 작성자일 것 세 가지를 모두 요구한다. 조건을 만족하면 답글 가중치 5.0에 15.0이 더해져 20.0이 된다.
랭킹이 아니라 가시성 필터를 의심할 근거가 된다. 일부 규칙은 팔로우하지 않은 계정의 추천일 때만 적용되고 드롭만 할 수 있어서, 같은 글이 팔로워에게는 정상 노출되고 비팔로워에게는 추천되지 않는다. Under the Hood 도구에서 계정에 붙은 라벨을 먼저 확인하는 편이 빠르다.
기사에서 본 내용을 우리 사이트에 대입해 보고 싶다면, 무료 진단으로 현재 상태부터 확인해 보세요.
영업일 기준 24시간 안에 담당자가 직접 답변드립니다.

뉴질랜드 온라인안전법안이 인스타그램·틱톡·스냅챗·페이스북에 16세 이상 확인을 요구한다. 먼저 시행한 호주의 6개월 결과는 대부분의 지표에서 효과를 확인하지 못했다.

틱톡이 사망 후 계정을 어떻게 처리할지 이용자가 직접 정하는 설정을 추가했다. 대리인 지정 또는 삭제 중 선택할 수 있다. 옥스퍼드 연구는 2100년 페이스북의 고인 프로필이 49억 개에 이를 수 있다고 봤다.

스레드가 오디오와 동기화된 팟캐스트 자막을 게시물 안에 삽입하는 형식을 테스트 중이다. 미국인 58%가 팟캐스트를 듣고 영상형이 오디오 전용을 넘어선 상황에서 나온 움직임이다.