오디오 징글 스킬
세 가지 하위 모드. 활성 프로젝트의 audioKind가 어떤 모드를 실행할지 결정합니다:
audioKind | 라우팅 모델 | 계획 초점 |
|---|---|---|
music | Suno V5 (기본값), Udio, Lyria 2 | 장르 + 템포 + 악기 편성 |
speech | MiniMax TTS (기본값), Fish, ElevenLabs V3 | 대본 + 음성 + 템포 |
sfx | ElevenLabs SFX (기본값), AudioCraft | 질감 + 임팩트 + 지속 시간 |
리소스 맵
audio-jingle/
├── SKILL.md
└── example.html
워크플로우
단계 0 — 프로젝트 메타데이터 읽기
audioKind, audioModel, audioDuration(초), 그리고 (음성의 경우) voice. 알려진 값을 기준으로 분기하며 그대로 사용합니다. 메타데이터가 누락되었다고 해서 무조건 질문하라는 뜻은 아닙니다: 가능하면 안전한 기본값을 추론하고, 누락된 값이 요청된 출력을 실질적으로 변경하거나 생성을 방해할 때만 명확히 묻는 형식을 출력합니다.
중요: voice는 공급자별 값입니다. minimax-tts의 경우 --voice는 반드시 유효한 MiniMax voice_id(예: male-qn-qingse)여야 하며, 자연어 설명이 아니어야 합니다. 음성에 대한 산문 설명("따뜻한 여성 내레이터", "중립적인 표준 중국어")만 있는 경우, 계획에는 그 내용을 유지하되 --voice는 생략하여 데몬의 기본 음성 ID가 적용되도록 하거나, 사용자에게 특정 ID를 선택하도록 요청하세요.
단계 1 — 계획
음악
- 장르 + 참고 아티스트 (1-2명)
- 템포(BPM) + 조성
- 악기 편성 (최대 3-5개 악기)
- 보컬: 있음 / 없음 / 흥얼거림 / 합창
- 분위기 흐름 (도입 → 후렴 → 종결)
음성
- 대본 (초안이 아닌 최종본 — TTS는 문자 그대로 실행됨)
- 음성 대상 + 템포
MiniMax의 경우 실제
voice_id를 의미하며,--voice에 산문이 아닌 실제 ID 사용 - 고유명사/약어에 대한 발음 힌트
효과음
- 질감 (충격 / 휙 / 앰비언스 / 발소리)
- 지속 시간 + 엔벨로프 (날카로운 어택 vs. 부드러운 스웰)
- 레이어링 방식 (단일 히트 vs. 중첩)
디스패치 전에 계획을 2-3문장으로 설명하세요.
단계 2 — 프롬프트 구성
업스트림 모델이 선호하는 형식을 사용하세요. audioDuration을 API 파라미터에 직접 바인딩하고, 절대 "30초로 만들어 줘"와 같은 산문을 넣지 마세요.
단계 3 — 미디어 계약을 통해 디스패치
통합 디스패처를 사용하세요. 절대 공급자 API를 직접 호출하지 마세요:
"$OD_NODE_BIN" "$OD_BIN" media generate \
--project "$OD_PROJECT_ID" \
--surface audio \
--audio-kind "<music|speech|sfx>" \
--model "<메타데이터의 audioModel>" \
--duration <audioDuration 초> \
[--voice "<공급자 음성 ID (음성 전용)>"] \
--output "<짧은-슬러그>-<지속시간>s.mp3" \
--prompt "<단계 2에서 구성된 프롬프트 — 음성의 경우, 문자 그대로의 대본>"
명령어는 JSON 한 줄을 출력합니다: {"file": {"name": "...", ...}}. 바이트는 프로젝트에 저장되며, FileViewer는 오디오 전송 컨트롤을 자동으로 렌더링합니다.
단계 4 — 인계
다음 내용으로 응답하세요: 계획 요약, 디스패처가 반환한 파일명, 사용자가 변형을 원할 경우 시도할 사항에 대한 한 문장 (예: "템포를 92 BPM에서 108 BPM으로 바꿔 보세요" vs "다르게 만들어 주세요").
하드 규칙
- TTS는 대본을 문자 그대로 실행합니다. 디스패치 전에 반드시 검수하세요 — 쉼표 하나만 잘못되어도 운율이 바뀝니다.
- MiniMax TTS는
--voice에 자유 형식 음성 설명을 거부합니다. 실제 MiniMaxvoice_id(예:male-qn-qingse)를 사용하거나 플래그를 생략하고 데몬의 기본 음성이 적용되도록 하세요. - 음악: 30초 미만 = 단일 섹션; 30~90초 = 인트로 + 본문; 90초 이상 = 전체 구조. 3막 구성의 곡을 15초에 억지로 넣지 마세요.
- 효과음: "멋지게 만들어 줘"라는 한 문단보다는 잘 설명된 레이어 하나가 더 좋습니다 — 생성기는 구체적인 질감 단어에 더 잘 반응합니다.
- 매 턴마다 파일을 저장하세요. 오디오 뷰어는 파일이 저장되는 즉시 전송 컨트롤을 표시합니다.