42 lines
5.4 KiB
Markdown
42 lines
5.4 KiB
Markdown
---
|
|
name: short-video-compose
|
|
description: 승인된 대본·제목과 실제 컷 영상·통합 음성·자막을 연결해 13-compose 합성 요청을 작성하고 받은 MP4·SRT를 확인한다.
|
|
---
|
|
|
|
# 합성 요청과 실제 완성본 확인
|
|
|
|
## 시작 조건
|
|
|
|
[공통 계약](../../../docs/workflow-contracts.md)의 저장·전달, 실제 파일과 시간, 승인·수정 규칙과 [제작 지침](../../../docs/short-video-guide.md)의 자막·주석, 모바일 판독성, 제목과 도입의 약속 절을 읽는다. [13 양식](../../../templates/stages/13-compose.json)과 [결과 스키마](../../../contracts/artifact.schema.json)의 `13-compose` 정의를 사용하며 새 필드를 추가하지 않는다.
|
|
|
|
개별 호출에서도 같은 제작물의 유효한 `03-script`, `04-title`, `06-tts`, `07-cuts`, `12-motion`과 그 선행 관계를 확인한다. 실제 사용한 다섯 결과의 `{stage_id, revision}`을 `inputs`에 기록한다. project.json의 story·scenes가 실제 사용자 승인이며 사용 버전과 연결되는지 확인한다. pending·changes_requested·stale 승인을 우회하지 않고 같은 승인 버전은 다시 묻지 않는다. 누락·미확인 파일·길이 불일치가 있으면 문제 단계·컷을 총괄에 보고하고 요청 준비 완료로 처리하지 않는다.
|
|
|
|
Qwen3-TTS 통합 WAV와 실측 구간, `gpt-image-2.5-sunburst` 이미지에서 이어진 실제 컷 영상, `references/1.png` 그림체를 유지한다. 이 스킬은 합성 엔진을 선택·구현하거나 실제 모델 API·합성을 실행하지 않고 도구에 중립적인 요청과 받은 결과 확인을 담당한다.
|
|
|
|
## 요청 연결
|
|
|
|
기존 `payload.request`의 다음 필드를 채운다.
|
|
|
|
- `timeline`: 07 컷 순서대로 `{cut_id, video_path, start_ms, end_ms}`를 정확히 한 번씩 넣는다. video_path는 12 결과에서 같은 cut_id의 검증된 MP4 상대 경로이며 시간은 07의 통합 음성 구간이다.
|
|
- `narration_path`: 06 `result.narration.path`의 실제 검증된 통합 WAV. 단위 파일을 임의 순서로 재조합하지 않는다.
|
|
- `captions`: 07의 별도 자막 `{id, start_ms, end_ms, text}`를 의미·순서·실측 시간 그대로 연결한다. 자막은 여러 컷을 걸칠 수 있으며 컷마다 억지로 나누지 않는다.
|
|
- `title`: 04 selected_id에 해당하는 후보의 실제 text. 03의 도입과 끝에서 설명하는 약속에 맞고 입력 언어인지 확인한다.
|
|
|
|
timeline은 0부터 통합 음성 끝까지 빈 구간·겹침 없이 이어져야 한다. 각 구간은 양수·5000ms 이하이고 12 실제 클립 길이와 같아야 한다. 자막은 `0 <= start_ms < end_ms <= 통합 길이`이며 원문·발화와 맞아야 한다. 실제 길이가 요청과 다르면 수정할 `12-motion` 또는 `07-cuts`와 cut_id를 보고한다. 180000ms를 넘는 음성은 대본 수정·story 재승인으로 돌아가며 속도를 바꿔 감추지 않는다.
|
|
|
|
자막은 말의 내용을, 도해 주석은 물체·수치·방향을 전달하도록 배치 의도를 review.md에 적는다. 근거가 확인된 주석만 사용하며 새 JSON 필드를 만들지 않는다. 모바일에서 글자 크기·대비·줄바꿈·표시 시간과 중요한 움직임의 가림을 확인할 수 있게 전달한다. 플랫폼 공통 안전영역 수치를 임의로 고정하지 않는다.
|
|
|
|
## 받은 결과 확인
|
|
|
|
요청만 작성되면 `payload.result=null`, awaiting_input으로 보고한다. 실제 결과는 기존 `payload.result.video`와 `captions_path`에 기록한다. MP4 또는 SRT만 받은 부분 결과는 보존하되 complete로 보고하지 않는다.
|
|
|
|
video는 `{path, kind, verified, duration_ms, width, height}`이며 kind=video, 경로는 저장소 루트 기준 상대 경로다. 실제 MP4 존재·형식·재생 내용·길이·화면 크기를 확인한 뒤에만 verified=true와 실측값을 기록한다. 파일 미확인은 verified=false, 확인하지 못한 메타데이터는 null이다. captions_path의 실제 SRT 파일도 열어 입력 언어·텍스트·순서·시간을 확인한다. SRT 검증용 새 media 필드를 만들지 않는다.
|
|
|
|
실제 영상의 width:height가 9:16이고 전체 길이가 양수·180000ms 이하인지 확인한다. 실제 컷 순서와 경계, 통합 음성의 시작·끝·누락·중복, SRT 표시 구간이 요청과 일치하는지 재생·청취한다. 파일이나 요청 길이만으로 재생·청취를 확인했다고 기록하지 않는다. 모바일 크기로 제목·자막·주석의 판독성과 주요 설명의 가림을 확인한다. 불일치는 실제 구간·수정 단계·cut_id로 보고하며 완성으로 통과시키지 않는다.
|
|
|
|
## 저장과 final 검토 전달
|
|
|
|
담당은 `projects/<project_id>/stages/13-compose/r<revision>/artifact.json`과 같은 버전 `review.md`만 작성하고 이전 버전을 보존한다. [검토 양식](../../../templates/review.md)에 연결한 선행 버전, 실제 MP4·SRT 확인 방법과 결과, 자막·주석·모바일 원칙의 적용 및 비적용 이유, 문제 단계·컷을 적는다.
|
|
|
|
총괄만 project.json의 상태·포인터·승인을 작성한다. 담당은 실제 완성본과 보고서를 14 검수에 전달하고 수정으로 영향을 받는 후속 결과·승인을 보고한다. 13 실제 완성본과 14 검수 보고는 사용자 final 검토 대상이며, 검수 준비나 통과 추천만으로 사용자 final 승인 전 제작 완료를 선언하지 않는다.
|