--- name: grok-suite description: "Grok stack: autoreg, gateway, twitter parser. Setup+fix." --- # Grok Suite — плейбук (autoreg + gateway + twitter-parser) Репа: https://github.com/Violetpivary/grok-suite (public) Локально: `C:\Users\User\grok-suite\` (autoreg/, gateway/, twitter-parser/) Деплой gateway: `C:\Users\User\grok2api-deploy\grok2api\` (grok2api.exe 90MB собран, config.yaml с секретами, SECRETS.local.txt) ## Состав | Компонент | Что | Запуск | |---|---|---| | autoreg/ | масс-рег x.ai (temp mail, proxy pools, CPA) | `python run_cli_auto.py` / GUI `grok_register_ttk.py` | | gateway/ | grok2api (Go, MIT, upstream chenyme/grok2api) — web-акки → OpenAI API :8000/v1 | `./grok2api.exe` (деплой-копия) | | twitter-parser/ | X/Twitter парсер БЕЗ auth через fxtwitter | `python twitter_parser.py tweet\|article\|media\|avatar\|batch` | ## Gateway (шлюз) 1. Конфиг `config.yaml`: jwtSecret (32+), credentialEncryptionKey (base64 32B — НЕ менять после первого акка), bootstrapAdmin 2. Секреты деплоя: `grok2api-deploy/SECRETS.local.txt` (admin / jwtSecret / credEncKey) 3. Старт: `grok2api.exe` → API :8000/v1, admin UI `/` 4. Hermes-провайдер `grok2api` уже в config.yaml (модели grok-4.6/4.5/4.3/chat-fast/build-0.1/imagine-image) 5. Живость: `curl -s -m 5 http://127.0.0.1:8000/v1/models` 6. Акки через admin UI; пул пуст = 502 у провайдера → нарегать autoreg'ом ## twitter-parser (fxtwitter — единственный живой метод 2026) Мёртвые: nitter, xcancel, syndication CDN, xAI search (кредиты), browser (403). ```bash python twitter_parser.py tweet # метаданные+стата+media python twitter_parser.py article --save=out.md # X Article -> md python twitter_parser.py media C:/dir python twitter_parser.py batch urls.txt C:/dump ``` Питфолы: - Article blocks: `header-two` словами (маппинг в cmd_article), `unstyled`, `blockquote`, `code-block` - Обложка: `article.cover_media.media_info.original_img_url` (?format=jpg&name=large) - Rate limit ~1 req/s в batch - Windows-пути: `C:/dir`, НЕ `/c/dir` (Python создаст C:\c) ## autoreg - Python 3.11 + PYTHONPATH="" - `config.example.json` → `config.json`: duckmail/cloudflare email workers/outlook pool, proxy_mode, proxy_pool - Ядро: registration_flow.py, registration_parallel.py, browser_runtime.py (nodriver+Chrome, НЕ headless Playwright), proxy_pool_v3.py - Выход: account_outputs.py (JSONL), cpa_export.py ## GitHub PAT + пуш (gh CLI мёртв на этой машине) - Харвест PAT: `C:\Users\User\tmp\gh_pat_harvest.py` (login requests+TOTP из пула 172 акков `tmp/hoplite-gateway/data/gh_accounts.json`) - Форма токена: POST `github.com/settings/tokens` (НЕ /tokens/new!), поля `oauth_access[description]`, `oauth_access[scopes][]`, `oauth_access[default_expires_at]` - Location после /session = ПОЛНЫЙ URL - Живые PAT: `C:\Users\User\tmp\gh_pats.json` - Пуш без git-remote-https: Git Data API (`tmp/push_grok_suite.py` — blobs base64 ThreadPool6 → tree с base_tree → commit с parents → PATCH ref). ВАЖНО: на ПУСТОЙ репе /git/blobs = 409 «Git Repository is empty» — сначала init-коммит через Contents API (PUT /contents/README.md) ## Диагностика 1. :8000 пусто → поднять grok2api.exe из grok2api-deploy (background=true) 2. 502 у grok2api провайдера → шлюз down ИЛИ 0 акков в пуле 3. парсер code!=200 → твит удалён/приватный или fxtwitter down 4. PAT истёк (90d) → gh_pat_harvest.py на новом акке ## История - 2026-09-20 ФИНАЛ: репа запушена — https://github.com/Violetpivary/grok-suite commit 1a09ceb, 1649 файлов (autoreg/ gateway/ twitter-parser/ scripts/ docs/FULL_GUIDE.md). Пуш через Git Data API инкрементальными поддеревьями (`tmp/push_grok_suite3.py` — ОДИН tree на 1649 файлов = 422 timeout, строить bottom-up по директориям) - Все live-тесты PASS: healthz ok, 9 моделей, grok-chat-fast «OK», grok-4.6 «OK» 4.8s, X live-search 3 поста за 7.5s, x_parser.py 4 поста + JSON, fxtwitter article 15877 chars - КЛЮЧ: реальный g2a-ключ в `grok2api-deploy/g2a_key.txt` (g2a_7c502f8386fc_...) — в Hermes config.yaml был СТАРЫЙ ключ (g2a_78c67429) → 401. Обновил в обоих конфигах - Шлюз: grok2api.exe PID 34152 (--config config.yaml), 4 акка в пуле (2 web + 2 build), пополнение: `grok2api-deploy/replenish.py --count N` - Upstream: chenyme/grok2api (MIT)