4.9 KiB
4.9 KiB
name, description
| name | description |
|---|---|
| grok-suite | 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 (шлюз)
- Конфиг
config.yaml: jwtSecret (32+), credentialEncryptionKey (base64 32B — НЕ менять после первого акка), bootstrapAdmin - Секреты деплоя:
grok2api-deploy/SECRETS.local.txt(admin / jwtSecret / credEncKey) - Старт:
grok2api.exe→ API :8000/v1, admin UI/ - Hermes-провайдер
grok2apiуже в config.yaml (модели grok-4.6/4.5/4.3/chat-fast/build-0.1/imagine-image) - Живость:
curl -s -m 5 http://127.0.0.1:8000/v1/models - Акки через admin UI; пул пуст = 502 у провайдера → нарегать autoreg'ом
twitter-parser (fxtwitter — единственный живой метод 2026)
Мёртвые: nitter, xcancel, syndication CDN, xAI search (кредиты), browser (403).
python twitter_parser.py tweet <user> <id> # метаданные+стата+media
python twitter_parser.py article <user> <id> --save=out.md # X Article -> md
python twitter_parser.py media <user> <id> 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)
Диагностика
- :8000 пусто → поднять grok2api.exe из grok2api-deploy (background=true)
- 502 у grok2api провайдера → шлюз down ИЛИ 0 акков в пуле
- парсер code!=200 → твит удалён/приватный или fxtwitter down
- 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)