{
  "schemaVersion": "vidia-package@1",
  "meta": {
    "title": "롱폼 역사 전문 영상제작 패키지",
    "summary": "역사 속 인물·사건·제도를 5~8분 가로(16:9) 롱폼으로 만듭니다. 설정 오프닝과 소주제 구성으로 대본을 쓰고, 역사 평가 팩으로 채점·개선한 뒤, 기록 사진·스톡 영상과 시대 고증 AI 이미지를 섞어 렌더링합니다.",
    "format": "longform",
    "tags": [
      "역사",
      "롱폼",
      "다큐멘터리",
      "기록",
      "16:9"
    ],
    "knowhow": "## 이 패키지의 접근\n\n- **설정 오프닝.** 첫 30초에 누구·언제·어디·확인된 결과 한 문장, 그리고 이 영상이 답할 질문을 둡니다. 맥락 없는 자극 장면(콜드오픈)으로 시작하지 않습니다.\n- **사료와 전승을 가른다.** 기록으로 확인된 것만 단정하고, 설·전승·후대 해석은 \"그렇게 전해진다\", \"누가 그렇게 기록했다\"로 귀속합니다. 근거자료(facts)를 넣으면 대본·평가가 그 내용을 기준으로 사실을 판단합니다.\n- **소주제로 나눈 이야기.** 2개 이상의 소주제(chapter)로 흐름을 나누고 60~90초마다 새 사실·예상과 다른 사실이 나오게 배치합니다. 결정적 순간에 가장 많은 장면을 씁니다.\n- **기록 자료 + AI 재현.** 실존 장소·유물·기록 사진이 설득력 있는 장면은 실사진·스톡 장면으로 두고(자료 단계), 찾지 못하거나 권리를 확인하지 않은 장면은 시대 고증 AI 이미지로 대체합니다. 실사진은 회원이 사용 권리를 확인했다고 체크했을 때만 가져옵니다.\n- **평가 → 개선 루프.** `history@1`(역사·기록 평가, 통과선 60)로 채점해 미달이거나 사실 위반이 있으면 고쳐 다시 평가합니다(최대 2회).\n- **움직임은 아껴서.** 롱폼은 대부분 켄번즈 이미지로 두고, 전투·붕괴·건설처럼 움직임 자체가 답인 순간만 AI 영상(기본 3장면)으로 만듭니다.\n\n## 예상 비용 구성\n대본 LLM 토큰(롱폼은 설계도가 길어 숏츠의 수 배) + 평가 + TTS(약 2,000~3,500자) + 실사진 검색(장면당 최대 1회) + AI 이미지(장면 수 + 요소 시트) + 이미지 검수 + AI 영상 + 무료 자막·렌더링."
  },
  "inputForm": [
    {
      "key": "topic",
      "label": "주제",
      "type": "longtext",
      "required": true,
      "help": "예: 임진왜란 때 조선 수군은 어떻게 한 척도 잃지 않고 이겼을까?",
      "maxLength": 5000
    },
    {
      "key": "target_minutes",
      "label": "목표 길이(분)",
      "type": "select",
      "required": false,
      "help": "",
      "options": [
        "5",
        "6",
        "7",
        "8"
      ],
      "default": "6"
    },
    {
      "key": "tone",
      "label": "말투",
      "type": "select",
      "required": false,
      "help": "",
      "options": [
        "단정",
        "친근"
      ],
      "default": "단정"
    },
    {
      "key": "media_policy",
      "label": "화면 자료",
      "type": "select",
      "required": false,
      "help": "archive: 기록 사진·스톡 영상 장면을 섞습니다. ai-only: 모든 장면을 AI 이미지·영상으로 만듭니다.",
      "options": [
        "archive",
        "ai-only"
      ],
      "default": "archive"
    },
    {
      "key": "photo_rights_confirmed",
      "label": "실사진 사용 권리를 확인했습니다",
      "type": "boolean",
      "required": false,
      "help": "체크하면 인터넷에서 찾은 기록 사진을 가져옵니다. 저작권·초상권은 회원 책임입니다. 체크하지 않으면 해당 장면은 AI 이미지로 대체합니다.",
      "default": false
    },
    {
      "key": "facts",
      "label": "근거자료",
      "type": "longtext",
      "required": false,
      "help": "사료·논문·백과 요약 등. 대본과 평가가 이 내용을 사실 판단 기준으로 씁니다.",
      "maxLength": 20000
    },
    {
      "key": "notes",
      "label": "제작 메모",
      "type": "longtext",
      "required": false,
      "help": "대본작성 단계가 가장 먼저 따르는 지시입니다.",
      "maxLength": 5000,
      "default": "기록으로 확인된 사실만 단정하고 설·전승·후대 해석은 누가 그렇게 전했는지로 귀속한다. 인물은 시대 고증에 맞는 복식·머리 모양·건축으로 그리되 실존 인물의 얼굴을 특정하지 않는다(뒷모습·원경·실루엣). 연도·인명·지명은 근거자료에 있거나 널리 확인된 것만 쓴다."
    },
    {
      "key": "video_budget",
      "label": "AI 영상 장면 수(최대)",
      "type": "number",
      "required": false,
      "help": "",
      "min": 0,
      "max": 8,
      "default": 3
    },
    {
      "key": "bgm_asset_id",
      "label": "배경음악",
      "type": "asset",
      "required": false,
      "help": "내 자료실에 올린 오디오 파일 번호. 비우면 배경음악 없이 만듭니다.",
      "accept": "audio"
    },
    {
      "key": "evaluation_pack",
      "label": "평가 팩(고급)",
      "type": "text",
      "required": false,
      "help": "대본 평가 기준. 기본 history@1(역사·기록).",
      "maxLength": 300,
      "default": "history@1"
    }
  ],
  "agent": {
    "maxTurns": 48
  },
  "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": "16:9 롱폼, 설정 오프닝 + 소주제 2개 이상, 5~8분.",
      "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": "history@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": "",
      "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": 18,
        "versionId": 18,
        "name": "내 자료·스톡·실사진",
        "stage": "media",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "기록 사진·스톡",
      "next": "n6",
      "pause": false,
      "maxVisits": 3,
      "note": "실사진은 권리 확인 체크가 있을 때만 가져온다.",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 420
      }
    },
    {
      "id": "n6",
      "module": {
        "id": 11,
        "versionId": 11,
        "name": "AI 이미지",
        "stage": "image",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "AI 이미지",
      "next": "n7",
      "pause": false,
      "maxVisits": 2,
      "note": "",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 560
      }
    },
    {
      "id": "n7",
      "module": {
        "id": 38,
        "versionId": 38,
        "name": "이미지 평가",
        "stage": "review",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "이미지 평가",
      "next": "n8",
      "pause": false,
      "maxVisits": 2,
      "note": "",
      "branches": [
        {
          "label": "다시 만들기",
          "when": {
            "route": "retry"
          },
          "goto": "n6"
        }
      ],
      "ui": {
        "x": 0,
        "y": 700
      }
    },
    {
      "id": "n8",
      "module": {
        "id": 79,
        "versionId": 79,
        "name": "AI 영상",
        "stage": "video",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "AI 영상·클립",
      "next": "n9",
      "pause": false,
      "maxVisits": 3,
      "note": "",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 840
      }
    },
    {
      "id": "n9",
      "module": {
        "id": 73,
        "versionId": 73,
        "name": "자막 생성",
        "stage": "subtitle",
        "versionNo": 1,
        "ownerId": 1,
        "price": 0,
        "contentPublic": true
      },
      "label": "자막 생성",
      "next": "n10",
      "pause": false,
      "maxVisits": 3,
      "note": "",
      "branches": [],
      "ui": {
        "x": 0,
        "y": 980
      }
    },
    {
      "id": "n10",
      "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": 1120
      }
    }
  ]
}