사전 조건
생성하기 전에 다음 스킬을 설치하고 로드하세요(@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
각 스킬의 생성 전 / 제작 섹션을 따르세요 — 여기서 가이드 내용을 반복하지 마십시오.
에이전트 습관
라우팅: 간단하고 빠른 클립(드래프트, 가벼운 B-roll, 짧은 모션)에는 `p-video`를 사용하세요. 생성된 오디오가 포함된 시네마틱 생성 → `p-video-2-pro`. 1080p, 가져오기 오디오 또는 드래프트 미리보기 → `p-video-2`.
첫 번째 응답에서 `p-video`를 백틱 안에 명명하고, PRUNA_API_KEY를 확인한 후(또는 pruna-api의 가입 링크와 함께 중단), 필요한 입력을 요청하세요. 인테이크 열기 → 첫 번째 POST 전에 generation-diversity 명확화 인테이크를 수행하세요. 모션 프롬프트를 작성할 때는 프롬프트 제작 (동적 + 충실) 을 따르세요 — 스킬 예제를 붙여넣지 마십시오. 사용하지 않을 때가 더 적합하면 다른 스킬로 리디렉션하세요.
프롬프트 제작 (동적 + 충실)
모든 input.prompt는 새롭고 구체적이어야 하며, 사용자의 의도와 일치해야 합니다. 다양성이 요청을 무시하지 않습니다.
| 수행할 사항 | 수행하지 말아야 할 사항 |
|---|---|
generation-diversity의 무작위 시드 의식을 실행하고 명시하며, 요청이 허용할 때 최소 2개의 자유 축(카메라 이동, 조명 변화, 텍스처, 페이싱)을 교체하세요. | 이 스킬의 curl 예제(rain-slick street, dog tosses plush 등)를 복사하거나 이전 세션의 프롬프트를 재사용하지 마세요. |
사용자가 요구한 사실(주제, 액션 비트, 프레임 앵커가 있을 때 OPEN/MID/CLOSE, audio가 설정되었을 때 나레이션 동기화)을 먼저 고정하세요. | 요청을 무시하는 "더 멋진" 클립을 위해 주제나 모션을 바꾸지 마세요. |
video-prompting 극작법으로 구조화 — 비트당 고정된 액션 하나, 물리적으로 안전한 모션, 카메라 문법을 따르세요. | 모호한 분위기만 있는 문자열(cinematic vibe, neon energy)을 사용하지 마세요. |
audio가 설정되면 모션과 페이싱이 나레이션 비트와 일치해야 합니다. | VO가 재생되는 동안 관련 없는 액션으로 표류하지 마세요. |
사용자가 문구를 확정하지 않았을 때 POST 전에 작성된 프롬프트 + 모드 필드를 보여주세요. | 승인된 주제나 비트와 다른 내용으로 조용히 재생성하지 마세요. |
충실도 확인 (결제 전): 사용자가 명명한 주제/액션/설정을 프롬프트에서 제거했다면 작업이 잘못된 것입니다 — 다시 작성하세요. 자유 축은 요청이 열어둔 부분만 채웁니다.
작성된 프롬프트를 보여줄 때도 `p-video`를 명명하세요 (가이드는 제작을 돕고, 이 도구가 호출을 담당합니다).
스킬 범위
이 스킬 = 호출당 하나의 p-video 예측.
범위 외 (이 스킬에서 실행하지 마십시오):
- 다중 장면 조립, 연결, 하위 에이전트 오케스트레이션 또는 병렬 장면 배치
- 템플릿 비디오에서 모션 전송 →
p-video-animate - 네이티브 장면 오디오 없이 토킹 헤드 전용 / 립싱크 호스트 →
p-video-avatar - 생성된 오디오가 포함된 시네마틱 생성 →
p-video-2-pro - 1080p, 가져오기 오디오 또는 드래프트 미리보기 →
p-video-2
요청이 하나의 클립을 초과하면 중단하고 다음을 권장: 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-2 | 텍스트, 이미지 또는 가져오기 오디오에서 정교한 짧은 클립(1080p B-roll, 시작/끝 프레임 애니메이션, 혼합 트랙이 있는 모션 샷)을 원할 때 사용합니다. 시네마틱 생성 오디오 클립 또는 토킹 헤드 전용 호스트에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video-2 -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' \
-d '{
"input": {
"prompt": "Slow dolly in on rain-slick street at night, neon reflections, distant traffic hiss",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}'
폴링 및 다운로드: pruna-api를 따르세요.
프롬프트를 작성하기 전에 generation-diversity의 무작위 시드 의식을 완료하세요 — 의식 문자열을 API seed로 전달하지 마십시오.
첫 번째 / 마지막 프레임 (시각적 전환)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H "apikey: ${PRUNA_API_KEY}" \
-H 'Model: p-video' \
-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' \
-d '{
"input": {
"prompt": "Dog tosses plush upward, tail wagging, motion matches narrator, warm light",
"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(오디오 길이, 20초) — 렌더링 전에 ffprobe로 TTS를 ≤ ~19초로 유지하세요.
생성 전
- 사전 조건 가이드 읽기 순서를 완료하세요 (
generation-diversity→video-prompting). - 의식 시드 → 동적 + 충실 모션 프롬프트 작성 (위 섹션) → 모드 (T2V / I2V / 프레임 쌍 / 오디오),
duration(오디오 기반이 아닌 경우),resolution,fps,draft및prompt를 사용자와 확인하세요. - Pruna 참고:
image가 설정되면aspect_ratio는 무시됩니다.audio와 함께duration을 생략하고save_audio: true로 설정하여 나레이션을 유지하세요. 포스트 먹싱보다 업로드된 VO를 선호합니다. 요청이 다중 장면이면 — 중단하세요 (스킬 범위 참조).
필수 입력
prompt(문자열)
일반적인 선택적 필드
| 필드 | 역할 |
|---|---|
image | 첫 번째 프레임 — I2V 앵커; 설정 시 aspect_ratio는 무시됨 |
last_frame_image | 선택적 종료 상태 정지 이미지 |
audio | 오디오 조건부; 지속 시간은 오디오를 따름 (최대 20초); flac/mp3/wav |
duration | 1–20초 (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 ≈ 4배 빠르고 저렴한 미리보기; false = 최종 |
save_audio | 모델 생성 또는 업로드된 오디오를 출력에 유지 |
seed, prompt_upsampling, disable_safety_filter | 재현성 / 클라이언트 정책 |
관련
관련 스킬:
| 스킬 | 설명 | 설치 명령어 |
|---|---|---|
p-video-2-pro | 텍스트나 시작/끝 프레임에서 시네마틱 클립(제품 광고, 다큐멘터리 샷, 생성된 오디오가 포함된 대화)을 원할 때 사용합니다. 1080p, 가져오기 오디오 트랙, 토킹 헤드 전용 호스트에는 적합하지 않습니다. | npx skills add PrunaAI/pruna-skills@p-video-2-pro -y |
gemini-3.1-flash-tts | 음성 나레이션이나 음성 해설(설명 트랙, 다큐멘터리 대사, 생성된 비디오와 짝지을 음성)이 필요할 때 사용합니다. | npx skills add PrunaAI/[email protected] -y |
image-to-video | 이미지에서 하나의 짧은 영화 비트(나레이션 장면, 스토리 순간, 선택적 음성 해설이 있는 시네마틱 B-roll)를 원할 때 사용합니다. | 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-roll, 챕터 프로모션, 카메라 대화 없이 연결된 여러 비디오 장면)를 원할 때 사용합니다. | 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 |