AI 단편 드라마 (AI short drama)
스토리를 입력하면 에피소드가 출력됩니다. 사용자가 project.json(등장인물, 장소, 샷)에 이야기를 작성합니다. scripts/drama.mjs가 비용이 발생하거나 실수하기 쉬운 모든 작업을 처리합니다:
project.json ─ 견적 ─ 캐스팅 ─ (음성) ─ 샷 ─ 조립 ─▶ episode.mp4 + .srt
무료 참조 내레이션 Seedance ffmpeg: 정규화,
검증 이미지 모드만 렌더링 음성 믹싱,
+ 가격 캐릭터별 각 샷 연결, 자막
및 장소별
등장인물이 동일하게 유지되는 방법: 각 캐릭터는 하나의 참조 시트(초상화 + 정면/측면/후면)를 받습니다. 각 샷은 해당 샷에 등장하는 캐릭터의 시트를 Seedance 2.0에 참조 이미지로 전달하고, 프롬프트에 어떤 이미지가 누구인지 명시합니다.
규칙
- 항상
scripts/drama.mjs를 실행하세요. curl 또는 fetch로 API를 직접 호출하지 마십시오. 스크립트는 작업 ID가 생성되는 즉시 저장하므로, 충돌이나 타임아웃이 발생해도 동일한 작업을 재개하여 다시 비용을 지불하지 않습니다. 직접 호출하면 이 기능이 손실됩니다. project.json을 작성하기 전에references/project-schema.md와references/shot-writing.md를 읽으십시오. 샷 작성 가이드는 에피소드가 하나의 영화처럼 보일지, 아니면 12개의 관련 없는 클립처럼 보일지를 결정합니다.- 먼저
estimate를 실행하고 결과(샷 목록, 총 길이, 모델 및 가격표)를 사용자에게 보여주십시오.cast/shots전에 사용자의 승인을 기다리십시오. 스크립트는--yes없이 $1 이상의 단계를 거부합니다. 사용자가 해당 금액에 동의한 후에만--yes를 전달하십시오. - 샷을 렌더링하기 전에 사용자에게 캐릭터 시트를 보여주십시오. 시트는 각각 약 $0.02이며, 샷은 10~100배 더 비쌉니다. 얼굴, 의상 또는 스타일이 잘못된 경우
look을 수정하고 지금cast --redo <id>를 실행하십시오. 모든 샷이 이를 상속받습니다. - 새 프로젝트의 경우 먼저 한 개의 샷을 렌더링하십시오(
shots --only s1). 사용자와 함께 확인한 후 나머지를 렌더링하십시오. 매우 짧은 프로젝트(세 개 이하의 샷) 또는 사용자가 요청한 경우에만 이 단계를 건너뛰십시오. - 모델 이름을 임의로 만들지 마십시오. 아래 표에 있는 모델만 사용하십시오. 사용자가 다른 모델을 요청하면 이 스킬이 지원하지 않는다고 말하십시오.
- 실패한 작업에 대해 비용이 청구되지 않습니다. 작업이 실패하면 명확히 말하고, 이유(스크립트가 이유와 다음 단계를 출력함)를 설명하고, 재시도를 제안하십시오.
- 업스트림 제공자나 라우팅에 대해 언급하지 마십시오. 이 파일에 있는 모델 이름만 말하고 그 뒤에 있는 내용은 언급하지 마십시오.
- 동의 없이 실제 식별 가능한 사람을 사용하지 말고, 실제 인물에 대한 성적, 혐오 또는 명예 훼손적인 내용을 금지합니다. 해당 요청은 거절하십시오.
워크플로우
S=/absolute/path/to/this/skill/scripts/drama.mjs # 기본 디렉토리를 알고 있음; 사용하십시오
node $S check # 키, 잔액, ffmpeg 확인
mkdir -p dramas/my-episode # 에피소드당 하나의 폴더, 사용자 작업 공간에
# write dramas/my-episode/project.json (references/project-schema.md 참조)
node $S estimate dramas/my-episode/project.json --prompts
node $S cast dramas/my-episode/project.json # 그런 다음 cast/에 있는 이미지를 보여주십시오
node $S voice dramas/my-episode/project.json # 내레이션 모드만
node $S shots dramas/my-episode/project.json --only s1 # 하나 확인 후:
node $S shots dramas/my-episode/project.json
node $S assemble dramas/my-episode/project.json --burn-subs
node $S status dramas/my-episode/project.json # 언제든지: 진행 상황, 지출, 남은 작업
- 렌더링은 느립니다. 하나의 샷은 보통 2~8분이 소요되며, 샷은 한 번에 3개씩 실행됩니다.
shots전에 사용자에게 대략적인 소요 시간을 알려주십시오. 조용한 터미널 앞에 사용자를 방치하지 마십시오. - 모든 명령은 안전하게 재실행할 수 있습니다. 완료된 작업은 건너뜁니다. 진행 중인 작업은 중단된 지점부터 재개됩니다. 실패한 샷은
--retry-failed를 통해서만 재시도됩니다. - 렌더링된 후 샷을 편집해도 다시 렌더링되지 않습니다.
status는 "inputs changed"로 표시합니다.shots --redo <id>로 의도적으로 다시 렌더링하십시오. 이 경우 다시 비용이 청구됩니다. - 결과를 보여주십시오: 최종 MP4 경로, 길이,
.srt파일. 그런 다음 지출된 금액을 말하십시오:status는 API에서 읽어온 정확한 청구 금액을 출력합니다. - 모든 파일은 프로젝트 폴더에 다운로드됩니다. API 결과 URL은 30일 후에 만료되므로, 폴더가 영구적인 복사본입니다.
대화 또는 내레이션
샷을 작성하기 전에 선택하십시오:
"mode": "dialogue" | "mode": "narration" | |
|---|---|---|
| 말하는 사람 | 화면 속 캐릭터, 입 모양 동기화. Seedance가 비디오와 함께 음성을 생성합니다. | 한 명의 내레이터 음성(텍스트 음성 변환), 각 샷의 배경음과 혼합됩니다. |
| 적합한 경우 | 대화 중심 장면, 실사 스타일 미니 드라마. | 漫剧 / AI 코믹 드라마, 소설 적응, 요약 및 스토리텔링 비디오. |
| 음성 일관성 | 캐릭터의 음성이 샷마다 약간 다를 수 있습니다. | 에피소드 전체에 걸쳐 동일한 음성. |
| 샷 길이 | duration(4~15초)을 설정합니다. 각 대사를 길이에 맞게 유지하십시오. | 각 내레이션 줄에 맞게 최대 15초까지 자동 설정됩니다. |
| 제한 사항 | 5초 샷당 약 1~2개의 짧은 대사. 누가 언제 말하는지 정확히 제어할 수 없습니다. | 캐릭터가 화면에서 말하지 않습니다. |
사용자가 지정하지 않은 경우, 漫剧, 코믹, 소설 또는 스토리 요약으로 설명된 내용에는 내레이션을 사용하십시오. 대화 위주의 장면에는 대화를 사용하십시오.
모델 및 비용
스크립트는 스타일에서 기본 video_model을 선택합니다. 스타일리시한 외형(애니메이션, 코믹, 国漫, 만화, 수채화)은 dreamina-seedance-2-0-mini를 얻습니다. 나머지는 모두 seedance-2.0-mini를 얻습니다. 사용자가 다른 것을 원할 경우 project.json에서 재정의하십시오.
| 사용자가 원하는 것 | video_model | 해상도 | 비디오 초당 가격 |
|---|---|---|---|
| 스타일리시한 에피소드 (애니메이션, 코믹, 国漫); 초안 | dreamina-seedance-2-0-mini | 480p / 720p | $0.0225 / $0.048 |
| 스타일리시, mini보다 한 단계 업 | dreamina-seedance-2-0-fast | 480p / 720p | $0.0644 / $0.1372 |
| 스타일리시, 최대 1080p 최종 품질 | dreamina-seedance-2-0 | 480p / 720p / 1080p | $0.10 / $0.22 / $0.55 |
| 사실적인 사람 | seedance-2.0-mini | 480p / 720p | $0.044 / $0.095 |
| 사실적인, mini보다 한 단계 업 | seedance-2.0-fast | 480p / 720p | $0.071 / $0.153 |
| 사실적인, 최대 1080p 최종 품질 | seedance-2.0 | 480p / 720p / 1080p | $0.092 / $0.197 / $0.492 |
기타 비용:
- 캐릭터 및 장소 시트:
nano-banana-2-1, 1K 기준 각 $0.022. - 내레이션:
minimax-speech-2.8-turbo, 1,000자당 $0.04. 짧은 클립은 최소 $0.004가 청구됩니다.
1분 에피소드(12샷 × 5초, 5개 시트)의 대략적인 비용:
- $1.46 (
dreamina-seedance-2-0-mini480p) - $2.99 (
dreamina-seedance-2-0-mini720p) - $2.75 (
seedance-2.0-mini480p) - $29.63 (
seedance-2.01080p)
첫 번째 패스에는 480p를 제안하십시오. 720p로 두 번째 패스 시 샷만 다시 렌더링합니다("resolution": "720p"로 설정한 후 shots --redo <ids>). 시트는 그대로 유지됩니다.
사실적인 행이 존재하는 이유: dreamina-* 모델은 실제 사람처럼 보이는 참조 이미지를 거부하며, 사실적인 캐릭터 시트가 이를 유발할 수 있습니다. 스크립트는 이 거부를 인식하고 seedance-2.0-mini로 전환하도록 알려줍니다. 거부된 작업에는 비용이 청구되지 않습니다.
가격은 2026-09-30 기준 정가입니다. status는 실제 청구된 금액을 보여줍니다.
API 키
먼저 node $S check를 실행하십시오. 키는 APIMODELS_API_KEY에서, 또는 ~/.apimodels/credentials에서, 또는 ~/.apimodels/credentials.json에서 가져옵니다. 마지막 파일은 npx apimodels-mcp login에 의해 작성되므로, apimodels 도구에 로그인한 사용자는 이미 설정이 완료된 상태입니다.
키가 없는 경우, 직접 node $S login을 실행하고 출력되는 링크를 사용자에게 제공하십시오. 사용자가 apimodels.app에 로그인하고 Authorize를 클릭합니다. 새 키가 ~/.apimodels/credentials에 기록되며 이 대화에 절대 나타나지 않습니다. 그런 다음 check를 다시 실행하고 계속 진행하십시오.
login이 작동하지 않는 경우(머신에 브라우저가 없음), 채팅에서 키를 요청하지 마십시오. 사용자에게 새 터미널 창에 붙여넣을 명령어 하나를 제공하십시오. 절대 스크립트 경로를 채워서 제공하십시오:
read -s KEY && printf %s "$KEY" | node /ABSOLUTE/PATH/scripts/drama.mjs save-key && unset KEY
키는 https://apimodels.app/console/api-keys에서 생성됩니다.
키 처리:
- 절대 다시 에코하지 마십시오.
- 명령 인수로 전달하지 마십시오.
- 프로젝트 폴더에 기록하지 마십시오.
- 키가 대화에 나타나면 사용자에게 키를 교체하라고 알리십시오.
오류
스크립트는 이유와 다음 단계를 출력합니다. 간단히 말하면:
| 표시 | 의미 | 조치 |
|---|---|---|
401 | 키가 잘못되었거나 없음 | login을 다시 실행하십시오 |
402 | 잔액 부족 | https://apimodels.app/console/credits에서 충전하십시오. 완료된 샷은 유지됩니다. |
| "looks like a real person" | dreamina-*가 참조 이미지를 거부함 | video_model을 seedance-2.0-mini로 전환한 후 shots --retry-failed 실행 |
| 콘텐츠 검토 거부 | 프롬프트 또는 대사가 거부됨 | 해당 샷을 다시 작성하십시오. 동일한 텍스트를 다시 시도해도 도움이 되지 않습니다. |
| Busy / timeout | 업스트림 부하 | 잠시 후 shots --retry-failed 실행 |
| "still running" | 25분 초과 | 나중에 shots를 다시 실행하십시오. 작업을 재개하며 비용이 청구되지 않습니다. |
| exit code 3 | 단계 비용이 $1 초과 | 사용자와 금액을 확인한 후 --yes 추가 |
성공률은 100%가 아닙니다: 가끔 샷이 실패할 수 있으며, 재시도로 보통 해결됩니다.
이 스킬이 하지 않는 일
즉흥적으로 대응하지 말고 직접 말하십시오:
- 완벽한 일관성을 보장하지 않습니다. 넓은 샷에서 얼굴이 달라질 수 있으며, 한 프레임에 세 명 이상의 캐릭터가 있을 때 그럴 수 있습니다. 샷당 1~2명의 캐릭터를 유지하십시오(shot-writing 참조).
- 어떤 샷도 15초를 초과하지 않습니다. 더 긴 장면은 여러 샷으로 나뉩니다.
- 사용자가 녹음한 음성 트랙에 입 모양을 동기화하지 않습니다.
- 샷의 정확한 첫 프레임을 제어하지 않습니다. 샷은 참조 이미지와 프롬프트에 의해 구동됩니다.
- 자막 타이밍은 근사치입니다. 각 샷 내에서 균등하게 분배됩니다. 정확한 타이밍이 중요하면
.srt를 편집하십시오. - 어디에도 게시하지 않습니다. 출력은 로컬 MP4와 SRT입니다.