Install
$ agentstack add skill-iamzhihuix-happy-claude-skills-happy-video-gen ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
happy-video-gen
Generates short videos (text-to-video or image-to-video) across 10 providers through one CLI: bun scripts/main.ts .... All providers are async — the CLI submits a job, polls until the provider finishes, then downloads the MP4 / WebM.
Quick usage
# Text-to-video
bun scripts/main.ts --prompt "camera slowly pushes into a calico cat on grass" --ar 16:9 --duration 5 --video ./out.mp4
# Image-to-video (first frame)
bun scripts/main.ts --prompt "subtle zoom, leaves swaying" --image ./keyframe.png --duration 5 --video ./out.mp4
# Image-to-video with last-frame control (provider-dependent)
bun scripts/main.ts --prompt "seamless morph" --image ./a.png --last-frame ./b.png --video ./out.mp4
When to invoke this skill
- User asks to generate / create / make / synthesize a video from text.
- User asks to animate a still image, or provides a first-frame path.
- User names any video model family (Sora, Veo, Runway, Kling, Wan, Seedance, Hailuo, Pika, Dream Machine, Vidu).
Route to happy-dreamina if the user explicitly mentions 即梦 / Jimeng / dreamina CLI. Route to happy-image-gen if the user actually wants a still image.
Step 0: Preflight (BLOCKING)
- Locate EXTEND.md (same resolution order as happy-image-gen):
./.happy-skills/happy-video-gen/EXTEND.md$XDG_CONFIG_HOME/happy-skills/happy-video-gen/EXTEND.md~/.happy-skills/happy-video-gen/EXTEND.md
If none, run bun scripts/main.ts --setup and walk the user through references/config/first-time-setup.md.
- Verify one provider has credentials. Check env vars in the order the CLI auto-detects (see providers.md). Do not proceed without one usable provider.
- Verify Bun. Fall back to
npx -y bunif missing.
- Warn about cost. Video generation is 10–100× more expensive per call than images. If the user asks for HD 1080P / 10-second clips, confirm before firing — show them the expected provider cost bracket from
references/providers.md.
Step 1: Choose provider
Preference order:
--providerexplicitly passed.- EXTEND.md
default_provider. - Auto-detect from env vars:
fal > ark > minimax > runway > luma > pika > vidu > google > bailian > openai.
Pick by strength of the actual task:
- Chinese prompts / Chinese text in frame →
ark(Seedance) orbailian(Wanx). - Photorealistic portraits →
google(Veo 3) orrunway(Gen-4). - Anime / stylized →
fal(Kling) orluma. - Cheap draft →
arkSeedance Lite,falKling v2.5 turbo,viduQ1. - Voice-synced dialogue video (if applicable) →
googleVeo 3,openaiSora 2.
Step 2: Fill parameters
--prompt: always double-quote.--image/--last-frame: local paths, will be base64-encoded as data URIs automatically.--last-frameonly accepted by Luma and a few FAL endpoints.--duration: 5 is universal default. Caps: Sora-2 / Kling up to 10; Seedance up to 10; Luma up to 9.--ar:16:9 / 9:16 / 1:1 / 4:3 / 3:4. Seereferences/aspect_ratio_map.mdfor provider-specific quirks.--resolution:480p / 720p / 1080p. Not all providers honour it; most cap at 720p on cheap tiers.--poll-timeout: default 600s (10 min). Increase for 1080P or >5s clips.
Step 3: Submit and wait
bun scripts/main.ts \
--prompt "..." \
--video ./out.mp4 \
--provider ark \
--duration 5 \
--ar 16:9 \
--resolution 720p
While waiting, do not fire another job on the same provider — concurrency caps on cheap tiers are strict (often 1). On success the CLI writes the MP4 and reports size + path. JSON output:
{ "success": true, "provider": "ark", "model": "doubao-seedance-1-0-lite-t2v-250408", "video": "/abs/out.mp4", "size_bytes": 4823456, "format": "mp4" }
Step 4: Timeouts and recovery
If polling exceeds --poll-timeout, the CLI throws with the provider-specific external id (task id / job id / operation name / request id). Capture it from stderr and resume later with provider-specific tooling. See references/async-protocol.md for the per-provider id format and manual resume commands.
References
references/providers.md— all 10 providers with env vars, defaults, cost notes, feature matrix.references/async-protocol.md— external id format per provider + how to resume a stuck task.references/aspect_ratio_map.md—--armapping per provider.references/error_codes.md— common errors and fixes.references/config/first-time-setup.md— setup walkthrough.references/config/extend-schema.md— EXTEND.md schema.assets/EXTEND.template.md— config template.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: iamzhihuix
- Source: iamzhihuix/happy-claude-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.