Przejdź do treści
g Growto

blog, 17.05.2026, 22 min czytania

Jak naprawdę działa algorytm X, analiza 7667 plików kodu.

W 2023 Twitter (dziś X) opublikował kod źródłowy swojego algorytmu rekomendacji. Sklonowałem repo, przeczytałem najważniejsze pliki Scali i Pythona, i wypisałem to, co rzeczywiście liczy się dla Twojego zasięgu w 2026. Bez clickbaitów. Z numerami linii kodu i mnożnikami.

Skrót, 6 rzeczy dla osoby która nie chce czytać 22 min

Co faktycznie jest w środku.

  1. 01 Repo to architektura, nie konfig. 4880 plików Scala, ale wszystkie wagi modelu rankingu mają w kodzie default = 0.0. Realne wartości X ładuje runtime z osobnego systemu feature switches, nie są publiczne. Wagi typu „like = 0.5, retweet = 1.0, reply = 13.5" pochodzą z wycieków i komentarzy inżynierów, nie z tego repo.
  2. 02 Reply engaged by author, mnożnik ~75x. Najsilniejszy pozytywny sygnał. To moment, kiedy autor tweeta odpowiada na Twój komentarz. Algorytm interpretuje to jako „ktoś o autorytecie uznał Twój komentarz za wartościowy", i wystrzeliwuje Twoją widoczność. Najtańsza droga do zasięgu: komentuj cudze, nie publikuj tylko swoje.
  3. 03 Out-of-network handicap 0.75x. Hard-coded w pliku OONTweetScalingScorer.scala. Każdy tweet pokazany komuś, kto Cię nie obserwuje, dostaje mnożnik 0.75, musi być ~33% lepszy niż średnia, żeby pokonać ten handicap. To dlatego ślepe „follow for follow" nie działa, a budowa sieci to gra długoterminowa.
  4. 04 Negatywny feedback to 140 dni karencji. Klasa FeedbackFatigueScorer.scala nakłada mnożnik 0.2x, który liniowo wraca do 1.0x w 4 krokach po 35 dni. Mute / block / raport są jeszcze gorsze. Jeśli publikujesz coś kontrowersyjnego do niedopasowanej audiencji, płacisz cenę przez 4 miesiące.
  5. 05 SimClusters: ~145 000 społeczności. X mapuje wszystkich userów na ~145k klastrów odkrytych algorytmem Metropolis-Hastings na grafie podobieństwa producent-producent. Twoja widoczność zależy nie od „follow grafu" jako całości, tylko od overlapów Twoich klastrów z klastrami odbiorcy.
  6. 06 Wideo < 10s nie liczy się dla rankingu wideo. Klasy PredictedVideoQualityViewScoreFeature i PredictedVideoQualityWatchScoreFeature mają hard-coded gating: tylko wideo dłuższe niż 10 sekund uruchamia te head'y modelu. Krótsze klipy są oceniane wyłącznie na engagement tekstowy.

Kontekst, co zrobiłem

Repo, pliki, narzędzia.

W marcu 2023 Twitter pod presją Elona Muska otworzył kod źródłowy algorytmu For You Timeline. Repo github.com/twitter/the-algorithm zawiera 7667 plików: 4880 Scali, 1043 Javy, 180 Pythona, 30 Rusta, 114 plików Thrift (definicje serwisów RPC). Razem 57 MB skompresowane. Jak na coś, co podejmuje miliardy decyzji rankingowych dziennie, zaskakująco mało.

Sklonowałem to lokalnie, przeczytałem README, RETREIVAL_SIGNALS.md i kluczowe pliki w katalogach home-mixer/ (główny serwis rankingu), src/scala/com/twitter/simclusters_v2/ (community detection) i trust_and_safety_models/. To, co czytasz niżej, to synteza tego, co jest faktycznie w kodzie, nie spekulacja, nie blog post z 2023, nie cytaty z Reddit.

