- tools/scripts/llm-key-hunter: GitHub leak hunting pipeline (hunt_*, pivot miner, two-layer verify/content caches, per-provider verification) - usable_keys: verified key vault across 12 providers (deepseek, minimax, volcanoark, longcat, codingplan, zhipu free-tier, mimo, siliconflow, etc.) - .grok/skills/llm-key-hunter: operator skill for the hunt/verify/vault flow - NewAPI channel import scripts and CDP capture helpers - Result verdict buckets (excluding multi-GB blob caches and dedup dumps)
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Add confirmed usable API keys as channels to NewAPI."""
|
|
|
|
from newapi_client import (
|
|
add_channel, list_channels, test_channel,
|
|
TYPE_ZHIPU_V4, TYPE_VOLC_ENGINE, TYPE_ANTHROPIC, TYPE_MINIMAX,
|
|
)
|
|
from channels_config import (
|
|
build_zhipuai, build_volcano_ark, build_volcano_ark_coding,
|
|
build_minimax, build_baidu_qianfan,
|
|
)
|
|
|
|
|
|
def add_zhipuai():
|
|
"""ZhipuAI — 63 keys, multi-key mode."""
|
|
ch, n_keys = build_zhipuai(channel_type=TYPE_ZHIPU_V4)
|
|
success, msg = add_channel(ch, mode="multi_to_single")
|
|
print(f"[ZhipuAI] success={success} msg={msg} keys={n_keys}")
|
|
return success
|
|
|
|
|
|
def add_volcano_ark():
|
|
"""VolcanoArk — 4 keys, one channel each."""
|
|
channels = build_volcano_ark(channel_type=TYPE_VOLC_ENGINE)
|
|
results = []
|
|
for ch in channels:
|
|
success, msg = add_channel(ch)
|
|
print(f"[{ch['name']}] success={success} msg={msg}")
|
|
results.append(success)
|
|
return all(results)
|
|
|
|
|
|
def add_volcano_ark_coding():
|
|
"""VolcanoArk CodingPlan — Anthropic-compatible."""
|
|
ch = build_volcano_ark_coding()
|
|
success, msg = add_channel(ch)
|
|
print(f"[VolcanoArk-CodingPlan] success={success} msg={msg}")
|
|
return success
|
|
|
|
|
|
def add_minimax():
|
|
ch = build_minimax(channel_type=TYPE_MINIMAX)
|
|
success, msg = add_channel(ch)
|
|
print(f"[MiniMax] success={success} msg={msg}")
|
|
return success
|
|
|
|
|
|
def add_baidu_qianfan():
|
|
ch = build_baidu_qianfan()
|
|
success, msg = add_channel(ch)
|
|
print(f"[BaiduQianfan] success={success} msg={msg}")
|
|
return success
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("=== Adding channels to NewAPI ===\n")
|
|
|
|
steps = [
|
|
("1. ZhipuAI (63 keys, multi-key)", add_zhipuai),
|
|
("2. VolcanoArk (4 keys, separate)", add_volcano_ark),
|
|
("3. VolcanoArk CodingPlan (Anthropic)", add_volcano_ark_coding),
|
|
("4. MiniMax", add_minimax),
|
|
("5. Baidu Qianfan Coding Plan", add_baidu_qianfan),
|
|
]
|
|
for label, fn in steps:
|
|
print(f"--- {label} ---")
|
|
fn()
|
|
print()
|
|
|
|
print("=== Done! Listing all channels: ===\n")
|
|
for ch in list_channels():
|
|
print(f" ID={ch['id']:3d} type={ch['type']:2d} status={ch['status']} "
|
|
f"name={ch['name']:30s} models={ch['models'][:60]}")
|