Files
autoreg-skills-max/skills/ai-provider-autoreg/references/key-bank-audit-pattern.md

84 lines
2.9 KiB
Markdown

# Multi-Bank Key/Account Audit Pattern
When you need a full inventory of ALL API keys and accounts across every farm, use this script pattern. Scans all known bank files (JSONL/JSON/CSV), extracts key counts and status distributions, and outputs structured JSON.
## Script Template
```python
import json, os, glob, csv
from collections import Counter
R = {}
def jl(p):
"""Load JSONL file, return list of dicts or None."""
try:
return [json.loads(l) for l in open(p, encoding='utf-8', errors='replace') if l.strip()]
except Exception:
return None
def stat(name, rows, keyf='api_key'):
"""Count rows, keys, and status distribution."""
if rows is None:
R[name] = 'NO FILE'
return
withk = [r for r in rows if r.get(keyf)]
st = Counter(r.get('status', '?') for r in rows)
R[name] = {'total': len(rows), 'with_key': len(withk), 'status': dict(st.most_common(5))}
# Known bank paths — update this dict as new farms are added
banks = {
'miarouter': 'Desktop/farm/miarouter/accounts.jsonl',
'codex_relay': 'tmp/codex_relay/accounts.jsonl',
'llmsrelay': 'tmp/llmsrelay_farm/accounts.jsonl',
'tookenclub_live': 'tmp/tookenclub_live.jsonl',
'seekai': 'tmp/seekai_farm/seekai_accounts.jsonl',
'conol': 'Desktop/_PROJECTS/conol_autoreg/accounts.jsonl',
'notion': 'tmp/notion_autoreg/farm_accounts.jsonl',
'vani': 'tmp/vani_autoreg/vani_accounts.jsonl',
'cleanapis': 'tmp/freeapi_3pack/cleanapis_accounts.jsonl',
'terrapolis': 'tmp/freeapi_3pack/terrapolis_accounts.jsonl',
'kiro_bid': 'tmp/aws_kiro/bid_accounts.jsonl',
'miarouter_verified': 'Desktop/farm/miarouter/verified.jsonl',
}
for name, p in banks.items():
if os.path.exists(p):
rows = jl(p)
kf = 'token' if 'tokens' in name else 'api_key'
stat(name, rows, kf)
else:
R[name] = 'NO FILE'
# CSV banks: count rows
csv_banks = {
'MASTER_NEWAPI_KEYS': 'tmp/MASTER_NEWAPI_KEYS.csv',
'ALL_LIVE_KEYS_FINAL': 'tmp/ALL_LIVE_KEYS_FINAL.csv',
'POOL_FINAL2': 'tmp/free_newapi_reg/POOL_FINAL2.csv',
}
for name, p in csv_banks.items():
try:
with open(p, encoding='utf-8', errors='replace') as f:
n = sum(1 for _ in f) - 1 # minus header
R[name] = {'rows': n}
except Exception:
R[name] = 'ERR'
print(json.dumps(R, indent=1, ensure_ascii=False))
```
## Common Key Field Variance
Different farms use different key field names:
- `api_key` — most common (miarouter, codex, conol, cleanapis)
- `token` — token-only banks (codex_tokens)
- `key` — raw key field (some gateways)
- No key field — email-only/registration-only banks (omnirush, gname)
## Status Codes by Farm
- `full` — account registered, key extracted, smoke tested
- `reg_fail` / `reg_ok_login_fail` — partial progress, retry possible
- `signup_fail` / `login_fail` — blocked at auth stage
- `no_code` / `no_key` — registration succeeded but key extraction failed