전제 조건
생성하기 전에 다음 스킬들을 설치하고 로드하세요 (@pruna를 통해 컨텍스트에 이미 포함되어 있으면 건너뛰세요):
| 스킬 | 설명 | 설치 |
|---|---|---|
generation-diversity | 생성 프롬프트를 작성할 때 사용 — 유료 API 호출 전 의식적 시드, 명시적 구조, 시나리오 축, 품질 게이트. | npx skills add PrunaAI/pruna-skills@generation-diversity -y |
video-prompting | 모든 생성 모델을 위한 비디오 또는 모션 프롬프트 작성 시 사용 — 극작법, 카메라, 물리적으로 안전한 모션, 프레임 앵커, 클립 체이닝. | npx skills add PrunaAI/pruna-skills@video-prompting -y |
audio-prompting | 모든 생성 오디오 모델을 위한 TTS, 음악 또는 배경 프롬프트 작성 시 사용 — 감독 스타일, 노래 구조, 후반 레이어링. | npx skills add PrunaAI/pruna-skills@audio-prompting -y |
pruna-api | Pruna 또는 Replicate HTTP 호출 전 사용 — 인증, 업로드/폴링/다운로드, 병렬 배치, 에이전트 안전. | npx skills add PrunaAI/pruna-skills@pruna-api -y |
또는 전체를 한 번에 설치: npx skills add PrunaAI/pruna-skills@pruna -y
각 스킬의 생성 전 / 제작 섹션을 따르세요 — 여기에 가이드 내용을 다시 설명하지 않습니다.
에이전트 습관
라우팅: `p-video-2`는 1080p / 가져온 오디오 / 초안 클립 생성기입니다 (텍스트 / 이미지 / 오디오). 영화 같은 생성 (생성 오디오 사용, 480p / 768p, 첫/마지막 프레임, 오디오 업로드 불가)은 `p-video-2-pro`를 사용하세요. 더 간단하고 빠른 클립은 `p-video`를 사용하세요. 헤드만 나오는 (자연스러운 장면 오디오 없음) → `p-video-avatar`를 사용하세요. 기존 영상 편집 지시 → `p-video-edit`를 사용하세요.
첫 번째 답변에서 `p-video-2`를 백틱으로 언급하고, PRUNA_API_KEY를 확인한 후 (또는 pruna-api의 가입 링크와 함께 중단), 필수 입력을 요청하세요. 인테이크 시작 → 첫 POST 전에 generation-diversity 명확화 인테이크를 진행하세요. 모션 프롬프트를 작성할 때는 프롬프트 제작 (동적 + 충실) 및 video-prompting (p-video-2-prompting)을 따르세요 — 스킬 예제를 붙여넣지 마세요. 사용하지 않을 때가 더 적합한 경우 리디렉션하세요.
프롬프트 제작 (동적 + 충실)
모든 input.prompt는 신선하고 구체적이어야 하며, 사용자의 비트와 일치해야 합니다. 다양성이 요청을 재정의하지 않습니다. p-video와의 차이를 제작하세요: video-prompting (p-video-2-prompting).
| 하세요 | 하지 마세요 |
|---|---|
generation-diversity 랜덤 시드 의식을 실행하고 명시하세요; 요청이 허락할 때 ≥2개의 자유 축(카메라 움직임, 조명 변화, 텍스처, 템포)을 교체하세요 | 이 스킬의 curl 예제 (sports car, person turns, …)를 복사하거나 이전 세션의 프롬프트를 재사용하지 마세요 |
사용자가 요청한 사실을 먼저 고정하세요 (주제, 액션 비트, 프레임 앵커인 경우 OPEN/MID/CLOSE, audio가 설정된 경우 나레이션 싱크) | 요청을 무시하고 “더 멋진” 클립을 위해 주제나 모션을 바꾸지 마세요 |
video-prompting 극작법을 사용하여 구성하세요 — 비트당 하나의 고정된 액션, I2V를 위한 안정적인 카메라, 물리적으로 안전한 모션 | 막연한 분위기 전용 문자열 (cinematic vibe, neon energy) 또는 극단적인 영화적 카메라 움직임을 사용하지 마세요 |
audio가 설정된 경우, 모션과 템포는 나레이션 / 연기 비트와 일치해야 합니다; 화자는 한두 명으로 유지하세요 | VO가 재생되는 동안 관련 없는 액션으로 표류하거나, 3명 이상의 말하는 얼굴로 클립을 채우지 마세요 |
사용자가 표현을 확정하지 않은 경우 POST 전에 작성된 프롬프트 + 모드 필드를 보여주세요 | 승인된 것과 다른 주제나 비트로 무음 재생성하지 마세요 |
충실도 확인 (결제 전): 프롬프트에서 사용자가 명명한 주제/액션/설정을 제거했다면 작업이 잘못된 것입니다 — 다시 작성하세요. 자유 축은 요청이 열어둔 부분만 채웁니다.
작성된 프롬프트를 보여줄 때도 `p-video-2`를 언급하세요 (가이드가 제작을 돕고, 이 도구가 호출을 소유합니다).
스킬 경계
이 스킬 = 호출당 하나의 p-video-2 예측.
범위 밖 (이 스킬에서 실행하지 마세요):
- 다중 장면 조립, 연결, 서브 에이전트 오케스트레이션 또는 병렬 장면 배치
- 생성 오디오를 사용한 영화 같은 생성 (가져온 트랙 없음) →
p-video-2-pro - 템플릿 비디오의 모션 전송 →
p-video-animate - 자연스러운 장면 오디오가 없는 헤드 온리 / 립싱크 호스트 →
p-video-avatar - 기존 영상 편집 지시 →
p-video-edit
요청이 하나의 클립을 초과하면 중단하고 다음을 추천하세요: image-to-video (하나의 나레이션 비트), visual-transition-reel (다중 장면 시각), narrated-multi-scene (다중 장면 + VO).
사용하지 않을 때
대신 다른 스킬을 사용하세요:
| 스킬 | 설명 | 설치 |
|---|---|---|
p-video-2-pro | 텍스트 또는 시작/종료 프레임에서 영화 같은 클립을 원할 때 사용 — 제품 광고, 다큐멘터리 샷, 생성 오디오가 포함된 대화. 1080p, 가져온 오디오 트랙 또는 헤드 온리 호스트에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video-2-pro -y |
p-video | 텍스트 또는 이미지에서 간단한 짧은 클립을 원할 때 사용 — 빠른 B-롤, 초안 또는 시작/종료 프레임 애니메이션. 영화 같은 생성, 최고 품질, 정밀한 립싱크 또는 1080p 가져온 오디오가 필요한 경우에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video -y |
p-video-avatar | 사람이 스크립트를 말하는 카메라 모습을 원할 때 사용 — 립싱크 호스트, 대변인 또는 초상화 사진에서 나레이션 아바타. | npx skills add PrunaAI/pruna-skills@p-video-avatar -y |
p-video-animate | 사진이 다른 비디오처럼 움직이기를 원할 때 사용 — 모션 전송, 댄스 리믹스 또는 템플릿 클립의 퍼포먼스 변형. | npx skills add PrunaAI/pruna-skills@p-video-animate -y |
p-video-replace | 기존 영상 내에서 카메라 움직임과 오디오를 유지하면서 사람, 의상 또는 제품을 교체하려 할 때 사용. | npx skills add PrunaAI/pruna-skills@p-video-replace -y |
p-video-edit | 텍스트 지시로 기존 비디오를 편집하려 할 때 사용 — 색상 변경, 스타일 재적용, 객체 제거 또는 추가, 환경 또는 조명 변경, 화면 텍스트 업데이트, 또는 선택적 참조 가이드 제품 및 액세서리 편집 적용. 처음부터 새 클립을 만들거나 ffmpeg 조립에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video-edit -y |
video-editing | 이미 렌더링된 클립을 ffmpeg로 조립하거나 다듬을 때 사용 — 연결, 크로스페이드, 자막 및 캡션, 텍스트/로고 오버레이, 전후 슬라이더, 배경 음악, 플랫폼 내보내기 — 또는 Hyperframes로 다중 레이어 HTML 조합 비디오를 구성할 때. AI 비디오 생성, 프롬프트 제작 또는 모델 기반 비디오 편집에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@video-editing -y |
HTTP (curl)
이미지-투-비디오 / 프레임 앵커용 업로드
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: ${PRUNA_API_KEY}" \
-F "content=@/path/to/first-frame.png"
urls.get을 input.image (첫 번째 프레임) 및/또는 input.last_frame_image (마지막 프레임)로 전달하세요. input.audio를 위해 같은 방식으로 TTS/음악을 업로드하세요.
생성 (비동기 텍스트-투-비디오 — 권장)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-2' \
-d '{
"input": {
"prompt": "A sports car drifting through a neon-lit city at night, cinematic aerial shot",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}'
폴링 및 다운로드: pruna-api를 따르세요.
프롬프트를 작성하기 전에 generation-diversity에서 랜덤 시드 의식을 완료하세요 — 의식 문자열을 API seed로 전달하지 마세요.
요금은 요청한 duration이 아닌 반환된 초당 청구됩니다. 속도 제한: 분당 250개의 요청.
| 해상도 | draft=false | draft=true |
|---|---|---|
| 720p | $0.025 / s | $0.015 / s |
| 1080p | $0.05 / s | $0.03 / s |
첫 번째 / 마지막 프레임 (시각적 전환)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-2' \
-d '{
"input": {
"prompt": "OPEN: hold wide on wet alley, neon flicker. MID: slow dolly in, rain ticks on pavement. CLOSE: settle on end pose.",
"image": "https://api.pruna.ai/v1/files/START_ID",
"last_frame_image": "https://api.pruna.ai/v1/files/END_ID",
"duration": 5,
"resolution": "720p",
"fps": 24
}
}'
장면 앵커 트리플 (image + last_frame_image + audio)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-2' \
-d '{
"input": {
"prompt": "Close-up of a singer performing the uploaded track. Natural lip-sync, expressive face, stage lighting, camera holds steady on the performer.",
"image": "https://api.pruna.ai/v1/files/SCENE_START",
"last_frame_image": "https://api.pruna.ai/v1/files/SCENE_END",
"audio": "https://api.pruna.ai/v1/files/SCENE_NARRATION",
"resolution": "720p",
"fps": 24,
"save_audio": true
}
}'
audio가 설정된 경우 duration을 생략하세요. 클립 길이 = min(오디오 길이, 20s) — TTS를 ~19s 이하로 유지하세요 (렌더링 전 ffprobe). 오디오 조건부 작업은 오디오 길이로 청구됩니다.
생성 (동기 — 빠른 테스트 전용)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video-2' \
-H 'Try-Sync: true' \
-d '{
"input": {
"prompt": "A sports car drifting through a neon-lit city at night, cinematic aerial shot",
"duration": 5,
"resolution": "720p",
"draft": true
}
}'
생성 전
- 전제 조건 안내 읽기 순서 완료 (
generation-diversity→video-prompting). - 의식적 시드 → 동적 + 충실 모션 프롬프트 작성 (위 섹션) → 모드 (T2V / I2V / 프레임 쌍 / 오디오),
duration(생략 시 모델이 프롬프트에서 선택하게 하거나 오디오 구동 시 생략),resolution,fps,draft, 및 **prompt**를 사용자와 확인. - Pruna 참고:
image가 설정되면aspect_ratio는 무시됩니다.audio가 있으면duration을 생략하고save_audio: true(기본값)를 유지하여 나레이션을 보존하세요. 카메라 연설의 경우, T2V 네이티브 스피치 (save_audio: true, 가져온audio없음)로 이끄세요 — 멈춤 / 대사 / 휴식 립싱크가p-video대비 품질 점프입니다. 가져온audio는 더 깨끗한 얼굴을 유지합니다; 비제모 잠금은 혼합됨 — 믹싱된 wav를 립싱크 데모로 취급하지 마세요. **draft: true**로 반복하고, 최종은draft: false로 진행하세요. 요청이 다중 장면이면 — 중단 (스킬 경계 참조). 네이티브 4K는 지원되지 않습니다.
필수 입력
prompt(문자열)
일반적인 선택적 필드
| 필드 | 역할 |
|---|---|
image | 첫 번째 프레임 — I2V 앵커; 설정 시 aspect_ratio는 무시됨 (jpg, jpeg, png, webp) |
last_frame_image | 선택적 종료 상태 이미지 |
audio | 오디오 조건부; 지속 시간은 오디오를 따름 (최대 20s); flac/mp3/wav |
duration | 1–20s; 비워두면 모델이 프롬프트에서 길이를 선택; audio가 설정되면 무시됨 |
resolution | 720p (기본값) 또는 1080p |
fps | 24 (기본값) 또는 48 |
aspect_ratio | image 없을 때: 16:9 (기본값), 9:16, 4:3, 3:4, 3:2, 2:3, 1:1 |
draft | true = 더 저렴하고 빠른 미리보기 ($0.015/s 720p, $0.03/s 1080p); false (기본값) = 최종 |
save_audio | 모델이 생성했거나 업로드된 오디오를 출력에 유지 (기본값 true) |
prompt_upsampling | 프롬프트 향상 (기본값 true) |
seed, disable_safety_filter | 재현성 / 클라이언트 정책 |
관련 스킬
관련 스킬:
| 스킬 | 설명 | 설치 |
|---|---|---|
p-video-2-pro | 텍스트 또는 시작/종료 프레임에서 영화 같은 클립을 원할 때 사용 — 제품 광고, 다큐멘터리 샷, 생성 오디오가 포함된 대화. 1080p, 가져온 오디오 트랙 또는 헤드 온리 호스트에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video-2-pro -y |
p-video | 텍스트 또는 이미지에서 간단한 짧은 클립을 원할 때 사용 — 빠른 B-롤, 초안 또는 시작/종료 프레임 애니메이션. 영화 같은 생성, 최고 품질, 정밀한 립싱크 또는 1080p 가져온 오디오가 필요한 경우에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video -y |
gemini-3.1-flash-tts | 음성 나레이션 또는 음성 해설이 필요할 때 사용 — 설명 트랙, 다큐멘터리 대사, 생성된 비디오와 함께 사용할 음성. | npx skills add PrunaAI/[email protected] -y |
image-to-video | 이미지에서 하나의 짧은 영화 비트를 원할 때 사용 — 나레이션 장면, 스토리 순간, 선택적 음성 해설이 있는 영화 같은 B-롤. | npx skills add PrunaAI/pruna-skills@image-to-video -y |
visual-transition-reel | 샷 사이에 전환이 있는 몽타주를 원할 때 사용 — 액션 시퀀스 릴 또는 나레이션이 선택적인 다중 장면 작품. | npx skills add PrunaAI/pruna-skills@visual-transition-reel -y |
narrated-multi-scene | 여러 부분으로 구성된 내레이션 스토리를 원할 때 사용 — 에피소드 B-롤, 챕터별 프로모션, 카메라 대화 없이 연결된 여러 비디오 장면. | npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y |
p-video-avatar | 사람이 스크립트를 말하는 카메라 모습을 원할 때 사용 — 립싱크 호스트, 대변인 또는 초상화 사진에서 나레이션 아바타. | npx skills add PrunaAI/pruna-skills@p-video-avatar -y |
p-video-animate | 사진이 다른 비디오처럼 움직이기를 원할 때 사용 — 모션 전송, 댄스 리믹스 또는 템플릿 클립의 퍼포먼스 변형. | npx skills add PrunaAI/pruna-skills@p-video-animate -y |
video-editing | 이미 렌더링된 클립을 ffmpeg로 조립하거나 다듬을 때 사용 — 연결, 크로스페이드, 자막 및 캡션, 텍스트/로고 오버레이, 전후 슬라이더, 배경 음악, 플랫폼 내보내기 — 또는 Hyperframes로 다중 레이어 HTML 조합 비디오를 구성할 때. AI 비디오 생성, 프롬프트 제작 또는 모델 기반 비디오 편집에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@video-editing -y |