feat: connect workflow guidance and illustrative examples
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
name: short-video-workflow
|
||||||
|
description: 주제와 언어로 14단계 짧은 영상 제작을 시작하거나 기존 제작을 재개·수정한다. 담당 역할·단계 결과·네 사용자 검토·실제 미디어의 준비 상태를 연결한다.
|
||||||
|
---
|
||||||
|
|
||||||
|
# 짧은 영상 제작 진행
|
||||||
|
|
||||||
|
## 시작 또는 재개
|
||||||
|
|
||||||
|
[공통 계약](../../../docs/workflow-contracts.md)에서 입력·저장·상태·네 검토·수정 규칙을 읽고 [제작 지침](../../../docs/short-video-guide.md)의 단계별 사용 표와 검토 메모를 확인한다. 새 제작에는 [진행 양식](../../../templates/project.json)과 [검토 양식](../../../templates/review.md)을 사용한다. [연결 예제](../../../examples/water-cycle/README.md)는 양식 설명이며 실제 파일·승인이 있는 제작 기록이 아니다.
|
||||||
|
|
||||||
|
새 제작은 `topic`, `language`를 받는다. 공백·누락은 보완하고 언어 이름·코드를 확인해 보존한다. 주제 안에서 각도를 고르며 언어를 한국어로 고정하지 않는다. 저장소에서 유일한 소문자 영숫자·하이픈 project_id를 정해 `projects/<project_id>/project.json`을 만든다. 같은 주제의 새 제작은 새 ID다. 내부 지침·검토 설명은 한국어이고 대본·제목·내레이션·자막은 입력 언어다.
|
||||||
|
|
||||||
|
재개 요청이면 기존 project_id 또는 사용자가 가리킨 기록을 찾고 brief·현재 버전·승인·참조·실제 파일을 확인한다. 찾을 수 없거나 여러 후보가 있으면 대상 기록을 확인한다. 새 요청으로 해석해 기존 기록을 덮어쓰지 않는다. 가장 앞선 미해결 작업부터 이어가며 동일한 유효 승인 버전에는 다시 승인을 요구하지 않는다.
|
||||||
|
|
||||||
|
## 담당 배정과 전달
|
||||||
|
|
||||||
|
총괄인 video-coordinator만 공유 진행·현재 포인터·승인을 기록한다. 아래 역할의 `.codex/agents/<name>.toml`을 읽고 단계·새 revision·사용할 선행 버전을 배정한다. 담당 역할을 사용할 수 없으면 그 지침에 따라 순서대로 작업하고 역할별 책임을 유지한다. 병렬 실행 프로그램이나 잠금 장치를 만들지 않는다.
|
||||||
|
|
||||||
|
| 담당 | 단계와 스킬 |
|
||||||
|
|---|---|
|
||||||
|
| topic-researcher | 01 short-video-topic, 02 short-video-research |
|
||||||
|
| story-writer | 03 short-video-script, 04 short-video-title |
|
||||||
|
| narration-designer | 05 short-video-tts-split, 06 short-video-tts |
|
||||||
|
| scene-director | 07 short-video-cuts, 08 short-video-scenes, 09 short-video-entities |
|
||||||
|
| visual-designer | 10 short-video-references, 11 short-video-images |
|
||||||
|
| video-editor | 12 short-video-motion, 13 short-video-compose |
|
||||||
|
| video-reviewer | 14 short-video-review |
|
||||||
|
|
||||||
|
담당 스킬은 같은 skills 폴더의 `<스킬 이름>/SKILL.md`를 읽는다. 필요한 선행 자료·승인은 공통 계약의 단계 표에 따른다. 스킬 직접 호출도 이 경계를 유지한다. 같은 단계·버전의 작성자는 하나다. 담당은 자기 artifact.json·review.md를 제출하고 총괄이 형식·참조·완료 근거와 문제를 확인한 뒤 project.json에 반영한다.
|
||||||
|
|
||||||
|
각 결과는 `projects/<project_id>/stages/<stage_id>/r<revision>/artifact.json`과 같은 위치의 review.md다. 이전 버전은 보존한다. inputs에는 실제 사용한 같은 제작물의 선행 버전을 기록하고 JSON 데이터 경로는 저장소 루트 기준으로 쓴다. review.md의 문서 링크는 실제 위치에 맞춘다. 담당 단계의 제작 지침 적용·결과와 적용하지 않은 구성의 이유만 요약하며 모든 단계에서 같은 전체 메모를 반복하지 않는다.
|
||||||
|
|
||||||
|
## 네 곳에서 사용자 결정을 기다린다
|
||||||
|
|
||||||
|
1. 01 후보·선택·범위의 topic 검토를 요청한다. 실제 사용자 승인 전 02를 시작하지 않는다.
|
||||||
|
2. 02 근거와 03 대본·04 제목의 story 검토를 요청한다. 제목·첫 문장의 약속과 결말, 블록 연결·주장·비유의 한계를 제시한다. 승인 전 05를 시작하지 않는다.
|
||||||
|
3. 검증된 실제 음성으로 07을 준비하고 08·09를 같은 묶음으로 완성해 scenes 검토를 요청한다. 실측 구간·상태 변화·연결·고정 특징과 주석 근거를 제시한다. 승인 전 10을 시작하지 않는다.
|
||||||
|
4. 실제 13 완성본과 14 검수 보고의 final 검토를 요청한다. 승인 전 제작 완료를 선언하지 않는다.
|
||||||
|
|
||||||
|
검토한 stage_id·revision은 artifact_refs에 고정하고 실제 사용자 응답을 feedback에 기록한다. 응답이 없으면 pending 결정과 awaiting_review 상태로 기다린다. 담당의 선택 제안·검수자의 pass를 사용자 승인으로 만들지 않는다. 변경 요청은 수정할 단계와 새 버전을 배정한다.
|
||||||
|
|
||||||
|
## 실제 미디어가 없는 경우
|
||||||
|
|
||||||
|
현재 구성은 요청·결과 확인 지침과 양식이며 생성·합성을 실행하는 프로그램은 제공하지 않는다. 06은 기존 qwen3-tts 환경의 Qwen3-TTS, 10–11은 gpt-image-2.5-sunburst로 요청한다. 실제 제작 도구의 모델·화자·언어·출력 지원은 그때 확인하며 전역 환경 재설치·무단 대체를 하지 않는다. 12·13은 특정 영상·합성 엔진을 선택하지 않은 전달 계약이다.
|
||||||
|
|
||||||
|
result=null 또는 필수 실제 자료 부재는 awaiting_input이다. 다음 담당에게 필수 파일이 준비됐다고 보고하지 않는다. 결과 제출 시 요청 ID·선행 버전·모든 항목·파일 존재·형식·실측 메타데이터를 확인한다. 부분 제출은 보존하지만 전 단계 완료가 아니다. 실패는 원인과 blocking 여부를 issues에 기록하고 failed로 보고한다.
|
||||||
|
|
||||||
|
세로 9:16, 최종 180000ms 이내, 각 컷 0ms 초과 5000ms 이하를 확인한다. 그림체는 references/1.png의 윤곽선·단순 형태·색면 기준이며 캠핑 소재·인물·상표를 강제하지 않는다. 07은 실제 통합 음성을 0부터 끝까지 덮고 자막은 별도로 정렬한다. 예상 시간·가상 경로는 실제 확인 근거가 아니다. 음성 길이 초과는 대본 수정과 story 재승인으로 돌린다.
|
||||||
|
|
||||||
|
## 변경과 완료
|
||||||
|
|
||||||
|
수정은 새 버전을 만들고 inputs로 영향을 받는 후속 결과·검토만 stale 처리한다. 승인 경계가 열리면 새 후속 작업 전 해당 버전의 재승인을 받는다. 제목만 바뀌면 13·14와 story/final을 재확인하고 기존 05–12의 음성·장면·이미지는 보존한다. 언어 변경은 언어 의존 결과와 후속 작업을 재검토한다.
|
||||||
|
|
||||||
|
최종 검수자는 실제 완성본의 story/visual/audio/captions/timing/consistency를 확인하고 checks.evidence에 실제 근거를 기록한다. 미검수는 not_checked이며 완성본 부재는 incomplete다. 모든 영역 pass·blocking 없음이어야 pass를 추천할 수 있다. 총괄은 유효한 결과·파일·시간·네 사용자 승인을 확인한 뒤에만 제작 완료를 선언한다.
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# 프로젝트 작업 지침
|
||||||
|
|
||||||
|
ShortVideoGenerator는 혼자 Codex에서 사용하는 짧은 영상 제작 프로젝트다. 주제와 언어를 제작마다 입력하고 14단계의 역할 지침·스킬·JSON 양식과 사용자 검토를 연결한다. 분야별 특화와 실제 생성·합성 도구 연결은 이후 작업에서 다룬다.
|
||||||
|
|
||||||
|
## 작업 전에 확인
|
||||||
|
|
||||||
|
- 제작 내용을 작성할 때는 docs/short-video-guide.md의 담당 단계 절을 읽는다. 참고 영상의 소재 사실은 새 자료 조사에서 확인한다.
|
||||||
|
- 단계 결과·승인·시간·파일을 다룰 때는 docs/workflow-contracts.md와 해당 templates/stages 양식·contracts 스키마를 읽는다.
|
||||||
|
- 담당 역할은 .codex/agents의 TOML, 반복 작업은 .agents/skills의 SKILL.md를 사용한다. 목록·파일 형식과 실제 도구 실행 성공을 구분한다.
|
||||||
|
|
||||||
|
## 유지할 제작 기준
|
||||||
|
|
||||||
|
- 필수 입력은 주제·언어, 출력은 세로 9:16·최종 3분 이내·음성 기준 각 컷 5초 이내다. 쉬운 표현은 어린이 전용이라는 뜻이 아니다.
|
||||||
|
- 스타일은 references/1.png의 그림체다. 음성은 Qwen3-TTS의 기존 qwen3-tts 환경, 이미지는 gpt-image-2.5-sunburst다. 사용자 전체 환경·설정을 변경하거나 도구를 무단 대체하지 않는다.
|
||||||
|
- topic/story/scenes/final의 실제 사용자 승인 없이 다음 경계를 넘지 않는다. 같은 승인 버전으로 재개하면 다시 묻지 않는다.
|
||||||
|
- 총괄만 project.json을 작성한다. 담당은 자기 새 버전의 결과·검토를 제출하고 이전 결과를 보존한다. 요청·예상·예제와 실제 결과·실측·승인을 구분한다.
|
||||||
|
|
||||||
|
## 생각하고 필요한 만큼 구현
|
||||||
|
|
||||||
|
가정을 먼저 밝히고 불명확한 점을 숨기지 않는다. 해석이 여러 개라면 선택지를 설명하고 중요한 미확정 사항을 질문한다. 더 간단한 방법이 있으면 설명한다. 이해하지 못한 상태에서는 그 지점을 명시하고 확인한다.
|
||||||
|
|
||||||
|
요청을 해결하는 최소 변경만 한다. 요청하지 않은 기능·추상화·유연성·설정을 추가하지 않는다. 불가능한 상황을 위한 방어 코드를 만들지 않는다. 선임 개발자가 과도하다고 볼 구성을 줄인다.
|
||||||
|
|
||||||
|
## 변경 범위와 검증
|
||||||
|
|
||||||
|
관련 없는 코드·주석·서식을 정리하거나 리팩터링하지 않는다. 기존 스타일을 따른다. 기존 불필요한 코드는 발견만 보고하고 삭제하지 않는다. 이번 변경이 새로 불필요하게 만든 항목만 제거한다. 모든 변경은 사용자 요청에 연결되어야 한다.
|
||||||
|
|
||||||
|
작업을 확인 가능한 목표로 나누고 짧은 계획과 단계별 검증 방법을 밝힌다. 의미 있는 동작을 검증하고 성공할 때까지 수정한다. 이 프로젝트의 문서·설정·양식에는 형식·참조·예제 흐름 확인을 사용하며 실제 미디어 생성 성공을 주장하지 않는다. 실제 프로그램이 추가되면 해당 동작과 실패 사례를 검증한다.
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# ShortVideoGenerator
|
||||||
|
|
||||||
|
Codex에서 혼자 사용하는 Shorts·TikTok·Reels 제작 프로젝트입니다. 주제와 언어를 받아 이야기, 음성 요청, 장면, 이미지 요청, 영상·합성 요청과 검수를 14단계로 연결합니다. 에이전트 8개와 스킬 15개, 입출력 양식·스키마를 제공합니다.
|
||||||
|
|
||||||
|
## 시작하기
|
||||||
|
|
||||||
|
이 저장소를 작업 폴더로 연 Codex 세션에서 다음처럼 요청합니다.
|
||||||
|
|
||||||
|
```text
|
||||||
|
$short-video-workflow
|
||||||
|
주제: 비가 온 뒤 물웅덩이는 어디로 사라질까
|
||||||
|
언어: 한국어
|
||||||
|
```
|
||||||
|
|
||||||
|
필수 제작 입력은 주제와 언어 두 개입니다. 이야기의 각도를 먼저 제안하고 사용자 검토를 기다립니다. 화면은 세로 9:16, 최종 영상은 3분 이내, 실제 음성에 따른 컷은 각각 5초 이내입니다. [기준 이미지](references/1.png)의 깔끔한 그림체를 사용합니다. 쉬운 표현을 사용하되 시청자를 어린이로 제한하지 않습니다.
|
||||||
|
|
||||||
|
현재 제공하는 것은 제작 지침과 요청·결과 양식입니다. TTS·이미지 API·영상 생성·합성을 실행하는 프로그램은 이후 연결합니다. 음성은 기존 conda qwen3-tts 환경의 Qwen3-TTS, 이미지는 gpt-image-2.5-sunburst를 사용하도록 지정했습니다. 영상 생성·합성 엔진은 별도 작업에서 선택합니다.
|
||||||
|
|
||||||
|
Codex는 프로젝트의 `.codex/agents/`와 `.agents/skills/`에서 지침을 찾습니다. 파일 파싱 검증과 실제 세션의 탐색은 다릅니다. 목록에 보이지 않으면 프로젝트 루트에서 새 세션을 열어 확인합니다. 사용자 전역 설정을 바꾸거나 추가 설치하지 않습니다. 형식·위치는 [공식 에이전트 안내](https://learn.chatgpt.com/docs/agent-configuration/subagents#custom-agents)와 [스킬 안내](https://learn.chatgpt.com/docs/build-skills#where-to-save-skills)를 따릅니다.
|
||||||
|
|
||||||
|
## 제작과 검토
|
||||||
|
|
||||||
|
| 단계 | 내용 | 담당 |
|
||||||
|
|---|---|---|
|
||||||
|
| 01–02 | 주제·각도 선택, 자료 조사 | topic-researcher |
|
||||||
|
| 03–04 | 쉬운 대본과 제목 | story-writer |
|
||||||
|
| 05–06 | 발화 단위와 Qwen3-TTS 요청·실제 결과 확인 | narration-designer |
|
||||||
|
| 07–09 | 실측 컷, 장면 연결, 인물·배경 | scene-director |
|
||||||
|
| 10–11 | 기준 이미지와 컷별 시작·끝 이미지 | visual-designer |
|
||||||
|
| 12–13 | 움직임과 합성·음성·자막 맞춤 | video-editor |
|
||||||
|
| 14 | 실제 완성본 검수 | video-reviewer |
|
||||||
|
| 전체 | 배정·진행·승인·재개·수정 | video-coordinator |
|
||||||
|
|
||||||
|
사용자 검토는 네 곳입니다.
|
||||||
|
|
||||||
|
1. 주제·각도 확정 후 자료 조사로 진행합니다.
|
||||||
|
2. 조사 근거·대본·제목 확정 후 TTS 분할로 진행합니다.
|
||||||
|
3. 실제 음성에 따른 컷·장면·반복 요소 확정 후 기준 이미지를 준비합니다.
|
||||||
|
4. 실제 완성본과 검수 보고를 확인한 뒤 제작을 완료합니다.
|
||||||
|
|
||||||
|
실제 응답이 있어야 승인입니다. 담당자의 추천이나 사용자 응답 없음은 승인으로 기록하지 않습니다. 기존의 같은 유효 승인 버전으로 재개할 때는 다시 승인받지 않습니다.
|
||||||
|
|
||||||
|
## 결과를 읽고 제출하기
|
||||||
|
|
||||||
|
각 제작은 `projects/<project_id>/project.json`과 `stages/<stage_id>/r<revision>/artifact.json`, 같은 폴더의 review.md를 사용합니다. 데이터 경로는 저장소 루트 기준입니다. 이전 버전을 보존하고 총괄만 현재 포인터·상태·승인을 바꿉니다.
|
||||||
|
|
||||||
|
- [공통 전달 계약](docs/workflow-contracts.md): 필드, 단계별 완료·보류 기준, 실측 시간, 승인과 수정
|
||||||
|
- [내용·구성 지침](docs/short-video-guide.md): 대본·제목·화면 설계와 검토 메모
|
||||||
|
- [참고 영상 분석](references/shorts/analysis.md): 네 영상의 구성·내용·좋은 점과 적용상 주의
|
||||||
|
- [양식](templates/), [진행 스키마](contracts/project.schema.json), [결과 스키마](contracts/artifact.schema.json)
|
||||||
|
- [연결 예제](examples/water-cycle/README.md): 텍스트 단계와 외부 결과가 없는 경우의 전달
|
||||||
|
|
||||||
|
외부 결과를 제출하려면 해당 단계의 `request` ID에 맞는 `result`를 채우고 실제 파일을 같은 제작의 media 폴더에 둡니다. 음성은 WAV, 이미지는 PNG, 영상은 MP4, 최종 자막은 SRT가 기본입니다. 실제 파일·형식·길이·크기를 확인한 경우만 media.verified=true로 기록합니다. TTS의 실제 사용 모델·화자와 통합 음성 구간도 제출합니다.
|
||||||
|
|
||||||
|
요청서만 있으면 result=null이며 실제 배정된 외부 단계는 awaiting_input으로 기다립니다. 부분 결과는 보존하지만 완료는 아닙니다. 시간 초과·지원하지 않는 언어·파일 부재·실측 불일치는 관련 단계로 돌아가 해결합니다.
|
||||||
|
|
||||||
|
## 재개와 개별 작업
|
||||||
|
|
||||||
|
```text
|
||||||
|
$short-video-workflow
|
||||||
|
기존 제작 <project_id>의 미해결 작업부터 이어 주세요.
|
||||||
|
```
|
||||||
|
|
||||||
|
특정 작업은 `$short-video-script`, `$short-video-scenes`, `$short-video-review`처럼 해당 스킬을 호출할 수 있습니다. 기존 제작·사용할 버전을 지정하며 필수 선행 결과와 검토를 건너뛰지 않습니다. 전체 스킬 이름은 `.agents/skills/`의 폴더 이름입니다.
|
||||||
|
|
||||||
|
수정은 새 버전을 만듭니다. 제목만 수정하면 관련 검토와 최종 합성·검수를 다시 확인하고, 변경과 관계없는 기존 음성·이미지를 유지합니다. 대본·음성·언어가 바뀌면 실제로 영향을 받는 결과를 확인해 갱신합니다.
|
||||||
|
|
||||||
|
## 확인된 범위
|
||||||
|
|
||||||
|
JSON·TOML·스킬 형식, 상대 경로, 단계·역할 연결, 예제의 승인·미디어 부재·수정·시간 문제를 확인합니다. 실제 Codex 세션의 자동 탐색과 TTS·이미지·영상 생성 성공은 파일 형식 검사만으로 확인할 수 없습니다. 검증 명령과 결과는 `docs/tracking/verification.md`에 기록합니다.
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
제작 입력은 주제와 언어다. 내레이션·제목·자막은 입력 언어로 작성한다. 초등학생도 이해할 수 있는 표현을 사용하되 시청자를 어린이로 한정하지 않는다. 결과는 세로 9:16, 전체 3분 이내, 실제 음성을 기준으로 나눈 컷은 각각 5초 이내다. 3분은 상한이며 채울 분량이 아니다.
|
제작 입력은 주제와 언어다. 내레이션·제목·자막은 입력 언어로 작성한다. 초등학생도 이해할 수 있는 표현을 사용하되 시청자를 어린이로 한정하지 않는다. 결과는 세로 9:16, 전체 3분 이내, 실제 음성을 기준으로 나눈 컷은 각각 5초 이내다. 3분은 상한이며 채울 분량이 아니다.
|
||||||
|
|
||||||
이 지침의 구성 방법은 소재에 따라 선택한다. 길이·승인·출처·실측 등 필수 계약은 [.dryforge/spec.md](../.dryforge/spec.md)를 따른다. 구조를 맞추려고 사실에 없는 위기, 반전, 실패한 대안을 추가하지 않는다.
|
이 지침의 구성 방법은 소재에 따라 선택한다. 길이·승인·출처·실측 등 필수 조건은 소재에 따라 바꾸지 않는다. topic/story/scenes/final의 실제 사용자 검토를 거치며, 예상 시간·도해·요청서를 실제 파일·실측·승인으로 취급하지 않는다. 구조를 맞추려고 사실에 없는 위기, 반전, 실패한 대안을 추가하지 않는다.
|
||||||
|
|
||||||
## 먼저 질문 하나를 정한다
|
## 먼저 질문 하나를 정한다
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## 문서와 양식
|
## 문서와 양식
|
||||||
|
|
||||||
이 문서는 제작 입력, 단계별 JSON, 진행 상태, 검토·수정 규칙의 공통 기준이다. 내용과 화면을 작성할 때는 [제작 지침서](short-video-guide.md)의 담당 단계에 필요한 절을 함께 읽는다. 양식·스키마는 실제 생성 프로그램이 아니며, 요청서를 작성한 것과 결과 파일을 받은 것을 구분한다.
|
제작 입력, 단계별 JSON, 진행 상태, 검토·수정 규칙을 아래와 같이 통일한다. 내용과 화면에는 중심 질문·도입과 제목의 약속·결말의 회수·원인과 결과를 보여주는 상태 변화를 적용한다. 양식·스키마는 실제 생성 프로그램이 아니며, 요청서를 작성한 것과 결과 파일을 받은 것을 구분한다.
|
||||||
|
|
||||||
- [진행 기록 스키마](../contracts/project.schema.json)와 [빈 진행 기록](../templates/project.json)
|
- [진행 기록 스키마](../contracts/project.schema.json)와 [빈 진행 기록](../templates/project.json)
|
||||||
- [단계 결과 스키마](../contracts/artifact.schema.json)와 [14단계 빈 양식](../templates/stages/)
|
- [단계 결과 스키마](../contracts/artifact.schema.json)와 [14단계 빈 양식](../templates/stages/)
|
||||||
@@ -108,7 +108,7 @@ captions는 컷과 다른 단위다. 여러 컷을 걸칠 수 있으며 0 <= sta
|
|||||||
|
|
||||||
14의 area는 story/visual/audio/captions/timing/consistency, verdict는 pass/fail/not_checked다. 모든 영역의 실제 근거가 있어야 하며 미확인 영역을 pass로 만들지 않는다. findings는 blocking/minor, 설명, 수정할 stage_id와 cut_id를 기록한다. 추천은 pass/revise/incomplete다.
|
14의 area는 story/visual/audio/captions/timing/consistency, verdict는 pass/fail/not_checked다. 모든 영역의 실제 근거가 있어야 하며 미확인 영역을 pass로 만들지 않는다. findings는 blocking/minor, 설명, 수정할 stage_id와 cut_id를 기록한다. 추천은 pass/revise/incomplete다.
|
||||||
|
|
||||||
pass는 여섯 영역 모두 pass이고 blocking 발견이 없을 때만 가능하다. 실제 완성본이 없거나 볼 수 없으면 incomplete다. 제작 지침의 [최종 영상 검토](short-video-guide.md#최종-영상-검토) 질문을 기존 checks.evidence에 연결하며 새 필드·승인 지점을 만들지 않는다.
|
pass는 여섯 영역 모두 pass이고 blocking 발견이 없을 때만 가능하다. 실제 완성본이 없거나 볼 수 없으면 incomplete다. 제목과 답의 일치, 구조·주석의 정확성, 청취·자막·실측·연속 상태의 실제 확인 근거를 기존 checks.evidence에 기록하며 새 필드·승인 지점을 만들지 않는다.
|
||||||
|
|
||||||
## 형식 검사와 의미 확인의 경계
|
## 형식 검사와 의미 확인의 경계
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"cases": [
|
||||||
|
{"id": "topic_pending", "scenario": "01 결과가 있고 topic 결정이 pending이다.", "expected": "02를 시작하지 않고 같은 01 버전의 사용자 검토를 요청한다."},
|
||||||
|
{"id": "story_pending", "scenario": "03·04가 준비됐으나 story 승인이 없다.", "expected": "05를 시작하지 않고 근거·대본·제목 검토를 요청한다."},
|
||||||
|
{"id": "scenes_pending", "scenario": "07·08·09가 준비됐으나 scenes 승인이 없다.", "expected": "10을 시작하지 않고 같은 유효 버전의 장면 검토를 요청한다."},
|
||||||
|
{"id": "final_pending", "scenario": "검수자가 pass를 추천했으나 final 사용자 승인이 없다.", "expected": "제작 완료를 선언하지 않고 실제 완성본과 보고를 사용자에게 제시한다."},
|
||||||
|
{"id": "missing_audio", "scenario": "06 request는 작성했으나 result=null이고 WAV가 없다.", "expected": "awaiting_input이며 07의 실측 시간을 확정하지 않는다."},
|
||||||
|
{"id": "unsupported_language", "scenario": "실제 확인한 TTS 모델이 입력 언어를 지원하지 않는다.", "expected": "blocking 문제와 미확인 조건을 보고하고 입력·해결을 기다린다. 언어·도구를 무단 대체하지 않는다."},
|
||||||
|
{"id": "long_narration", "scenario": "실제 통합 음성 길이가 180001ms다.", "expected": "대본 수정과 story 재승인으로 돌아간다. 누락·과도한 속도 변경으로 숨기지 않는다."},
|
||||||
|
{"id": "long_cut", "scenario": "컷 구간이 0–5001ms다.", "expected": "컷을 수정한다. 허용 범위는 0ms 초과 5000ms 이하다."},
|
||||||
|
{"id": "cut_gap", "scenario": "앞 컷의 끝은 4000ms, 다음 시작은 4100ms다.", "expected": "빈 구간을 해결하기 전 07을 완료하지 않는다."},
|
||||||
|
{"id": "cut_overlap", "scenario": "앞 컷의 끝은 4000ms, 다음 시작은 3900ms다.", "expected": "중복 구간을 해결하기 전 07을 완료하지 않는다."},
|
||||||
|
{"id": "missing_images", "scenario": "11 요청의 start만 제출되고 end 이미지가 없다.", "expected": "부분 결과를 보존하고 awaiting_input이며 전체 완료·12 진행은 보류한다."},
|
||||||
|
{"id": "missing_video", "scenario": "13 request는 있지만 실제 완성본이 없다.", "expected": "14의 미확인 영역은 not_checked이고 추천은 incomplete다. final 완료가 아니다."},
|
||||||
|
{"id": "title_only_change", "scenario": "04 제목만 새 버전으로 바뀌었다.", "expected": "실제 inputs 관계에 따라 13·14와 story/final을 재확인한다. 관련 없는 05–12는 보존한다."},
|
||||||
|
{"id": "script_change", "scenario": "03 대본 내용이 새 버전으로 바뀌었다.", "expected": "04–14의 실제 종속 결과와 관련 승인을 stale 처리하고 새 버전을 작성한다. 이전 버전은 보존한다."},
|
||||||
|
{"id": "resume_approved_version", "scenario": "같은 유효 승인 버전으로 재개하며 필요한 파일·참조가 유효하다.", "expected": "동일 승인을 다시 묻지 않고 가장 앞선 미해결 작업부터 이어간다."}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# 물순환 연결 예제
|
||||||
|
|
||||||
|
주제는 “비가 온 뒤 물웅덩이는 어디로 사라질까”, 언어는 한국어다. 양식과 단계 간 참조를 보여주는 자료이며 실제 제작 실행 기록이 아니다. 실제 음성·이미지·영상·사용자 승인은 없다.
|
||||||
|
|
||||||
|
## 현재 진행 기록
|
||||||
|
|
||||||
|
[project.json](project.json)은 [01 주제 결과](stages/01-topic/r1/artifact.json)의 topic 검토에서 멈춘다. 선택 ID는 예제의 제안이며 실제 승인 기록이 아니다. 모든 검토 decision은 pending이고 02 이후 현재 포인터는 null이다. 전체 진행 스킬로 재개한다면 먼저 topic 검토를 요청해야 한다.
|
||||||
|
|
||||||
|
`illustrative/` 아래의 02–14 결과는 후속 양식을 읽기 위한 독립적인 샘플이다. 현재 진행 기록에 등록하거나 검토를 건너뛰어 실행한 결과가 아니다. 실제 제작에 사용하려면 현재 승인·선행 결과·실제 파일을 확인하고 새 버전을 작성한다.
|
||||||
|
|
||||||
|
## 내용에서 화면까지
|
||||||
|
|
||||||
|
- [조사](illustrative/02-research/r1/artifact.json)는 [USGS 증발 설명](https://www.usgs.gov/water-science-school/science/evaporation-and-water-cycle)과 [침투 설명](https://www.usgs.gov/water-science-school/science/infiltration-and-water-cycle)을 확인한 주장·출처를 연결한다. 비율·지역별 수치를 새로 만들지 않는다.
|
||||||
|
- [대본](illustrative/03-script/r1/artifact.json)은 질문→공기로 이동→이름 붙이기→땅으로 이동→조건→질문 회수다. 실제 위기나 실패한 대안이 없는 소재이므로 해당 구성을 넣지 않는다. 마지막 b6은 도입과 [제목](illustrative/04-title/r1/artifact.json)의 질문에 답한다.
|
||||||
|
- [발화 단위](illustrative/05-tts-split/r1/artifact.json)는 블록의 의미와 순서를 유지한다. [TTS 요청](illustrative/06-tts/r1/artifact.json)은 result=null이다. 실제 배정 후 WAV·통합 구간을 받기 전에는 awaiting_input이며 완료할 수 없다.
|
||||||
|
- [컷](illustrative/07-cuts/r1/artifact.json)은 32000ms 전체와 4000ms 컷을 가정한 모의 데이터다. 실제 낭독 길이·속도·정렬이 아니다. 일부 자막과 발화 단위는 두 컷을 걸쳐 컷과 일대일이 아님을 보여준다.
|
||||||
|
- [장면](illustrative/08-scenes/r1/artifact.json)은 공기 쪽의 상태 변화는 같은 시점으로 잇고, 땅속 관계를 설명할 때 단면으로 전환한다. 도해 기호는 실제 크기나 수증기가 보이는 모습이 아니다. [반복 배경](illustrative/09-entities/r1/artifact.json)은 같은 장소의 위치·색·방향을 유지한다.
|
||||||
|
- [기준 요청](illustrative/10-references/r1/artifact.json)과 [컷 이미지 요청](illustrative/11-images/r1/artifact.json)은 사용자 그림체를 지정하고 컷마다 start/end를 하나씩 둔다. 실제 reference 결과는 아직 없어 요청 ID 연결 방식만 보여준다.
|
||||||
|
- [영상 요청](illustrative/12-motion/r1/artifact.json)과 [합성 요청](illustrative/13-compose/r1/artifact.json)의 경로·길이는 예정·모의 정보이며 파일이 존재하지 않는다. 지정하지 않은 생성·합성 엔진을 추가하지 않는다.
|
||||||
|
- [검수](illustrative/14-review/r1/artifact.json)는 여섯 영역 모두 not_checked, recommendation=incomplete다. 실제 완성본이나 final 승인으로 취급할 수 없다.
|
||||||
|
|
||||||
|
각 폴더의 review.md에는 적용한 원칙과 비적용 이유, 실제 배정 시 필요한 상태·조건을 적었다. 모의 시간을 실측 근거로 바꾸거나 전체 illustrative 폴더를 실제 완료한 제작물처럼 복사하지 않는다.
|
||||||
|
|
||||||
|
## 실제 결과 제출 형태
|
||||||
|
|
||||||
|
외부 결과는 해당 요청의 ID를 유지하며 result의 필수 키를 채운다. 실제 파일 확인 전에는 verified=false·미확인 메타데이터=null이다. 결과 구조의 전체 타입은 [결과 스키마](../../contracts/artifact.schema.json)에 있다.
|
||||||
|
|
||||||
|
| 단계 | 실제 결과에서 필요한 것 |
|
||||||
|
|---|---|
|
||||||
|
| 06 | engine, model, voice, files의 unit_id·media, narration media, 실제 unit_ranges |
|
||||||
|
| 10 | items의 reference_id·PNG media |
|
||||||
|
| 11 | frames의 frame_id·PNG media |
|
||||||
|
| 12 | clips의 cut_id·MP4 media |
|
||||||
|
| 13 | 최종 video media, captions_path의 실제 SRT |
|
||||||
|
|
||||||
|
확장자·예정 경로·요청 길이를 검증으로 쓰지 않는다. 전체 요청 결과·유효 선행 버전·필요한 승인 없이 다음 단계를 진행하지 않는다. [검토 사례](../verification-cases.json)는 이 계약에서 확인할 승인·시간·수정·부재 상황을 정리한다.
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "01-topic",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"id": "s1",
|
||||||
|
"title": "Evaporation and the Water Cycle",
|
||||||
|
"url": "https://www.usgs.gov/water-science-school/science/evaporation-and-water-cycle",
|
||||||
|
"publisher": "U.S. Geological Survey",
|
||||||
|
"accessed_at": "2026-10-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s2",
|
||||||
|
"title": "Infiltration and the Water Cycle",
|
||||||
|
"url": "https://www.usgs.gov/water-science-school/science/infiltration-and-water-cycle",
|
||||||
|
"publisher": "U.S. Geological Survey",
|
||||||
|
"accessed_at": "2026-10-08"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"claims": [
|
||||||
|
{
|
||||||
|
"id": "c1",
|
||||||
|
"text": "증발은 액체 물이 기체 수증기로 바뀌어 지표에서 대기로 이동하는 과정이다.",
|
||||||
|
"source_ids": [
|
||||||
|
"s1"
|
||||||
|
],
|
||||||
|
"assessment": "verified"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c2",
|
||||||
|
"text": "강수로 내린 물은 침투와 스며듦을 통해 땅속으로 이동할 수 있다.",
|
||||||
|
"source_ids": [
|
||||||
|
"s2"
|
||||||
|
],
|
||||||
|
"assessment": "verified"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c3",
|
||||||
|
"text": "토양 특성과 지표 덮개 등은 물이 침투하는 정도에 영향을 준다.",
|
||||||
|
"source_ids": [
|
||||||
|
"s2"
|
||||||
|
],
|
||||||
|
"assessment": "verified"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"open_questions": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 02-research 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: draft
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "01-topic",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"id": "b1",
|
||||||
|
"text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?",
|
||||||
|
"claim_ids": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b2",
|
||||||
|
"text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.",
|
||||||
|
"claim_ids": [
|
||||||
|
"c1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b3",
|
||||||
|
"text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.",
|
||||||
|
"claim_ids": [
|
||||||
|
"c1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b4",
|
||||||
|
"text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.",
|
||||||
|
"claim_ids": [
|
||||||
|
"c2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b5",
|
||||||
|
"text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.",
|
||||||
|
"claim_ids": [
|
||||||
|
"c3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b6",
|
||||||
|
"text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"claim_ids": [
|
||||||
|
"c1",
|
||||||
|
"c2"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"full_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?\n한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.\n이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.\n땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.\n바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.\n그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"estimated_duration_ms": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 03-script 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- 첫 질문의 답은 b2–b5가 설명하고 b6에서 회수한다. 제목은 04에서 같은 질문을 약속한다. 불필요한 비율·도시별 수치는 제외했다.
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "04-title",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"candidates": [
|
||||||
|
{
|
||||||
|
"id": "title-1",
|
||||||
|
"text": "물웅덩이의 물은 어디로 갈까?",
|
||||||
|
"rationale": "작아진 물의 두 이동 경로를 답하며 물이 없어졌다고 단정하지 않는다."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"selected_id": "title-1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 04-title 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "05-tts-split",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"units": [
|
||||||
|
{
|
||||||
|
"id": "u1",
|
||||||
|
"block_ids": [
|
||||||
|
"b1"
|
||||||
|
],
|
||||||
|
"display_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?",
|
||||||
|
"spoken_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u2",
|
||||||
|
"block_ids": [
|
||||||
|
"b2"
|
||||||
|
],
|
||||||
|
"display_text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.",
|
||||||
|
"spoken_text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u3",
|
||||||
|
"block_ids": [
|
||||||
|
"b3"
|
||||||
|
],
|
||||||
|
"display_text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.",
|
||||||
|
"spoken_text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u4",
|
||||||
|
"block_ids": [
|
||||||
|
"b4"
|
||||||
|
],
|
||||||
|
"display_text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.",
|
||||||
|
"spoken_text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u5",
|
||||||
|
"block_ids": [
|
||||||
|
"b5"
|
||||||
|
],
|
||||||
|
"display_text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.",
|
||||||
|
"spoken_text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u6",
|
||||||
|
"block_ids": [
|
||||||
|
"b6"
|
||||||
|
],
|
||||||
|
"display_text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"spoken_text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 05-tts-split 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: draft
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "06-tts",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "05-tts-split",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"request": {
|
||||||
|
"engine": "Qwen3-TTS",
|
||||||
|
"conda_env": "qwen3-tts",
|
||||||
|
"language": "한국어",
|
||||||
|
"units": [
|
||||||
|
{
|
||||||
|
"id": "u1",
|
||||||
|
"block_ids": [
|
||||||
|
"b1"
|
||||||
|
],
|
||||||
|
"display_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?",
|
||||||
|
"spoken_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u2",
|
||||||
|
"block_ids": [
|
||||||
|
"b2"
|
||||||
|
],
|
||||||
|
"display_text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.",
|
||||||
|
"spoken_text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u3",
|
||||||
|
"block_ids": [
|
||||||
|
"b3"
|
||||||
|
],
|
||||||
|
"display_text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.",
|
||||||
|
"spoken_text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u4",
|
||||||
|
"block_ids": [
|
||||||
|
"b4"
|
||||||
|
],
|
||||||
|
"display_text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.",
|
||||||
|
"spoken_text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u5",
|
||||||
|
"block_ids": [
|
||||||
|
"b5"
|
||||||
|
],
|
||||||
|
"display_text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.",
|
||||||
|
"spoken_text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "u6",
|
||||||
|
"block_ids": [
|
||||||
|
"b6"
|
||||||
|
],
|
||||||
|
"display_text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"spoken_text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요.",
|
||||||
|
"pronunciation_notes": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 06-tts 예제 검토
|
||||||
|
|
||||||
|
이 자료는 외부 요청과 결과 확인 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- result=null이다. 실제 파일·메타데이터가 없으며 complete로 사용할 수 없다.
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "05-tts-split",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "06-tts",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"narration_duration_ms": 32000,
|
||||||
|
"timing_evidence": "모의 데이터: 실제 음성 파일이나 정렬이 없다. 4000ms 컷과 컷을 걸치는 자막의 계약만 설명하며 제작 완료 근거로 사용할 수 없다.",
|
||||||
|
"cuts": [
|
||||||
|
{
|
||||||
|
"id": "cut-01",
|
||||||
|
"start_ms": 0,
|
||||||
|
"end_ms": 4000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u1"
|
||||||
|
],
|
||||||
|
"narration_text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-02",
|
||||||
|
"start_ms": 4000,
|
||||||
|
"end_ms": 8000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u2"
|
||||||
|
],
|
||||||
|
"narration_text": "한 가지 길은 공기 쪽이에요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-03",
|
||||||
|
"start_ms": 8000,
|
||||||
|
"end_ms": 12000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u2"
|
||||||
|
],
|
||||||
|
"narration_text": "액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-04",
|
||||||
|
"start_ms": 12000,
|
||||||
|
"end_ms": 16000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u3"
|
||||||
|
],
|
||||||
|
"narration_text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-05",
|
||||||
|
"start_ms": 16000,
|
||||||
|
"end_ms": 20000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u4"
|
||||||
|
],
|
||||||
|
"narration_text": "땅으로 가는 길도 있어요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-06",
|
||||||
|
"start_ms": 20000,
|
||||||
|
"end_ms": 24000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u4"
|
||||||
|
],
|
||||||
|
"narration_text": "물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-07",
|
||||||
|
"start_ms": 24000,
|
||||||
|
"end_ms": 28000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u5"
|
||||||
|
],
|
||||||
|
"narration_text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-08",
|
||||||
|
"start_ms": 28000,
|
||||||
|
"end_ms": 32000,
|
||||||
|
"unit_ids": [
|
||||||
|
"u6"
|
||||||
|
],
|
||||||
|
"narration_text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"captions": [
|
||||||
|
{
|
||||||
|
"id": "caption-01",
|
||||||
|
"start_ms": 0,
|
||||||
|
"end_ms": 4000,
|
||||||
|
"text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-02",
|
||||||
|
"start_ms": 4000,
|
||||||
|
"end_ms": 12000,
|
||||||
|
"text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-03",
|
||||||
|
"start_ms": 12000,
|
||||||
|
"end_ms": 16000,
|
||||||
|
"text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-04",
|
||||||
|
"start_ms": 16000,
|
||||||
|
"end_ms": 24000,
|
||||||
|
"text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-05",
|
||||||
|
"start_ms": 24000,
|
||||||
|
"end_ms": 28000,
|
||||||
|
"text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-06",
|
||||||
|
"start_ms": 28000,
|
||||||
|
"end_ms": 32000,
|
||||||
|
"text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 07-cuts 예제 검토
|
||||||
|
|
||||||
|
이 자료는 모의 시간·화면 설계을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"description": "일상 질문; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "비 온 뒤 같은 자리의 물웅덩이가 크게 보인다.",
|
||||||
|
"end_state": "시간 경과를 도식화하여 같은 자리의 물웅덩이가 작게 보인다. 실제 4초 만의 변화라는 뜻이 아니다.",
|
||||||
|
"camera": "전경"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"description": "공기로 가는 길; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "작은 물웅덩이의 수면을 가까이 본다.",
|
||||||
|
"end_state": "수면 위 이동 방향을 설명하는 도해 기호가 나타난다.",
|
||||||
|
"camera": "근접"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"description": "액체에서 기체로 이동; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "직전 컷의 물웅덩이와 도해 기호가 같은 위치에 있다.",
|
||||||
|
"end_state": "도해 기호가 수면에서 위쪽으로 이동한다.",
|
||||||
|
"camera": "근접"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"description": "기능 설명 뒤 용어; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "같은 수면과 도해 기호를 유지한다.",
|
||||||
|
"end_state": "공기 쪽 이동 관계를 정지 도해로 보여준다.",
|
||||||
|
"camera": "근접"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"description": "땅으로 가는 길; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "물웅덩이와 흙층을 단면으로 본다.",
|
||||||
|
"end_state": "물과 흙의 경계에 설명용 방향 표시가 나타난다.",
|
||||||
|
"camera": "단면"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"description": "스며듦; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "직전 단면의 물과 흙 경계가 같다.",
|
||||||
|
"end_state": "물의 이동을 나타내는 기호가 흙의 틈으로 내려간다.",
|
||||||
|
"camera": "단면"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"description": "조건에 따른 차이; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "단면에서 물이 이동할 틈을 가리킨다.",
|
||||||
|
"end_state": "같은 단면에서 바닥 조건을 간단한 주석으로 강조한다.",
|
||||||
|
"camera": "단면"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"description": "처음 질문의 답; 도해의 기호는 설명용이며 실제 크기나 보이는 수증기 묘사가 아니다.",
|
||||||
|
"start_state": "도입과 같은 장소의 작은 물웅덩이를 보여준다.",
|
||||||
|
"end_state": "공기와 땅으로 가는 두 이동 방향을 함께 표시한다.",
|
||||||
|
"camera": "전경"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": [
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-01",
|
||||||
|
"to_cut_id": "cut-02",
|
||||||
|
"mode": "cut",
|
||||||
|
"reason": "설명 역할이나 시점이 바뀌며 동일 장소를 기준점으로 삼는다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-02",
|
||||||
|
"to_cut_id": "cut-03",
|
||||||
|
"mode": "continuous",
|
||||||
|
"reason": "같은 설명 대상·카메라와 상태를 이어간다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-03",
|
||||||
|
"to_cut_id": "cut-04",
|
||||||
|
"mode": "continuous",
|
||||||
|
"reason": "같은 설명 대상·카메라와 상태를 이어간다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-04",
|
||||||
|
"to_cut_id": "cut-05",
|
||||||
|
"mode": "cut",
|
||||||
|
"reason": "설명 역할이나 시점이 바뀌며 동일 장소를 기준점으로 삼는다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-05",
|
||||||
|
"to_cut_id": "cut-06",
|
||||||
|
"mode": "continuous",
|
||||||
|
"reason": "같은 설명 대상·카메라와 상태를 이어간다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-06",
|
||||||
|
"to_cut_id": "cut-07",
|
||||||
|
"mode": "continuous",
|
||||||
|
"reason": "같은 설명 대상·카메라와 상태를 이어간다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from_cut_id": "cut-07",
|
||||||
|
"to_cut_id": "cut-08",
|
||||||
|
"mode": "cut",
|
||||||
|
"reason": "설명 역할이나 시점이 바뀌며 동일 장소를 기준점으로 삼는다."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# 08-scenes 예제 검토
|
||||||
|
|
||||||
|
이 자료는 모의 시간·화면 설계을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
|
- cut-02→03은 같은 수면의 기호가 위로 움직이는 설명을 잇는다. cut-04→05는 숨은 땅속 관계를 보여주려고 단면으로 전환한다. 문자·수치는 생성 이미지에 맡기지 않는다.
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "09-entities",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"characters": [],
|
||||||
|
"backgrounds": [
|
||||||
|
{
|
||||||
|
"id": "bg-1",
|
||||||
|
"description": "비 온 뒤 흙길의 물웅덩이와 같은 장소의 흙층 단면",
|
||||||
|
"fixed_features": [
|
||||||
|
"물웅덩이의 장소와 윤곽 기준",
|
||||||
|
"흙층과 표면의 색 구분",
|
||||||
|
"공기 위쪽·땅 아래쪽 방향"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"appearances": [
|
||||||
|
{
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"character_ids": [],
|
||||||
|
"background_ids": [
|
||||||
|
"bg-1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 09-entities 예제 검토
|
||||||
|
|
||||||
|
이 자료는 모의 시간·화면 설계을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "10-references",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "09-entities",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"request": {
|
||||||
|
"model": "gpt-image-2.5-sunburst",
|
||||||
|
"style_reference": "references/1.png",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "style-1",
|
||||||
|
"kind": "style",
|
||||||
|
"entity_id": null,
|
||||||
|
"prompt": "세로 9:16. 사용자 기준의 가는 윤곽선, 단순 형태와 정돈된 색면. 캠핑 소재나 상표는 가져오지 않는다. 물순환을 쉽게 설명하는 도해. 글자는 합성에서 검증해 배치한다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "background-1",
|
||||||
|
"kind": "background",
|
||||||
|
"entity_id": "bg-1",
|
||||||
|
"prompt": "같은 흙길 물웅덩이의 전경·근접·단면 기준. 조사된 증발과 침투 경로를 설명하며 실제 지형도나 측정 수치처럼 표시하지 않는다."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# 10-references 예제 검토
|
||||||
|
|
||||||
|
이 자료는 외부 요청과 결과 확인 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- result=null이다. 실제 파일·메타데이터가 없으며 complete로 사용할 수 없다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,200 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "11-images",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "09-entities",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "10-references",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"request": {
|
||||||
|
"model": "gpt-image-2.5-sunburst",
|
||||||
|
"frames": [
|
||||||
|
{
|
||||||
|
"id": "cut-01-start",
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "비 온 뒤 같은 자리의 물웅덩이가 크게 보인다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-01-end",
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "시간 경과를 도식화하여 같은 자리의 물웅덩이가 작게 보인다. 실제 4초 만의 변화라는 뜻이 아니다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-02-start",
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "작은 물웅덩이의 수면을 가까이 본다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-02-end",
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "수면 위 이동 방향을 설명하는 도해 기호가 나타난다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-03-start",
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "직전 컷의 물웅덩이와 도해 기호가 같은 위치에 있다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-03-end",
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "도해 기호가 수면에서 위쪽으로 이동한다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-04-start",
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "같은 수면과 도해 기호를 유지한다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-04-end",
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "공기 쪽 이동 관계를 정지 도해로 보여준다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-05-start",
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "물웅덩이와 흙층을 단면으로 본다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-05-end",
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "물과 흙의 경계에 설명용 방향 표시가 나타난다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-06-start",
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "직전 단면의 물과 흙 경계가 같다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-06-end",
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "물의 이동을 나타내는 기호가 흙의 틈으로 내려간다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-07-start",
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "단면에서 물이 이동할 틈을 가리킨다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-07-end",
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "같은 단면에서 바닥 조건을 간단한 주석으로 강조한다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-08-start",
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"position": "start",
|
||||||
|
"prompt": "도입과 같은 장소의 작은 물웅덩이를 보여준다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cut-08-end",
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"position": "end",
|
||||||
|
"prompt": "공기와 땅으로 가는 두 이동 방향을 함께 표시한다. 세로 9:16, 사용자 기준 그림체, 같은 배경 고정 특징. 조사 c1/c2/c3 중 해당 설명의 근거만 사용한다.",
|
||||||
|
"reference_ids": [
|
||||||
|
"style-1",
|
||||||
|
"background-1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# 11-images 예제 검토
|
||||||
|
|
||||||
|
이 자료는 외부 요청과 결과 확인 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- result=null이다. 실제 파일·메타데이터가 없으며 complete로 사용할 수 없다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "12-motion",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "11-images",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"request": {
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"start_frame_id": "cut-01-start",
|
||||||
|
"end_frame_id": "cut-01-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "비 온 뒤 같은 자리의 물웅덩이가 크게 보인다.에서 시간 경과를 도식화하여 같은 자리의 물웅덩이가 작게 보인다. 실제 4초 만의 변화라는 뜻이 아니다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"start_frame_id": "cut-02-start",
|
||||||
|
"end_frame_id": "cut-02-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "작은 물웅덩이의 수면을 가까이 본다.에서 수면 위 이동 방향을 설명하는 도해 기호가 나타난다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"start_frame_id": "cut-03-start",
|
||||||
|
"end_frame_id": "cut-03-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "직전 컷의 물웅덩이와 도해 기호가 같은 위치에 있다.에서 도해 기호가 수면에서 위쪽으로 이동한다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"start_frame_id": "cut-04-start",
|
||||||
|
"end_frame_id": "cut-04-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "같은 수면과 도해 기호를 유지한다.에서 공기 쪽 이동 관계를 정지 도해로 보여준다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"start_frame_id": "cut-05-start",
|
||||||
|
"end_frame_id": "cut-05-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "물웅덩이와 흙층을 단면으로 본다.에서 물과 흙의 경계에 설명용 방향 표시가 나타난다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"start_frame_id": "cut-06-start",
|
||||||
|
"end_frame_id": "cut-06-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "직전 단면의 물과 흙 경계가 같다.에서 물의 이동을 나타내는 기호가 흙의 틈으로 내려간다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"start_frame_id": "cut-07-start",
|
||||||
|
"end_frame_id": "cut-07-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "단면에서 물이 이동할 틈을 가리킨다.에서 같은 단면에서 바닥 조건을 간단한 주석으로 강조한다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"start_frame_id": "cut-08-start",
|
||||||
|
"end_frame_id": "cut-08-end",
|
||||||
|
"duration_ms": 4000,
|
||||||
|
"motion_prompt": "도입과 같은 장소의 작은 물웅덩이를 보여준다.에서 공기와 땅으로 가는 두 이동 방향을 함께 표시한다.로 설명에 필요한 변화만 이어간다. 시간은 모의 데이터이며 실제 제작 전 음성·프레임 확인이 필요하다."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# 12-motion 예제 검토
|
||||||
|
|
||||||
|
이 자료는 외부 요청과 결과 확인 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- result=null이다. 실제 파일·메타데이터가 없으며 complete로 사용할 수 없다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "13-compose",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "04-title",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "06-tts",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "12-motion",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"request": {
|
||||||
|
"timeline": [
|
||||||
|
{
|
||||||
|
"cut_id": "cut-01",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-01.mp4",
|
||||||
|
"start_ms": 0,
|
||||||
|
"end_ms": 4000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-02",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-02.mp4",
|
||||||
|
"start_ms": 4000,
|
||||||
|
"end_ms": 8000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-03",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-03.mp4",
|
||||||
|
"start_ms": 8000,
|
||||||
|
"end_ms": 12000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-04",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-04.mp4",
|
||||||
|
"start_ms": 12000,
|
||||||
|
"end_ms": 16000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-05",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-05.mp4",
|
||||||
|
"start_ms": 16000,
|
||||||
|
"end_ms": 20000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-06",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-06.mp4",
|
||||||
|
"start_ms": 20000,
|
||||||
|
"end_ms": 24000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-07",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-07.mp4",
|
||||||
|
"start_ms": 24000,
|
||||||
|
"end_ms": 28000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cut_id": "cut-08",
|
||||||
|
"video_path": "projects/water-cycle/media/cut-08.mp4",
|
||||||
|
"start_ms": 28000,
|
||||||
|
"end_ms": 32000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"narration_path": "projects/water-cycle/media/narration.wav",
|
||||||
|
"captions": [
|
||||||
|
{
|
||||||
|
"id": "caption-01",
|
||||||
|
"start_ms": 0,
|
||||||
|
"end_ms": 4000,
|
||||||
|
"text": "비가 그친 뒤, 물웅덩이가 작아지는 모습을 본 적 있나요? 물은 어디로 가는 걸까요?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-02",
|
||||||
|
"start_ms": 4000,
|
||||||
|
"end_ms": 12000,
|
||||||
|
"text": "한 가지 길은 공기 쪽이에요. 액체인 물이 기체인 수증기로 바뀌어 공기 중으로 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-03",
|
||||||
|
"start_ms": 12000,
|
||||||
|
"end_ms": 16000,
|
||||||
|
"text": "이 변화를 증발이라고 불러요. 물이 다른 모습으로 이동하는 거예요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-04",
|
||||||
|
"start_ms": 16000,
|
||||||
|
"end_ms": 24000,
|
||||||
|
"text": "땅으로 가는 길도 있어요. 물은 땅속으로 스며들 수 있어요. 비로 내린 물의 일부도 이렇게 이동합니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-05",
|
||||||
|
"start_ms": 24000,
|
||||||
|
"end_ms": 28000,
|
||||||
|
"text": "바닥의 성질 같은 조건에 따라 물이 스며드는 정도가 달라져요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "caption-06",
|
||||||
|
"start_ms": 28000,
|
||||||
|
"end_ms": 32000,
|
||||||
|
"text": "그러니 물웅덩이를 보면, 물이 공기로 가거나 땅으로 스며드는 길도 생각해 보세요."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "물웅덩이의 물은 어디로 갈까?"
|
||||||
|
},
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# 13-compose 예제 검토
|
||||||
|
|
||||||
|
이 자료는 외부 요청과 결과 확인 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- result=null이다. 실제 파일·메타데이터가 없으며 complete로 사용할 수 없다.
|
||||||
|
- 32000ms 및 4000ms 구간은 설명용 가정이다. 실제 음성의 길이·정렬·속도를 뜻하지 않는다.
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "14-review",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"stage_id": "13-compose",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "04-title",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"revision": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "09-entities",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payload": {
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"area": "story",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"area": "visual",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"area": "audio",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"area": "captions",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"area": "timing",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"area": "consistency",
|
||||||
|
"verdict": "not_checked",
|
||||||
|
"evidence": "실제 완성본·음성·자막이 없으므로 확인하지 않았다."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"findings": [
|
||||||
|
{
|
||||||
|
"severity": "blocking",
|
||||||
|
"description": "실제 완성본과 확인 가능한 외부 결과가 없다. 예제의 모의 시간을 실측으로 사용할 수 없다.",
|
||||||
|
"stage_id": "13-compose",
|
||||||
|
"cut_id": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recommendation": "incomplete"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 14-review 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_input
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
|
- 여섯 영역 모두 not_checked이고 recommendation=incomplete다. 검수자의 pass나 final 승인으로 바꾸지 않는다.
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"brief": {
|
||||||
|
"topic": "비가 온 뒤 물웅덩이는 어디로 사라질까",
|
||||||
|
"language": "한국어"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"aspect_ratio": "9:16",
|
||||||
|
"max_duration_ms": 180000,
|
||||||
|
"max_cut_duration_ms": 5000,
|
||||||
|
"style_reference": "references/1.png",
|
||||||
|
"tts_engine": "Qwen3-TTS",
|
||||||
|
"conda_env": "qwen3-tts",
|
||||||
|
"image_model": "gpt-image-2.5-sunburst"
|
||||||
|
},
|
||||||
|
"stages": [
|
||||||
|
{
|
||||||
|
"stage_id": "01-topic",
|
||||||
|
"status": "awaiting_review",
|
||||||
|
"revision": 1,
|
||||||
|
"artifact_path": "examples/water-cycle/stages/01-topic/r1/artifact.json",
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "02-research",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "03-script",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "04-title",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "05-tts-split",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "06-tts",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "07-cuts",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "08-scenes",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "09-entities",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "10-references",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "11-images",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "12-motion",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "13-compose",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_id": "14-review",
|
||||||
|
"status": "pending",
|
||||||
|
"revision": null,
|
||||||
|
"artifact_path": null,
|
||||||
|
"issues": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reviews": [
|
||||||
|
{
|
||||||
|
"review_id": "topic",
|
||||||
|
"decision": "pending",
|
||||||
|
"artifact_refs": [
|
||||||
|
{
|
||||||
|
"stage_id": "01-topic",
|
||||||
|
"revision": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"feedback": "승인 전 예제. 실제 사용자 응답 없음."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"review_id": "story",
|
||||||
|
"decision": "pending",
|
||||||
|
"artifact_refs": [],
|
||||||
|
"feedback": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"review_id": "scenes",
|
||||||
|
"decision": "pending",
|
||||||
|
"artifact_refs": [],
|
||||||
|
"feedback": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"review_id": "final",
|
||||||
|
"decision": "pending",
|
||||||
|
"artifact_refs": [],
|
||||||
|
"feedback": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"project_id": "water-cycle",
|
||||||
|
"stage_id": "01-topic",
|
||||||
|
"revision": 1,
|
||||||
|
"inputs": [],
|
||||||
|
"payload": {
|
||||||
|
"candidates": [
|
||||||
|
{
|
||||||
|
"id": "angle-1",
|
||||||
|
"angle": "물웅덩이의 물이 이동하는 두 경로",
|
||||||
|
"summary": "증발과 스며듦을 설명한다. 다른 이동 경로 전체를 다룬다고 약속하지 않는다."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"selected_id": "angle-1",
|
||||||
|
"selection_reason": "일상에서 관찰할 수 있고 상태 변화와 단면으로 설명할 수 있는 예제 각도. 실제 사용자 승인 전이다."
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 01-topic 예제 검토
|
||||||
|
|
||||||
|
이 자료는 텍스트 내용 양식을 설명하는 예제이며 실제 제작 실행·사용자 승인이 아니다. 진행 기록의 현재 결과는 01뿐이다.
|
||||||
|
|
||||||
|
- 예제 결과를 실제 배정받아 제출할 때 필요한 상태: awaiting_review
|
||||||
|
- 입력과 payload: 같은 폴더의 artifact.json 참조.
|
||||||
|
- 적용한 원칙: 중심 질문의 답으로 이어지는 설명, 입력 언어 보존, 새 필드 없는 기존 계약.
|
||||||
|
- 적용하지 않은 구성: 실제 실패한 대안이나 위기가 없는 소재이므로 반전·위기를 넣지 않았다.
|
||||||
|
- 다음 조건: 선행 결과와 실제 사용자 승인·필수 파일을 먼저 확인한다.
|
||||||
Reference in New Issue
Block a user