Aliyun Happyhorse Videoedit logo

Aliyun Happyhorse Videoedit

Community
cinience
aliyun-happyhorse-videoedit

Use when editing videos with DashScope HappyHorse 1.0 video editing model (happyhorse-1.0-video-edit). Use when implementing instruction-based video editing such as style transfer or local replacement, optionally guided by 0-5 reference images, via the video-synthesis async API on Alibaba Cloud Model Studio.

Overview

Publishercinience
Repositoryalicloud-skills
Skill namealiyun-happyhorse-videoedit
Stars
397
Forks
34
Bundled files
3
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 3 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by cinience on GitHub. Read the source before you install it.

Installation

Install the Aliyun Happyhorse Videoedit AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/cinience/alicloud-skills/tree/main/skills/ai/video/aliyun-happyhorse-videoedit
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/cinience/alicloud-skills.git /tmp/alicloud-skills
mkdir -p .claude/skills
cp -r /tmp/alicloud-skills/skills/ai/video/aliyun-happyhorse-videoedit .claude/skills/aliyun-happyhorse-videoedit
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Aliyun Happyhorse Videoedit in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Aliyun Happyhorse Videoedit on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Aliyun Happyhorse Videoedit is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

HappyHorse 1.0 Video Editing

Validation

bash
mkdir -p output/aliyun-happyhorse-videoedit
python -m py_compile skills/ai/video/aliyun-happyhorse-videoedit/scripts/edit_happyhorse.py && echo "py_compile_ok" > output/aliyun-happyhorse-videoedit/validate.txt

Pass criteria: command exits 0 and output/aliyun-happyhorse-videoedit/validate.txt is generated.

Output And Evidence

  • Save task IDs, polling responses, and final video URLs to output/aliyun-happyhorse-videoedit/.
  • Keep at least one end-to-end run log for troubleshooting.

Prerequisites

  • Install dependencies (recommended in a venv):
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
  • Set DASHSCOPE_API_KEY in your environment, or add dashscope_api_key to ~/.alibabacloud/credentials.

Critical model names

  • happyhorse-1.0-video-edit — instruction-based video editing with optional reference images and audio retention control

Capabilities

CapabilityDescriptionRequired media
Style transferConvert the input video to a different visual style via a text instructionexactly 1 video
Local replacement / instruction editReplace or modify subjects guided by a prompt and optional reference images1 video + 0-5 reference_image

API endpoint (async only)

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Required headers:

  • Authorization: Bearer $DASHSCOPE_API_KEY
  • Content-Type: application/json
  • X-DashScope-Async: enable

Singapore endpoint: replace dashscope.aliyuncs.com with dashscope-intl.aliyuncs.com.

Polling endpoint: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} — recommended interval 15s.

Normalized interface

Request

  • model (string, required) — fixed happyhorse-1.0-video-edit
  • input.prompt (string, required) — up to 5000 non-CJK / 2500 CJK characters describing the edit
  • input.media (array, required) — exactly 1 video element, plus 0-5 reference_image elements:
    • type: video (required, exactly 1) | reference_image (optional, 0-5)
    • url: public HTTP/HTTPS URL
  • parameters.resolution (string, optional) — 720P or 1080P (default: 1080P)
  • parameters.audio_setting (string, optional) — auto (default, model decides) or origin (keep input audio)
  • parameters.watermark (boolean, optional) — bottom-right "Happy Horse" watermark (default: true)
  • parameters.seed (integer, optional) — range [0, 2147483647]

Media input limits

Input video (type=video):

  • Formats: MP4, MOV (H.264 encoding recommended)
  • Duration: 3-60 seconds (output is capped at 15s; videos >15s are truncated to the first 15s)
  • Resolution: long side ≤ 2160 px, short side ≥ 320 px
  • Aspect ratio: 1:2.5 ~ 2.5:1
  • Frame rate: > 8 fps
  • Max size: 100 MB

Reference image (type=reference_image):

  • Formats: JPEG, JPG, PNG, WEBP
  • Resolution: width and height ≥ 300 pixels
  • Aspect ratio: 1:2.5 ~ 2.5:1
  • Max size: 10 MB

Output duration rule

  • Input ≤ 15s → output duration = input duration.
  • Input > 15s → input is truncated to the first 15s; output ≤ 15s.

Response (task creation)

  • output.task_id (string) — valid 24 hours
  • output.task_status (string) — PENDING | RUNNING | SUCCEEDED | FAILED | CANCELED | UNKNOWN
  • request_id (string)

Response (task result, on SUCCEEDED)

  • output.video_url (string) — edited MP4 (H.264) URL, valid 24 hours
  • output.orig_prompt (string)
  • output.submit_time / output.scheduled_time / output.end_time (string)
  • usage.duration (float) — billable duration in seconds
  • usage.input_video_duration (float)
  • usage.output_video_duration (float)
  • usage.SR (integer) — output resolution tier
  • usage.video_count (integer) — fixed 1