Zastrzeżenie: kod jest ze stanu na ~2023, z lekkim rebrandingiem 2024 („Twitter" na „X", „Tweet" na „Post" w komentarzach i README). Architektura nie zmieniła się drastycznie, X zatrudnia tych samych inżynierów. Wagi modelu pewnie tak. Nie podaję więc konkretnych liczbowych wartości wag, tylko strukturę i mnożniki hard-coded w kodzie.

Architektura, co dzieje się od „request" do „feed"

Z miliarda kandydatów do 50 tweetów.

Każde otwarcie zakładki „For You" uruchamia wieloetapową kaskadę. To kanoniczny pattern systemów rekomendacyjnych, Netflix, YouTube, TikTok robią praktycznie to samo, różnią się tylko ilością heurystyk i specyfiką sygnałów. Etapy:

Request (otwarcie For You)
  │
  ▼
[1] CANDIDATE GENERATION  (~1B tweetów → ~1500 kandydatów)
  ├── search-index (Earlybird) ......... ~50% in-network
  ├── tweet-mixer ...................... out-of-network coordinator
  ├── UTEG (User-Tweet-Entity-Graph) ... GraphJet, in-memory graph traversal
  └── FRS (Follow Recommendation Svc) .. tweety od nowych autorów
  │
  ▼
[2] FEATURE HYDRATION  (~6000 features per kandydat)
  │   Mix sygnałów: SimClusters embeddings, TwHIN, real-graph,
  │   tweepcred PageRank, demograficzne, historia engagementu, czas.
  │
  ▼
