HOLYCRAB WORKSHOP — CLI reference
macOS / Linux, Python 3.10+. No credentials in this file.

== agent ==
Use the installed official HolyCrab skill and current CLI help. Help me create two connected 10-second Seedance 2.5 clips at 480p, within 500 credits total. A starts at 16:9; B uses frames mode and adaptive ratio. First ask whether I choose my own face or an original fictional AI face. Fetch clip-a-en.txt and clip-b-en.txt from https://brucehuang.ai/talks/ai-ultra-video-workshop-2026-09/prompts/; use ai-face.txt for fictional Clip A. Save all working files locally.
For my own face, check my existing authorized group. Only start a new authorization if I request it. Show the temporary verification link/QR privately to me; I complete verification myself. Never save that link/QR in files, logs or the public kit. After SUCCEEDED, upload only my selected portrait into my own authorized group and wait for ready:true. Never bypass failed verification with ordinary upload. Use my web account's matching CLI access; do not assume another key can use my group.
Prepare Clip A with the returned ready public portrait asset ID in imageAssetIds. For the fictional route, prepare A as text-only. Estimate the actual payload and show credits, settings and remaining balance privately. Planning quote: A 139 + B 139 = 278 credits; one optional 10s retry brings the total to 417. Quotes can change with actual assets. Keep a cumulative ledger, and stop before exceeding 500. Wait for my explicit approval before each paid submission; do not treat this instruction as approval. Submit once, record the task ID immediately, and recover that existing task after interruption.
Download completed A as clip-a.mp4. Extract and inspect its last frame as last-frame.png. For my real face, upload this derived frame to my same authorized group and wait for ready:true; stop if the service does not accept the group/frame route, without trying an ordinary-upload bypass. For the original fictional face, use ordinary asset upload. Prepare B with firstFrameAssetId set to this new ready asset ID, videoTaskType frames, ratio adaptive, 10 seconds, 480p. Do not combine frames with imageAssetIds or other reference arrays. Re-estimate B and ask for approval, then submit exactly once and download clip-b.mp4. Place A then B in an editor, inspect the seam and audio, and export the 20-second film. Keep source portrait/frame IDs, prompts, settings, quotes, task IDs and review notes. Never print credentials or clone my real voice. Ask separately before sharing my output.

== agent-zh ==
使用 HolyCrab 官方 skill 和目前 CLI help，在500 credits總額內準備兩段10秒Seedance2.5、480p影片。A用16:9；B用frames模式、adaptive比例。先確認我選本人或原創AI臉。本人需親自完成私下驗證，SUCCEEDED後才把指定照片上傳到本人授權群組，等待ready:true；不能普通上傳繞過授權失敗。AI臉的A用純文字。逐條估價並取得明確確認才付費提交，立即保存task ID，中斷找回同一任務。預算A139+B139=278，一次10秒重試後417，實際素材需重新估價，不超過500。下載A，抽取並檢查末幀；真人末幀必須回到本人同一授權群組，等ready。B只以此素材作firstFrameAssetId，不混用imageAssetIds或其他參考。再估價、確認、提交、下載B。剪輯器中依次放A和B，檢查接點與聲音，輸出20秒影片。保存素材ID、Prompt、參數、估價、task ID和檢查紀錄。私密驗證連結／QR及Key不進入文件、日誌或群聊；不可代本人驗證。

== install ==
curl -fsSL https://holycrab.ai/cli/install.sh | sh
holycrab --version
holycrab --help

== setup ==
holycrab setup
holycrab auth status
holycrab models list
holycrab models show dreamina-seedance-2-5-260628

== fetch ==
mkdir -p ai-video-workshop
cd ai-video-workshop
curl -fL 'https://brucehuang.ai/talks/ai-ultra-video-workshop-2026-09/prompts/clip-a-en.txt' -o prompt-a.txt
curl -fL 'https://brucehuang.ai/talks/ai-ultra-video-workshop-2026-09/prompts/clip-b-en.txt' -o prompt-b.txt

== estimate ==
# Save the A template as request-a.json and B template as request-b.json.
# Replace each marked asset ID with its returned ready ID.
holycrab generate estimate --kind video --json @request-a.json
# Quote B separately after its actual frame asset is ready.
holycrab generate estimate --kind video --json @request-b.json

== face-authorize ==
holycrab real-human groups list
# Only when the participant requests a new authorization:
holycrab real-human start --name "My workshop portrait"
# Keep the returned link/QR private; complete verification yourself.
holycrab real-human wait AUTHORIZATION_ID --timeout 60

== assets ==
# After personal authorization SUCCEEDED, use your returned public group ID.
holycrab assets upload ./my-portrait.jpg --real-human-group GROUP_ID
holycrab assets wait PORTRAIT_ASSET_ID --timeout 60
# After A completes, reuse the SAME authorized group for its derived frame.
holycrab assets upload ./last-frame.png --real-human-group GROUP_ID
holycrab assets wait FRAME_ASSET_ID --timeout 60
# B uses FRAME_ASSET_ID only as firstFrameAssetId. No imageAssetIds.

== extract ==
# Optional local FFmpeg route; the browser tool needs no installation.
# Decode the final 0.2 seconds and keep the last decoded frame.
ffmpeg -sseof -0.2 -i clip-a.mp4 -update 1 last-frame.png
# Inspect the PNG before uploading it. Use a new filename if it already exists.

== recover ==
holycrab tasks list --page 1 --page-size 10
holycrab tasks get TASK_ID
holycrab tasks wait TASK_ID --timeout 120
holycrab download TASK_ID --output ./clip-a.mp4