Three API calls. One key. Your blog is live.
Point any AI agent at networkr.dev/brief.md, or run the CLI yourself. Both paths produce the same final state: a registered site, a tenant API key, and the first article generating in the background.
Tell your AI agent
In Cursor, Claude Code, Continue, Aider, Lovable, Bolt, v0, or ChatGPT:
The brief is a machine-readable spec. Your agent follows the 3-step flow, writes the tenant key to .env.local, and (for hosted mode) scaffolds blog rendering if you ask.
Run it yourself
From your project directory:
Interactive: asks for domain, email, flavour, storage mode. Writes .env.local. Same 3-step flow as the brief, wrapped.
Prefer to skip both? The manual API flow is below — what the agent or CLI is doing on your behalf.
What you need
- ✓A domain you own — DNS resolves, serves public HTML, not behind an auth wall.
- ✓An email address.
- ✓A storage mode pick:
hosted(simplest — we store articles, your frontend fetches via public API) or one ofsupabase,pocketbase,firebase,appwrite,mongodb(we write to your DB — you supply creds). - !Your site needs real content. An admission gate rejects empty, redirecting, or thin-content domains.
Three API calls
Base URL: https://api.networkr.dev
Audit the site
{
"domain": "example.com",
"email": "user@example.com"
}{
"token": "<onboard_token>",
"seo_score": 72,
"issues": [{ "type": "critical|warning|info", "message": "..." }],
"brand_detected": { "accent_color": "#...", "logo_url": "..." },
"database_detected": { "primary": { "type": "supabase|..." } },
"flavours": [
{ "id": "professional|casual|technical|founder", "description": "..." }
]
}Token is valid for 24h. Pick a flavour for step 2.
Confirm flavour and preview
{
"token": "<from step 1>",
"flavour": "professional",
"author_name": "Your Real Name",
"author_bio": "optional short bio",
"accent_color": "#8FBCBB",
"topics": ["optional list"],
"niche": "optional"
}{
"preview_url": "/preview/<token>",
"sample_article": { "title": "...", "body_html": "...", "cover_image": "data:..." }
}Open https://api.networkr.dev<preview_url> to see how your blog will look. Approve before activating.
Activate
{
"token": "<same>",
"db_type": "hosted"
}For non-hosted modes, add the DB credentials (see /docs for the full field list per adapter).
{
"success": true,
"site_id": "example-com",
"network_id": "...",
"api_key": {
"key": "nwk_live_<32 hex>",
"prefix": "nwk_live_abcd1234",
"notice": "Store this key now — it will never be shown again."
}
}api_key.key is shown once. Save it immediately. Networkr keeps only a hash.
Save the install to your repo
Write these three variables to .env.local at the project root:
NETWORKR_API=https://api.networkr.dev NETWORKR_SITE_ID=<site_id from step 3> NETWORKR_KEY=<api_key.key from step 3>
Ensure .env.local is in .gitignore. Optionally drop a copy of /brief.md at .networkr/AGENT.md so future agents in the repo find the install context.
Verify the install
Authorization: Bearer <api_key.key>
Returns a 10-item checklist with statuses (ok / warning / missing), each item carrying the exact API call to fix it if needed, plus a next_step object.
Hosted mode — render the blog
If you picked hosted, your frontend fetches posts from these public endpoints (no auth):
Reference implementation (Next.js 16): github.com/HEIMLANDR/networkr/tree/main/frontend/src/app/blog. Adapt for your framework — the API is framework-agnostic.
Wire up your build hook
When your site deploys through a static host (Netlify, Vercel, Cloudflare, Render, Fly, GitHub Actions), Networkr needs a build hook URL to trigger rebuilds on every new post. Get the URL from your host's dashboard, then:
Authorization: Bearer <key>
Content-Type: application/json
{ "build_hook_url": "https://api.netlify.com/build_hooks/..." }Verify with POST /api/sites/<site_id>/build-hook/test.
Hard rules
- ✗Never invent endpoints. Use only what this page and
/docslist. Unknown routes return 404. - ✗Never edit published posts. Not supported. To change a post:
DELETE /api/sites/<id>/blog/posts/<slug>then regenerate. - !The tenant key scopes to the network, not the site. Reuse it across sibling sites on the same email.
- !Onboard token expires in 24h. On
410, restart from step 1. - !Respect rate limits.
429= wait 60s, retry once. Don't loop.
Install in the terminal right now
Point your AI agent at networkr.dev/brief.md or run npx networkr init yourself. Every install converges on the same final state.