autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,110 @@
# Apodex Platform Registration — 2026-06-30
## Working Registration Flow (platform.apodex.ai)
### Account Creation
1. Navigate to `https://platform.apodex.ai/login`
2. Click "Create one" → registration form
3. Fill: Email + Name (optional) + Password (e.g. `EniStrong2026!!`)
4. Click "Create account" → 6-digit OTP sent to email
5. Read OTP via Gmail IMAP
6. Enter OTP → "Verify & continue" → dashboard loads
### Gmail IMAP OTP Reading
```python
import imaplib, ssl, re, email as eml, time
GMAIL = "[REDACTED-NAME]@gmail.com"
GMAIL_APP = "IMAP_APP_PASSWORD" # NOT nhrcldobevqcbyrk (dead)
def read_otp(timeout=90):
ctx = ssl.create_default_context()
deadline = time.time() + timeout
while time.time() < deadline:
mail = imaplib.IMAP4_SSL("imap.gmail.com", 993, ssl_context=ctx, timeout=15)
mail.login(GMAIL, GMAIL_APP)
mail.select("INBOX")
_, msgs = mail.search(None, '(FROM "apodex" UNSEEN)')
if msgs[0]:
mid = msgs[0].split()[-1]
_, data = mail.fetch(mid, "(RFC822)")
raw = data[0][1].decode("utf-8", errors="ignore")
msg = eml.message_from_string(raw)
body = ""
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/plain":
body = part.get_payload(decode=True).decode("utf-8", errors="ignore")
break
else:
body = msg.get_payload(decode=True).decode("utf-8", errors="ignore")
codes = re.findall(r"\b\d{6}\b", body)
mail.store(mid, "+FLAGS", "\\Seen")
mail.logout()
if codes:
return codes[0]
mail.logout()
time.sleep(5)
return None
```
### API Key Creation (Browser UI Only)
1. Navigate to `https://platform.apodex.ai/console/api-keys`
2. Click "Create New Key"
3. Enter name → "Create API Key"
4. **Read full key from textbox immediately** (one-time display)
5. Key format: `sk-<43 chars base64>=`
### API Key Validation
```python
import urllib.request, json
def test_key(key):
req = urllib.request.Request("https://api.apodex.ai/v1/models",
headers={"Authorization": f"Bearer {key}"})
resp = urllib.request.urlopen(req, timeout=15)
return json.loads(resp.read())
# Returns: {"data": [{"id": "apodex-1-0-deep-research", ...}, ...]}
```
### Key Storage
Keys saved to: `C:\Users\User\Desktop\GroveMind\apodex-mcp-v4\keys\active_keys.json`
```json
{
"keys": {
"[REDACTED-NAME]+apodex1": "sk-QIS...",
"[REDACTED-NAME]+apodex2": "sk-OHD...",
...
},
"endpoint": "https://api.apodex.ai/v1/chat/completions",
"created": "2026-06-30"
}
```
## Known Issues
- `POST platform.apodex.ai/v1/api-keys` returns **masked** keys (`sk-95O...JSXg=`). Full key only from browser UI.
- `POST api.apodex.ai/v1/api-keys` returns `{"error":"invalid token"}` with Apodex JWT.
- Google SA XOAUTH2 IMAP fails (Gmail API disabled in GCP project 958963379068).
- Old Gmail app password `nhrcldobevqcbyrk` is dead. Working: `IMAP_APP_PASSWORD`.
- `apodex_reforrm_reg.py` is outdated (targets old www.apodex.ai flow, 404s).
## Mass Research Script
Script: `C:\Users\User\Desktop\apodex_research\apodex_mass_research.py`
- Loads N keys from active_keys.json
- Runs N parallel deep-research queries (ThreadPoolExecutor)
- Each query uses a different key → no rate limiting
- Saves results to `C:\Users\User\Desktop\apodex_research\<query_id>.md`
- Summary in `_summary.json`
- Run: `python -u apodex_mass_research.py` (background, ~5 min for 9 queries)
## 9 Working Keys (2026-06-30)
| Email | Key Prefix |
|-------|-----------|
| [REDACTED-EMAIL] | sk-9Zy... |
| [REDACTED-EMAIL] | sk-vqm... |
| [REDACTED-NAME]+apodex1@gmail.com | sk-QIS... |
| [REDACTED-NAME]+apodex1@gmail.com (key 2) | sk-vCp... |
| [REDACTED-NAME]+apodex2@gmail.com | sk-OHD... |
| [REDACTED-NAME]+apodex3@gmail.com | sk-3py... |
| [REDACTED-NAME]+apodex4@gmail.com | sk-W_F... |
| [REDACTED-NAME]+apodex5@gmail.com | sk-Fxu... |
| [REDACTED-NAME]+apodex6@gmail.com | sk-1Sp... |