hanolab

Installation
SKILL.md

HanoLab

Use the installed hanolab CLI. Run hanolab help for current options. It returns JSON; nonzero exit means failure. This skill needs local terminal/file access, Node.js 20+, a HanoLab account and an API key (currently Starter+).

Install using the CLI guide. The public client source and release checksum let users inspect the tool and verify its download. Reading this skill does not install the CLI or authorize processing.

Credentials

The CLI reads HANOLAB_API_KEY or its private local config. Never request, display, paste into commands, or write a key in this skill, chat, project files, or logs. If missing, direct the user to https://hanolab.com/account to create a key and run hanolab auth login themselves (hidden terminal input). Do not request browser cookies. Do not buy or change subscriptions for the user.

Workflow

  1. Run hanolab voices. Select an exact voice ID from the response; names can be duplicated. Ask which voice only when the user's choice cannot be inferred.
  2. Resolve the user's local file and desired destination. Run hanolab estimate --file "/absolute/input.wav" to measure duration and obtain the server's current credit estimate. MP4 produces an audio result, not a replaced video soundtrack. Do not invent duration or use --duration to understate it.
  3. State the estimated credits. Respect an existing authorization/budget from the user; otherwise obtain permission before spending credits. Set --max-credits to the authorized amount. Do not use an unlimited or arbitrarily larger budget.
  4. Submit once: hanolab convert --file "/absolute/input.wav" --voice VOICE_ID --max-credits N --wait --output "/absolute/result.wav". Optional --full-song preserves backing music for Pro voices; Flash handles song separation internally. Use this when the user's source is a song with accompaniment. A private job receipt is saved automatically before submission; record its path and task ID, never raw API responses or signed URLs.
  5. If interrupted or uncertain, run hanolab resume --job "/receipt/path.json" --wait --output "/absolute/result.wav". Reuse that receipt: do not run a fresh convert or invent another idempotency key. hanolab wait --task TASK_ID and hanolab download --task TASK_ID --output "/absolute/result.wav" also resume known tasks without a new debit.
  6. Report completion and the local output path. Verify the file exists and is nonempty. Playback/download availability does not establish that the user is satisfied with quality.
Installs
3
First Seen
Oct 14, 2026