Skip to main content
이 페이지에는 바로 사용할 수 있는 Agent Skill이 포함되어 있습니다. 하나의 무의존성 스크립트로 Wan2.7HappyHorse 시리즈를 모두 지원합니다. 이들은 하나의 엔드포인트, 하나의 요청 구조, 그리고 Wan&HappyHorse token 그룹을 공유하며, --model로 전환됩니다. 이 스크립트는 사용자가 전달하는 자산(텍스트 / 이미지 / 참조 / 비디오 편집)에 따라 올바른 모델을 자동으로 선택하고, 비동기 제출 → 폴링 → 다운로드의 전체 흐름을 감쌉니다. 전체 구성은 파일 두 개뿐입니다.

이 스킬이 하는 일

하나의 통합 스킬입니다; 스크립트는 어떤 자산을 전달하는지에 따라 생성 모드와 모델 ID를 결정합니다:

텍스트에서 동영상으로

prompt만 지정 → 완전히 새로운 동영상이 생성됩니다; prompt 자동 확장이 기본적으로 켜져 있으므로 짧은 prompt도 잘 작동합니다.

이미지에서 동영상으로

첫 프레임 이미지를 전달해 정지 이미지를 움직이게 합니다 — 로컬 이미지는 바로 업로드되므로 이미지 호스팅이 필요 없습니다.

참조 이미지에서 동영상으로

참조 이미지를 전달합니다(Wan은 참조 동영상도 사용합니다) → 캐릭터, 오브젝트 또는 스타일을 유지한 새 영상이 생성됩니다; prompt에서 “이미지 1 / 비디오 1”로 지칭합니다.

동영상 편집

동영상 + 참조 이미지를 전달합니다 → 동영상의 요소를 교체하거나 스타일을 변경합니다; 출력 길이는 원본을 따릅니다.

어떤 시리즈를 선택할지

두 시리즈의 명칭은 정확히 동일하며, 가격, 시각적 완성도, 레퍼런스 에셋 기능에서 차이가 있습니다. 스크립트는 --model별로 차이를 처리합니다:
일반적인 기준으로는 일상 및 대량 사용에는 기본 wan를 유지하십시오; 시각적 품질이 가장 중요할 때--model happyhorse. 둘 다 Wan&HappyHorse 그룹(0.14x 요율 배수 ≈ 공식 CNY 가격의 98%, 충전 보너스가 있으면 더 낮아짐)을 공유합니다 — 하나의 token으로 둘 다 사용할 수 있으며, 별도의 할인 그룹은 없습니다. 과금은 초 단위이며, 실패한 작업은 과금되지 않습니다. 전체 요금은 Wan OverviewHappyHorse Overview에서 확인할 수 있습니다.

어떤 에이전트가 사용할 수 있나요

스킬은 본질적으로 폴더 하나입니다: 에이전트가 읽을 메모(SKILL.md)와 작업을 수행하는 스크립트로 구성됩니다. 따라서 로컬 파일을 읽고 셸 명령을 실행할 수 있는 모든 코딩 에이전트는 이를 사용할 수 있습니다Codex, OpenClaw, hermes-agent, Claude Code 등입니다.유일한 요구 사항은 에이전트를 실행하는 머신(노트북이나 서버)에 Python 3인터넷 연결이 있어야 한다는 점입니다(스크립트가 api.apiyi.com를 직접 호출합니다). 이 스크립트는 Python 표준 라이브러리만 사용하므로 — pip install할 필요는 없습니다.

3단계로 설정하기

① 폴더를 만들고 파일을 붙여 넣습니다

스킬 폴더를 만들고 아래의 두 파일을 넣습니다(전체 내용은 다음 두 섹션에 있습니다):

② 키를 옆에 넣습니다

wan/.envAPIYI API key를 적습니다(api.apiyi.com 콘솔에서 하나를 생성하십시오. token에는 반드시 Wan&HappyHorse 그룹이 활성화되어 있어야 하며 종량제 과금이어야 합니다. 호출당 과금 token은 라우팅할 수 없습니다):
스크립트는 이 .env에서 키를 자동으로 읽습니다 — 추가 설정이나 환경 변수는 필요하지 않습니다.
.env에는 비밀 키가 들어 있습니다. 이 스킬이 프로젝트 레포지토리 안에서 공유되는 경우, .env.gitignore에 추가하고 절대 커밋하지 마십시오.

③ Agent에 전달합니다

  • 스킬 자동 발견 기능이 있는 Agent(예: Claude Code): 전체 wan/ 폴더를 스킬 디렉터리에 넣으십시오 — 개인 ~/.claude/skills/ 또는 프로젝트 수준 .claude/skills/(레포지토리와 공유)입니다.
  • 다른 Agent: 해당 Agent의 스킬/플러그인 규칙을 따르십시오. 또는 가장 간단하게는 — Agent에게 “이 폴더의 SKILL.md를 읽고 그대로 따르라”고 지시하십시오.
이상입니다 — 예제는 사용 방법으로 이동하십시오.

SKILL.md

아래의 전체 내용으로 wan/SKILL.md를 생성하십시오 (description에는 “무엇을 하는지 + 언제 사용해야 하는지”가 적혀 있으며, 이는 에이전트가 자동으로 트리거하는 데 사용하는 정보입니다):
name는 소문자와 하이픈만 사용해야 합니다. 슬래시 명령을 지원하는 에이전트에서는 폴더 이름이 명령입니다 — wan를 입력하면 /wan를 사용할 수 있습니다. ${CLAUDE_SKILL_DIR}는 Claude Code의 skill-directory 변수이며, 다른 에이전트에서는 스크립트의 실제 경로를 사용하십시오.

