Hourly 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.md file at the top of your project (or into ~/.claude/CLAUDE.md for 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.
共 1 个版本