x-post · git:20260814.b99e55d · 2026-08-14 · sha256 b53c4c07aace0c2d

x-post git:20260814.b99e55dA

Immutable. This exact content is served forever at /api/v1/blob/b53c4c07aace0c2d.

---
name: x-post
description: >
  Publish a VETTED post/tweet to an X (Twitter) account through the owner's real logged-in
  Chrome (live-tab, low-ban-risk path), rate-guarded and draft-first. Trigger on "/x-post",
  "tweet this", "post to X". Counts length the way X does (every link = 23 chars) and refuses
  over-limit texts instead of silently truncating.
license: MIT
---

# /x-post — post to X from the owner's account (Chrome, draft-first)

**Why.** EN teasers (from /episode) kept piling up as drafts — there was no poster for X. Same safe pattern as /fb-post: a live logged-in tab, never headless.

## 0. Safety catch (mandatory)
```bash
python "$USERPROFILE/.claude/scripts/_shared/social_guard.py" check x --text "<final text>"
```
`BLOCKED` (exit 3) → STOP and report (the 6/day limit, or a duplicate). Do not work around it.

## 1. The text (the owner's voice, top model)
Take a ready draft (an /episode EN teaser or an intention-lane text) or write it with the top model. A single tweet is ≤280 characters — count BEFORE opening the browser; longer → a thread (each tweet ≤280, chained by reply) or offer the operator a shorter version.

## 2. Tier-2 gate (draft-first)
Show the final text (+ the thread split, if it is a thread) → wait for an explicit `+`. Nothing is published without it.

## 3. The browser (Claude-in-Chrome, a live tab)
> Browser work stays local on this machine; never drag the window to the foreground elsewhere.
> ⛔ IP gate (2026-07-16): posting to X and other ban-sensitive social platforms happens ONLY from the hub `HUB-1` (a stable IP). Do NOT post from another machine — send the task to the hub as text. Canon: the "IP-sensitive actions from the hub only" rule.
1. `list_connected_browsers` → no extension → block and tell the operator (do not fall back to Playwright).
2. Open the `x.com` tab. **Verify the logged-in handle** (avatar / profile menu) against the registry. A different account → STOP and ask. Not logged in → block (we never touch login/2FA on X — checkpoint risk).
3. Composer: `find` "post composer / What's happening". Enter the text (`form_input`). **Do not press Post** until the gate in §2 is satisfied.
4. After the `+` — press Post. For a thread: use the "+" button in the composer after the first tweet, or reply to your own tweet.
5. A screenshot of the published post + the tweet URL (click the timestamp → address bar) is the proof.

## 4. Record it (AFTER a successful publication)
```bash
python "$USERPROFILE/.claude/scripts/_shared/social_guard.py" record x --text "<text>"
```
Report: the link + the screenshot + "x today N/6".

## Stop switches
- Any checkpoint / captcha / "unusual activity" from X → STOP immediately, report, zero retries.
- Never republish identical text; never post from someone else's account.
- Links in the text must be live and ours (link-safety).

## Related
`/fb-post` (the pattern this follows) · `/tg-post` · `/episode` (tiers: EN teaser → X) · the gate `scripts\_shared\social_guard.py` · the registry `00-System\Channels-Registry.md`.


---

<!-- CONTACT-FOOTER -->
## About & contact

Built and battle-tested at **Palo Alto AI Research Lab** — a fleet of Claude Code machines
running 24/7 as a second brain and synthetic cofounder. Every skill here survived real
production use before publication.

- 📦 All 101 skills: https://github.com/tonydzi/second-brain-starter-kit
- 👤 Author: **Anton Dziatkovskii** — Telegram [@tonydzi](https://t.me/tonydzi) · WhatsApp [+1 341 222 9178](https://wa.me/13412229178) · X [@Tony_Stef_](https://x.com/Tony_Stef_)
- 🧪 **Engineers: want to test-drive this setup?** Message me — I hand out free starter seeds to engineers who test and report back. Custom skill requests welcome.