scripts/wan_video.py

Create wan/scripts/wan_video.py — pure Python standard library, same request code as this site’s API reference pages, verified working:

시리즈를 전환하는 방법

시리즈 전환은 **그저 --model**입니다. 스크립트가 “series × asset type”에서 모델 ID를 도출합니다:
Model ID 도출 표 (외울 필요는 없습니다 — 스크립트가 자동으로 선택합니다):

자산 입력: 로컬 이미지는 그대로 작동합니다(검증됨)

공식 문서에서는 미디어가 공개적으로 접근 가능한 https URL이어야 한다고 설명하지만, 저희 테스트에서는 두 시리즈 모두 base64 데이터 URI를 허용하는 것으로 확인되었습니다. 따라서 스크립트가 로컬 이미지를 자동으로 변환하며, -i photo.jpg 또는 --ref-image role.png에 로컬 경로를 사용해도 그대로 작동하므로 이미지 호스팅이 필요하지 않습니다. 동영상 자산(--ref-video / --video)의 경우에는 여전히 공개 URL이 권장됩니다. base64 인코딩은 큰 파일의 크기를 약 3분의 1 정도 늘리므로 요청 제한을 초과할 수 있습니다.

2~5분 대기 예상(중요)

동영상 생성은 비동기 작업입니다:
  • 스크립트가 전체 흐름을 감쌉니다: 제출(X-DashScope-Async 헤더 사용) → 8초마다 폴링 → 성공 시 mp4를 자동 다운로드합니다. 720P/5초 클립은 전체적으로 약 45~155초가 걸립니다(측정값); 1080P 또는 더 긴 경우 5분을 초과할 수 있습니다.
  • progress 값이 오랫동안 30%에 머무르는 것은 정상입니다(상위 시스템은 0/10/30/100만 보고합니다) — 멈춘 것이 아닙니다.
  • 명령의 타임아웃을 충분히 길게 설정(600초 이상)하거나 백그라운드에서 실행하십시오 — 많은 에이전트가 기본 2분 후에 명령을 종료해 버리며, 그때는 동영상이 아직 준비되지 않았습니다. SKILL.md에서 이를 명시합니다.
  • 폴링이 타임아웃(20분)에 도달하더라도 작업은 여전히 서버 측에 있습니다. 스크립트는 task_id와 조회 명령을 출력합니다. 실패한 작업은 절대 과금되지 않습니다; 중복 제출은 두 번 과금되므로, 스크립트는 자동 재시도를 하지 않습니다.

단 한 문장이 동영상을 생성하는 이유

자주 묻는 질문입니다. 저는 명령을 입력하지 않았는데, 어떻게 “make a video”가 클립을 생성했습니까? 작동 방식은 다음과 같습니다. 시작 시 에이전트는 각 스킬의 description를 해당 SKILL.md에서 읽습니다(“이 스킬이 무엇을 하며 언제 사용해야 하는지”를 설명하는 짧은 메타데이터입니다). 사용자의 요청이 그 설명과 일치하면(예: “generate/make a video”, “animate this image”, “edit this clip”), 에이전트는 스스로 해당 스킬을 호출하기로 결정하고, 전체 SKILL.md를 읽은 뒤 스크립트를 실행합니다 — 사용자는 명령을 외울 필요가 없습니다. 에이전트의 추측에 의존하고 싶지 않다면, 아래의 명시적 호출을 사용하여 완전한 제어를 하십시오.

사용 방법

자연어(암시적 트리거)

설치한 후에는 에이전트에게 그냥 말하면 됩니다:

명시적 호출(더 세밀한 제어)

  • 슬래시 명령이 있는 에이전트 (예: Claude Code):
  • 모든 에이전트 / 스크립트를 직접 실행하라고 지시 (가장 범용적):

생성된 동영상이 저장되는 위치

  • -o의 파일명만 사용할 때(예: -o cat.mp4), 동영상은 프로젝트 루트의 wan-output/ 폴더(자동 생성됨)에 저장됩니다; 두 시리즈가 이 폴더를 공유합니다.
  • “프로젝트 루트” = 스크립트에서 위로 올라가며 찾은 .git 또는 .claude를 포함하는 첫 번째 디렉터리입니다 — 에이전트가 어디에서 실행되든 동영상은 프로젝트에 그대로 남아 있으며, 임시 폴더에서 사라지지 않습니다.
  • 완료되면 스크립트는 전체 절대 경로와 파일 크기, 경과 시간을 포함한 한 줄을 출력합니다. 예: Video saved to /Users/you/project/wan-output/tokyo.mp4 (4.9 MB, 153s elapsed, model wan2.7-t2v).
  • 생성된 결과물에는 오디오 트랙(스테레오 AAC)이 포함되어 제공됩니다.
  • 결과 URL은 24시간 후 만료되므로 스크립트는 항상 먼저 다운로드합니다 — 로컬 mp4가 최종 산출물입니다; URL을 결과로 남겨두지 마십시오.
  • 디렉터리를 포함한 경로(예: -o videos/cat.mp4 또는 절대 경로)를 사용하면 wan-output/를 건너뛰고 해당 위치에 정확히 저장됩니다.

관련 문서