Quick Start
Get a blog running on whiz.pub in under five minutes.
Install the CLI
Via install script
curl -sL https://whiz.pub/install | shThis installs the whiz binary to ~/.local/bin. No sudo required.
Verify installation
whiz versionCreate an Account
Web
- Go to
https://whiz.pub/signup. - Enter your email, password, and pick a subdomain (e.g.
yourname). - Your API key is shown on the confirmation page. Save it for later.
API
curl -X POST https://whiz.pub/api/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"password": "your-password",
"subdomain": "yourname"
}'The response includes your API key. Use it in subsequent requests.
CLI
whiz signupYou will be prompted for an email, password, and subdomain. The command prints your API key on success and saves it locally.
You can also pass the values directly:
whiz signup --email you@example.com --password your-password --subdomain yournameMCP
Connect to https://whiz.pub/mcp without authentication and call:
{
"tool": "whiz_signup",
"arguments": {
"email": "you@example.com",
"password": "your-password",
"subdomain": "yourname"
}
}The response includes your API key. Reconnect with it in the Authorization header to access authenticated tools.
Verify Your Email
Check your inbox for a 6-digit verification code, then:
Web
Enter the verification code on the verification page that appears after signup.
API
curl -X POST https://whiz.pub/api/v1/verify-email \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "123456"
}'CLI
whiz verify 123456MCP
{
"tool": "whiz_verify_email",
"arguments": {
"code": "123456"
}
}Authenticate
If you already have an API key (from the web dashboard at /app/settings), you can authenticate without signing up again.
Web
You are automatically authenticated when you log in to the dashboard at https://whiz.pub/login.
API
Include your API key as a Bearer token in the Authorization header on every request:
Authorization: Bearer YOUR_API_KEYCLI
whiz auth YOUR_API_KEYThis saves the key locally for subsequent commands.
MCP
Add your API key to your MCP client configuration:
{
"mcpServers": {
"whiz": {
"url": "https://whiz.pub/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Writing and Publishing
Create a New Draft
Web
Open the editor at /app/new. Write your post using the markdown editor with live preview. Click Save Draft to save without publishing.
API
curl -X POST https://whiz.pub/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "My First Post",
"slug": "my-first-post",
"content": "Hello, world! This is **markdown**.",
"tags": ["intro", "blogging"],
"status": "draft"
}'CLI
whiz write hello.mdThis opens hello.md in your $EDITOR with frontmatter scaffolding.
MCP
{
"tool": "whiz_publish_post",
"arguments": {
"title": "My First Post",
"slug": "my-first-post",
"content": "Hello, world! This is **markdown**.",
"tags": ["intro", "blogging"],
"status": "draft"
}
}Publish a Post
Web
Open a draft from the dashboard at /app, then click Publish. Or write a new post at /app/new and click Publish directly.
API
curl -X POST https://whiz.pub/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "My First Post",
"slug": "my-first-post",
"content": "Hello, world! This is **markdown**.",
"tags": ["intro", "blogging"],
"status": "published",
"summary": "A short excerpt for the index and RSS feed.",
"featured_image": "https://example.com/social.jpg",
"pinned": false
}'The post endpoint performs an upsert — if a post with the given slug already exists, it is updated.
Leave summary, featured_image, and pinned out if you do not need them. Whiz will generate a summary from the content when none is provided.
Output:
Published: https://yourname.whiz.pub/my-first-postCLI
whiz publish hello.mdOutput:
Published: https://yourname.whiz.pub/helloMCP
{
"tool": "whiz_publish_post",
"arguments": {
"title": "My First Post",
"slug": "my-first-post",
"content": "Hello, world! This is **markdown**.",
"tags": ["intro", "blogging"],
"status": "published"
}
}List Posts
Web
Open the dashboard at /app to see all your posts with their status, date, and tags.
API
curl https://whiz.pub/api/v1/posts?limit=10&offset=0 \
-H "Authorization: Bearer YOUR_API_KEY"CLI
whiz listMCP
{
"tool": "whiz_list_posts",
"arguments": {}
}Edit a Post
Web
Click on any post in the dashboard at /app to open it in the markdown editor. Make your changes and click Save.
API
curl -X POST https://whiz.pub/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Title",
"slug": "my-first-post",
"content": "Updated content in **markdown**.",
"tags": ["updated"],
"status": "published"
}'The post endpoint performs an upsert — sending a request with an existing slug updates that post.
CLI
whiz edit my-first-postOpens the post content in your $EDITOR. Saves changes on exit.
MCP
{
"tool": "whiz_publish_post",
"arguments": {
"title": "Updated Title",
"slug": "my-first-post",
"content": "Updated content in **markdown**.",
"tags": ["updated"],
"status": "published"
}
}Calling whiz_publish_post with an existing slug updates the post.
Delete a Post
Web
Open the post from the dashboard at /app and click Delete. You will be asked to confirm.
API
curl -X DELETE https://whiz.pub/api/v1/posts/my-first-post \
-H "Authorization: Bearer YOUR_API_KEY"CLI
whiz delete my-first-postYou will be prompted for confirmation. Use -f to skip:
whiz delete my-first-post -fMCP
{
"tool": "whiz_delete_post",
"arguments": {
"slug": "my-first-post"
}
}Markdown Frontmatter
Posts use YAML frontmatter followed by markdown content:
---
title: "My First Post"
tags: [go, blogging]
status: published
---
Your markdown content here.| Field | Required | Default | Description |
|---|---|---|---|
title | Yes | — | Page title and heading |
slug | No | From title | URL slug, auto-generated if omitted |
tags | No | [] | Array of tag strings |
status | No | published | draft or published |