Quick start (Python + HTTP)

python
import os
import time
import requests

API_KEY = os.getenv("DASHSCOPE_API_KEY")
BASE_URL = "https://dashscope.aliyuncs.com/api/v1"


def create_videoedit_task(req: dict) -> str:
    """Create a video-edit task and return task_id."""
    media = [{"type": "video", "url": req["video_url"]}]
    for url in req.get("reference_images", []):
        media.append({"type": "reference_image", "url": url})
    if len(media) - 1 > 5:
        raise ValueError("At most 5 reference images")

    payload = {
        "model": "happyhorse-1.0-video-edit",
        "input": {"prompt": req["prompt"], "media": media},
        "parameters": {
            "resolution": req.get("resolution", "1080P"),
            "watermark": req.get("watermark", True),
        },
    }
    if req.get("audio_setting"):
        payload["parameters"]["audio_setting"] = req["audio_setting"]
    if req.get("seed") is not None:
        payload["parameters"]["seed"] = req["seed"]

    resp = requests.post(
        f"{BASE_URL}/services/aigc/video-generation/video-synthesis",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json",
            "X-DashScope-Async": "enable",
        },
        json=payload,
    )
    resp.raise_for_status()
    return resp.json()["output"]["task_id"]


def poll_task(task_id: str, interval: int = 15) -> dict:
    while True:
        resp = requests.get(
            f"{BASE_URL}/tasks/{task_id}",
            headers={"Authorization": f"Bearer {API_KEY}"},
        )
        resp.raise_for_status()
        data = resp.json()
        if data["output"]["task_status"] in ("SUCCEEDED", "FAILED", "CANCELED"):
            return data
        time.sleep(interval)

Usage examples

python
# Style transfer — instruction only, no reference image
task_id = create_videoedit_task({
    "video_url": "https://example.com/input.mp4",
    "prompt": "将整个画面转换为水墨画风格",
    "resolution": "720P",
})

# Local replacement with a reference image, keep original audio
task_id = create_videoedit_task({
    "video_url": "https://example.com/character.mp4",
    "reference_images": ["https://example.com/striped-sweater.webp"],
    "prompt": "让视频中的马头人身角色穿上图片中的条纹毛衣",
    "audio_setting": "origin",
})

Error handling

ErrorLikely causeAction
401 / InvalidApiKeyMissing or invalid DASHSCOPE_API_KEYCheck env var or credentials file
400 InvalidParameterBad resolution, >5 reference images, video out of duration / size limitsValidate parameters and media
current user api does not support synchronous callsMissing X-DashScope-Async: enable headerAdd the required header
task_status: UNKNOWNtask_id older than 24 hoursRe-create the task
429RPS or quota exceededRetry with backoff; query RPS default 20

Output location

  • Default output: output/aliyun-happyhorse-videoedit/videos/
  • Override base dir with OUTPUT_DIR.

Anti-patterns

  • Do not use any model ID other than happyhorse-1.0-video-edit.
  • Do not call this API synchronously — async header is required.
  • Do not pass more than 1 video, more than 5 reference images, or any first_frame / last_frame / driving_audio.
  • Do not pass ratio or duration — output ratio follows the input video and duration follows the truncation rule.
  • Video URLs expire after 24 hours; download and persist immediately.
  • Do not use this skill for generation from scratch — use aliyun-happyhorse-t2v, aliyun-happyhorse-i2v, or aliyun-happyhorse-r2v instead.

Workflow

  1. Confirm intent: style transfer vs. instruction edit, and whether reference images are needed.
  2. Validate the input video meets format / duration / resolution / fps / size limits.
  3. Build the media array with exactly 1 video plus 0-5 reference_image entries.
  4. Create async task and poll /tasks/{task_id} every ~15s; download output.video_url before 24-hour expiration.

References

  • See references/api_reference.md for full HTTP API details.
  • See references/sources.md for source links.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Aliyun Happyhorse Videoedit AI skill do?

Use when editing videos with DashScope HappyHorse 1.0 video editing model (happyhorse-1.0-video-edit). Use when implementing instruction-based video editing such as style transfer or local replacement, optionally guided by 0-5 reference images, via the video-synthesis async API on Alibaba Cloud Model Studio.

Why use Aliyun Happyhorse Videoedit on TypingMind?

Because you install it once and use it with any model. Aliyun Happyhorse Videoedit is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Aliyun Happyhorse Videoedit in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/cinience/alicloud-skills/tree/main/skills/ai/video/aliyun-happyhorse-videoedit. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Aliyun Happyhorse Videoedit?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Aliyun Happyhorse Videoedit?

As many as you like. As long as a model supports skills, you can use Aliyun Happyhorse Videoedit with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Aliyun Happyhorse Videoedit AI skill free?

Yes. It is published on GitHub by cinience under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