{
  "schemaVersion": "vidia-package@1",
  "meta": {
    "title": "공학 숏츠 제작 패키지 · AI 영상 + AI 이미지",
    "summary": "공학 숏츠 제작 패키지의 비용 절감판입니다. AI 영상 비율을 고르면 그만큼만 AI 영상으로, 나머지 장면은 AI 이미지 + 켄번즈로 만듭니다. 직접 찍은 사진을 등록하면 그 사진도 장면 화면으로 씁니다. 대본 평가·개선 루프와 이미지 검수는 그대로입니다.",
    "format": "shorts",
    "tags": [
      "공학",
      "숏츠",
      "원리 해설",
      "비용 절감",
      "AI 이미지",
      "AI 영상",
      "내 사진"
    ],
    "knowhow": "## 이 패키지의 접근\n\n- **비율은 재생 시간 기준.** AI 영상은 초당 과금이라 장면 수가 아니라 재생 시간으로 비율을 맞춥니다. 대본작성 단계가 장면별 예상 길이(낭독 글자 수 ÷ 7.5 + 여유)로 목표 영상 초를 계산하고, 설계도 검증 결과의 `aiVideoEstimatedSec` 로 다시 확인합니다. 배정 결과는 설계도 `x-mediaPlan` 에 남습니다.\n- **영상은 움직임이 답인 장면부터.** 작동 원리 장면(가장 긴 인과 장면) → 첫 장면(훅) → 전후 변화가 답인 장면 순서로 AI 영상을 배정합니다. 대상 소개·단면 도해·수치 비교·결과 관찰은 AI 이미지로 충분합니다.\n- **정지 화면도 지루하지 않게.** AI 이미지 장면은 켄번즈·팬을 번갈아 쓰고, 8초를 넘는 장면은 키프레임을 2장으로 나눠 화면을 한 번 바꿉니다. 전후가 다른 두 장으로 영상 없이도 변화가 읽히게 합니다.\n- **내 사진은 그대로 장면이 된다.** 직접 등록한 이미지는 장면당 1장씩 쓰고(이미지 쪽 비율로 셈), 그 장면은 AI 이미지를 만들지 않습니다. 사진에 보이는 것만 말하고, 설명에 없는 장소·연도·수치를 사진이 증명하는 것처럼 말하지 않습니다.\n- **질문 하나로 열고 인과 사슬로 설명한다.** 대본 규칙과 `engineering@1`(통과선 60) 평가 → 개선 루프(최대 2번)는 공학 숏츠 제작 패키지와 같습니다.\n- **같은 물체는 같은 모습으로.** 반복 등장하는 장치는 요소 시트를 먼저 만들고 모든 키프레임에 참조로 붙입니다. 이미지 평가가 7점 미만 컷을 다시 만듭니다.\n\n## 예상 비용 구성\n대본 LLM 토큰 + 평가(회당 수 포인트) + TTS(약 400~500자) + 이미지(요소 시트 + 키프레임, 직접 등록한 이미지 장면은 제외) + 이미지 검수 + AI 영상(초당 단가 × 전체 길이 × 비율) + 무료 켄번즈·자막·렌더링. 비율 40% 면 AI 영상 비용이 모든 장면을 영상으로 만들 때의 약 40% 입니다."
  },
  "inputForm": [
    {
      "key": "topic",
      "label": "주제",
      "type": "longtext",
      "required": true,
      "help": "예: 엘리베이터 줄이 전부 끊기면 정말 바닥까지 떨어질까?",
      "maxLength": 5000
    },
    {
      "key": "tone",
      "label": "말투",
      "type": "select",
      "required": false,
      "help": "",
      "options": [
        "친근",
        "단정",
        "유머"
      ],
      "default": "친근"
    },
    {
      "key": "video_ratio",
      "label": "AI 영상 비율",
      "type": "select",
      "required": false,
      "help": "재생 시간 기준으로 이 비율만큼만 AI 영상으로 만들고, 나머지 장면은 AI 이미지에 느린 카메라 움직임(켄번즈)을 입혀 만듭니다. AI 영상은 초당 과금이라 비율을 낮출수록 제작비가 줄어듭니다(예: 40% 면 60초 숏츠에서 약 24초만 AI 영상).",
      "options": [
        "0%",
        "20%",
        "30%",
        "40%",
        "50%",
        "60%",
        "70%",
        "80%"
      ],
      "default": "40%"
    },
    {
      "key": "user_images",
      "label": "직접 등록할 이미지",
      "type": "asset",
      "required": false,
      "help": "직접 찍었거나 사용 권리가 있는 사진을 고르면 AI 이미지 대신 그 사진을 장면 화면으로 씁니다(장면당 1장, 최대 6장, 켄번즈 움직임). 여기서 바로 올릴 수도 있습니다.",
      "accept": "image",
      "multiple": true,
      "max": 6
    },
    {
      "key": "user_images_note",
      "label": "등록한 이미지 설명",
      "type": "longtext",
      "required": false,
      "help": "사진마다 한 줄씩 '파일 이름: 무엇을 찍은 사진인지' 로 적으면 알맞은 장면에 배치합니다. 비우면 파일 이름으로 판단합니다.",
      "placeholder": "교량받침: 다리 상판 아래 고무 받침을 가까이서 찍은 사진\n신축이음: 다리 이음부 톱니 모양 철판",
      "maxLength": 5000
    },
    {
      "key": "facts",
      "label": "근거자료",
      "type": "longtext",
      "required": false,
      "help": "수치·사례의 출처가 되는 글을 붙여 넣으면 대본과 평가가 이 내용을 기준으로 사실을 판단합니다.",
      "maxLength": 5000
    },
    {
      "key": "evaluation_pack",
      "label": "평가 팩(고급)",
      "type": "text",
      "required": false,
      "help": "대본 평가 기준. 기본 engineering@1(공학·건설 해설 숏츠).",
      "maxLength": 300,
      "default": "engineering@1"
    }
  ],
  "agent": {
    "maxTurns": 30
  },
  "start": "n1",
  "nodes": [
    {
      "id": "n1",
      "module": {
        "id": 71,
        "versionId": 71,
        "name": "대본작성",
        "stage": "script",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "대본작성",
      "next": "n2",
      "pause": false,
      "maxVisits": 3,
      "note": "공학 숏츠 톤 + AI 영상 비율(재생 시간 기준)로 장면을 영상·이미지로 나누고, 직접 등록한 이미지를 알맞은 장면에 배치한다.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 0
      }
    },
    {
      "id": "n2",
      "module": {
        "id": 69,
        "versionId": 69,
        "name": "대본평가",
        "stage": "evaluate",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "대본평가",
      "next": "n4",
      "pause": false,
      "maxVisits": 3,
      "note": "engineering@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": "TTS 생성",
      "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": "AI 이미지",
      "next": "n6",
      "pause": false,
      "maxVisits": 2,
      "note": "요소 시트 → AI 영상·AI 이미지 장면 키프레임. 직접 등록한 이미지 장면은 만들지 않는다.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 420
      }
    },
    {
      "id": "n6",
      "module": {
        "id": 38,
        "versionId": 38,
        "name": "이미지 평가",
        "stage": "review",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "이미지 평가",
      "next": "n7",
      "pause": false,
      "maxVisits": 2,
      "note": "7점 미만은 한 번 다시 만들고, 그래도 미달이면 이미지 단계로 되돌린다.",
      "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
      }
    }
  ]
}