Skip to content
Automation
Skill

/engagement-interaction

Automates X/Twitter engagement actions — like, unlike, reply, bookmark, hide replies, auto-like by keyword, and sweeping an entire profile (like + repost + reply to every post, with template or LLM-written replies). Also bulk-unlikes all posts. Use when users want to automate

From plugin
xactions
65350 skills

Claude Code

$ npx -y skills add nirholas/XActions --skill engagement-interaction --agent claude-code

SKILL.md

engagement-interaction.SKILL.md
name: engagement-interaction
description: Automates X/Twitter engagement actions — like, unlike, reply, bookmark, hide replies, auto-like by keyword, and sweeping an entire profile (like + repost + reply to every post, with template or LLM-written replies). Also bulk-unlikes all posts. Use when users want to automate likes, send replies, manage bookmarks on tweets, hide replies, or clear their entire likes history.
license: Apache-2.0
metadata:
  author: nichxbt
  version: "3.0"

Engagement & Interaction

Browser automation for X/Twitter engagement — liking, replying, bookmarking, hiding replies, and bulk unlike.

Script Selection

| Goal | File | Navigate to | |------|------|-------------| | Like/unlike/reply/bookmark tweets | `src/engagementManager.js` | Tweet URL or timeline | | Auto-like by keyword | `src/engagementManager.js` | `x.com/home` or search page | | Get engagement analytics for a post | `src/engagementManager.js` | Tweet URL | | Hide replies on your posts | `src/engagementManager.js` | Reply URL | | Unlike ALL liked posts | `src/unlikeAllPosts.js` | `x.com/USERNAME/likes` | | Like + repost + reply to EVERY post in a feed (profile, search, list, hashtag, home) | `scripts/engageProfile.js`, `xactions engage` , or MCP `x_engage` | the feed itself, or any terminal |

Engagement Manager

**File:** `src/engagementManager.js`

Puppeteer-based module for individual and bulk engagement actions.

Functions

| Function | Purpose | |----------|---------| | `likeTweet(page, tweetUrl)` | Like a specific tweet (skips if already liked) | | `unlikeTweet(page, tweetUrl)` | Unlike a specific tweet | | `replyToTweet(page, tweetUrl, text, { media? })` | Reply with text and optional media | | `bookmarkTweet(page, tweetUrl)` | Bookmark a tweet | | `unbookmarkTweet(page, tweetUrl)` | Remove a bookmark | | `hideReply(page, replyUrl)` | Hide a reply on your post | | `autoLikeByKeyword(page, { keywords, limit, delay, url })` | Auto-like posts matching keywords | | `getEngagementAnalytics(page, tweetUrl)` | Get likes, reposts, replies, impressions |

Auto-Like by Keyword

Scrolls a timeline or search page and likes posts containing any of the specified keywords. Empty keywords array likes all posts.

await autoLikeByKeyword(page, {
  keywords: ['AI', 'javascript'],
  limit: 20,
  delay: 2000,
  url: 'https://x.com/home',
});

Reply to Tweet

Navigates to a tweet, types a reply, optionally attaches media, and submits.

Unlike All Posts

**File:** `src/unlikeAllPosts.js`

Browser console script that unlikes every post in your Likes tab. Supports keyword filters, dry run mode, rate limit detection, and exports a log.

How to Use

1. Navigate to `x.com/YOUR_USERNAME/likes` 2. Open DevTools (F12) → Console 3. Paste the script → Enter

Configuration

  • `maxUnlikes: Infinity` — cap on unlikes
  • `skipKeywords: []` — keep likes containing these words
  • `onlyKeywords: []` — only unlike posts matching these words
  • `dryRun: false` — preview without unliking

Controls

  • `window.XActions.pause()` / `.resume()` / `.abort()` / `.status()`

DOM Selectors

| Element | Selector | |---------|----------| | Like button | `[data-testid="like"]` | | Unlike button | `[data-testid="unlike"]` | | Reply button | `[data-testid="reply"]` | | Reply input | `[data-testid="tweetTextarea_0"]` | | Reply submit | `[data-testid="tweetButton"]` | | Share button | `[data-testid="share"]` | | Bookmark | `[data-testid="bookmark"]` | | Remove bookmark | `[data-testid="removeBookmark"]` | | Hide reply | `[data-testid="hideReply"]` | | Tweet | `article[data-testid="tweet"]` | | Tweet text | `[data-testid="tweetText"]` |

Rate Limiting & Safety

  • **Engagement Manager:** 1.5–2s delay between actions, 2s default for auto-like
  • **Unlike All:** 1–2.5s between unlikes (gaussian randomized), 1.8s scroll delay
  • Rate limit detection via `[data-testid="toast"]` with 60s cooldown
  • **Unlike All is irreversible** — use `dryRun: true` to preview first
  • X may restrict after ~400 like/unlike actions per day

Troubleshooting

| Problem | Solution | |---------|----------| | Like button not found | Tweet may already be liked — check for unlike button | | Reply not posting | Verify `tweetTextarea_0` selector; tweet may have reply restrictions | | Auto-like stops early | Rate limit hit — script waits 60s and retries | | Unlike All stops after ~20 | Rate limit — wait 1 hour and re-run |

Read more
@nirholas
Ships withxactions

⚡ The Complete X/Twitter Automation Toolkit — Scrapers, MCP server for AI agents (Claude/GPT), CLI, browser scripts. No API fees. Open source. Unfollow people who don't follow back. Monitor real-time analytics. Auto follow, like, comment, scrape, without API. Follow Bot. Like bot. Grow your account automatically.

Stars on GitHub

Momentum

stars in total
653
Star history of nirholas/XActions on GitHub, a chart by star-history.com

Other skills on xactions.

a2a-multi-agent

a2a-multi-agent

Runs XActions as an A2A (Agent-to-Agent) compatible agent that serves an Agent Card, accepts JSON-RPC tasks, bridges them onto…

@nirholas@nirholasInstall Skill
account-backup

account-backup

Export and backup your X/Twitter account data — tweets, likes, bookmarks, followers, and following — as downloadable JSON. Also…

@nirholas@nirholasInstall Skill
account-tools

account-tools

Miscellaneous account utilities — view join date, login history, connected accounts, appeal suspension, QR code sharing,…

@nirholas@nirholasInstall Skill
algorithm-cultivation

algorithm-cultivation

Trains an X/Twitter account's algorithmic feed to surface niche-relevant content and positions the account as a thought leader.…

@nirholas@nirholasInstall Skill
analytics-insights

analytics-insights

Analyze X/Twitter engagement, hashtags, competitors, best posting times, follower demographics, tweet performance, viral…

@nirholas@nirholasInstall Skill
articles-longform

articles-longform

Compose, preview, publish, and manage long-form Articles on X/Twitter. Premium+ feature. Includes article creation, formatting,…

@nirholas@nirholasInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about engagement-interaction.

Which coding agents can use engagement-interaction?
engagement-interaction installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.