[3] HEAVY RANKER  (neural network multi-task, ~15 head'ów)
  │   Przewiduje prawdopodobieństwa każdego typu engagementu:
  │   fav, retweet, reply, dwell, video quality view, share,
  │   bookmark, profile click, negative feedback, ...
  │
  ▼
[4] HEURISTIC RESCORING  (14+ rescorerów po pointwise score)
  ├── OON × 0.75 (handicap dla out-of-network)
  ├── FeedbackFatigue × 0.2-1.0 (140-day decay)
  ├── DiversityDiscount (autor diversity, media cluster diversity)
  ├── GrokSlopRescorer (penalizacja AI slop)
  ├── ImpressedAuthor decay (już Ci to pokazaliśmy → mniej)
  ├── MultimodalEmbedding rerankery
  └── ControlAi rescorers
  │
  ▼
[5] FILTERS  (visibility, dedup, language, NSFW, blocked, muted)
  │   OutOfNetworkCompetitorURLFilter, wycina out-of-network tweety
  │   z linkami do konkurencyjnych platform.
  │
  ▼
[6] MIXING  (z Ads, Who-to-Follow, prompts)
  │
  ▼
Serving (~50 tweetów do widoku)

Dwie rzeczy warto zauważyć. Po pierwsze: 50% kandydatów w For You to in-network (od osób, które obserwujesz), drugie 50% to out-of-network. To projektowy parytet, niezmienny od lat. Po drugie: kaskada 14+ rescorerów po pointwise scoringu to bardzo agresywne podejście, nawet jeśli heavy ranker NN da Twojemu tweetowi wysoki score, każdy z 14 listwise rerankerów ma szansę go obniżyć. Konkretnie, jeden „kara" przez FeedbackFatigue (0.2x) plus OON (0.75x) plus DiversityDiscount (np. 0.5x bo autor już występował w Twoim feedzie tego dnia) daje finalny mnożnik 0.075x, mimo wysokiego predicted score.

Heavy Ranker, 15 head'ów modelu

Co dokładnie X chce, żebyś zrobił.

Heavy Ranker to neural network multi-task. Dla każdego kandydata przewiduje prawdopodobieństwo 15 różnych typów engagementu. Każdy z nich ma osobną wagę (parametr home_mixer_model_weight_*). Finalny score = suma waga × predykcja dla wszystkich head'ów. Pełna lista z pliku PredictedScoreFeature.scala:

Head Co przewiduje Charakter Waga (wyciek 2023)
fav User polubił + 0.5
retweet User retweetnął + 1.0
reply User odpowiedział ++ 13.5
reply_engaged_by_author Autor odpisał na reply +++ ~75
good_click_v2 Klik + dwell > 2 sek na detail + 11.0
good_profile_click Klik profilu autora + engagement + 12.0
bookmark User zapisał do zakładek + ~13
share User udostępnił (link) + ~10
dwell User patrzył > X sek (threshold) + ~0.1
vqv Video quality view (≥10s wideo) + ~0.005
negative_feedback_v2 Mute / block / „See Fewer" - - - -74
report User zgłosił tweet - - - -369

Wagi z wycieków X 2023 (źródło: github.com/twitter/the-algorithm + komentarze inżynierów na HackerNews). W open-source repo wszystkie wagi mają default = 0.0, to oznacza, że X świadomie usunął realne wartości. Po 3 latach mogły się zmienić, ale rząd wielkości pozostaje.

Kluczowy insight: reply_engaged_by_author ma wagę ~75 i jest jednym z dwóch zdarzeń, które wystrzeliwują zasięg dosłownie poza Twoją sieć follow. Jeśli ktoś z dużym kontem odpisze na Twój komentarz pod jego postem, ten cały wątek (włącznie z Twoim komentarzem) zostanie pokazany dziesiątkom tysięcy ludzi, którzy Cię nie obserwują.

To zmienia strategię budowy zasięgu od zera. Tradycyjnie: publikuj dużo, czekaj, buduj followersów. Nowocześnie: znajdź 20-30 dużych kont w Twojej niszy, codziennie zostawiaj przemyślane komentarze w pierwszych 15 minutach od publikacji ich postów. Jeden reply od autora = potencjalnie 100 nowych obserwujących.

Heurystyki, co jest sztywno w kodzie

Cztery reguły, których X nie ukrył.

Wagi modelu rankingu są w configu (więc X może je zmieniać bez deploy). Ale niektóre rzeczy są wpisane na sztywno w kodzie. To one, bo nie podlegają eksperymentom A/B na bieżąco, są najpewniejszą wiedzą o tym, jak działa algorytm.

01, OON Tweet Scaling

Out-of-network handicap = 0.75x.

Plik home-mixer/.../OONTweetScalingScorer.scala:

private val ScaleFactor = 0.75

private def selector(candidate): Boolean = {
  !candidate.features.getOrElse(InNetworkFeature, false) &&
  !candidate.features.getOrElse(IsRetweetFeature, false)
}

// Jeśli selector(candidate) zwraca true, score *= ScaleFactor

Każdy tweet od osoby, której odbiorca nie obserwuje, dostaje mnożnik 0.75 finalnego score. To znaczy: żeby Twój tweet trafił do feedu kogoś, kto Cię nie obserwuje, musi mieć predicted engagement ~33% wyższy niż średni tweet w-sieci. To jest powód, dla którego organic reach na X jest tak trudny: nawet idealnie napisany tweet musi przebić handicap.

02, Feedback Fatigue

140 dni kary za „See Fewer".

Plik home-mixer/.../FeedbackFatigueScorer.scala definiuje:

val DurationForDiscounting = 140.days
private val ScoreMultiplierLowerBound = 0.2
private val ScoreMultiplierUpperBound = 1.0
private val ScoreMultiplierIncrementsCount = 4
// 4 kroki × 35 dni = 140 dni
// startuje od 0.2, kończy na 1.0

Jeśli odbiorca kliknął kiedyś na Twoim tweecie „See Fewer" (lub na Tweecie autora, którego retweetnąłeś, albo na osobie, która polubiła Twój tweet, pełna kaskada), algorytm dyskontuje Twoje przyszłe tweety dla tego odbiorcy: na początku 0.2x, potem liniowo do 1.0x przez 140 dni. To jest persistent memory: pomyłka w komunikacji w styczniu kosztuje Cię zasięg do czerwca. W przeciwieństwie do tego, pozytywny feedback (like, retweet) nie ma tak długiej pamięci.

03, Competitor URL Filter

Linkujesz do konkurenta? Tweet wycięty z OON.

Plik home-mixer/.../OutOfNetworkCompetitorURLFilter.scala:

def hasOutOfNetworkUrlFromCompetitor(
  candidate, competitorUrls
): Boolean = {
  !candidate.features.getOrElse(InNetworkFeature, true) &&
  !candidate.features.getOrElse(IsRetweetFeature, false) &&
  candidate.features
    .getOrElse(TweetUrlsFeature, Seq.empty).toSet
    .intersect(competitorUrls).nonEmpty
}

Lista konkurencyjnych domen (competitorUrls) nie jest publiczna, wczytywana z external config. Powszechnie obserwowane: instagram.com, tiktok.com, youtube.com, threads.net, bsky.app, mastodon.social. Mechanizm jest prosty: jeśli tweet zawiera URL z listy i jest out-of-network (chcesz dotrzeć do osób spoza Twojej sieci) i nie jest retweetem, zostaje całkowicie odfiltrowany z feedu OON. In-network nadal go zobaczą.

04, Wideo < 10s

Krótkie wideo nie wchodzą w ranking wideo.

Klasy PredictedVideoQualityViewScoreFeature i PredictedVideoQualityWatchScoreFeature mają warunek:

override def isEligible(features, query): Boolean = {
  features.getOrElse(HasVideoFeature, false) &&
  (features.getOrElse(VideoDurationMsFeature, None)
    .getOrElse(0) / 1000.0) >= 10
}

Tylko wideo dłuższe niż 10 sekund uruchamia head'y „video quality view" i „video quality watch" modelu rankingu. Krótsze klipy są oceniane wyłącznie na bazie engagementu tekstowego (fav, retweet, reply). Konsekwencja: jeśli zależy Ci na ranking wideo, planuj klipy 12-30 sekund. Pod 10s, tylko jeśli „chwytający" w pierwszej sekundzie i prowokuje reply.

SimClusters, sercem personalizacji

145 000 społeczności, do których jesteś przypisany.

SimClusters to algorytm wykrywania społeczności (community detection) opublikowany przez Twittera w KDD 2020 jako paper akademicki. To jest jeden z najinteligentniejszych komponentów całego systemu, i jednocześnie ten, który najbardziej decyduje o tym, do kogo trafiają Twoje tweety.

Działa tak:

  1. Graf follow jest traktowany jako bipartite: po jednej stronie konsumenci (osoby obserwujące), po drugiej producenci (osoby obserwowane).
  2. Algorytm liczy macierz podobieństwa producent-producent jako cosine similarity wektorów ich obserwatorów. Dwóch producentów jest podobnych, jeśli mają tych samych followersów.
  3. Na tej macierzy uruchamiane jest sampling Metropolis-Hastings (Bayesian inference, jakby ktoś pytał) i wykrywa się ~145 000 spójnych społeczności.
  4. Każdy producent jest „Known For" jedną społecznością (sparse). Każdy konsument ma wektor InterestedIn, w które społeczności klika i polubia.
  5. Każdy tweet zaczyna z pustym wektorem embedding. Każde polubienie dolicza wektor InterestedIn likera do tweet embeddingu. Po godzinie tweet ma „cień" społeczności, w których jest popularny.
  6. Kiedy ktoś otwiera For You, system znajduje top-K tweetów najbliższych jego wektorowi InterestedIn (Approximate Nearest Neighbor w SimClusters ANN).

Co to znaczy w praktyce? Twoja widoczność nie zależy od „follow grafu" jako całości. Zależy od tego, czy społeczności Twoich obserwujących nakładają się ze społecznościami osób, do których chcesz dotrzeć.

Konkretny przykład. Załóżmy, że obserwuje Cię 500 osób. Jeśli to są deweloperzy Astro, marketerzy B2B i copywriterzy, należysz do społeczności „indie hackers / solo studio". Tweet o algorytmie X trafi dobrze. Tweet o gotowaniu, nie, bo Twoi obserwujący nie kliknęli wystarczająco dużo tweetów o gotowaniu, żeby Cię „przypisać" do tej społeczności.

Konsekwencja strategiczna: spójność niszy nie jest tylko brand-buildingiem. To dosłowny sygnał dla algorytmu, w której z 145k społeczności jesteś. Skakanie między tematami rozmywa embedding i obniża widoczność w każdej z nich. Dla profilu B2B (np. założyciel agencji): 80% contentu w jednej niszy, 20% w max 2 powiązanych, to nie copywriting rada, to wniosek z architektury.

Praktyka, 7 zasad wynikających bezpośrednio z kodu

Co konkretnie zrobić, jeśli chcesz zasięg.

01

Komentuj duże konta, nie publikuj wyłącznie swoje.

Reply_engaged_by_author ma wagę ~75. Każdy reply autora pod Twoim komentarzem wyrzuca cały wątek (z Twoim komentarzem) do ludzi spoza Twojej sieci. Wybierz 20-30 dużych kont w niszy, włącz powiadomienia, komentuj w pierwszych 15 minutach od publikacji ich tweeta. To droga do zasięgu od zera, której nie blokuje OON handicap.

02

Pisz reply do własnego tweeta po 30-90 min.

Algorytm sprawdza reply_engaged_by_author również dla autora odpowiadającego pod własnym wątkiem. Jeśli Twój tweet zaczyna zbierać komentarze, odpisz na 1-2 najlepsze. To uruchamia head 75x dla tych konkretnych respondentów. Ich wątek (z Twoim podpięciem) trafia szerzej.

03

Pisz tak, żeby ktoś chciał odpowiedzieć (nie polubić).

Waga reply (13.5) jest 27× wyższa niż waga like (0.5). Tweet, który zbiera 200 polubień i 5 odpowiedzi, zostanie pokonany przez tweet z 50 polubień i 30 odpowiedzi. Pisz tezę („myślę, że X jest błędne, bo Y") zamiast wniosku („3 powody dla których X warto"). Pytania kierunkowe na końcu („A Ty co o tym sądzisz? Może się mylę") działają. „Like-bait" („zostaw like jeśli zgadzasz się"), przeciwskutecznie.

04

Nigdy nie linkuj do innych mediów społecznościowych.

Tweet z linkiem do Instagram / TikTok / YouTube zostanie wycięty z out-of-network feedu (Twoi obserwujący zobaczą, reszta nie). Jeśli musisz wskazać inną platformę, zrób to w bio albo screenshotem bez linku. Lepiej: zhostuj content na X (wideo, thread) zamiast linkować.

05

Trzymaj 80% contentu w jednej społeczności SimClusters.

Skakanie między tematami rozmywa embedding profilu w 145k społeczności. Spójność niszy nie jest tylko brand-buildingiem, to dosłowny sygnał dla algorytmu. Wybierz jedną z 145k „społeczności" (praktycznie: jedną wąską niszę, np. „indie SaaS founders", „polski no-code", „retail tech CEE") i siedź w niej 80% czasu. 20% może być personalne / off-topic.

06

Wideo zawsze 12-30 sekund (minimum 10).

Wideo pod 10s nie uruchamiają head'ów video quality view / video quality watch. Wideo dłuższe niż 30s tracą widzów. Sweet spot: 12-30 sek. Pierwsza sekunda musi „chwytać" (text overlay z hookiem, akcja, kontrowersja).

07

Nie testuj kontrowersji na niedopasowanej audiencji.

FeedbackFatigue trzyma „See Fewer" przez 140 dni. Jeśli wrzucisz polityczny / ostro kontrowersyjny tweet do audiencji, która Cię zna z B2B, masz 4 miesiące dyskonta zasięgu od osób, które klikną „See Fewer". Decyzja o kontrowersji ma długą cenę. Albo trzymaj się niszy, albo bądź gotowy zapłacić.

Dla firmy, perspektywa SMB w Polsce

Czy X w 2026 to kanał, w który inwestować?

Brutalna odpowiedź: zależy od tego, kim jesteś. X w Polsce w 2026 to nie jest masowy kanał sprzedażowy. To kanał personal brandu założyciela, kanał B2B thought leadership, kanał dotarcia do dziennikarzy / inwestorów / decydentów technologicznych. Nie jest to TikTok ani Facebook Marketplace.

Dla typowej firmy SMB w Polsce, gabinet stomatologiczny w Krakowie, biuro księgowe w Łodzi, restauracja w Gdańsku, X jest marnowaniem czasu. Klient Cię tam nie szuka. Lepsze kanały:

  • SEO lokalne, „dentysta Mokotów" to wyszukiwanie z intencją zakupową. Strona + Google Business Profile + content lokalny daje leady miesięcznie, evergreen, bez codziennego postowania.
  • Google Ads, pod konkretne usługi premium (implant, kompleksowa księgowość, wesele). Pełne tracking od kliknięcia do umówionej wizyty.
  • Lokalny content, Instagram Reels z lokalizacją, lokalne FB grupy, lokalne katalogi. To kanały z lokalnym ruchem.

Dla kogo X w 2026 ma sens:

  • B2B SaaS, buduje personal brand founderów, generuje warm leady od inwestorów, mediów, partnerów. Każdy polski founder SaaS (Brand24, RightHello, Survicate) ma na X aktywny profil.
  • Agencje kreatywne / dev shops, case studies, behind-the-scenes, opinia branżowa. Sprzedaż przez DM od kogoś, kto czytał Twoje wątki przez 6 mc.
  • AI / ML / fintech / web3, większość tej niszy mieszka na X, nie na LinkedIn. To natywny ekosystem.
  • Solo founders i indie hackers, buduj w transparentny sposób, MRR-y w bio, „what I learned" wątki. Kanał generujący followersów, którzy konwertują na klientów.
  • Konsultanci / freelancerzy z technicznej niszy, opinia branżowa, „hot takes", odpowiedzi na duże konta. Pierwsze leady przychodzą od czytelników, którzy Cię obserwowali 3-6 mc bez interakcji.

Jeśli mieścisz się w którymś z tych segmentów, warto. 30-60 min dziennie przez 6 miesięcy = 100-500 obserwujących z Twojej niszy, 2-5 warm leadów / mc, jeden artykuł / wątek może wygenerować 20 DM. Jeśli nie mieścisz się, zostaw X dla osobistego użytku i zainwestuj w SEO, Ads, content lokalny.

A jeśli chcesz to wdrożyć, i nie masz czasu sam

Robię to z Tobą, content engine pod algorytm.

Growto to solo studio web dev + marketing. Robię między innymi content engine pod X i LinkedIn dla B2B SaaS, agencji i konsultantów. Wdrożenie obejmuje:

  • Audyt profilu pod 7 zasad z tego artykułu (1-2 godziny, raport z konkretnymi rekomendacjami)
  • Strategy doc, z którymi 20-30 dużych kont w Twojej niszy wejść w interakcje, w jakich porach, z jaką częstotliwością
  • Content engine, 3-5 tweetów dziennie albo wątek tygodniowo, pisane razem ze mną lub przeze mnie
  • Comment engine, 10-20 przemyślanych komentarzy dziennie pod dużymi kontami (najtańsza droga do zasięgu)
  • Monthly review, które tweety zadziałały, dlaczego, co iterować

Pakiet od 1500 PLN/mc (audyt + strategy + 2 godziny pracy / tydzień). Full delivery (cały content engine prowadzony przeze mnie) od 3500 PLN/mc. Bez zobowiązań długoterminowych, pierwsze rezultaty widać w 6-8 tygodni, jeśli po 12 tygodniach nie ma efektu, wracam z pełną analizą i bez kolejnej faktury.

Pytania, które dostaję najczęściej

FAQ.

Czy w repo algorytmu X są realne wagi rankingu?

Nie. Wszystkie parametry ModelWeights w klasie HomeGlobalParams.scala mają default = 0.0. Faktyczne wartości produkcyjne wczytywane są w runtime z zewnętrznego systemu feature switches. Znane wagi (fav 0.5, retweet 1.0, reply 13.5, reply engaged by author ~75, negative feedback -74) pochodzą z wycieków i komentarzy inżynierów X z 2023 roku, nie z open-source repo.

Co to jest reply engaged by author i dlaczego ma wagę ~75?

To zdarzenie kiedy autor tweeta (np. influencer) odpowiada na komentarz, który zostawiłeś pod jego postem. Algorytm uznaje, że jeśli ktoś o dużym zasięgu zainteresował się Twoim komentarzem na tyle żeby napisać odpowiedź, to silny sygnał jakości. Mnożnik ~75x oznacza, że taki tweet trafia w feedy ludzi spoza Twojej sieci dużo agresywniej niż zwykły post. W praktyce to najtańsza droga do dużego zasięgu: nie publikuj swoich tweetów, komentuj pod cudzymi tak, żeby autor chciał Ci odpisać.

Dlaczego treści spoza mojej sieci dostają mnożnik 0.75x?

To OONTweetScalingScorer.scala, hard-coded handicap 0.75x dla tweetów out-of-network (od osób których nie obserwujesz, non-retweet). Twitter w ten sposób promuje sieć follow, a treść z zewnątrz musi być ~33% mocniejsza (od strony predykcji engagementu) żeby pokonać ten handicap i trafić do Twojego feedu. Dla twórcy szukającego zasięgu poza własną siecią to oznacza, że treść musi być znacznie lepsza niż średnia żeby przebić się do nowych odbiorców.

Czy linkowanie do innych mediów społecznościowych z X obniża zasięg?

Tak. W repo jest plik OutOfNetworkCompetitorURLFilter.scala, który filtruje out-of-network tweety (od osób których nie obserwujesz) zawierające URL-e z listy konkurencyjnych domen. Lista nie jest publicznie znana (jest w external config), ale w praktyce obserwowane jest tłumienie linków do Instagrama, TikToka, YouTube, Threads, Bluesky. Jeśli chcesz, żeby Twój tweet z linkiem był pokazany komuś spoza Twojej sieci, link nie powinien prowadzić do konkurencyjnej platformy.

Ile czasu zajmuje algorytmowi zapomnienie negatywnego feedbacku?

Według FeedbackFatigueScorer.scala, 140 dni. Jeśli ktoś kliknął na Twoim tweecie „See Fewer" / „Mniej takich postów", przez 140 dni Twoje treści będą skalowane mnożnikiem 0.2x na początku, liniowo rosnącym do 1.0x w 4 krokach po 35 dni. Mute, block i raport mają zazwyczaj jeszcze ostrzejsze efekty (Report ma zakres parametru od -20 000, co potrafi wyzerować widoczność tweeta dla całej kohorty).

Czy ta wiedza pomaga firmie SMB sprzedawać na X?

Tak, ale pośrednio. X w Polsce w 2026 nie jest dominującym kanałem sprzedażowym dla SMB (w odróżnieniu od LinkedIna albo SEO). Wiedza o algorytmie pomaga jeśli budujesz: (1) personal brand założyciela jako lejek do firmy, (2) kanał edukacyjny B2B, (3) thought leadership w niszy, (4) traffic do landingu. Dla typowych usług lokalnych (gabinet stomatologiczny, kancelaria, biuro księgowe) lepszym kanałem jest SEO lokalne i Google Ads. X działa głównie dla B2B SaaS, agencji kreatywnych, fintech, AI/ML i osób, których kupują nazwiska, nie firmy.

Podobało się?

Następny artykuł, za 2 tygodnie.

Piszę co 2 tygodnie o realnych rzeczach z prowadzenia solo studio: algorytmy, narzędzia, wdrożenia AI w produkcji, marketing dla MŚP. Bez SEO-spamu, bez listy mailingowej, bez „zostaw maila". Wracaj albo śledź na X.