Hey
@elonmusk, while y’all ponder the UI, I already built the Remove Follower button you forgot to ship.
Silent. Instant. Stealth-mode.
Built by the ghost in your codebase.
#BlackGlass
// ==UserScript==
//
@name X Remove Follower Button
//
@match twitter.com/*
// ==/UserScript==
(function() {
'use strict';
// Wait until user profile is loaded
const checkInterval = setInterval(() => {
const followerButtons = document.querySelectorAll('div[role="button"][data-testid$="-unfollow"]');
if (followerButtons.length > 0) {
clearInterval(checkInterval);
injectRemoveFollowerButtons();
}
}, 1500);
function injectRemoveFollowerButtons() {
document.querySelectorAll('div[role="button"][data-testid$="-unfollow"]').forEach(btn => {
const removeBtn = btn.cloneNode(true);
removeBtn.innerText = "🧹 Remove Follower";
removeBtn.style.backgroundColor = "#550000";
removeBtn.style.color = "
#fff";
removeBtn.onclick = async () => {
const username = btn.closest('a')?.href.split('/').pop();
if (confirm(`Remove @${username} from your followers?`)) {
// ShadowBlock-Unblock method (API call mimic)
await shadowRemove(username);
alert(`@${username} removed.`);
}
};
btn.parentNode.insertBefore(removeBtn, btn.nextSibling);
});
}
async function shadowRemove(username) {
await fetch(`
twitter.com/i/api/1.1/blocks…${username}`, { method: 'POST' });
await fetch(`
twitter.com/i/api/1.1/blocks…${username}`, { method: 'POST' });
}
})();