feat: define video workflow contracts and templates

This commit is contained in:
NINI
2026-10-08 00:43:06 +09:00
parent 3f63cc9f76
commit 5be510704a
19 changed files with 2777 additions and 0 deletions
+143
View File
@@ -0,0 +1,143 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"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": "pending",
"revision": null,
"artifact_path": null,
"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": [],
"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": ""
}
]
}
+39
View File
@@ -0,0 +1,39 @@
# 단계 결과 검토
## 검토 대상
- 제작 ID:
- 검토 ID와 결과 버전: topic / story / scenes / final 중 해당 검토와 stage_id·revision
- JSON 위치:
- 현재 상태와 확인하지 못한 내용:
- 사용자의 선택·피드백: 실제 응답 후 기록
JSON을 기준으로 요약하며 문서만 고쳐 승인 내용을 바꾸지 않는다. 이 양식은 결과·사용자 검토를 돕는 문서이고 자체 승인이 아니다. 검토 구분이 없는 중간 결과는 해당 없음으로 적는다.
## 결과와 다음 진행
- 핵심 결과:
- 근거와 선행 버전:
- 완료 조건 충족 여부와 남은 문제:
- 사용자에게 필요한 결정:
- 결정에 따른 다음 작업 또는 돌아갈 단계:
## 제작 지침 적용
[제작 지침서](../docs/short-video-guide.md)의 해당 단계 메모만 사용한다. 이 링크는 templates 위치 기준이다. 실제 제작 폴더로 복사할 때 저장소의 docs/short-video-guide.md를 가리키도록 문서 링크를 조정한다. JSON 내부 경로는 항상 저장소 루트 기준이다.
- 적용한 구성 원칙과 실제 결과:
- 소재에 맞지 않아 적용하지 않은 구성과 이유:
story 검토에는 중심 질문·답, 제목과 첫 문장의 약속, 답하는 블록, 블록 연결, 핵심 주장·출처, 비유의 한계와 덜어낸 내용을 적는다.
scenes 검토에는 컷 ID·실측 음성 구간, 이해할 내용, 시작→끝 변화, 화면·연결 선택 이유, 인물·배경·근거 참조, 주석·숫자의 근거와 모바일 초점을 적는다.
final 검토에는 story/visual/audio/captions/timing/consistency별 실제 파일·시간·청취·관찰 근거와 수정할 단계·컷을 적는다. JSON의 checks.evidence·findings와 일치시키고 미검수는 not_checked, 완성본 부재는 incomplete로 남긴다.
## 수정과 보존
- 새 버전에서 바뀐 내용:
- 영향을 받는 후속 결과·검토:
- 그대로 사용할 기존 결과와 이유:
- 이전 버전의 위치:
+12
View File
@@ -0,0 +1,12 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "01-topic",
"revision": 1,
"inputs": [],
"payload": {
"candidates": [],
"selected_id": null,
"selection_reason": ""
}
}
+12
View File
@@ -0,0 +1,12 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "02-research",
"revision": 1,
"inputs": [],
"payload": {
"sources": [],
"claims": [],
"open_questions": []
}
}
+12
View File
@@ -0,0 +1,12 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "03-script",
"revision": 1,
"inputs": [],
"payload": {
"blocks": [],
"full_text": "",
"estimated_duration_ms": null
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "04-title",
"revision": 1,
"inputs": [],
"payload": {
"candidates": [],
"selected_id": null
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "05-tts-split",
"revision": 1,
"inputs": [],
"payload": {
"units": []
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "06-tts",
"revision": 1,
"inputs": [],
"payload": {
"request": {
"engine": "Qwen3-TTS",
"conda_env": "qwen3-tts",
"language": "",
"units": []
},
"result": null
}
}
+13
View File
@@ -0,0 +1,13 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "07-cuts",
"revision": 1,
"inputs": [],
"payload": {
"narration_duration_ms": null,
"timing_evidence": "",
"cuts": [],
"captions": []
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "08-scenes",
"revision": 1,
"inputs": [],
"payload": {
"scenes": [],
"connections": []
}
}
+12
View File
@@ -0,0 +1,12 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "09-entities",
"revision": 1,
"inputs": [],
"payload": {
"characters": [],
"backgrounds": [],
"appearances": []
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "10-references",
"revision": 1,
"inputs": [],
"payload": {
"request": {
"model": "gpt-image-2.5-sunburst",
"style_reference": "references/1.png",
"items": []
},
"result": null
}
}
+14
View File
@@ -0,0 +1,14 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "11-images",
"revision": 1,
"inputs": [],
"payload": {
"request": {
"model": "gpt-image-2.5-sunburst",
"frames": []
},
"result": null
}
}
+13
View File
@@ -0,0 +1,13 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "12-motion",
"revision": 1,
"inputs": [],
"payload": {
"request": {
"clips": []
},
"result": null
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "13-compose",
"revision": 1,
"inputs": [],
"payload": {
"request": {
"timeline": [],
"narration_path": "",
"captions": [],
"title": ""
},
"result": null
}
}
+43
View File
@@ -0,0 +1,43 @@
{
"schema_version": "1.0",
"project_id": "video-001",
"stage_id": "14-review",
"revision": 1,
"inputs": [],
"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": [],
"recommendation": "incomplete"
}
}