x-post · diff

git:20260814.5023d8c to git:20260814.06fa906

13 added, 0 removed. Audit A to A.

---
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 — пост в X с аккаунта Антона (Chrome, draft-first)
**Зачем.** EN-тизеры (/episode) до сих пор оседали черновиками — не было постера в X. Тот же безопасный паттерн, что /fb-post: живая залогиненная вкладка, никакого headless.
## 0. Предохранитель (обязательно)
```bash
python "$USERPROFILE/.claude/scripts/_shared/social_guard.py" check x --text "<финальный текст>"
```
`BLOCKED` (exit 3) → СТОП, доложи (лимит 6/день или дубль). Не обходи.
## 1. Текст (голос Антона, Opus)
Бери готовый черновик (episode teaser EN / intention-lane) или пиши на Opus. Один твит ≤280 символов — посчитай ДО браузера; длиннее → тред (каждый твит ≤280, нить через reply) или предложи Антону сократить.
## 2. Tier-2 gate (draft-first)
Покажи финальный текст (+ разбивку треда, если тред) → жди явного `+`. Без «+» ничего не публикуется.
## 3. Браузер (Claude-in-Chrome, живая вкладка)
> Браузерная работа — локально на этой машине; окно вперёд не тащить.
> ⛔ IP-гейт (anton 16.07): постинг в X/соцсети с бан-риском — ТОЛЬКО с хаба `HUB-1` (постоянный IP). На другой машине НЕ постить — задачу текстом на хаб. Канон: `reglament-ip-sensitive-deystviya-tolko-s-haba`.
1. `list_connected_browsers` → нет расширения → блок, скажи Антону (не падать в Playwright).
2. Вкладка `x.com`. **Сверь залогиненный handle** (аватар/меню профиля) = **@Tony_Stef_** из реестра. Другой аккаунт → СТОП, спроси. Не залогинен → блок (логин/2FA не трогаем в X — checkpoint-риск).
3. Композер: `find` «post composer / What's happening». Введи текст (`form_input`). **Кнопку Post не жми** до выполненного гейта §2.
4. После `+` — Post. Тред: после первого твита кнопка «+» в композере / reply на свой твит.
5. Скриншот опубликованного + URL твита (клик по timestamp → адресная строка) = доказательство.
## 4. Зафиксируй (ПОСЛЕ успешной публикации)
```bash
python "$USERPROFILE/.claude/scripts/_shared/social_guard.py" record x --text "<текст>"
```
Доклад: ссылка + скрин + «сегодня x N/6».
## Стоп-краны
- Любой checkpoint/captcha/«unusual activity» X → немедленно СТОП, доложи, ноль ретраев.
- Не публиковать идентичный текст повторно; не постить чужими аккаунтами.
- Ссылки в тексте — только живые и наши (link-safety).
## Связанное
`/fb-post` (образец паттерна) · `/tg-post` · `/episode` (тиры: teaser EN → X) · гейт `scripts\_shared\social_guard.py` · реестр `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.
+