Creator business
X published its algorithm. The code says you need two accounts, not one.
X put its For You ranking code on GitHub, so I read the parts that decide who gets seen. The blunt version for anyone posting adult content: labeled-explicit posts get next to no cold discovery — which means the account that grows you and the account that sells can't be the same account. Here's the two-account setup the architecture argues for, and how to stand it up in an afternoon.
Creator-life notes
X put its entire For You ranking system on GitHub — the actual code, not a blog-post summary — and I went and read the parts that decide who gets seen. I read it from the operator's seat, not for the engagement-weight trivia everyone's reposting this week. I read it for one question: what does this mean for those of us who post adult content? The answer was blunt enough that I'm rebuilding how I use the platform around it.
Straight with you up front, because I'd rather be honest than sound like a guru: I haven't flipped this switch yet. Right now I run X the way most of us do, on one account, and reading the code is what convinced me that's a mistake. So this isn't a victory lap over a system I've already nailed — it's the playbook I'm moving to next, written down while the code is still fresh, because the logic is strong enough that I'd rather hand it to you now than sit on it for six months to collect my own screenshots. One account cannot do the two jobs your business needs it to do. Here's what the code shows, and the setup it argues for.
What the code actually does to adult posts
Discovery on X comes in two flavors. There's reach to people who already follow you (in-network), and reach to people who don't — the cold "For You" discovery that's the only thing that actually grows an account (out-of-network). The published code runs those two through two different safety checks: a lenient one for in-network, a stricter one for the recommendations that get pushed to strangers. That much is right there in the source.
Now the honest caveat, because it matters and nobody hyping this release mentions it: X open-sourced the machine, not the whole rulebook. The code shows the machinery — two safety tiers, and the switch that drops a post when it comes back with a "remove" verdict — but the actual list of which labels trip that switch lives in a piece X didn't publish. So I'm not going to tell you a single line of code says "adult equals banished." What I'll tell you is that the architecture is purpose-built to keep sensitive material out of strangers' feeds, the stricter gate is the one your cold reach has to clear, and what I keep hearing from creators in this lane is the same thing: an explicit post gets next to no cold discovery. The machine and the lived result point the same direction.
There's a second mechanism in there that's easy to misread. Every post gets a brand-safety verdict, and anything tagged sensitive — plus anything the system hasn't positively cleared — lands in the not-brand-safe bucket. In the published code that verdict mainly governs where ads are allowed to sit, not your organic reach directly. But two things follow from it anyway. "I just won't label it" is no loophole, because unreviewed content defaults into the same bucket as labeled content. And an account the platform reads as adult is an account it has every reason to keep walling off. That's a structural setup — which is the useful news, because a structural problem has a structural fix, and no caption rewrite has ever been it.
Why this means two accounts, not a better caption
I've written before that you're not one job, you're four — and the same split runs right through your accounts. The account that carries the adult label is the account that converts. It's where the explicit work lives and where buyers go. But the second it wears that label, the algorithm stops handing it to strangers. So if your one-and-only account is your adult account, your discovery is capped at whoever already found you. You're filling a bucket with the tap welded shut.
The fix isn't to make the adult account behave better. It can't — the label is the label. The fix is to put a second account in front of it whose only job is to get discovered: clean enough that X never gets a reason to label it, interesting enough that strangers follow it, and pointed at the account that sells. Discovery on one, conversion on the other. That's architecture, and architecture beats caption tricks every time the two of them fight.
1. Start the discovery account clean — and keep it that way
Fresh account, clean from post one. Never enroll it in the adult-content-creator program. Never flip the sensitive-media setting on. Nothing even borderline in the avatar or the banner, because those get read at the account level and can flag the whole thing in one move. The entire value of this account is that X is never handed a reason to label it. Turn on one sensitivity toggle and you haven't got a discovery account anymore — you've got a second conversion account that can't convert.
2. Make the bio a pointer, not a clickable adult link
The bio can absolutely reference the other account — that's the whole job — but it does it as a text pointer or a clean gateway, never a live adult link, no aggregator that lands on explicit, no paysite name spelled out. A clickable adult link is itself a label, and you just spent a clean account to plant one.
Swipe these and make them sound like you:
- "The clean half of what I do. The rest of me's over at @your-main."
- "This is the SFW side. Everything else I make lives at @your-main."
3. Pin one bridge post and let it do the pointing
One pinned post points for you so your live feed doesn't have to. The rule here is point, don't embed: do not quote-tweet or embed an actual post from your adult account. That account carries a sensitivity flag at the user level, so the quoted card renders behind a content screen for most people and the clickthrough quietly dies on the vine. A plain @mention survives. An embedded card doesn't.
Swipe this:
"New here? This is my keep-it-clean account — the day-to-day, the opinions, the stuff that doesn't need a warning label slapped on it. The rest of what I make is at @your-main. Go say hi over there."
4. The product on this account is you, not skin
For the first couple of weeks, load it with personality. Funny, opinionated, lifestyle, the soft-thirst stuff that's carried by words and confidence instead of by taking clothes off. Two filters before anything posts:
- The read-it-aloud test. If the caption wouldn't survive being read out loud in a normal room, it belongs on the other account.
- The gray-zone rule. Lingerie, towel shots, implied-nude framing — all of that lives on the adult account, full stop. Not because it's too racy for the internet, but because repeated sensitivity flags are exactly what trips account-level labeling, and an account flagged at that level is the whole game lost.
This is also where the engagement code happens to reward you. The ranker scores a post by adding up a stack of separate signals — replies, reposts, quotes, profile clicks, follows — each carrying its own weight, and a plain like is just one weak entry in that stack. (The actual weight numbers are set at runtime and aren't in the released code, so anyone quoting you exact multipliers is guessing — but the shape is plain: high-intent actions each count on their own, likes barely move it.) Personality posts that start an argument and get people tapping through to your profile are doing double duty: they read as clean, and they're exactly the high-intent engagement the ranker is built around.
5. Ration the cross-promo like it costs you, because it does
Recommendation engines like this one run on association — they learn what's like what from who engages with whom. Straight about my evidence here: the published code shows the personalization machinery, not a line that says "this clean account got tied to that adult one." But association is the whole logic these systems are built on, and quote-tweeting your two accounts at each other or replying back and forth is exactly the kind of co-engagement that teaches the machine they belong in the same cluster. The downside is real and the upside is tiny, so I ration the active stuff hard:
- Quote or repost of your adult account: once or twice a month, tops. Never is genuinely fine.
- Soft text reference in a normal post: about once a week.
- All cross-references combined: keep it under roughly one post in twenty.
Swipe the soft reference:
"For the new folks: this is the tame one. The other half's at @your-main. That's the last I'll say about it here."
One nuance worth holding onto: the standing bio mention and the pinned post are far gentler than active engagement, because they don't feed the who-engages-with-whom graph the same way a live quote-tweet does. They earn their permanent placement by being passive. It's the feed behavior — the back-and-forth — you ration hardest.
6. Build the bridge X never sees
The strongest bridge between the two accounts is the one that doesn't live on X at all. If your entire path from stranger to buyer runs through two handles, you're one suspension away from zero — and I've watched enough good creators lose an account overnight to treat that as a when, not an if. I keep saying it: the move that survives is the one X can't delete.
For me that layer is my own site — somewhere I control, that ranks on its own, that routes people onward on my terms instead of the platform's. That's why I run it instead of leaning on a Linktree. The clean account's bio points to an SFW landing you own; the landing is what captures the fan and sends them on. The handle pointer is the part everyone sees. The thing you own is the actual asset.
The layer under that is a list — email or DMs — the capture that survives even if both accounts die tomorrow. I haven't built that yet, and that's a deliberate later step rather than an afterthought — but the logic is airtight: own the relationship off the graph and no algorithm update can take it from you. The whole funnel, start to finish, is just this one idea — get discovered somewhere rented, convert somewhere owned.
7. Protect the pattern, not just the post
Account-level labeling comes from patterns, not a single slip. So the standing habits matter more than any one post:
- Run the read-it-aloud test on everything, not just the posts you're unsure about.
- Keep links out of the body of a post — first reply or bio only. A link in the body is widely read as a reach-killer; that one's not in the published ranking code, so call it lore that everyone's numbers agree on rather than gospel — but the fix costs you nothing, so just put the link in the first reply.
- Stay comfortably inside "clean" instead of flirting with the line to see what you can get away with. The line is where the flags come from.
- Be there right after you post. The code does treat freshness as a real signal and stale posts age out, so the stretch right after publishing is when a conversation does the most for you. I won't pretend the source spells out a magic fifteen-minute window — that part's operator experience — but early replies pulling a post into more feeds is the most consistent pattern I run on.
That's the whole setup, and you can stand it up in an afternoon — which is exactly what I'm about to go do. The order is the thing that trips people up. People pour weeks of content into a single account and wonder why strangers never show up, when the account was walled off from strangers the entire time. Architecture first. Then content. The machine X published points hard in that direction — and it's sitting right there on GitHub if you want to read it yourself, which is exactly what I'd tell you to do. I'll report back once I've run it on my own accounts; for now, the code is the receipt.
— Sly