Back to Templates

Retweet Cleanup with Scheduling for X/Twitter

Created by

Created by: masaya kawabe || kawabe03

masaya kawabe

Last update

Last update 20 hours ago

Categories

Share


Who’s it for

Social media managers, creators, and brand accounts that rely on retweets for reach but want an automated, hands-off cleanup after campaigns to keep profiles tidy and on-brand.

What it does / How it works

On a schedule, the workflow resolves your handle to a user ID, fetches recent tweets, filters retweets only, and safely unretweets them using batching and delays to respect rate limits. A dedicated CONFIG (Set Fields) node centralizes variables (e.g., target_username, max_results, batch_delay_minutes) so you can adjust behavior without touching logic.

API endpoints used

  • GET /2/users/by/username/{username} – resolve handle → user ID
  • GET /2/users/{id}/tweets?tweet.fields=created_at,referenced_tweets – fetch recent tweets (identify retweets via referenced_tweets.type === "retweeted")
  • DELETE /2/users/{id}/retweets/{tweet_id} – unretweet

Example response payloads

GET /2/users/by/username/{username}

{
  "data": { "id": "2244994945", "name": "Twitter Dev", "username": "TwitterDev" }
}

GET /2/users/{id}/tweets (truncated)

{
  "data": [
    {
      "id": "1760000000000000000",
      "text": "RT @someone: …",
      "referenced_tweets": [{ "type": "retweeted", "id": "1759999999999999999" }],
      "created_at": "2025-01-15T09:10:11.000Z"
    }
  ],
  "meta": { "result_count": 20 }
}

DELETE /2/users/{id}/retweets/{tweet_id}

{ "data": { "retweeted": false } }

Use cases

  • Brand hygiene: Auto-unretweet promos after 48–72h.
  • Campaign cadence: Remove event retweets once the event ends.
  • Feed freshness: Clear low-priority retweets on a rolling basis.

How to set up

  1. Open CONFIG (Set Fields) and replace placeholders:

    • target_username = "your_handle"
    • max_results = 100 (per fetch)
    • batch_delay_minutes = 2 (throttle between batches)
  2. Connect X/Twitter credentials in n8n (no keys hard-coded in HTTP nodes).

  3. Run once with small values, verify logs, then enable the schedule.

Optional enhancements: add a dead-letter path (Error Trigger → Set → Sheets/Email/Slack) and a notification node (e.g., Slack) for execution feedback.