0xgetz / notion-bulk-9router
git clone https://github.com/0xgetz/notion-bulk-9router.git
Bulk-create Notion accounts and auto-wire each into 9Router as an OpenAI-compatible AI provider. Zero-dependency Node toolkit: disposable-email signup, automatic session/token/cookie extraction, and one-command 9Router registration.
—
stars, 24h
+28
stars, 7 days · #1,390
+28
stars, 30 days · #9,280
28
★ total · +28% this week
4
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageJavaScript
LicenseMIT
Created2026-10-14 (6d ago)
Last push5d ago
Watchers0
OwnerUser
GitHub topics
9routeraccount-automationaiapi-gatewaybrowser-automationcdpchrome-devtools-protocolllmnodejsnotionnotion-aiopenai-apiopenai-compatiblereverse-engineeringzero-dependency
Links
- GitHub: github.com/0xgetz/notion-bulk-9router
- Homepage: https://github.com/0xgetz/notion-bulk-9router
- Releases · Issues · Hacker News mentions
README excerpt
### Bulk-create Notion accounts → auto-extract sessions → serve them through 9Router *One command spins up N Notion workspaces, harvests each `token_v2`, and wires them into a load-balanced OpenAI-compatible pool behind a single 9Router endpoint.* 🇬🇧 English · 🇮🇩 Bahasa · 🇨🇳 简体中文 · 🇯🇵 日本語 · 🇪🇸 Español --- ## What this does Notion AI has **no public API**, and its internal write endpoints reject datacenter IPs outright. This toolkit flips that into an advantage: 1. **Creates accounts in bulk** — drives the real Notion signup wizard in a browser, verifying each account through a disposable inbox. 2. **Extracts the session automatically** — pulls `token_v2` + workspace/user ids straight from the browser's cookie jar. 3. **Serves them as one API** — an OpenAI-compatible adapter runs every request *inside a live Notion tab* (residential IP + real cookie jar), and registers the whole pool into **9Router** so any coding agent can use it. [code] That's it — five accounts, five sessions, one pool. --- ## Features | | | |---|---| | 🧬 **Bulk accounts** | `--count N` signs up N workspaces end-to-end, no manual steps | | 🍪 **Auto session capture** | Reads httpOnly `token_v2` over CDP and stores it | | 🌐 **Residential-IP relay** | Writes run inside the browser tab, defeating the datacenter IP gate | | 🔁 **Round-robin pool** | The adapter load-balances across every stored account | | 🎯 **Model selection** | Pick any of ~36 usable Notion models per thread | | 🧩 **9Router ready** | One command registers the provider node + key | | 📦 **Zero dependencies** | Pure Node ≥18 — hand-rolled CDP, no `node_modules` | | 🔒 **Self-contained** | Your accounts and cookies stay in your own `accounts.json` | --- ## Architecture [code] Full breakdown in `STRUCTURE.md`; the internal API is documented in `docs/PROTOCOL.md`. --- ## Quickstart ### 1. Get a browser to drive The toolkit drives a real Chrome/Chromium over the DevTools Protocol. Launch your own with a debug port (use a dedicated profile, **not** your everyday one): [code] The browser must exit through a **residential IP** — Notion (and the temp-inbox site) reject or throttle datacenter IPs, and Notion's AI write endpoints refuse them outright. If your VPS has a datacenter IP, route the browser through a residential proxy, or point the toolkit at a remote browser you already run: [code] ### 2. Create accounts [code] Each account is written to `accounts.json`. Progress prints per step: [code] ### 3. Serve the pool [code] ### 4. Register into 9Router [code] Output: [code] ### 5. Use it [code] --- ## Commands | Command | What it does | |---|---| | `create --count N` | Bulk-create N accounts and (optionally) connect them to 9Router | | `serve` | Run the OpenAI-compatible adapter on `:8790` | | `connect` | Register the adapter as a provider inside 9Router | | `models` | List the live Notion model catalog (needs a logged-in tab) | | `extract` | Capture `token_v2` + ids from an already-logged-in tab | | `