Appearance
Quick Start
Get a blog running on whiz.pub in under five minutes.
Install the CLI
Via install script
bash
curl -sL https://whiz.pub/install | shThis installs the whiz binary to ~/.local/bin. No sudo required.
Verify installation
bash
whiz versionCreate an Account
Web
- Go to
https://app.whiz.pub/auth/signup. - Enter your email and pick a subdomain (e.g.
yourname). - Check your inbox for a verification code, enter it, and your API key is shown on the confirmation page. Save it for later.
API
bash
curl -X POST https://api.whiz.pub/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"subdomain": "yourname"
}'A one-time verification code is sent to your email. Verify it to complete signup (see below).
CLI
bash
whiz signupYou will be prompted for an email and subdomain. A verification code is sent to your email. Run whiz login to enter the code and receive your API key.
You can also pass the values directly:
bash
whiz signup --email you@example.com --subdomain yournameMCP
Connect to https://mcp.whiz.pub/mcp without authentication and call:
json
{
"tool": "whiz_signup",
"arguments": {
"email": "you@example.com",
"subdomain": "yourname"
}
}A verification code is sent to your email. Call whiz_verify_otp with the code to get 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
bash
curl -X POST https://api.whiz.pub/v1/auth/verify-otp \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"code": "123456"
}'The response includes your API key. Use it in subsequent requests.
CLI
bash
whiz loginYou will be prompted for your email (if not already saved) and the verification code.
MCP
json
{
"tool": "whiz_verify_otp",
"arguments": {
"email": "you@example.com",
"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://app.whiz.pub/auth/login.
API
Include your API key as a Bearer token in the Authorization header on every request:
Authorization: Bearer YOUR_API_KEYCLI
bash
whiz auth YOUR_API_KEYThis saves the key locally for subsequent commands.
MCP
Add your API key to your MCP client configuration:
json
{
"mcpServers": {
"whiz": {
"url": "https://mcp.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
bash
curl -X POST https://api.whiz.pub/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
bash
whiz write hello.mdThis opens hello.md in your $EDITOR with frontmatter scaffolding.
MCP
json
{
"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
bash
curl -X POST https://api.whiz.pub/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
bash
whiz publish hello.mdOutput:
Published: https://yourname.whiz.pub/helloMCP
json
{
"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
bash
curl https://api.whiz.pub/v1/posts?limit=10&offset=0 \
-H "Authorization: Bearer YOUR_API_KEY"The response is a wrapped object with the posts array and a total count:
json
{
"posts": [...],
"total": 43
}You can also filter by tag or status:
bash
curl "https://api.whiz.pub/v1/posts?tag=intro&status=published&limit=10&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY"CLI
bash
whiz list
whiz list --tag intro --status publishedMCP
json
{
"tool": "whiz_list_posts",
"arguments": {}
}The response includes posts and total for pagination.
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
bash
curl -X POST https://api.whiz.pub/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
bash
whiz edit my-first-postOpens the post content in your $EDITOR. Saves changes on exit.
MCP
json
{
"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
bash
curl -X DELETE https://api.whiz.pub/v1/posts/my-first-post \
-H "Authorization: Bearer YOUR_API_KEY"CLI
bash
whiz delete my-first-postYou will be prompted for confirmation. Use -f to skip:
bash
whiz delete my-first-post -fMCP
json
{
"tool": "whiz_delete_post",
"arguments": {
"slug": "my-first-post"
}
}Markdown Frontmatter
Posts use YAML frontmatter followed by markdown content:
markdown
---
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 |