Huozi
by @dachein
Publish Markdown and HTML to huozi.app as beautiful, shareable web pages. Register, manage, and publish — all through conversation.
clawhub install huozi📖 About This Skill
name: huozi description: Publish Markdown and HTML to huozi.app as beautiful, shareable web pages. Register, manage, and publish — all through conversation. homepage: https://huozi.app user-invocable: true metadata: {"openclaw":{"requires":{"env":[],"bins":["curl"]},"primaryEnv":"HUOZI_API_KEY","emoji":"📄","os":["darwin","linux","win32"]}}
Huozi — Markdown & HTML Publishing for Agents
Publish Markdown or HTML content to huozi.app as shareable web pages. One API call, instant publishing.
Onboarding
IMPORTANT: When this skill is first loaded, check if HUOZI_API_KEY is set. If NOT, do NOT just show a link — immediately start the interactive registration flow below. Guide the user through it conversationally, step by step.
Step 1 — Ask for email
Tell the user: "Let's set up your Huozi account. What's your email?" Then call:
curl -s -X POST https://huozi.app/api/v1/auth/signup \
-H "Content-Type: application/json" \
-d '{"email": ""}'
Tell the user: "A verification code has been sent to your email. Please check your inbox and tell me the code."
Step 2 — Verify the code
When the user provides the code:
curl -s -X POST https://huozi.app/api/v1/auth/verify \
-H "Content-Type: application/json" \
-d '{"email": "", "code": ""}'
Save the returned access_token.
Step 3 — Create workspace
Suggest a slug from the user's email username (e.g. alice@gmail.com → alice). Tell the user:
> "Your pages will be published at huozi.app/alice/ — would you like to change this, or is this OK?"
After the user confirms (or gives a new slug):
curl -s -X POST https://huozi.app/api/v1/auth/setup \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"workspace_slug": ""}'
Step 4 — Done!
The response contains api_key and workspace.url. Tell the user:
> "All set! Your workspace is huozi.app/export HUOZI_API_KEY=
> You can now publish Markdown anytime — just tell me what to publish."
Publishing Markdown
Publish or update a Markdown page:
curl -s -X POST https://huozi.app/api/v1/pages \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"title": "", "slug": "", "content": ""}'
slug is optional — auto-generated from title if omitted. Keep under 8 words (e.g. weekly-report-apr-14)urlPublishing HTML
Publish a static HTML page — perfect for landing pages, dashboards, reports with custom styling:
curl -s -X POST https://huozi.app/api/v1/pages \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"title": "", "slug": "", "content": "", "content_type": "html"}'
content_type to "html" (defaults to "markdown" if omitted)HTML Input Format
...... — head is parsed for and , body is rendered/ tags — treated as body content directly OG tags (og:title, og:description, og:image) and are extracted as fallback metadata; API fields (title, description) always take priorityHTML Constraints — What Is Allowed
| Category | Allowed | Blocked |
|----------|---------|---------|
| HTML tags | All standard tags: div, span, table, form, svg, img, video, audio, etc. | , , , , |
| CSS | blocks, inline style="", all standard properties (flexbox, grid, animations, transforms, etc.) | @import, expression(), javascript: in url(), -moz-binding, behavior: |
| JavaScript | None | All tags stripped; all event handlers (onclick, onerror, onload, etc.) stripped |
| URLs | http:, https:, mailto:, tel: | javascript: (rewritten to #), data: in CSS url() |
| Images | with http:/https:/data: src | — |
| SVG | Full inline SVG support (path, circle, rect, gradient, filter, etc.) | External SVG via works; does not |
| Forms | Display only — , , , render but action/method are stripped | No form submission |
| External resources | Images (), video/audio (, ) via http:/https: | External CSS (), external JS, @import |
| Content size | Max 2MB per page | — |
Best Practices for HTML Pages
blocks in or inline style="" attributes; external stylesheets are not supported@import for Google Fonts is blocked; use font-family: system-ui, sans-serif or embed fonts as base64 @font-face if essentialhttps:// URLsmax-width on a container and CSS media queries for mobile supportbackground on body or a wrapper elementOther Operations
| Action | Method | Endpoint |
|--------|--------|----------|
| List pages | GET | /api/v1/pages |
| Get page | GET | /api/v1/pages/ |
| Update page | PUT | /api/v1/pages/ |
| Delete page | DELETE | /api/v1/pages/ |
All require Authorization: Bearer header. Base URL: https://huozi.app
Examples
weekly-report-2026-04-14, publishcontent_type: "html"Notes
hz_ prefixcurl via Bash to make API calls💡 Examples
weekly-report-2026-04-14, publishcontent_type: "html"📋 Tips & Best Practices
hz_ prefixcurl via Bash to make API calls