Skip to content

spinlockdevelopment/TweetManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TweetManager

A Chrome extension that removes your old likes, reposts, and replies from X.com (formerly Twitter) before a date you choose, and adds one-click follower removal on your followers pages. It uses DOM-based interactions with human-like timing to minimize the risk of automated-behavior detection.

Features

  • Likes removal — unlike tweets on your likes page that were posted before the cutoff date
  • Reposts removal — undo reposts on your profile timeline that were posted before the cutoff
  • Replies removal — delete your reply tweets from the Replies tab that were posted before the cutoff
  • Multi-select — choose any combination of the above; the extension processes them sequentially
  • Date presets — 1 month, 3 months, 6 months, 1 year, 2 years, or 3 years
  • One-click follower removal — on the Followers and Verified Followers pages, a "Remove" button is injected next to every follower, reducing the normal 3-click flow to 1 click
  • Bot-evasion by design — gaussian-distributed random delays, periodic idle breaks, full realistic mouse-event sequences, and randomized scroll distances
  • Survives page navigation — task state is persisted to chrome.storage.local so the script resumes automatically after X.com's SPA routing or full page reloads
  • Progress tracking — live status and removal count displayed in the popup

How It Works

Likes, Reposts, and Replies Removal

TweetManager injects a content script into X.com pages. When you start a removal task the script:

  1. Navigates to the appropriate page (likes page, profile timeline, or replies tab)
  2. Scans visible tweet articles and reads the <time datetime="..."> attribute on each one
  3. Compares the tweet's posting date against your chosen cutoff
  4. Clicks the appropriate button:
    • Likes: clicks the unlike (heart) button
    • Reposts: clicks the unretweet button, then confirms "Undo repost"
    • Replies: opens the caret "..." menu, clicks "Delete", then confirms deletion
  5. Waits a random 3-8 seconds between actions (gaussian-distributed), with longer 45-120 second breaks every 12-25 actions
  6. Scrolls smoothly with random distances to load more content
  7. Detects error states and automatically cools down for 5-10 minutes before retrying

When multiple modes are selected (e.g., Likes + Replies), the extension processes them sequentially — completing all likes removal before moving to replies.

Queued Follower Removal

When you visit your Followers or Verified Followers page (x.com/{you}/followers or x.com/{you}/verified_followers), the extension automatically injects a red Remove button next to each follower's Follow/Following button.

The removal uses a queue-and-execute workflow:

  1. Queue — click "Remove" on any follower to add them to the queue. The button toggles to "Queued" (click again to dequeue). A floating badge in the bottom-right corner shows the current queue count.
  2. Execute — when you're done selecting, open the TweetManager popup and click Remove All Now. The extension scrolls through the followers page and automates the three-click removal flow (open "..." menu, click "Remove this follower", confirm) for each queued entry.
  3. Progress — the popup shows live progress. You can stop at any time; only unprocessed entries remain in the queue.

The queue is persisted in chrome.storage.local, so it survives page navigations and popup open/close cycles. No API tokens or external requests are used — the extension automates the same DOM clicks you would perform manually.

Remove buttons are re-injected automatically as you scroll and new follower cells load.

Anti-Detection Strategies

Strategy Detail
Gaussian delays Action intervals follow a normal distribution (mean ~5.5 s) rather than fixed timing
Periodic breaks Every 12-25 actions the script idles for 45-120 seconds
Realistic events Full pointerover -> mouseover -> pointermove -> mousemove -> pointerdown -> mousedown -> pointerup -> mouseup -> click -> pointerout -> mouseout sequence
Random offsets Click coordinates jitter +/-3 px from center
Smooth scrolling behavior: 'smooth' with random 300-700 px distances
Error cooldown On rate-limit or error detection, waits 5-10 minutes then reloads

Installation

  1. Clone or download this repository:
git clone https://github.com/<your-username>/TweetManager.git
  1. Open Chrome and navigate to chrome://extensions/
  2. Enable Developer mode (toggle in the top-right corner)
  3. Click Load unpacked and select the TweetManager directory
  4. The TweetManager icon appears in your extensions toolbar

