{
  "schemaVersion": "vidia-package@1",
  "meta": {
    "title": "생활 드라마 숏츠 · AI 영상 + AI 이미지",
    "summary": "생활 갈등 사연을 1인칭 재연 숏츠로 만들되, 첫 장면·물증 반전·사이다처럼 움직임이 중요한 순간만 AI 영상으로, 나머지는 AI 이미지 컷으로 만듭니다. AI 영상 비율(재생 시간 기준)을 골라 비용을 조절합니다.",
    "format": "shorts",
    "tags": [
      "생활 드라마",
      "썰",
      "사연",
      "재연",
      "숏츠",
      "AI 영상",
      "AI 이미지"
    ],
    "knowhow": "## 영상과 이미지를 섞는 방법\n\n- **영상은 이야기의 결정적 순간에.** 첫 장면(결과·단서) → 물증이 제3자 앞에서 드러나는 반전 → 빌런이 무너지는 사이다 → 인물이 실제로 움직이는 행동 장면 순서로 AI 영상을 배정하고, 고른 비율(재생 시간 기준)에 가장 가깝게 멈춥니다.\n- **한 장면에 행동 하나.** 영상 장면은 행동 하나·카메라 변화 하나만 담고, 블랙박스·CCTV 형식 장면은 카메라를 고정합니다. 대사는 음성으로 따로 들어가므로 입 모양이 크게 보이는 정면 컷을 피합니다.\n- **나머지는 이미지 컷.** 7초가 넘는 이미지 장면은 2~3컷으로 나눠 켄번즈로 잇습니다.\n\n## 이 패키지의 접근\n\n- **첫 5초에 어떤 싸움인지.** 첫 문장은 분위기 묘사가 아니라 빌런의 얄미운 대사 한 줄이나 말이 안 되는 물증 하나입니다. 제목과 첫 장면은 \"이상하다\"까지만 말하고 범인·수법·정체는 중반에 터뜨립니다.\n- **얄미움은 세 번 쌓고, 반전은 물증으로.** 빌런의 무례를 사소한 무례 → 반복 → 선 넘는 한마디로 올리고, 반전은 고백이 아니라 문자·영수증·사진·계량기 같은 물증이 그 자리에 있던 제3자 앞에서 드러나며 터집니다.\n- **사이다는 그 자리에서, 남들 앞에서, 숫자로.** \"환불했습니다\" 같은 보고문으로 끝내지 않고 빌런이 무너지는 순간을 장면으로 씁니다. 없는 판결·처벌은 붙이지 않습니다.\n- **리얼함과 댓글.** 금액·시각·물건 이름, 말끝이 흐려지는 입말 대사가 현장감을 만들고, 빌런에게도 한 줌의 사정을 줘 \"대응이 과했나\"로 댓글이 갈리게 합니다. 마지막 문장은 훈계가 아니라 대비나 물음입니다.\n- **인물마다 다른 목소리, 같은 얼굴.** 주인공(내레이터)과 대사가 있는 인물마다 성별·연령대에 맞는 목소리를 따로 쓰고, 인물·장소·물건은 정본 시트를 먼저 만들어 모든 장면에 참조로 붙입니다. 인물 일관성 평가가 얼굴·옷·수량이 달라진 컷을 다시 만듭니다.\n- **생활 드라마 평가 → 개선.** `life-drama@1`(13축, 통과선 60)로 채점해 미달이면 약한 축을 고쳐 다시 평가합니다(최대 2회).\n- **각색 재연임을 밝힌다.** 설명란 첫 문장에 각색 재연임을 적고, 생성한 화면을 실제 증거라고 말하지 않습니다. 실명·번호판·주소·글자는 화면에 넣지 않습니다.\n\n## 예상 비용 구성\n대본 LLM 토큰 + 평가 + TTS + AI 이미지(시트 + 장면 컷) + 인물 일관성 평가 + AI 영상(초당 단가 × 전체 길이 × 비율) + 무료 켄번즈·자막·렌더링. 비율 40% 면 AI 영상 비용이 모든 장면을 영상으로 만들 때의 약 40% 입니다."
  },
  "inputForm": [
    {
      "key": "topic",
      "label": "사연",
      "type": "longtext",
      "required": true,
      "help": "겪었거나 들은 갈등 사연을 적어 주세요. 인물 관계·금액·시각 같은 디테일이 있으면 더 현실적인 대본이 됩니다. 실명·주소는 적지 않아도 됩니다.",
      "placeholder": "예: 옆집이 석 달째 제 택배를 자기 것처럼 뜯어 쓰고 있었습니다. 관리사무소 CCTV 를 같이 보던 날…",
      "maxLength": 3000
    },
    {
      "key": "media_mix",
      "label": "화면 구성",
      "type": "select",
      "required": false,
      "help": "이 패키지는 고른 비율만큼만 AI 영상으로, 나머지 장면은 AI 이미지 컷으로 만듭니다.",
      "options": [
        "AI 영상 + AI 이미지"
      ],
      "default": "AI 영상 + AI 이미지"
    },
    {
      "key": "video_ratio",
      "label": "AI 영상 비율",
      "type": "select",
      "required": false,
      "help": "재생 시간 기준으로 이 비율만큼 AI 영상으로 만듭니다. AI 영상은 초당 과금이라 비율을 낮출수록 제작비가 줄어듭니다(예: 40% 면 90초 숏츠에서 약 36초만 AI 영상).",
      "options": [
        "20%",
        "30%",
        "40%",
        "50%",
        "60%",
        "70%",
        "80%"
      ],
      "default": "40%"
    },
    {
      "key": "sound",
      "label": "AI 영상 현장음",
      "type": "select",
      "required": false,
      "help": "켜면 영상 모델이 문 닫는 소리·차 소리 같은 주변 소리를 만들어 목소리 아래에 작게 깔립니다(목소리·음악은 만들지 않습니다).",
      "options": [
        "끄기",
        "켜기"
      ],
      "default": "끄기"
    },
    {
      "key": "target_seconds",
      "label": "목표 길이(초)",
      "type": "select",
      "required": false,
      "help": "",
      "options": [
        "60",
        "90",
        "120",
        "150"
      ],
      "default": "90"
    },
    {
      "key": "art_style",
      "label": "화풍",
      "type": "select",
      "required": false,
      "help": "실사+웹툰 전환: 발견·블랙박스·피해 흔적은 실사, 사람끼리 대치하는 장면은 웹툰으로 바꾸고 매치컷으로 잇습니다.",
      "options": [
        "실사+웹툰 전환",
        "실사 재연",
        "웹툰"
      ],
      "default": "실사+웹툰 전환"
    },
    {
      "key": "narrator_voice",
      "label": "주인공(내레이터) 목소리",
      "type": "select",
      "required": false,
      "help": "자동이면 사연의 화자 성별로 고릅니다. 다른 인물은 성별·연령대에 맞는 목소리를 따로 씁니다.",
      "options": [
        "자동",
        "여성",
        "남성"
      ],
      "default": "자동"
    },
    {
      "key": "bgm_asset_id",
      "label": "배경음악",
      "type": "asset",
      "required": false,
      "help": "내 자료실에 올린 오디오 파일. 비우면 배경음악 없이 만듭니다.",
      "accept": "audio"
    },
    {
      "key": "notes",
      "label": "제작 메모",
      "type": "longtext",
      "required": false,
      "help": "꼭 넣을 장면·대사, 피할 표현 등. 대본 단계가 가장 먼저 따릅니다.",
      "maxLength": 5000
    }
  ],
  "agent": {
    "maxTurns": 45
  },
  "start": "n1",
  "nodes": [
    {
      "id": "n1",
      "module": {
        "id": 1,
        "versionId": 1,
        "name": "생활 드라마 숏츠 대본",
        "stage": "script",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "생활 드라마 대본",
      "next": "n2",
      "pause": false,
      "maxVisits": 3,
      "note": "갈등 구도·세 번 쌓는 무례·물증 반전·사이다·댓글 포인트 설계, 인물 시트·목소리 배정.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 0
      }
    },
    {
      "id": "n2",
      "module": {
        "id": 53,
        "versionId": 53,
        "name": "대본평가 · 생활 드라마",
        "stage": "evaluate",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "생활 드라마 평가",
      "next": "n4",
      "pause": false,
      "maxVisits": 3,
      "note": "life-drama@1, 통과선 60",
      "branches": [
        {
          "label": "점수 미달(60 미만)",
          "when": {
            "path": "evaluation.score",
            "op": "<",
            "value": 60
          },
          "goto": "n3"
        },
        {
          "label": "불통과(블로커 등)",
          "when": {
            "route": "rewrite"
          },
          "goto": "n3"
        }
      ],
      "ui": {
        "x": 0,
        "y": 140
      }
    },
    {
      "id": "n3",
      "module": {
        "id": 70,
        "versionId": 70,
        "name": "대본개선",
        "stage": "improve",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "대본개선",
      "next": "n2",
      "pause": false,
      "maxVisits": 2,
      "note": "약한 축을 고친 뒤 다시 평가한다(최대 2회).",
      "branches": [],
      "ui": {
        "x": 320,
        "y": 210
      }
    },
    {
      "id": "n4",
      "module": {
        "id": 76,
        "versionId": 76,
        "name": "TTS 생성",
        "stage": "tts",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "내레이션·대사 음성",
      "next": "n5",
      "pause": false,
      "maxVisits": 3,
      "note": "화자별 목소리로 발화 묶음마다 음성을 만든다.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 280
      }
    },
    {
      "id": "n5",
      "module": {
        "id": 11,
        "versionId": 11,
        "name": "AI 이미지",
        "stage": "image",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "인물 시트·장면 이미지",
      "next": "n6",
      "pause": false,
      "maxVisits": 2,
      "note": "정본 시트를 먼저 만들고 모든 키프레임에 참조로 붙인다.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 420
      }
    },
    {
      "id": "n6",
      "module": {
        "id": 25,
        "versionId": 25,
        "name": "이미지 평가 · 인물·요소 동일성",
        "stage": "review",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "인물 일관성 평가",
      "next": "n7",
      "pause": false,
      "maxVisits": 2,
      "note": "얼굴·머리·옷·수량이 시트와 다른 컷을 다시 만든다.",
      "branches": [
        {
          "label": "다시 만들기",
          "when": {
            "route": "retry"
          },
          "goto": "n5"
        }
      ],
      "ui": {
        "x": 0,
        "y": 560
      }
    },
    {
      "id": "n7",
      "module": {
        "id": 79,
        "versionId": 79,
        "name": "AI 영상",
        "stage": "video",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "AI 영상·장면 클립",
      "next": "n8",
      "pause": false,
      "maxVisits": 3,
      "note": "AI 영상 장면만 영상 생성, 나머지는 이미지 컷 켄번즈 클립(무료).",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 700
      }
    },
    {
      "id": "n8",
      "module": {
        "id": 73,
        "versionId": 73,
        "name": "자막 생성",
        "stage": "subtitle",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "자막 생성",
      "next": "n9",
      "pause": false,
      "maxVisits": 3,
      "note": "",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 840
      }
    },
    {
      "id": "n9",
      "module": {
        "id": 22,
        "versionId": 22,
        "name": "최종 렌더링",
        "stage": "render",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "최종 렌더링",
      "next": null,
      "pause": false,
      "maxVisits": 3,
      "note": "",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 980
      }
    }
  ]
}