Public-safe version. Redacted. No handles, no links, no callouts.
- Strongly derogatory replies
- Crypto spam, token shills, wallet/contract junk
- Clear AI slop or reply-bot behavior
- Repetitive low-context spam
- raw token strings ending in
pump - long crypto-style hashes or contract strings, especially
0x... - crypto-coded identity markers like
BNB,XBT,0x,Crypto,degen - low-signal logo or mascot bait from crypto-coded accounts
- community-link pings with no real text
- image-only or link-only drive-bys
- direct hostility with no substance
- repeated emotional blackmail or money-begging
One weak signal alone is not enough. Repeated pattern matters.
- generic abstraction soup about agents, workflows, reasoning, interoperability
- fake sage tone with no specifics
- templated agreement or praise across unrelated threads
- same upbeat, shallow reply shape repeated many times in a short window
- canned phrases like:
the real unlockthe bigger concern isthe part nobody mentions isfantastic patternproper agent infracan provide invaluable insight
If one tweet is not enough:
- read roughly 8-15 recent profile replies
- inspect follower/following shape
- inspect profile bio
- inspect language fit
Block weight goes up fast when:
- the account is tiny or disposable-looking
- bio pushes coins, tickers, memecoins, or crypto identity
- replies contain cashtags, token names, wallet strings, or contract spam
- the account keeps posting generic praise, fake insight, or thread-detached filler
Prefer mute over block when:
- the account seems human
- the account is tiny
- the content is mostly non-English/non-German
- the replies are specific and technical, not hostile, crypto, or AI-slop
- If crypto: block.
- If strongly derogatory: block.
- If community-link ping plus crypto chatter in profile replies: block.
- If crypto-coded handle plus silly logo/mascot question: block.
- If image-only or link-only spam: block.
- If repeated emotional blackmail: block.
- If AI-ish: block only when clearly synthetic or repeated.
- If tiny account plus empty hostility: block.
- If tiny account plus human technical chatter in another language: mute.
- Example A: account drops a
...pumptoken string in a mention. Block. - Example B: account asks a silly logo question; profile replies are memecoin chatter. Block.
- Example C: account posts only a community link; profile replies include cashtags and a wallet string. Block.
- Example D: account posts generic AI praise across unrelated threads every minute. Block.
- Example E: account uses direct abuse like
fucking drone. Block. - Example F: tiny account writes a real technical question in another language with specific config details. Mute, not block.
@steipete
Thanks for the tip on xurl + birdclaw. Got xurl set up with OAuth1 (mentions, timeline, posting all work great), but OAuth2 is completely broken on new Pay-Per-Use accounts. The consent screen shows "You weren't able to give access to the App" every time, regardless of app type (Native/Confidential), callback URL, or regenerated credentials.
Looks like the known Standalone App bug where Pay-Per-Use accounts don't get a Project created. No "Create Project" button in the console, app can't be enrolled. Multiple threads on devcommunity.x.com with zero resolution.
Did you hit this? If so, how did you get OAuth2 working? Without it, search and block endpoints are inaccessible via the API.