Usage

Removing Likes, Reposts, and Replies

  1. Navigate to x.com in Chrome and make sure you are logged in
  2. Click the TweetManager extension icon in the toolbar
  3. Toggle which types to remove: Likes, Reposts, Replies (any combination)
  4. Choose a date preset from the dropdown
  5. Check the confirmation box acknowledging the action is permanent
  6. Click Start Removal
  7. The extension navigates to the appropriate page and begins processing

Progress is shown in the popup. You can close and reopen the popup at any time — progress persists in storage.

To stop, reopen the popup and click Stop.

Removing Followers

  1. Navigate to your Followers page on x.com (x.com/{your-username}/followers or the Verified Followers tab)
  2. The extension automatically injects a red Remove button next to each follower
  3. Scroll through the list and click Remove on each follower you want to get rid of — the button toggles to Queued
  4. A floating badge in the bottom-right shows how many are queued (click x on the badge to clear the queue)
  5. When you're done selecting, open the TweetManager popup and click Remove All Now
  6. The extension processes each queued follower one by one, showing progress in the popup
  7. Click Stop at any time — only unprocessed entries remain in the queue for next time

Important Notes

  • Permanent action — unliked tweets, undone reposts, deleted replies, and removed followers cannot be automatically restored. Make sure you're ready before starting.
  • Replies are deleted — unlike likes and reposts (which are reversible actions), removing a reply permanently deletes the tweet. This cannot be undone.
  • Date filtering — the extension filters by the original tweet's posting date (the datetime attribute visible on each tweet), not the date you liked, reposted, or replied.
  • Long-running — depending on how many items qualify, likes/reposts/replies removal can take hours. The extension is intentionally slow to avoid detection. Keep the X.com tab open while it runs.
  • DOM selectors may break — X.com can change its markup at any time. If the extension stops working after an X.com update, the data-testid selectors in content/content.js may need updating.
  • No data collection — this extension does not send any data anywhere. All processing happens locally in your browser.

Project Structure

TweetManager/
├── manifest.json          # Chrome extension manifest (Manifest V3)
├── popup/
│   ├── popup.html         # Extension popup markup
│   ├── popup.css          # Popup styles (dark theme matching X.com)
│   └── popup.js           # Popup controller and progress display
├── content/
│   └── content.js         # Content script: removal logic, bot evasion,
│                          #   and follower-page Remove button injection
└── README.md

Configuration

Timing constants are defined at the top of content/content.js. Adjust them to trade speed for stealth:

Constant Default Description
ACTION_DELAY_MIN_MS 3000 Minimum wait between actions (ms)
ACTION_DELAY_MAX_MS 8000 Maximum wait between actions (ms)
ACTIONS_BEFORE_BREAK_MIN 12 Minimum actions before a break
ACTIONS_BEFORE_BREAK_MAX 25 Maximum actions before a break
BREAK_DURATION_MIN_MS 45000 Minimum break duration (ms)
BREAK_DURATION_MAX_MS 120000 Maximum break duration (ms)
MAX_EMPTY_SCROLLS_LIKES 6 Scrolls with no likes found before stopping
MAX_EMPTY_SCROLLS_REPOSTS 20 Scrolls with no reposts found before stopping
MAX_EMPTY_SCROLLS_REPLIES 12 Scrolls with no replies found before stopping

Troubleshooting

Problem Solution
Popup says "Navigate to x.com" Make sure the active tab is on x.com or twitter.com
"Could not detect your username" Ensure you are logged in and the sidebar has fully loaded, then try again
Extension stops finding tweets X.com may have changed its DOM structure. Check data-testid selectors in content/content.js
Removal seems stuck The extension may be in a break period (shown in status). Wait for it to resume, or stop and restart
Remove button not appearing on followers Make sure you're on your own Followers or Verified Followers page. Try scrolling to trigger re-injection
Remove button shows "Error" The dropdown menu selectors may have changed, or the page didn't respond in time. Try again or refresh the page

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors