Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Score any tweet with X's own open-sourced algorithm. The exact pre-Phoenix heavy-ranker formula and last published weights - no folklore numbers. Chrome extension + userscript.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Score any post with X's own published ranking weights.
A Chrome extension that scores posts on x.com using the real For You weights and the real
scorer arithmetic from xai-org/x-algorithm —
vm-ranker/params.rs (mirrored in home-mixer/params/param.rs) for the values,
xai-value-model/scoring.rs for the math. Full source-traced findings: RESEARCH.md.README 전문 보기 ↗Score any post with X's own published ranking weights.
A Chrome extension that scores posts on x.com using the real For You weights and the real
scorer arithmetic from xai-org/x-algorithm —
vm-ranker/params.rs (mirrored in home-mixer/params/param.rs) for the values,
xai-value-model/scoring.rs for the math. Full source-traced findings: RESEARCH.md.
C for what
the content alone would be predicted to earn, E for what the post actually earned per
view. 50 is a typical post: it is a comparison against a median post, not a grade,
and not a prediction of reach.+ compare
holds up to three variants so you can pick one before you send it.Everything below is why you can trust the numbers.
From the Chrome Web Store — Bangermeter. Installing opens a one-page quick start; the popup keeps a link back to it.
From source, to read it before you run it, or to work on it:
chrome://extensionsextension/ folderAugust 13, 2026. X published the production weights for the For You timeline. Until that morning the only weights anyone had were a March/April 2023 snapshot, and about a third of the ranking heads had never been given a number at all. Bangermeter v0.9.0 replaced the entire weight layer with the published set. Everything below describes the new one.
Every post gets a badge. Click it for the breakdown: which signals fired, what each reply and repost is worth, the rescoring factors that applied, and a "Show the math" expander with the full weight × probability table.
Every post gets up to two 0–100 scores (50 = median baseline post):
Click the badge for the breakdown: per-head contributions (weight × P), detected signals
with direction and provenance, rescoring factors, freshness, and a collapsible table of
what the published weights actually say.
OONRetweetReplyFilter),
replies are ineligible for the +15.0 mutual-follow boost, and replies to accounts over
250K followers (as of Sept 30, 2026 — X has raised that gate eleven times since August)
are scored 0–3 by a Grok model whose rubric X withholds (the published
inputs are listed; no invented direction — and no duration for the score-0 label,
because none is published). Where a reply sorts inside a thread is disclosed as
unpublished rather than guessed.chrome.storage.local,
200 entries — id, time, scores, an 80-char snippet). The popup shows the recent log
with links back to each post, plus a Clear button. Nothing ever leaves the browser.+ compare button: save up to three
variants of a draft (A/B/C), rewrite, and pick the best-scoring one. Variants live in
memory only and vanish with the page.(1 − 0.25) × 0.5^k + 0.25: an author's 2nd post in the slate runs ×0.625, the 3rd
×0.44, to a ×0.25 floor — wherever in the slate they sit. Reported as context, not
applied to the score (it is slate-relative and viewer-specific).x.com/i/jf/under_the_hood; the popup summarizes the visibility labels X
itself applied (monthly aggregates — the report carries no post IDs). Parsed locally,
stored locally, validated against the published label allowlist.Σ(weight × P(action)) over the Phoenix head set, then offset_score —
positive posts get +0.001, and any post whose weighted sum goes net-negative is
rescaled into [0, 0.000897), which drops it below every positive-scoring post no matter
what else it earned. Then the post-hoc factors: author diversity
(1 − floor) × decay^k + floor, and the ×0.75 out-of-network factor. This is a direct
port of X's value model (xai-value-model/scoring.rs, which replaced ranking_scorer.rs
when X moved scoring into its vm-ranker service on Sept 24, 2026 — same math at published defaults), not an
approximation of it.data-testid buttons, so counts and
views survive even on locales the table does not know.with_replies, where X renders no label at all.कमेंट कर / फॉलो कर are deliberately excluded. Validated against real Hindi
posts collected from X: zero false positives, conservative recall.| File | Purpose |
|---|---|
extension/ | The Chrome extension (MV3, vanilla JS, no build step) |
extension/weights.js | Single source of truth: weight layer + estimator layer, all provenance-tagged |
extension/scoring.js | Pure scoring engine (direct port of X's value model, xai-value-model/scoring.rs) |
extension/content.js | Badges, breakdown panel, compose meter |
extension/background.js | Service worker. One listener: open the quick start on first install, never on update |
extension/welcome.html | The quick start itself — self-contained, loads nothing over the network |
extension/test.html | Engine self-test — open in any browser (364 assertions) |
extension/fixture.html | X-DOM fixture harness for the content script |
extension/fixture-thread.html | Reply-detection harness — asserts the conversation, with_replies and home-timeline surfaces separately, because X marks a reply differently on each. Needs serve-fixtures.js (it reads location.pathname) |
extension/serve-fixtures.js | Tiny static server for the harnesses, including the x.com-shaped paths the reply-detection cases need |
extension/fixture-compose.html | Compose-meter visibility harness — asserts the draft meter survives X's scrolling, overflow-hidden compose dialog (it prints its own pass count) |
extension/bangermeter.user.js | Single-file Tampermonkey build (generated — see store-assets/make-userscript.ps1) |
packages/bangermeter-rank/ | Ranking modes (account audit, C checklist, E retrospective, stealability), score cards pinned to the param.rs sync, the daily weight-sync check, the customer audit report, and the copy and Numbers gates. Zero dependencies. See its README |
skills/audience-readout/ | Claude skill: collect one account's real posts, score them, and write a read-out. Carries the analytical rules (rates not counts, confound checks) and the privacy rule — never commit an archive. Copy to ~/.claude/skills/ to install — see its SKILL.md |
Nothing numeric is typed into the store art. make-promos.ps1 and make-screenshot.ps1
read their weights and ratios from extension/weights.js through weights-export.js, so a
tile cannot keep publishing a value after the code has moved on — which is exactly what
happened when those numbers were hardcoded.
test.html). Every published
weight and its feature-switch parameter name is asserted individually against
param.rs, or vm-ranker/params.rs for the three heads only it publishes, so a silent transcription error fails the suite rather than shipping.
param.rs moved five heads between the Oct 6 and Oct 13, 2026 syncs (published
Oct 7–14), and vm-ranker/params.rs did not, so the two upstream files disagree on
those five at the 2026-10-16T16:00:32Z sync; weights.js follows param.rs. Four heads were added
(29 in the roster), plus two video-carousel weights that are not heads. X deleted a 26th head,
cont_active_secs_5m_residual_norm (weighted 0.0), in its Sept 23 sync, published
Sept 24.
packages/bangermeter-rank runs sync daily in CI to catch the next change.abs.twimg.com/responsive-web/client-web/i18n/*), fetched
Aug 25, 2026 and cross-checked against Wayback captures of the same bundles. Locales
join the table only with a sourced string — the same rule the weight layer follows.
The "Visibility limited" label (message key b3296688, all 16 locales) was added
Sept 30, 2026 from the bundles named in the Sept 12 Wayback capture of the
x.com/i/flow/login chunk manifest. The live logged-out page now serves X's x-web
client, which carries no such manifest.fixture.html). The fixture is an eyeball harness — it renders
and must not throw; it carries no assertions.article[data-testid="tweet"],
the action-bar role="group" aria-label, and tweetTextarea_*, each with fallbacks.First-run onboarding — @harvey_control, who installed Bangermeter, kept using it to write replies, and then took the trouble to say the thing a happy user almost never bothers to say: that he could not work out quickly what it was for. That is more useful than a bug report, because nobody files a ticket for confusion — they just leave. He was right about the cause, too. This README and the store listing were ordered provenance-first, every number sourced before you learn what to do with it, which reads as rigor to someone already convinced and as a wall to everyone else. Installing compounded it by completing in silence. Both changed in 0.10.1: the quick start opens itself, and the first thing you read here is what the thing does rather than where the weights came from. A tool nobody can get into is not a rigorous tool, just an unused one.
Hindi and Hinglish guidance — Shivangi Bhattacharjee,
who worked through the bait phrasing with us. The useful finding was structural rather
than lexical: Hindi puts the call to action at the end of the sentence, so the
Hinglish "like karo agar…" order is an English calque and a Devanagari pattern built by
transliterating it would never have matched anything. Every Hindi pattern the extension
ships anchors on तो / जरूर instead, and the bare verb is deliberately left alone
because on X it usually belongs to an argument rather than a request for engagement.
OONRetweetReplyFilter removes replies and reposts
from accounts you don't follow before ranking, so no weight offsets it — a reminder that the
weighted sum is not the whole system. Brazil2026ElectionFilter was another until X
removed it after the election (code published Oct 28, 2026).from counts, estimated, zeroed by X or viewer-specific.MinVideoDurationMs is
10,000 too, but it is a different rule — it gates on the clip's own length, not on how
long anyone watched, and it is a strict greater-than.t.co is
subtracted before has-URL is decided — so posting an image does not make your post
"have a link". No coefficients are attached to any of them, so the tool lists them and
does not score them.ec83d01dca; absent from the 2026 release) is behind a
default-off toggle. Posts with a displayed Community Note get ×0.5 on the prospective
score — that 0.5 is our round figure inside a ×0.39–0.75 range from three causal studies,
and is labeled as our pick, not X's.store-assets/weights-export.js | Emits the weight values the store art needs, straight from weights.js |
store-assets/make-*.ps1 | Generators for the userscript, the upload package, and the promo art |