Skip to main content
이 가이드는 @youka/sdk를 사용해 원본 오디오 파일에서 렌더링된 가라오케 비디오까지 가장 빠르게 진행하는 방법을 안내합니다.

시작하기 전에

  • Node.js 20 이상
  • YOUKA_API_KEY에 설정된 Youka API 키 ( online.youka.io/account 에서 API keys 아래 생성)
  • 로컬 오디오 파일(./song.mp3) 또는 원격 URL

설치

npm install @youka/sdk

생성, 대기, 내보내기

import { YoukaClient, YoukaRequestError, YoukaTaskError } from "@youka/sdk";

const client = new YoukaClient({
  apiKey: process.env.YOUKA_API_KEY!,
});

async function main() {
  // 1. 로컬 파일로 프로젝트 생성
  const projectOperation = await client.projects.create({
    source: { type: "path", path: "./song.mp3" },
    lyricsSource: { type: "transcribe" },
  });

  // 2. 스템 및 가사 싱크 완료까지 대기
  const { project } = await client.projects.wait(projectOperation);
  console.log("Project ready:", project.id, project.title);

  // 3. 내보내기 시작
  const exportOperation = await client.exports.create(project.id, {
    resolution: "1080p",
    quality: "high",
  });

  // 4. 내보내기 완료까지 대기
  const finishedExport = await client.exports.wait(exportOperation);
  await client.exports.download(finishedExport, {
    output: "./exports",
  });
  console.log("Export ready:", finishedExport.url);
}

main().catch((error) => {
  if (error instanceof YoukaRequestError) {
    console.error("Request failed:", error.code, error.status, error.message);
    process.exit(1);
  }
  if (error instanceof YoukaTaskError) {
    console.error("Task failed:", error.code, error.status, error.message);
    process.exit(1);
  }
  throw error;
});
client.projects.create()path, bytes, url 소스에 대한 업로드를 처리합니다. 더 낮은 수준에서 업로드를 제어하려면 client.uploads.*를 사용하세요.

세 가지 소스 타입

const operation = await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
});

다음 단계

  • Projects — 전체 projects API
  • Exports — 로컬 렌더링 및 client.exports.prepareLocal
  • ErrorsYoukaRequestErrorYoukaTaskError 처리
  • AI agents — 권장 폴링 및 재시도 패턴