Appearance
CLI Reference
The whiz command-line tool lets you manage your whiz.pub blog from the terminal.
Pages and Tags
Pages and tag management (rename, delete, descriptions) are available through the web dashboard and the REST API. The CLI focuses on post authoring workflows. You can create pages via the API with post_type: "page".
Webhooks
The CLI supports outbound webhook management via whiz webhook subcommands. See the webhook commands below.
Installation
Install script
bash
curl -sL https://whiz.pub/install | shInstalls to ~/.local/bin. No sudo required.
Commands
auth
Save an API key for subsequent commands.
whiz auth [API_KEY]| Flag | Description |
|---|---|
--api-base | API server URL (default: https://api.whiz.pub) |
bash
whiz auth sk_abc123signup
Create a new whiz.pub account interactively. A one-time verification code will be sent to your email.
whiz signup| Flag | Description |
|---|---|
--api-base | API server URL (default: https://api.whiz.pub) |
--email | Email address (skips prompt) |
--subdomain | Subdomain (skips prompt) |
bash
whiz signup
whiz signup --email you@example.com --subdomain yournameOn success, a verification code is sent to your email. Use whiz login to enter the code and receive your API key.
login
Log in to your whiz.pub account. You will be prompted for your email, then a one-time code is sent to your inbox. Enter the code to authenticate.
whiz login| Flag | Description |
|---|---|
--api-base | API server URL (default: https://api.whiz.pub) |
--email | Email address (skips prompt) |
bash
whiz login
whiz login --email you@example.comOn success, prints your API key and saves it locally.
write
Create a new markdown file with frontmatter scaffolding and open it in $EDITOR.
whiz write [FILE]bash
whiz write hello.mdThe generated file includes frontmatter with all available fields:
yaml
---
title: ""
date: 2025-01-15T10:30:00Z
tags: []
status: draft
summary: ""
featured_image: ""
pinned: false
metadata: {}
---Frontmatter fields
| Field | Type | Description |
|---|---|---|
title | string | Post title (required) |
slug | string | URL slug (auto-generated from title if empty) |
date | string | Publication date in RFC3339 format. Controls sorting and display date. |
tags | list | List of tags |
status | string | draft or published (default: published) |
summary | string | Custom excerpt for indexes and feeds |
featured_image | string | HTTPS image URL for social previews |
pinned | boolean | Pin post to the top of the blog index |
metadata | object | Arbitrary JSON/YAML metadata (max 16 KB). Stored with the post and returned via API, MCP, and CLI. |
edit
Fetch an existing post by slug and open it in $EDITOR for editing. Saves changes on exit.
whiz edit [SLUG]bash
whiz edit my-first-postThe reconstructed frontmatter includes date and metadata fields from the existing post.
publish
Upload a markdown file as a post. Creates a new post or updates an existing one (upsert by slug).
whiz publish [FILE]bash
whiz publish hello.mdAll frontmatter fields are sent to the API, including date (for backdating) and metadata (custom JSON).
list
List posts on your blog with optional filtering and pagination.
whiz list [FLAGS]| Flag | Description |
|---|---|
--tag | Filter by tag |
--status | Filter by status (draft, published) |
--limit | Max results per page (default 20) |
--offset | Pagination offset |
--type | Post type (post, page) |
bash
whiz list
whiz list --tag golang --status published
whiz list --limit 10 --offset 20delete
Delete a post by slug.
whiz delete [SLUG]| Flag | Description |
|---|---|
-f, --force | Skip confirmation prompt |
bash
whiz delete my-first-post
whiz delete my-first-post -fdomain add
Register a custom domain for your blog.
whiz domain add [DOMAIN]bash
whiz domain add example.comPrints DNS instructions including the required CNAME record (for subdomains), A record (for apex domains), and TXT verification record values.
domain verify
Verify DNS records for a previously added custom domain.
whiz domain verify [DOMAIN]bash
whiz domain verify example.comdomain remove
Remove the custom domain from your blog.
whiz domain remove| Flag | Description |
|---|---|
-f, --force | Skip confirmation prompt |
bash
whiz domain remove
whiz domain remove -fheadless enable
Enable headless (CMS-only) mode. Public blog pages return 404; API, CLI, and MCP continue to work. Your subdomain stays reserved. Cannot be enabled while a custom domain is configured.
whiz headless enablebash
whiz headless enableheadless disable
Disable headless mode. Public blog pages are served normally again.
whiz headless disablebash
whiz headless disabletheme get
Show the current theme settings for your blog, including preset, fonts, dark mode preference, and custom CSS size.
whiz theme getbash
whiz theme gettheme set
Update your blog's theme. All flags are optional; only the provided values are changed.
whiz theme set [FLAGS]| Flag | Description |
|---|---|
--preset | Theme preset (forest, ocean, mono, sunset, berry, rose, slate, emerald) |
--body-font | Body font name or "Custom (Google Fonts)" |
--heading-font | Heading font name or "Custom (Google Fonts)" |
--body-font-url | Google Fonts URL for a custom body font |
--heading-font-url | Google Fonts URL for a custom heading font |
--dark-mode | Dark mode preference (auto, light, dark) |
--custom-css | Path to a CSS file (max 10 KB) or inline CSS string |
bash
whiz theme set --preset rose
whiz theme set --body-font "Literata" --heading-font "Playfair Display"
whiz theme set --dark-mode dark
whiz theme set --preset emerald --body-font "Custom (Google Fonts)" \
--body-font-url "https://fonts.googleapis.com/css2?family=Outfit:wght@400;600;700&display=swap"
whiz theme set --custom-css styles.csstheme save
Save the current live theme as a named saved theme.
bash
whiz theme save --name "My Theme"theme list-saved
List all saved themes.
bash
whiz theme list-savedtheme delete-saved
Delete a saved theme by name or ID.
bash
whiz theme delete-saved "My Theme"theme apply-saved
Apply a saved theme to the live blog.
bash
whiz theme apply-saved "My Theme"settings
Show all blog settings, including display name, description, title pattern, headless mode, domain, and AI access.
whiz settingsbash
whiz settingscache clear
Clear cached blog pages from the CDN. This forces all pages to be regenerated on the next visit.
whiz cache clearbash
whiz cache clearwebhook list
List all outbound webhooks configured for your blog.
bash
whiz webhook listwebhook add
Create a new outbound webhook.
whiz webhook add --url URL --events EVENTS [--description DESC]| Flag | Description |
|---|---|
--url | Webhook endpoint URL (required) |
--events | Comma-separated event list (required) |
--description | Optional description |
bash
whiz webhook add --url https://example.com/hook \
--events post.created,post.updated,post.deletedThe response includes a signing secret (shown only once).
Supported events: post.created, post.updated, post.deleted, page.created, page.updated, page.deleted
webhook delete
Delete a webhook by ID.
whiz webhook delete [ID]| Flag | Description |
|---|---|
-f, --force | Skip confirmation prompt |
bash
whiz webhook delete abc-123webhook deliveries
Show recent delivery attempts for a webhook.
whiz webhook deliveries [ID]bash
whiz webhook deliveries abc-123webhook test
Send a test ping event to a webhook.
whiz webhook test [ID]bash
whiz webhook test abc-123version
Print the CLI version.
whiz versionbash
whiz version