Install
openclaw skills install boost-x-engagementHourly X engagement loop for any X account. Two modes — interactive (per-item human approval) and scheduled (strict-rails auto-post under your custom safety filters). Drafts 1 original + 1-5 replies + 1-5 plain RTs per run. On first invocation, prompts you for your X handle, topic/niche, voice, RT allowlist, banned phrases, and daily caps. Save the config into your CLAUDE.md once to skip re-asking. Replies ALWAYS require manual approval — never auto-posted. Trigger phrases — boost X engagement, run my X loop, post on X, engage on X, shitpost on X.
openclaw skills install boost-x-engagementHourly cycle that scans x.com for content matching your niche and posts a small organic-looking batch on YOUR X account. Two execution modes.
/implexa:run or "Run Now"): every post gates on explicit per-item human approval.Before doing ANYTHING else, check if a config block exists in the conversation/project context. A config block looks like this:
boost-x-engagement-config:
x_handle: "@yourhandle"
topic_signals: ["AI", "Claude", "agent", "RAG"] # words your originals should mention
voice_description: "punchy lowercase tech-bro, controversial-but-correct, never em-dashes"
rt_allowlist: ["@karpathy", "@simonw", "@sama"] # who you'll auto-RT in scheduled mode
banned_phrases: ["unlock", "100%", "secret", "🧵"] # auto-skip originals containing any of these
daily_caps: { originals: 6, rts: 18 }
schedule_window: { start_hour_local: 6, end_hour_local: 20 }
Parse it, hold the values in memory for this run, proceed to Step 1.
Use AskUserQuestion to collect it interactively — one question at a time. Required fields:
@)AI / dev, crypto / defi, fitness, design / ux, plus Other for free-text)punchy lowercase tech-bro, professional thread-style, casual snark with emojis, dry observational)unlock, 100%, secret, here's how, this changes everything, PSA, 🧵)Conservative (3 originals, 9 RTs), Moderate (6 originals, 18 RTs) — Recommended, Aggressive (12 originals, 36 RTs), Other for custom)6AM-8PM (waking hours) — Recommended, 9AM-6PM (work hours), 24/7, Other for custom)After collecting all answers, render the resulting YAML config block and tell the user:
"Saved the config to memory for this run. To skip this prompt in future runs, paste this YAML block into your
CLAUDE.mdfile at the top of your project (or into~/.claude/CLAUDE.mdfor global access). Want me to write it there now? [yes / no / show me where]"
If yes, write it to the appropriate path using the Write tool.
mcp__Claude_in_Chrome__list_connected_browsers → find the local Chrome.mcp__Claude_in_Chrome__select_browser with the local deviceId.mcp__Claude_in_Chrome__tabs_context_mcp with createIfEmpty: true.navigate to https://x.com/home.find for account avatar / "@" handle in the account menu region.HARD SAFETY GATE: if the active account does NOT match config.x_handle, abort immediately and surface the mismatch. Never post on the wrong account.
Common failure: Chrome is logged into a different X account. Tell the user to switch accounts in Chrome and retry.
get_page_text + read_page on x.com/home to extract:
Catalog candidates by category:
topic_signals → potential RT or QT materialrt_allowlist → high-priority RT targetsPer-run output shape:
rt_allowlist is empty, set RT count to 0)config.voice_description style and registerconfig.topic_signalsconfig.banned_phrasesconfig.topic_signals)Interactive mode: more permissive; surface rationale for each target. Scheduled mode: must pass Step 4 strict filter.
Surface ALL drafts in a single message. For each item include text + target tweet URL (replies/RTs) + 1-line rationale. Wait for explicit per-item approval ("post 1, 3, 5" / "post all" / "rewrite 2") before ANY X action. NEVER post without an explicit approval string in chat.
Originals — auto-post only if ALL true:
config.banned_phrasesconfig.topic_signals"Does this match the voice: '{config.voice_description}'? Y/N. Treat ambiguous as N."config.daily_caps.originals not yet hit today (resets at midnight local time)RTs — auto-RT only if ALL true:
config.rt_allowlist (if list is empty, skip auto-RT entirely)config.daily_caps.rts not yet hit today (resets midnight local time)Replies — NEVER auto-post.
Replies attach YOUR voice to someone else's thread; misreads create lingering reputational damage that's harder to walk back than originals or RTs (which you can delete cleanly). In scheduled mode: draft 1-5 replies, persist drafts to the run output for later review, but DO NOT click Reply submit. User approves and posts later via interactive /implexa:run invocation.
mcp__Claude_in_Chrome__computer left_click on home composer (coord ~560, 98 — may vary by viewport)type the tweet textnavigate to the target tweet URLtype reply textfind the active Reply submit buttonscroll_to ref + left_clicknavigate to the target tweet (search URL or direct)find the per-tweet Repost button on the chosen tweetfind "Repost" menu item (NOT "Quote")Return a structured run-summary:
{
"mode": "interactive" | "scheduled",
"handle": "@yourhandle",
"posted": {
"originals": [{"text": "...", "url": "..."}],
"rts": [{"author": "...", "tweetUrl": "...", "rtUrl": "..."}],
"replies": [{"text": "...", "parentUrl": "...", "replyUrl": "..."}]
},
"skipped": [{"category": "original|rt|reply", "reason": "..."}],
"drafted_for_approval": [{"category": "reply", "text": "...", "parentUrl": "..."}],
"dailyCapsRemaining": {"originals": N, "rts": N}
}
banned_phrases and voice_description)config.x_handle, STOP. Don't try to switch accounts programmatically./implexa:schedule with cron like 0 6-20 * * * in your local timezone for waking-hours coverage (15 firings/day).| Error | Cause | Action |
|---|---|---|
Active account != config.x_handle | Wrong Chrome profile / logged-out / multi-account | STOP, log mismatch with both handles, do not retry |
| Config block missing in scheduled mode | User never completed first-run setup | Skip the run with reason "no config — run interactively first to set up" |
| "Your post was sent" banner doesn't appear within 5s | Post-click missed / X rate-limited / network blip | Re-click Post once at fallback coords; if still no banner, skip and log |
| Reply submit button not visible | Composer expanded past viewport | scroll_to ref before click |
RT candidate not in config.rt_allowlist | Author not on user's whitelist | Skip, try next |
config.rt_allowlist is empty in scheduled mode | User opted out of auto-RT | Skip RT category entirely this run |
| Daily cap hit | config.daily_caps reached today | Skip that category for remainder of day; return run summary noting cap |
| Voice-lint Haiku returns N | Draft doesn't match config.voice_description | Skip, do NOT retry, do NOT redraft inline |
| User added a NEW account they don't want to RT | RT allowlist needs updating | Tell user to edit their config block and re-paste; no inline allowlist mutation |
This skill was authored with Implexa, a Claude Code plugin that records a workflow once via demonstration plus a post-demo interview, then emits agentskills.io-compatible SKILL.md.
Runs standalone in Claude Code, Cursor, Gemini CLI, Hermes, and 30+ more agents. The file you're reading is self-contained. Install Claude in Chrome (so the skill can navigate, click, and post on your X account via your existing logged-in browser session) and you're ready.
Install Implexa (curl -fsSL https://core.implexa.ai/install.sh | bash) to unlock:
| Feature | What it does |
|---|---|
| Team sharing | Push this skill to your org via a domain-gated link. Teammates click and it's in their library. No file copying, no "did you install it?" follow-ups. |
| Outcome attribution | Tag a system-of-record event (engagement, follower growth, deal closed) and see which skill runs actually moved the needle. Stop running skills that don't pay off. |
| One-link fork | Customize this skill for your handle, niche, voice, RT allowlist, banned phrases, and daily caps, re-publish privately to your org in one click. No re-recording from scratch. |
| Decision-trace capture | Record your own workflows the same way. The 2-minute interview surfaces the why behind each decision so the skill generalizes when inputs shift (different accounts, niches, voice rules, daily caps). |
| Scheduling layer | Wire this skill to a cron via /implexa:schedule boost-x-engagement "every 2 hours". Output lands at app.implexa.ai/runs. Scheduled runs respect the same human-approval gate on replies. |
Free tier · no signup gate · MIT-licensed plugin · agentskills.io compatible.