add projects

This commit is contained in:
NINI
2026-10-09 23:04:17 +09:00
parent f64dc50fdd
commit b2b37a1105
33 changed files with 6722 additions and 0 deletions
+3
View File
@@ -1 +1,4 @@
.dryforge/ .dryforge/
.cache/
media/
renderer/
+34
View File
@@ -1,3 +1,37 @@
# 미해결 문제 # 미해결 문제
현재 지침·양식 구현 범위에서 확인된 미해결 문제는 없다. 현재 지침·양식 구현 범위에서 확인된 미해결 문제는 없다.
## 실제 제작의 청취 확인 기록 — 해소
- 대상: [water-hydrogen-bond-surface-tension / 06-tts r1 검토](../../projects/water-hydrogen-bond-surface-tension/stages/06-tts/r1/review.md).
- 원인: 현재 Codex 세션은 오디오 입력을 지원하지 않아 실제 WAV의 청취 검수를 수행할 수 없다. 오디오 전달 시 “audio content omitted because you do not support audio input” 결과를 확인했다.
- 완료한 확인: 기존 Qwen3-TTS 모델·한국어·Sohee 지원, 8개 단위 WAV와 110560ms 통합 WAV의 실제 생성, PCM 형식·샘플 기반 단위 구간·파일 통합 동일성.
- 당시 영향과 보류: 청취 결과가 없어 06은 awaiting_input이고 07–09는 보류했다. 파일·파형 검사를 청취 통과로 기록하지 않았다.
- 해소 근거: 사용자가 실제 제공된 통합 WAV에 대해 “내레이션 WAV 괜찮습니다.”라고 확인했다. 사용자 청취 확인으로 06을 complete 처리하고 07–09를 재개한다. Codex 직접 청취로 기록하지 않는다.
- 후속 확인: 07에서 실제 WAV의 단어별 자동 정렬·승인 원문 대응·전체 컷과 별도 자막 구간을 검사했다. 실제 최종 출력의 자막 판독성·타이밍 검수는 13–14에 남아 있다. 승인된 03 원문 및 기존 topic/story 승인은 보존했다. 전역 환경·다른 음성 도구로 대체하지 않았다.
## 임시 ASR 모델 캐시 정리 — 보류, 제작 진행에는 영향 없음
- 대상: projects/water-hydrogen-bond-surface-tension/.cache/asr. 이번 정렬 실행에서 저장한 Whisper 가중치·토크나이저 캐시다. 주 가중치 크기는 1617824864바이트다.
- 시도: 저장소 안의 해당 절대 경로와 일반 디렉터리임을 확인하고, PowerShell의 LiteralPath 삭제 및 파일별·빈 디렉터리별 삭제로 정리를 시도했다.
- 실제 결과: 자동 승인 검토가 삭제 실행을 “blocked by policy”로 거절했다. 더 구체적인 거절 이유는 제공되지 않았다. 삭제는 실행되지 않았고 캐시는 남아 있다. 다른 셸·도구로 삭제를 우회하지 않았다.
- 영향: WAV·정렬 근거·단계 결과·장면 검토에는 영향이 없으며 blocking 문제로 처리하지 않는다. 모델 캐시는 단계 결과·승인·미디어로 참조하지 않는다. 원시 정렬 근거는 별도 alignment.json에 보존했다.
- 보류 이유: 허용된 정리 경로가 없어 해당 임시 캐시를 보존한다. 현재 사용자 전역 환경·설정은 변경하지 않았다.
## 기준 이미지의 정확한 세로 규격 — 해소
- 대상: [water-hydrogen-bond-surface-tension / 10-references r1 검토](../../projects/water-hydrogen-bond-surface-tension/stages/10-references/r1/review.md).
- 실제 실행: 사용자가 “현재 내장 이미지 도구 사용을 허용합니다(모델명 확인 없이)”라고 허용해 기준 이미지 5종을 생성·수정했다. 실제 모델명은 미확인이며 지정 모델 실행 성공으로 기록하지 않는다.
- 원인: 내장 도구에는 크기 지정 인자가 없고 생성 후보 5개 모두 실제 941×1672 PNG로 정확한 9:16에서 미세하게 벗어난다.
- 완료한 확인: 실제 파일·PNG signature·IHDR 크기·화면·그림체·원자 수·결합선 끝점·비교 조건을 확인했다. 부분 결과를 보존하고 규격 미충족으로 verified=false를 기록했다.
- 영향: 10은 awaiting_input, 검증된 기준이 필요한 11–14는 시작하지 않았다. 기존 대본·WAV·컷·사용자 승인에는 영향이 없다.
- 재개 조건: 그림의 원본 픽셀을 유지하고 여백만 추가해 945×1680으로 만드는 로컬 보정의 명시적 허용 또는 정확한 규격의 생성 출력. 이미지 편집의 내장 도구 사용 지침 때문에 로컬 보정 허용 질문을 제출했으며 아직 답변이 없다. 사용자 환경은 변경하지 않았다.
- 해소: 사용자가 해당 보정 요청에 “허용합니다”라고 답했다. 원본을 보존한 새 PNG 5개에 여백만 추가했고, 945×1680·정확한 9:16·원본 영역 픽셀 동일·PNG CRC/디코딩·실제 화면을 확인했다. 10 complete로 처리하고 11을 시작한다. 앞선 보류 기록은 당시 상황이며 현재 보정 허용을 다시 요구하지 않는다.
## 최종 MP4의 전체 재생·청취 확인 — final 검토 대기
- 대상: [water-hydrogen-bond-surface-tension / 14-review r1](../../projects/water-hydrogen-bond-surface-tension/stages/14-review/r1/review.md).
- 실제 출력: 선택한 Remotion + FFmpeg를 제작 폴더 안에 구현해 31개 컷 MP4와 110560ms·1080×1920 최종 MP4·38개 자막 SRT를 생성했다. 실제 길이·프레임 수·전체 AV 디코딩·원 WAV/AAC 신호 대조·모바일 화면 표본·모든 인접 경계를 확인했다.
- 남은 확인: 현재 세션은 오디오 입력을 지원하지 않으며 정상 속도 전체 시청·청취를 수행하지 못했다. 원 WAV에 대한 기존 사용자 청취 확인은 보존하되 최종 MP4의 청취 확인으로 바꾸지 않는다. 파일·신호·정지 표본 검사로 미검수 영역을 pass 처리하지 않았다.
- 영향: 실제 13 출력과 14 보고는 사용자 final 검토에 제출할 수 있다. 13/14는 awaiting_review이며 14 추천은 incomplete다. 영상 파일 부재나 실행 경로 부재로 기다리는 상태가 아니다. 시청 중 실제 증상이 확인되면 시간/컷과 원인 단계로 돌아간다.
@@ -0,0 +1,21 @@
# 영상 생성·합성 도구 추천 — 2026-10-09
사용자가 “추천하는 도구가 있나요?”라고 물어 현재 공식 문서와 이 제작의 실제 조건을 확인했다. 이후 사용자가 “Remotion + FFmpeg로 저장소 내 구현 진행(추천)”을 선택했다. 아래는 선택 전 적용안이며, 승인에 따라 이 제작의 renderer 폴더 안에 실행 구성을 구현한다. 완료·검증 결과는 단계별 review.md에 기록한다.
## 이번 과학 설명 영상의 추천: Remotion + FFmpeg
이번 장면의 핵심은 원자 O1/H2 구조 유지, H···O 점선의 생성·소멸, 내부/표면 이웃의 강조, 물방울 윤곽의 완만한 변형이다. 이 대상과 관계를 시간에 맞춰 직접 제어하는 모션 그래픽이 적합하다는 제작 판단이다. 생성형 영상의 구조 보존 성능을 직접 측정하거나 보장한 결론은 아니다.
- [Remotion 공식 애니메이션 문서](https://www.remotion.dev/docs/animating-properties): React 기반 화면의 속성을 프레임 시간에 맞춰 애니메이션한다. 검증된 PNG의 그림체·장면 배치를 유지하면서 강조와 연결 변화를 제어하는 용도로 제안한다. 실제 구현 시 도형·레이어와 PNG의 일치 및 각 컷의 실제 시작/끝 화면을 검증해야 한다.
- [Remotion Composition](https://www.remotion.dev/docs/composition): 화면 크기·fps·durationInFrames를 명시한다. 이미 승인된 07의 ms 시간을 유지하고 해당 프레임 격자로 정확히 표현되는 fps를 정한다. 컷·음성 길이를 임의로 바꾸지 않는다.
- [FFmpeg 공식 필터 문서](https://www.ffmpeg.org/ffmpeg-filters.html): 컷 연결·음성 결합·자막/텍스트·최종 인코딩과 실측 검사에 활용할 수 있다. 현재 PATH에서 ffmpeg/ffprobe는 찾지 못했으며 다른 위치의 설치 여부와 지원은 확인되지 않았다.
구체적인 적용안: 12에서 컷별 상태 변화를 제어한 MP4를 만들고, 13에서 승인된 110560ms WAV·38개 자막·제목·발화 시점별 주석을 연결한다. 실제 31컷의 모든 경계가 20ms 배수임을 확인했다. 50fps에서는 각 컷의 길이를 정수 프레임으로 표현하며 전체는 5528프레임이다. 이는 실행 설계의 시간 격자 확인이며 실제 MP4 길이 검증을 대신하지 않는다. Qwen3-TTS와 내장 이미지 도구는 그대로 사용한다. 프로젝트 안에만 실행 구성·필요한 의존성을 두는 방안을 제안하며 사용자 전역 환경을 변경하지 않는다. 단순 줌이나 화면 전체 크로스페이드만으로 원자·연결 변화 설명을 대신하지 않는다. 현재 문서·스킬만으로 이 실행 프로그램이 구현되어 있는 것은 아니다.
## 범용적인 생성형 영상 옵션: Luma Ray 3.2 + FFmpeg
[Luma Agents 공식 API](https://docs.agents.lumalabs.ai/api/resources/generations/methods/create/)는 Ray 3.2의 시작/끝 이미지와 keyframes, 세로 9:16을 문서화한다. 현재 video.duration은 5s/10s이며 새 keyframes는 24fps 격자를 사용한다. 이 제작의 컷은 대부분 5초 미만이므로 API 생성 길이를 승인된 실제 컷 길이와 동일하다고 기록할 수 없다. 두 끝 상태와 정확한 길이를 보존하는 후처리·검증 방식을 먼저 정해야 한다. 해당 서비스의 계정/API 인증과 실제 실행 연결도 필요하다.
다양한 인물·풍경·물체 동작을 생성할 범용 파이프라인에는 후보로 적합하다는 판단이다. 이번 분자 도해에서는 실제 중간 프레임에서 원자 수와 연결의 보존을 확인해야 한다. 설치·외부 업로드·API 호출은 수행하지 않았다. 키 값은 채팅이나 제작 기록에 받지 않는다.
현재 선택은 Remotion + FFmpeg이며 Luma는 미선택 후보다. [12 스킬](../../.agents/skills/short-video-motion/SKILL.md)은 “이 스킬은 영상 엔진을 선택·구현하거나 실제 모델 API·영상 생성을 실행하지” 않는다고 명시한다. 실행 구성의 구현은 이 스킬의 기존 기능으로 주장하지 않고 위 사용자의 명시적 추가 요청에 따라 진행한다. 이미지 제작도 계속한다.
@@ -0,0 +1,195 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"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": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/01-topic/r1/artifact.json",
"issues": []
},
{
"stage_id": "02-research",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/02-research/r1/artifact.json",
"issues": []
},
{
"stage_id": "03-script",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/03-script/r1/artifact.json",
"issues": []
},
{
"stage_id": "04-title",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/04-title/r1/artifact.json",
"issues": []
},
{
"stage_id": "05-tts-split",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/05-tts-split/r1/artifact.json",
"issues": []
},
{
"stage_id": "06-tts",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/06-tts/r1/artifact.json",
"issues": []
},
{
"stage_id": "07-cuts",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/07-cuts/r1/artifact.json",
"issues": []
},
{
"stage_id": "08-scenes",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/08-scenes/r1/artifact.json",
"issues": []
},
{
"stage_id": "09-entities",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/09-entities/r1/artifact.json",
"issues": []
},
{
"stage_id": "10-references",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/10-references/r1/artifact.json",
"issues": []
},
{
"stage_id": "11-images",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/11-images/r1/artifact.json",
"issues": []
},
{
"stage_id": "12-motion",
"status": "complete",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/12-motion/r1/artifact.json",
"issues": []
},
{
"stage_id": "13-compose",
"status": "awaiting_review",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/13-compose/r1/artifact.json",
"issues": [
{
"code": "FINAL_PLAYBACK_REVIEW_REQUIRED",
"message": "실제 MP4/SRT 생성·기술 검사·화면 표본 확인 완료. 최종 영상의 정상 속도 전체 재생·청취 확인은 final 검토 대기.",
"blocking": true
}
]
},
{
"stage_id": "14-review",
"status": "awaiting_review",
"revision": 1,
"artifact_path": "projects/water-hydrogen-bond-surface-tension/stages/14-review/r1/artifact.json",
"issues": [
{
"code": "FINAL_PLAYBACK_REVIEW_REQUIRED",
"message": "근거·미확인 영역을 기록한 검수 보고 준비. 전체 재생·청취 미확인으로 recommendation=incomplete; 사용자 final 검토 대기.",
"blocking": true
}
]
}
],
"reviews": [
{
"review_id": "topic",
"decision": "approved",
"artifact_refs": [
{
"stage_id": "01-topic",
"revision": 1
}
],
"feedback": "추천안으로 진행합니다"
},
{
"review_id": "story",
"decision": "approved",
"artifact_refs": [
{
"stage_id": "02-research",
"revision": 1
},
{
"stage_id": "03-script",
"revision": 1
},
{
"stage_id": "04-title",
"revision": 1
}
],
"feedback": "확정합니다."
},
{
"review_id": "scenes",
"decision": "approved",
"artifact_refs": [
{
"stage_id": "07-cuts",
"revision": 1
},
{
"stage_id": "08-scenes",
"revision": 1
},
{
"stage_id": "09-entities",
"revision": 1
}
],
"feedback": "승인합니다."
},
{
"review_id": "final",
"decision": "pending",
"artifact_refs": [
{
"stage_id": "13-compose",
"revision": 1
},
{
"stage_id": "14-review",
"revision": 1
}
],
"feedback": ""
}
]
}
@@ -0,0 +1,23 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "01-topic",
"revision": 1,
"inputs": [],
"payload": {
"candidates": [
{
"id": "droplet-to-molecules",
"angle": "물방울은 왜 동그랗게 뭉칠까?",
"summary": "작은 물방울의 모양을 출발점으로, 물 분자 사이 수소결합과 표면장력의 관계를 설명하는 구성이다. 조사에서 분자 사이 끌림, 표면을 늘리는 데 필요한 에너지, 작은 물방울의 모양을 연결할 수 있는 근거를 확인한다. 물방울 관찰과 분자 도해를 설명 자료로 검토하며, 모든 물방울이 언제나 완전한 구라는 설명은 범위에서 제외한다."
},
{
"id": "paperclip-to-molecules",
"angle": "작은 클립이 물 표면에 머무는 모습을 어떻게 설명할까?",
"summary": "작은 클립을 조심히 놓는 관찰을 도입으로, 물의 표면장력을 분자 사이 수소결합과 연결하는 구성이다. 조사에서 실험 조건과 표면장력의 역할을 확인하고 부력·젖음·물체 모양 등 구별할 조건을 점검한다. 금속은 무엇이든 물 위에 뜬다는 설명이나 실제 고체막이 생긴다는 설명은 사용하지 않는다."
}
],
"selected_id": "droplet-to-molecules",
"selection_reason": "물방울이라는 익숙한 관찰에서 분자 수준의 설명으로 이어갈 수 있어 추천한다. 클립 실험의 추가 조건보다 수소결합과 표면장력이라는 입력 주제에 집중하기 쉽다. 추천 후보를 기록한 것이며 실제 사용자 선택·topic 승인은 아직 받지 않았다."
}
}
@@ -0,0 +1,56 @@
# 주제·이야기 각도 검토
## 검토 대상
- 제작 ID: water-hydrogen-bond-surface-tension
- 입력 주제: 물의 수소결합에 의한 표면장력에 대한 설명
- 언어: 한국어
- 검토 ID와 결과 버전: topic / 01-topic / r1
- JSON 위치: [artifact.json](artifact.json)
- 제출 당시 상태: awaiting_review. 아래 실제 사용자 승인 후 현재 상태는 complete다.
- 제출 당시 selected_id는 담당의 추천이었다. 아래 실제 응답으로 추천 후보의 선택·topic 승인을 확인했다.
- 확인하지 못한 내용: 과학적 설명의 출처·실험 조건·도해의 정확성은 topic 승인 뒤 02에서 조사한다. 음성·이미지·영상과 실측 시간은 아직 없다.
## 추천안
**물방울은 왜 동그랗게 뭉칠까?** — droplet-to-molecules
중심 질문은 “작은 물방울의 모양을 물 분자 사이 수소결합과 표면장력으로 어떻게 설명할까?”다. 익숙한 물방울 관찰에서 분자 도해로 들어갔다가 마지막에 물방울의 모양으로 돌아오는 설명을 제안한다. 이 문구는 이야기 각도이며 최종 제목은 03 대본에 맞춰 04에서 정한다.
조사에서 확인할 설명 경로는 수소결합 → 분자 사이 끌림 → 표면을 늘리는 데 필요한 에너지 → 표면장력과 작은 물방울의 모양이다. 현재는 설명 가설·조사 과제로 제시하며, 검증된 주장이나 대본으로 확정하지 않는다.
보여줄 근거 후보는 작은 물방울 관찰과 물 내부·표면의 분자 관계를 비교하는 도해다. 실제 조건과 자료의 적합성은 조사에서 확인한다.
## 다른 각도
**작은 클립이 물 표면에 머무는 모습을 어떻게 설명할까?** — paperclip-to-molecules
클립 관찰로 호기심을 유도한 뒤 같은 분자 원리를 설명한다. 실험 조건과 부력·젖음 등을 구별해야 해서 도입 설명이 늘어날 수 있다. 수소결합 자체에 집중하기에는 추천안이 더 단순하다.
## 다룰 범위와 조사에서 확인할 것
- 물 분자의 성질과 분자 사이 수소결합을 쉬운 말로 설명하는 데 필요한 근거.
- 물 분자 내부 결합과 분자 사이 수소결합을 도해에서 구별하는 방법.
- 분자 사이 끌림과 표면을 늘리는 에너지 비용을 표면장력에 연결하는 설명의 정확성.
- 작은 물방울의 모양을 설명할 수 있는 조건과 중력·바닥 접촉의 영향.
- 도해와 비유를 실제 크기·고정된 분자 위치·영구적인 연결처럼 오해시키지 않는 방법.
복잡한 수식 유도, 수치 계산, 다른 액체 전체의 비교, 생물의 물 위 보행은 이번 중심 설명에 포함하지 않는다. 실제 고체막·사람의 손·영구적인 끈이 있다는 식의 표현은 사용하지 않는다. 중요한 조건은 자료 조사에 따라 범위를 좁혀 설명한다.
## 제작 지침 적용
[내용·구성 지침](../../../../../docs/short-video-guide.md)의 중심 질문·범위·보여줄 증거 기준을 사용했다. 한 질문을 끝에서 회수하고, 관찰에서 원인으로 이어지는 구성을 추천한다.
사실에 없는 위기·반전·실패한 대안을 넣지 않는다. 이번 소재는 원리 설명이므로 문제 해결의 위기를 억지로 만들지 않는다. 표현은 쉽게 쓰되 시청자를 어린이로 한정하지 않는다.
## 제출 당시의 다음 진행과 남은 결정
제출 당시 01은 후보·추천·범위가 준비됐지만 실제 사용자 topic 승인이 없어 완료가 아니었다. 당시 project.json의 topic 결정은 pending이고 02–14는 pending이었다. 실제 승인과 이후 진행은 아래 기록 및 현재 project.json을 따른다.
사용자는 추천안 승인, 다른 후보 선택 또는 범위 수정 중 하나를 결정한다. 추천안 승인 시 같은 r1을 검토한 실제 응답을 총괄이 기록하고 02 자료 조사로 이어간다. 다른 선택·범위 변경이 있으면 r1을 보존하고 새 버전으로 제출한다.
## 실제 사용자 결정
사용자 응답: “추천안으로 진행합니다”
droplet-to-molecules 후보와 01-topic r1의 범위를 승인했다. 총괄이 project.json의 topic 검토를 approved, 01 상태를 complete로 기록했다. 기존 artifact.json은 제출 당시의 추천 이유를 보존하며 수정하지 않는다. 같은 승인 버전으로 02 자료 조사를 시작한다.
@@ -0,0 +1,130 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "02-research",
"revision": 1,
"inputs": [
{
"stage_id": "01-topic",
"revision": 1
}
],
"payload": {
"sources": [
{
"id": "s1-acs-polarity",
"title": "Lesson 5.1: Water is a Polar Molecule",
"url": "https://www.acs.org/middleschoolchemistry/lessonplans/chapter5/lesson1.html",
"publisher": "American Chemical Society",
"accessed_at": "2026-10-08"
},
{
"id": "s2-openstax-intermolecular",
"title": "10.1 Intermolecular Forces — Chemistry 2e",
"url": "https://openstax.org/books/chemistry-2e/pages/10-1-intermolecular-forces",
"publisher": "OpenStax, Rice University",
"accessed_at": "2026-10-08"
},
{
"id": "s3-openstax-liquids",
"title": "10.2 Properties of Liquids — Chemistry 2e",
"url": "https://openstax.org/books/chemistry-2e/pages/10-2-properties-of-liquids",
"publisher": "OpenStax, Rice University",
"accessed_at": "2026-10-08"
},
{
"id": "s4-usgs-cohesion",
"title": "Adhesion and Cohesion of Water",
"url": "https://www.usgs.gov/water-science-school/science/adhesion-and-cohesion-water",
"publisher": "U.S. Geological Survey, Water Science School",
"accessed_at": "2026-10-08"
},
{
"id": "s5-openstax-water",
"title": "2.2 Water — Biology 2e",
"url": "https://openstax.org/books/biology-2e/pages/2-2-water",
"publisher": "OpenStax, Rice University",
"accessed_at": "2026-10-08"
}
],
"claims": [
{
"id": "c1-polarity",
"text": "물 분자 H2O는 산소 하나와 수소 둘로 이루어진다. 산소가 공유 전자를 더 강하게 끌어당겨 산소 쪽은 부분 음전하, 수소 쪽은 부분 양전하를 띠며 분자 전체는 중성이다.",
"source_ids": [
"s1-acs-polarity",
"s5-openstax-water"
],
"assessment": "verified"
},
{
"id": "c2-hydrogen-bond",
"text": "물에서 한 분자의 부분 양전하를 띤 수소와 다른 분자의 부분 음전하를 띤 산소 사이의 끌림은 수소결합이다. 한 분자 내부의 O–H 공유결합과 구별한다.",
"source_ids": [
"s2-openstax-intermolecular",
"s1-acs-polarity"
],
"assessment": "verified"
},
{
"id": "c3-dynamic-network",
"text": "액체 물에서는 분자가 움직이며 수소결합이 생기고 끊어지므로 영구적으로 고정된 연결망이 아니다.",
"source_ids": [
"s5-openstax-water"
],
"assessment": "verified"
},
{
"id": "c4-cohesion",
"text": "물 분자 사이 수소결합은 물의 응집, 즉 물끼리 뭉치는 성질에 기여하며 물의 높은 표면장력의 중요한 원인이다. 다른 액체에 표면장력이 없다는 뜻은 아니다.",
"source_ids": [
"s5-openstax-water",
"s3-openstax-liquids"
],
"assessment": "verified"
},
{
"id": "c5-interface-neighbors",
"text": "액체 내부와 달리 물-공기 표면의 분자는 공기 방향에 액체 물 분자 이웃이 적다. 내부와 표면의 분자 환경 차이를 설명하는 정성적 모형이다.",
"source_ids": [
"s3-openstax-liquids"
],
"assessment": "verified"
},
{
"id": "c6-surface-energy",
"text": "액체 표면적을 늘리는 데 에너지가 필요하다. 표면장력은 이 에너지 비용과 표면의 확장에 대한 저항을 표현하며 액체는 표면적을 줄이는 방향의 경향을 보인다.",
"source_ids": [
"s3-openstax-liquids"
],
"assessment": "verified"
},
{
"id": "c7-sphere",
"text": "같은 부피에서 구는 표면적이 가장 작다. 중력·공기저항·다른 표면과의 상호작용 영향이 작으면 작은 물방울은 표면장력으로 구형에 가까운 모양을 갖는다.",
"source_ids": [
"s3-openstax-liquids"
],
"assessment": "verified"
},
{
"id": "c8-shape-conditions",
"text": "실제 물방울의 모양에는 중력과 접촉한 표면과의 상호작용 등이 영향을 준다. 큰 물방울이나 바닥에 닿은 물방울이 언제나 완전한 구인 것은 아니다.",
"source_ids": [
"s3-openstax-liquids",
"s4-usgs-cohesion"
],
"assessment": "verified"
},
{
"id": "c9-no-skin",
"text": "물 표면을 별도의 피부나 고체 껍질로 설명하는 것은 부정확하다. 물방울에 그런 별도 막이 있는 것이 아니다.",
"source_ids": [
"s4-usgs-cohesion"
],
"assessment": "verified"
}
],
"open_questions": []
}
}
@@ -0,0 +1,39 @@
# 조사 근거 검토
- 제작 ID: water-hydrogen-bond-surface-tension
- 결과: 02-research r1 / [artifact.json](artifact.json)
- 선행: 사용자 topic 승인된 [01-topic r1](../../01-topic/r1/artifact.json)
- 상태: 중심 설명의 근거 확인 완료. 별도 사용자 검토를 추가하지 않고 03·04와 story 검토에 포함한다.
- 사용자 story 승인: 아직 없음.
## 확인한 근거
2026-10-08에 아래 본문을 실제로 열어 확인했다. 원문을 복제하지 않고 영상에 필요한 주장만 재서술했다.
| 출처 | 실제 확인한 부분 | 사용하는 주장 |
| --- | --- | --- |
| [ACS: Water is a Polar Molecule](https://www.acs.org/middleschoolchemistry/lessonplans/chapter5/lesson1.html) | Key Concepts, unequal sharing of electrons, Attractions on Different Levels | c1·c2: 부분 전하와 분자 내부/사이 결합 구별 |
| [OpenStax: Intermolecular Forces](https://openstax.org/books/chemistry-2e/pages/10-1-intermolecular-forces) | Hydrogen Bonding, Figure 10.10 설명 | c2: 이웃 분자의 H···O 끌림 |
| [OpenStax: Properties of Liquids](https://openstax.org/books/chemistry-2e/pages/10-2-properties-of-liquids) | 응집·표면 분자·Figure 10.16, 표면적 확장 에너지, 중력·표면 영향 | c4–c8: 응집·표면장력·구형의 조건 |
| [USGS: Adhesion and Cohesion of Water](https://www.usgs.gov/water-science-school/science/adhesion-and-cohesion-water) | Cohesion makes a water drop a drop | c8·c9: 실제 물방울 모양과 별도 피부가 없다는 설명 |
| [OpenStax: Water](https://openstax.org/books/biology-2e/pages/2-2-water) | Water’s Polarity, Water’s States, Cohesive and Adhesive Properties | c1·c3·c4: H2O·전하·변하는 결합·응집 |
출처·주장 ID가 모두 유일하고 verified 9개는 확인한 출처를 참조한다. 중심 질문을 막는 미해결 질문은 없다. 수식·표면장력 수치·특정 크기의 경계값은 이번 대본에 넣지 않는다.
## 설명과 도해의 한계
- “살짝 플러스/마이너스”는 부분 전하를 쉽게 풀어 쓴 표현이다. 물 분자 전체는 중성이며 이온처럼 그리지 않는다.
- 한 분자 안의 O–H 결합과 이웃 분자 사이 H···O 끌림을 다른 선으로 구별한다. 원문 그림을 복제하지 않고 이후 사용자 그림체로 새 도해를 설계한다.
- 표면의 이웃 부족은 정성적 환경 설명이다. 모든 표면 분자가 정확히 같은 수의 결합을 갖거나 고정 격자로 배열된다고 표현하지 않는다.
- 에너지 설명을 사용해 표면장력을 연결한다. 표면 분자가 정지 상태에서도 계속 아래로 가속하거나 모두 응축해 고체막이 생긴다는 도해는 사용하지 않는다.
- 공 모양 비교는 같은 물의 양·부피를 유지한다. 바닥에 닿은 물방울까지 완전한 구로 그리지 않는다.
- 물만 표면장력이 있는 액체라고 말하지 않는다. 수소결합은 물의 응집·높은 표면장력에 기여하는 중요한 원인이다.
USGS의 별도 Surface Tension and Water 페이지와 ACS Surface Tension 수업도 확인했으나 표면에서 결합이 무조건 더 강해져 단단한 층이 생긴다는 식의 단순 설명은 채택하지 않았다. 위 채택 출처의 에너지·응집·모양 조건을 중심으로 쓴다. IUPAC surface work 항목은 본문 접근이 실패해 검증 근거로 등록하지 않았다.
## 제작 지침 적용과 전달
[제작 지침](../../../../../docs/short-video-guide.md)의 근거·숫자·비유 한계 기준을 적용했다. 관찰 → 분자 관계 → 표면의 비용 → 물방울 모양이라는 중심 답에 필요한 근거만 남긴다.
클립·소금쟁이·세제 실험, 다른 액체의 순위·수치, 분자 결합 시간의 정량값은 범위 밖이다. 사실에 없는 반전·위기·실패한 대안은 넣지 않는다. 03의 사실 문장은 위 claim ID와 연결하며, 새로운 인과나 수치를 추가하면 다시 조사한다.
@@ -0,0 +1,85 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "03-script",
"revision": 1,
"inputs": [
{
"stage_id": "01-topic",
"revision": 1
},
{
"stage_id": "02-research",
"revision": 1
}
],
"payload": {
"blocks": [
{
"id": "b1-question",
"text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.",
"claim_ids": [
"c4-cohesion",
"c7-sphere"
]
},
{
"id": "b2-polarity",
"text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.",
"claim_ids": [
"c1-polarity"
]
},
{
"id": "b3-hydrogen-bond",
"text": "그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.",
"claim_ids": [
"c2-hydrogen-bond"
]
},
{
"id": "b4-cohesion",
"text": "수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.",
"claim_ids": [
"c3-dynamic-network",
"c4-cohesion"
]
},
{
"id": "b5-surface",
"text": "이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.",
"claim_ids": [
"c5-interface-neighbors"
]
},
{
"id": "b6-energy",
"text": "이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.",
"claim_ids": [
"c6-surface-energy"
]
},
{
"id": "b7-round",
"text": "같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.",
"claim_ids": [
"c7-sphere",
"c8-shape-conditions"
]
},
{
"id": "b8-answer",
"text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"claim_ids": [
"c2-hydrogen-bond",
"c4-cohesion",
"c6-surface-energy",
"c7-sphere",
"c9-no-skin"
]
}
],
"full_text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.\n물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.\n그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.\n수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.\n이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.\n이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.\n같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.\n물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"estimated_duration_ms": null
}
}
@@ -0,0 +1,63 @@
# 대본과 제목 검토
- 제작 ID: water-hydrogen-bond-surface-tension
- 검토 ID: story
- 결과: [03-script r1 JSON](artifact.json), [04-title r1 JSON](../../04-title/r1/artifact.json)
- 근거: 사용자 topic 승인된 [01 r1](../../01-topic/r1/artifact.json), [02 조사 r1](../../02-research/r1/review.md)
- 제출 당시 상태: awaiting_review
- 제출 당시 사용자 story 승인: 없음. 아래 실제 승인 기록으로 05 진행 조건을 충족했다.
- 추천 제목: **물방울은 왜 동그랗게 뭉칠까?**
## 한국어 내레이션 전체
작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.
물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.
그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.
수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.
이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.
이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.
같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.
물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.
## 검토 메모
- 중심 질문: 작은 물방울의 둥근 모양을 수소결합과 표면장력으로 어떻게 설명할까?
- 끝에서 전달할 답: 분자 사이 끌림과 표면 확장의 에너지 비용이 작은 물방울의 둥근 모양으로 이어진다.
- 제목·첫 문장의 약속: 작은 물방울의 모양을 이유와 연결한다. b7-round와 b8-answer에서 회수한다.
- 비유와 한계: “살짝 플러스/마이너스”는 부분 전하의 쉬운 표현이다. “끈”·“껍질”은 실제로 있다는 비유가 아니라 영구 연결·고체막 오해를 막는 표현이다. “공 모양”은 같은 부피와 외부 영향이 작은 조건을 전제로 한다.
- 덜어낸 정보: 전기음성도 수치·분자 각도·표면장력 수치·수식·클립 실험·다른 액체 비교. 핵심 원리로 돌아오는 데 필요하지 않아 생략했다.
- 시간: estimated_duration_ms=null. 실제 화자·속도·쉼이 정해지지 않아 신뢰할 길이 추정이 없다. 06 실제 통합 WAV에서 180000ms 이내인지 확인한다. 블록은 이야기 단위이며 5초 컷이 아니다.
| 블록 | 역할과 다음으로 이어지는 이유 | 확인한 주장 |
| --- | --- | --- |
| b1-question | 질문과 약속 → 분자를 볼 이유 | c4·c7 |
| b2-polarity | 부분 전하 → 서로 끌리는 이유 | c1 |
| b3-hydrogen-bond | 이름·결합 구별 → 액체 안에서의 작동 | c2 |
| b4-cohesion | 고정된 끈 오해를 막고 응집 설명 → 표면으로 이동 | c3·c4 |
| b5-surface | 내부와 표면의 환경 차이 → 표면을 늘리는 비용 | c5 |
| b6-energy | 에너지 비용과 표면장력 → 줄어든 면적의 모양 | c6 |
| b7-round | 같은 부피·조건과 모양 → 처음 질문 회수 | c7·c8 |
| b8-answer | 껍질 오해를 막고 원인을 요약 | c2·c4·c6·c7·c9 |
위 짧은 표기 c1–c9는 02의 해당 번호로 시작하는 claim ID를 뜻하며 artifact.json에는 정확한 전체 ID를 기록했다. 출처 본문 위치·확인 방법은 02 review.md에 있다. 대본에 미확인 사실·근거 없는 수치는 넣지 않았다.
## 제작 지침 적용과 결정
[제작 지침](../../../../../docs/short-video-guide.md)의 한 질문, 쉬운 표현, 원인과 결과, 제목·도입·결말 연결을 적용했다. 원리 설명이라 별도의 위기·반전·실패한 대안은 만들지 않는다.
사용자에게 필요한 결정은 02 근거·03 대본·04 제목 r1의 승인 또는 수정이다. 추천 제목은 담당의 제안이며 story 승인이 아니다. 승인 시 총괄이 실제 응답·검토 버전을 기록하고 05로 이어간다. 수정은 해당 단계의 새 버전을 만들고 이전 자료를 보존한다.
## 실제 사용자 승인 기록
- 사용자 응답: “확정합니다.”
- 승인 묶음: 02-research r1, 03-script r1, 04-title r1.
- 확정 대본: 위 전체 내레이션과 artifact.json의 동일한 8개 블록.
- 확정 제목: “물방울은 왜 동그랗게 뭉칠까?” / t1-droplet-question.
- 현재 상태: complete. 총괄이 project.json의 story 결정을 approved로 기록했다. 동일 버전의 재승인은 요구하지 않는다.
@@ -0,0 +1,32 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "04-title",
"revision": 1,
"inputs": [
{
"stage_id": "03-script",
"revision": 1
}
],
"payload": {
"candidates": [
{
"id": "t1-droplet-question",
"text": "물방울은 왜 동그랗게 뭉칠까?",
"rationale": "b1-question의 질문을 그대로 약속하고 b2–b6의 수소결합·표면장력 설명과 b7-round·b8-answer에서 답한다. 작은 물방울의 조건을 대본에서 밝혀 모든 물방울을 완전한 구로 단정하지 않는다. 추천 제목이며 story 사용자 승인은 아직 없다."
},
{
"id": "t2-molecular-attraction",
"text": "물방울을 둥글게 만드는 분자들의 끌림",
"rationale": "b2-polarity·b3-hydrogen-bond·b4-cohesion에서 분자 사이 끌림을 설명하고 b6-energy·b7-round·b8-answer에서 모양과 연결한다. 원리 설명을 제목에서 먼저 드러낸다."
},
{
"id": "t3-surface-resistance",
"text": "물 표면은 왜 쉽게 늘어나지 않을까?",
"rationale": "b5-surface·b6-energy의 표면 환경과 에너지 비용에 초점을 둔다. b7-round·b8-answer의 물방울 모양을 적용 사례로 회수한다. 수식이나 모든 외력에 대한 무한한 저항을 약속하지 않는다."
}
],
"selected_id": "t1-droplet-question"
}
}
@@ -0,0 +1,37 @@
# 제목 후보 검토
- 제작 ID: water-hydrogen-bond-surface-tension
- 검토 ID: story / 04-title r1
- JSON: [artifact.json](artifact.json)
- 사용한 선행: [03-script r1](../../03-script/r1/artifact.json), [전체 대본·검토 메모](../../03-script/r1/review.md)
- 제출 당시 상태: awaiting_review
- 제출 당시 사용자 제목 선택·story 승인: 없음. 아래 실제 승인으로 selected_id를 확정했다.
## 추천과 후보
1. **물방울은 왜 동그랗게 뭉칠까?** — 추천
b1-question의 질문을 그대로 약속하고 b2–b6의 수소결합·표면장력 설명과 b7-round·b8-answer에서 답한다. 작은 물방울의 조건을 대본에서 밝혀 모든 물방울을 완전한 구로 단정하지 않는다. 제출 당시 추천이며 아래 기록으로 확정했다.
2. **물방울을 둥글게 만드는 분자들의 끌림**
b2-polarity·b3-hydrogen-bond·b4-cohesion에서 분자 사이 끌림을 설명하고 b6-energy·b7-round·b8-answer에서 모양과 연결한다. 원리 설명을 제목에서 먼저 드러낸다.
3. **물 표면은 왜 쉽게 늘어나지 않을까?**
b5-surface·b6-energy의 표면 환경과 에너지 비용에 초점을 둔다. b7-round·b8-answer의 물방울 모양을 적용 사례로 회수한다. 수식이나 모든 외력에 대한 무한한 저항을 약속하지 않는다.
첫 후보는 질문을 짧게 제시하고 대본의 결말에서 답하는 방식이라 추천한다. 제목의 “동그랗게”는 작은 물방울의 조건을 대본에서 설명하며 모든 물방울이 완전한 구라고 단정하지 않는다.
## 검토 연결
추천 제목·첫 문장·결말의 약속은 03 review.md에 함께 기록했다. 새 사실·숫자·위기·다른 주제의 약속을 추가하지 않았다. [제작 지침](../../../../../docs/short-video-guide.md)의 제목·도입·결말 일치 기준을 적용했다.
02 근거와 03·04 해당 버전의 실제 사용자 story 승인 전에는 완료로 처리하거나 05로 넘어가지 않는다. 다른 제목·표현으로 수정할 경우 새 버전을 만들며 제목과 무관한 기존 결과를 무조건 재생성하지 않는다.
## 실제 사용자 승인 기록
- 사용자 응답: “확정합니다.”
- 승인 묶음: 02-research r1, 03-script r1, 04-title r1.
- 확정 제목: “물방울은 왜 동그랗게 뭉칠까?” / t1-droplet-question.
- 현재 상태: complete. project.json의 story 승인에 연결하며 원래 후보와 대본은 보존한다.
@@ -0,0 +1,88 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"revision": 1,
"stage_id": "05-tts-split",
"inputs": [
{
"stage_id": "03-script",
"revision": 1
}
],
"payload": {
"units": [
{
"id": "u01",
"block_ids": [
"b1-question"
],
"display_text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.",
"spoken_text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.",
"pronunciation_notes": "첫 질문은 호기심이 느껴지게, 두 문장 사이에는 자연스럽게 쉰다."
},
{
"id": "u02",
"block_ids": [
"b2-polarity"
],
"display_text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.",
"spoken_text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.",
"pronunciation_notes": "산소 하나·수소 둘을 또렷이 읽고 마이너스와 플러스의 대비를 살린다."
},
{
"id": "u03",
"block_ids": [
"b3-hydrogen-bond"
],
"display_text": "그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.",
"spoken_text": "그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.",
"pronunciation_notes": "수소결합은 한 단어로 읽는다. 분자 사이와 한 분자 안의 차이가 들리도록 문장 사이에서 쉰다."
},
{
"id": "u04",
"block_ids": [
"b4-cohesion"
],
"display_text": "수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.",
"spoken_text": "수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.",
"pronunciation_notes": "생겼다 끊어지기를 자연스럽게 이어 읽는다. 영원히와 그래도의 대비를 살린다."
},
{
"id": "u05",
"block_ids": [
"b5-surface"
],
"display_text": "이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.",
"spoken_text": "이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.",
"pronunciation_notes": "물 안쪽과 공기 쪽의 대비를 살린다. 물 분자 이웃을 끊어 읽지 않는다."
},
{
"id": "u06",
"block_ids": [
"b6-energy"
],
"display_text": "이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.",
"spoken_text": "이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.",
"pronunciation_notes": "에너지를 보태야 합니다 뒤에서 쉰다. 표면장력은 한 단어로 또렷이 읽는다."
},
{
"id": "u07",
"block_ids": [
"b7-round"
],
"display_text": "같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.",
"spoken_text": "같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.",
"pronunciation_notes": "같은 양·중력·바닥 조건을 또렷하게 읽는다. 세 문장의 쉼을 유지한다."
},
{
"id": "u08",
"block_ids": [
"b8-answer"
],
"display_text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"spoken_text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"pronunciation_notes": "진짜 껍질이 있는 건 아닙니다 뒤에서 쉰다. 마지막 문장은 자연스러운 설명 속도로 읽는다."
}
]
}
}
@@ -0,0 +1,12 @@
# TTS 발화 단위 분할 검토
- 제작 ID: water-hydrogen-bond-surface-tension / 05-tts-split r1.
- 입력: story 승인된 [03-script r1](../../03-script/r1/artifact.json). 실제 승인 응답은 “확정합니다.”다.
- 결과: [artifact.json](artifact.json)의 u01–u08. 의미가 이어지는 대본 블록을 각각 한 발화 단위로 두고, 각 단위 안의 문장부호로 호흡을 안내한다.
- 표시 텍스트와 발화 텍스트는 원본 그대로다. 문장을 새로 작성하거나 발음용으로 의미를 바꾸지 않았다. 숫자·약어·외국어 변환은 필요하지 않다.
- 각 단위의 block_ids는 b1-question부터 b8-answer까지 순서대로 한 번씩 대응한다. 전체 표시/발화 텍스트를 줄바꿈으로 이어 원본 full_text와 정확히 일치하는지 검사한다.
- 발음 메모는 수소결합·표면장력의 용어, 전하와 표면 조건의 대비, 문장 사이의 쉼을 다룬다. 실제 발음·호흡은 06 WAV에서 별도로 확인한다.
- 단위 길이·음성 길이는 아직 실측 전이다. 5초에 맞춘 분할이나 재배치는 하지 않았다. 화면 컷과 자막은 실제 통합 WAV를 받은 뒤 정한다.
- 적용 지침: [음성 기준](../../../../../docs/short-video-guide.md#음성을-기준으로-컷과-연결을-확정한다). 원리 설명에 필요하지 않은 인물 대화·위기·반전은 추가하지 않았다.
- 검사 결과: JSON Schema Draft 2020-12로 진행 기록과 01–06의 7개 JSON을 검사해 종료코드 0을 확인했다. 실제 승인·선행 버전·8개 유일 ID·원문 표시/발화 텍스트의 정확한 일치·06 요청 동일성도 통과했다.
- 현재 상태: complete. 추가 사용자 승인은 필요하지 않다.
@@ -0,0 +1,238 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"revision": 1,
"stage_id": "06-tts",
"inputs": [
{
"stage_id": "05-tts-split",
"revision": 1
}
],
"payload": {
"request": {
"engine": "Qwen3-TTS",
"conda_env": "qwen3-tts",
"language": "한국어",
"units": [
{
"id": "u01",
"block_ids": [
"b1-question"
],
"display_text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.",
"spoken_text": "작은 물방울은 왜 동그랗게 뭉칠까요? 비밀은 물속의 작은 분자들에 있습니다.",
"pronunciation_notes": "첫 질문은 호기심이 느껴지게, 두 문장 사이에는 자연스럽게 쉰다."
},
{
"id": "u02",
"block_ids": [
"b2-polarity"
],
"display_text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.",
"spoken_text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요. 산소 쪽은 살짝 마이너스, 수소 쪽은 살짝 플러스 성질을 띱니다.",
"pronunciation_notes": "산소 하나·수소 둘을 또렷이 읽고 마이너스와 플러스의 대비를 살린다."
},
{
"id": "u03",
"block_ids": [
"b3-hydrogen-bond"
],
"display_text": "그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.",
"spoken_text": "그래서 한 분자의 수소 쪽과 옆 분자의 산소 쪽이 서로 끌어당깁니다. 이 분자 사이의 끌림을 수소결합이라고 해요. 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다.",
"pronunciation_notes": "수소결합은 한 단어로 읽는다. 분자 사이와 한 분자 안의 차이가 들리도록 문장 사이에서 쉰다."
},
{
"id": "u04",
"block_ids": [
"b4-cohesion"
],
"display_text": "수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.",
"spoken_text": "수소결합은 분자들을 영원히 묶는 끈은 아닙니다. 물속에서는 연결이 생겼다 끊어지기를 반복해요. 그래도 많은 분자가 서로 끌어당기니 물은 함께 뭉치려는 성질을 보입니다.",
"pronunciation_notes": "생겼다 끊어지기를 자연스럽게 이어 읽는다. 영원히와 그래도의 대비를 살린다."
},
{
"id": "u05",
"block_ids": [
"b5-surface"
],
"display_text": "이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.",
"spoken_text": "이제 물의 표면을 볼까요? 물 안쪽은 다른 물 분자들에 둘러싸여 있지만, 공기와 만나는 표면은 공기 쪽에 물 분자 이웃이 적습니다.",
"pronunciation_notes": "물 안쪽과 공기 쪽의 대비를 살린다. 물 분자 이웃을 끊어 읽지 않는다."
},
{
"id": "u06",
"block_ids": [
"b6-energy"
],
"display_text": "이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.",
"spoken_text": "이런 표면을 더 넓게 만들려면 에너지를 보태야 합니다. 그래서 물은 표면의 넓이를 줄이는 쪽으로 모양을 바꾸려 해요. 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다.",
"pronunciation_notes": "에너지를 보태야 합니다 뒤에서 쉰다. 표면장력은 한 단어로 또렷이 읽는다."
},
{
"id": "u07",
"block_ids": [
"b7-round"
],
"display_text": "같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.",
"spoken_text": "같은 양의 물이라면, 공 모양이 겉면을 가장 작게 만들 수 있어요. 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 모양이 달라질 수 있어요.",
"pronunciation_notes": "같은 양·중력·바닥 조건을 또렷하게 읽는다. 세 문장의 쉼을 유지한다."
},
{
"id": "u08",
"block_ids": [
"b8-answer"
],
"display_text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"spoken_text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다. 수소결합으로 서로 끌어당기는 분자들과, 표면을 넓히기 어려운 성질이 작은 물방울의 둥근 모양을 만드는 거예요.",
"pronunciation_notes": "진짜 껍질이 있는 건 아닙니다 뒤에서 쉰다. 마지막 문장은 자연스러운 설명 속도로 읽는다."
}
]
},
"result": {
"engine": "Qwen3-TTS",
"model": "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
"voice": "Sohee",
"files": [
{
"unit_id": "u01",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u01.wav",
"kind": "audio",
"verified": true,
"duration_ms": 7920,
"width": null,
"height": null
}
},
{
"unit_id": "u02",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u02.wav",
"kind": "audio",
"verified": true,
"duration_ms": 10160,
"width": null,
"height": null
}
},
{
"unit_id": "u03",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u03.wav",
"kind": "audio",
"verified": true,
"duration_ms": 14640,
"width": null,
"height": null
}
},
{
"unit_id": "u04",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u04.wav",
"kind": "audio",
"verified": true,
"duration_ms": 16640,
"width": null,
"height": null
}
},
{
"unit_id": "u05",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u05.wav",
"kind": "audio",
"verified": true,
"duration_ms": 14080,
"width": null,
"height": null
}
},
{
"unit_id": "u06",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u06.wav",
"kind": "audio",
"verified": true,
"duration_ms": 18080,
"width": null,
"height": null
}
},
{
"unit_id": "u07",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u07.wav",
"kind": "audio",
"verified": true,
"duration_ms": 16240,
"width": null,
"height": null
}
},
{
"unit_id": "u08",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/u08.wav",
"kind": "audio",
"verified": true,
"duration_ms": 12800,
"width": null,
"height": null
}
}
],
"narration": {
"path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/narration.wav",
"kind": "audio",
"verified": true,
"duration_ms": 110560,
"width": null,
"height": null
},
"unit_ranges": [
{
"unit_id": "u01",
"start_ms": 0,
"end_ms": 7920
},
{
"unit_id": "u02",
"start_ms": 7920,
"end_ms": 18080
},
{
"unit_id": "u03",
"start_ms": 18080,
"end_ms": 32720
},
{
"unit_id": "u04",
"start_ms": 32720,
"end_ms": 49360
},
{
"unit_id": "u05",
"start_ms": 49360,
"end_ms": 63440
},
{
"unit_id": "u06",
"start_ms": 63440,
"end_ms": 81520
},
{
"unit_id": "u07",
"start_ms": 81520,
"end_ms": 97760
},
{
"unit_id": "u08",
"start_ms": 97760,
"end_ms": 110560
}
]
}
}
}
@@ -0,0 +1,63 @@
# Qwen3-TTS 요청과 환경 확인
- 제작 ID: water-hydrogen-bond-surface-tension / 06-tts r1.
- 입력: [05 분할 r1](../../05-tts-split/r1/artifact.json), story 승인된 03-script r1.
- 요청: [artifact.json](artifact.json)의 Qwen3-TTS / qwen3-tts / 한국어 / u01–u08.
- 요청 작성 당시 result=null이었다. 현재 실제 추론·WAV·단위 구간 결과를 artifact.json에 기록했다. 청취 검수와 문장 내부 정렬은 미확인이다.
- 기존 환경 확인: Python 3.12.15, qwen-tts 0.1.1, PyTorch 2.11.0+cu128, CUDA 사용 가능, RTX 4080 SUPER 약 16GB. 이 확인은 음성 생성 성공이 아니다.
- 기존 캐시에 Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice가 있다. 실제 모델 로딩과 한국어·화자 확인 결과는 아래에 기록했다.
- import에서 SoX 부재 및 flash-attn 부재 경고가 나왔다. 패키지 import는 종료코드 0이었다. 기존 PyTorch 방식의 CustomVoice 추론 지원을 확인하며 환경을 재설치하지 않는다.
- 공식 사용 근거: [Qwen3-TTS Python Package Usage](https://github.com/QwenLM/Qwen3-TTS#python-package-usage). 모델에서 실제 지원 목록을 확인한 뒤 Korean 언어와 한국어 화자 Sohee를 사용한다. 요청 language의 “한국어”는 보존한다.
- 적용 지침: [음성 기준](../../../../../docs/short-video-guide.md#음성을-기준으로-컷과-연결을-확정한다). 승인 원문·문장부호·동일 화자를 유지한다. 실제 결과 부재를 예상 시간·가상 WAV로 채우지 않는다.
- 요청 당시 확인 계획: 단위별 실제 WAV, 원래 속도의 통합 WAV, 샘플 기반 구간·길이·무누락·무중복, 실제 청취. 아래 완료한 검사와 미확인 사항을 구분한다. 필수 청취 확인 전 07을 작성하지 않는다.
## 실제 로딩과 추론 진행
- 모델명으로 local_files_only 로딩을 시도했으나 캐시의 refs가 없어 LocalEntryNotFoundError/OSError로 종료코드 1이었다. 스냅샷 본문 파일과 가중치는 존재하며, 기존 스냅샷을 직접 지정해 로딩에 성공했다. 캐시·환경을 수정하거나 모델을 다운로드하지 않았다.
- 로딩한 모델: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice, 스냅샷 0c0e3051f131929182e2c023b9537f8b1c68adfe. CUDA·bfloat16·PyTorch SDPA로 로딩했고 약 6.39초가 걸렸다. flash-attn은 설치하지 않았다.
- 모델의 실제 지원 목록에서 korean 언어와 sohee 화자를 확인했다. API에서는 language=Korean, speaker=Sohee를 사용했다. 승인된 spoken_text를 그대로 전달하며, 자연스러운 한국어 설명 속도·문장 사이 쉼을 지시했다. 재생 속도 조정은 하지 않는다.
- 기존 패키지의 generate_custom_voice를 일회성 실행해 요청 순서대로 WAV 8개를 생성했다. 추론 실행 종료코드 0과 GENERATED_ALL 출력을 확인했다. 저장 형식은 WAV / PCM_16 / 24000Hz / 모노다.
- 청취 수단 확인: u01 실제 WAV를 오디오 입력으로 전달했으나 도구가 “audio content omitted because you do not support audio input”을 반환했다. 현재 세션에서 실제 청취를 수행할 수 없다. 파일·텍스트·길이 검사를 발음·호흡·누락의 청취 검사로 대신하지 않는다.
- 청취 미확인이 남으면 06을 complete로 처리하지 않고 07–09를 보류한다. 이는 새 사용자 승인 경계가 아니라 06의 필수 실제 검증 자료 부재다. 유효한 story 승인은 유지한다.
## 실제 파일과 구간 검증
- 통합 파일: [narration.wav](../../../media/06-tts/r1/narration.wav).
- 실제 길이: 110560ms / 1분 50.56초 / 2653440 샘플. 180000ms 상한 이내다.
- 요청 u01–u08마다 실제 WAV가 한 개씩 있으며, 요청 순서로 연결했다. 단위와 통합 파일의 RIFF/WAV PCM 헤더, 모노·16bit·24000Hz, 양수 프레임 수, 헤더와 PCM 바이트 수 일치를 검사했다.
- 단위 PCM을 그대로 이어 붙이고 통합 파일을 다시 읽어 전체 PCM 바이트가 정확히 같음을 확인했다. 추가 쉼·자르기·리샘플링·재생 속도 변경은 없다. 파일 통합에서의 누락·중복은 없으며, 실제 발화가 원문을 모두 읽었는지는 청취 미확인이다.
- 구간은 누적 샘플 수 × 1000 / 24000으로 측정했다. 이번 파일은 모든 경계가 정확한 정수 ms이며 0부터 110560ms까지 빈 구간·겹침 없이 덮는다. 문장·단어 내부의 발화 위치를 추정한 정렬 결과는 만들지 않았다.
- 파형 표본은 유한하고 무음 파일이 아니다. 8개 단위에서 디지털 최대 진폭에 닿는 표본은 0개다. 이 검사는 잡음·왜곡·호흡·발음의 실제 청취를 대체하지 않는다.
- 통합·파일·구간 검사 실행 종료코드: 0. media.verified=true는 위 실제 파일·형식·메타데이터 검사이며, 전체 단계 청취 검수 통과를 의미하지 않는다.
| 단위 / 실제 파일 | 통합 시작–끝(ms) | 단위 길이(ms) | 원본 블록 / 확인할 내용 |
| --- | --- | --- | --- |
| [u01.wav](../../../media/06-tts/r1/u01.wav) | 0–7920 | 7920 | b1-question / 물방울 질문 |
| [u02.wav](../../../media/06-tts/r1/u02.wav) | 7920–18080 | 10160 | b2-polarity / 산소·수소, 플러스·마이너스 |
| [u03.wav](../../../media/06-tts/r1/u03.wav) | 18080–32720 | 14640 | b3-hydrogen-bond / 수소결합과 분자 내부 결합의 구별 |
| [u04.wav](../../../media/06-tts/r1/u04.wav) | 32720–49360 | 16640 | b4-cohesion / 생겼다 끊어지는 연결과 응집 |
| [u05.wav](../../../media/06-tts/r1/u05.wav) | 49360–63440 | 14080 | b5-surface / 안쪽과 표면의 이웃 차이 |
| [u06.wav](../../../media/06-tts/r1/u06.wav) | 63440–81520 | 18080 | b6-energy / 에너지 비용과 표면장력 |
| [u07.wav](../../../media/06-tts/r1/u07.wav) | 81520–97760 | 16240 | b7-round / 같은 양·중력·바닥 조건 |
| [u08.wav](../../../media/06-tts/r1/u08.wav) | 97760–110560 | 12800 | b8-answer / 실제 껍질 오해를 막고 답 회수 |
## 보류와 재개 조건
- 제출 당시 상태: awaiting_input. 실제 생성은 성공했고 파일·단위 구간 검사는 완료했으나 필수 청취 결과가 없었다. 당시 총괄은 audio_listening_unavailable 문제를 blocking=true로 기록했다. 아래 사용자 확인으로 해소했다.
- 미확인: 한국어로 정확히 읽었는지, 수소결합·표면장력 등 용어 발음, 자연스러운 호흡과 단위 사이 연결, 원문 발화 누락·중복, 실제 잡음·왜곡 여부. 자동 전사나 청취 결과를 만들지 않았다.
- 재개에 필요한 자료: 이 실제 WAV를 청취할 수 있는 환경 또는 단위 ID·구간·이상 여부를 포함한 실제 청취 검수 결과. [승인된 원문](../../03-script/r1/review.md)과 비교해야 한다. 문제가 있으면 영향을 받는 음성 단위와 06 새 버전을 배정하고 기존 파일은 보존한다.
- 다음 경계: 06의 필수 확인을 충족한 뒤 07–09를 준비해 scenes 검토를 받는다. 기존 topic/story 승인은 유지하며 지금 새로운 승인 경계를 추가하지 않는다. 07–14 결과·이미지는 아직 생성하지 않았다.
## 제출 전 검사
- 최종 검사 종료코드 0: 진행 기록과 01–06의 7개 JSON 스키마, 승인·선행 버전·상태, 8개 요청 단위, 9개 실제 WAV, 110560ms의 샘플 기반 구간과 통합 PCM 동일성, 문서의 31개 로컬 링크를 확인했다.
- git diff --check 종료코드 0. 이번 제작물은 projects/ 아래에 있으며 지침·도구 프로그램·전역 환경 설정을 변경하지 않았다.
- 이 기계적 검사에는 실제 청취가 포함되지 않았다. 당시 청취 미확인 문제와 awaiting_input 상태를 유지했다.
## 사용자 청취 확인과 재개
- 실제 사용자 응답: “내레이션 WAV 괜찮습니다.”
- 확인 대상: 앞서 제공한 06-tts r1의 narration.wav / 110560ms. 사용자 청취 확인을 근거로 이 음성을 사용할 수 있다고 기록한다.
- 이 확인은 사용자의 청취 결과다. Codex가 직접 들었다고 기록하거나 전달받지 않은 세부 발음·잡음 수치를 만들어 넣지 않는다.
- 현재 상태: complete. 기존 파일·실측 구간 검사와 사용자 확인으로 진행 조건을 충족했다. 총괄이 blocking 문제를 해소하고 07–09 준비를 재개했다.
- 단어·문장 내부 정렬은 이 응답만으로 확인되지 않는다. 07에서 실제 WAV의 자동 정렬과 승인 원문의 대응을 별도로 검사한다. 승인된 대본·제목·기존 음성 파일은 변경하지 않는다.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,531 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "07-cuts",
"revision": 1,
"inputs": [
{
"stage_id": "05-tts-split",
"revision": 1
},
{
"stage_id": "06-tts",
"revision": 1
}
],
"payload": {
"narration_duration_ms": 110560,
"timing_evidence": "06-tts r1의 narration.wav는 WAV/PCM_16/모노/24000Hz, 2653440 샘플=110560ms다. 8개 단위 파일의 PCM과 통합 PCM 동일성, 누적 샘플 기반 unit_ranges를 확인했다. 사용자가 통합 WAV에 대해 '내레이션 WAV 괜찮습니다.'라고 청취 확인했다; Codex 직접 청취는 아니다. 실제 단위 WAV를 Whisper openai/whisper-large-v3-turbo(41f01f3fe87f28c78e2fbf8b568835947dd65ed9)로 한국어 전사하고 단어별 timestamp를 추출했다. alignment.json에 원시 결과를 보존했다. 단위 offset을 더해 통합 시간으로 옮겼고 모든 내부 컷 경계 및 자막 시작/끝은 실제 ASR timestamp에서 선택했다. 자동 전사 텍스트의 띄어쓰기·문장부호·용어·조사 차이는 승인된 03/05 원문과 대조해 자막 원문을 보존했다. 글자 수 시간배분·속도변경·ASR 시간 사이 보간은 하지 않았다. 단어 시간은 자동 정렬 결과이며 프레임 단위 수동 청취 검증은 아니다; 최종 출력에서 자막·주석 정렬과 모바일 판독성을 다시 확인한다.",
"cuts": [
{
"id": "c01",
"start_ms": 0,
"end_ms": 4380,
"unit_ids": [
"u01"
],
"narration_text": "작은 물방울은 왜 동그랗게 뭉칠까요?"
},
{
"id": "c02",
"start_ms": 4380,
"end_ms": 7920,
"unit_ids": [
"u01"
],
"narration_text": "비밀은 물속의 작은 분자들에 있습니다."
},
{
"id": "c03",
"start_ms": 7920,
"end_ms": 11920,
"unit_ids": [
"u02"
],
"narration_text": "물 분자는 산소 하나와 수소 둘로 이루어져 있어요."
},
{
"id": "c04",
"start_ms": 11920,
"end_ms": 14780,
"unit_ids": [
"u02"
],
"narration_text": "산소 쪽은 살짝 마이너스,"
},
{
"id": "c05",
"start_ms": 14780,
"end_ms": 18080,
"unit_ids": [
"u02"
],
"narration_text": "수소 쪽은 살짝 플러스 성질을 띱니다."
},
{
"id": "c06",
"start_ms": 18080,
"end_ms": 20340,
"unit_ids": [
"u03"
],
"narration_text": "그래서 한 분자의 수소 쪽과"
},
{
"id": "c07",
"start_ms": 20340,
"end_ms": 24380,
"unit_ids": [
"u03"
],
"narration_text": "옆 분자의 산소 쪽이 서로 끌어당깁니다."
},
{
"id": "c08",
"start_ms": 24380,
"end_ms": 28480,
"unit_ids": [
"u03"
],
"narration_text": "이 분자 사이의 끌림을 수소결합이라고 해요."
},
{
"id": "c09",
"start_ms": 28480,
"end_ms": 32720,
"unit_ids": [
"u03"
],
"narration_text": "한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다."
},
{
"id": "c10",
"start_ms": 32720,
"end_ms": 35560,
"unit_ids": [
"u04"
],
"narration_text": "수소결합은 분자들을 영원히 묶는"
},
{
"id": "c11",
"start_ms": 35560,
"end_ms": 40360,
"unit_ids": [
"u04"
],
"narration_text": "끈은 아닙니다. 물속에서는 연결이 생겼다"
},
{
"id": "c12",
"start_ms": 40360,
"end_ms": 45120,
"unit_ids": [
"u04"
],
"narration_text": "끊어지기를 반복해요. 그래도 많은 분자가 서로"
},
{
"id": "c13",
"start_ms": 45120,
"end_ms": 49360,
"unit_ids": [
"u04"
],
"narration_text": "끌어당기니 물은 함께 뭉치려는 성질을 보입니다."
},
{
"id": "c14",
"start_ms": 49360,
"end_ms": 52080,
"unit_ids": [
"u05"
],
"narration_text": "이제 물의 표면을 볼까요?"
},
{
"id": "c15",
"start_ms": 52080,
"end_ms": 56120,
"unit_ids": [
"u05"
],
"narration_text": "물 안쪽은 다른 물 분자들에 둘러싸여"
},
{
"id": "c16",
"start_ms": 56120,
"end_ms": 61000,
"unit_ids": [
"u05"
],
"narration_text": "있지만, 공기와 만나는 표면은 공기 쪽에"
},
{
"id": "c17",
"start_ms": 61000,
"end_ms": 63440,
"unit_ids": [
"u05"
],
"narration_text": "물 분자 이웃이 적습니다."
},
{
"id": "c18",
"start_ms": 63440,
"end_ms": 67440,
"unit_ids": [
"u06"
],
"narration_text": "이런 표면을 더 넓게 만들려면"
},
{
"id": "c19",
"start_ms": 67440,
"end_ms": 70820,
"unit_ids": [
"u06"
],
"narration_text": "에너지를 보태야 합니다."
},
{
"id": "c20",
"start_ms": 70820,
"end_ms": 73120,
"unit_ids": [
"u06"
],
"narration_text": "그래서 물은 표면의 넓이를"
},
{
"id": "c21",
"start_ms": 73120,
"end_ms": 77040,
"unit_ids": [
"u06"
],
"narration_text": "줄이는 쪽으로 모양을 바꾸려 해요."
},
{
"id": "c22",
"start_ms": 77040,
"end_ms": 81520,
"unit_ids": [
"u06"
],
"narration_text": "표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다."
},
{
"id": "c23",
"start_ms": 81520,
"end_ms": 82960,
"unit_ids": [
"u07"
],
"narration_text": "같은 양의 물이라면,"
},
{
"id": "c24",
"start_ms": 82960,
"end_ms": 87380,
"unit_ids": [
"u07"
],
"narration_text": "공 모양이 겉면을 가장 작게 만들 수 있어요."
},
{
"id": "c25",
"start_ms": 87380,
"end_ms": 91520,
"unit_ids": [
"u07"
],
"narration_text": "중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는"
},
{
"id": "c26",
"start_ms": 91520,
"end_ms": 96160,
"unit_ids": [
"u07"
],
"narration_text": "이유입니다. 큰 물방울이나 바닥에 닿은 물방울은"
},
{
"id": "c27",
"start_ms": 96160,
"end_ms": 97760,
"unit_ids": [
"u07"
],
"narration_text": "모양이 달라질 수 있어요."
},
{
"id": "c28",
"start_ms": 97760,
"end_ms": 101980,
"unit_ids": [
"u08"
],
"narration_text": "물방울을 감싼 진짜 껍질이 있는 건 아닙니다."
},
{
"id": "c29",
"start_ms": 101980,
"end_ms": 104560,
"unit_ids": [
"u08"
],
"narration_text": "수소결합으로 서로 끌어당기는 분자들과,"
},
{
"id": "c30",
"start_ms": 104560,
"end_ms": 107360,
"unit_ids": [
"u08"
],
"narration_text": "표면을 넓히기 어려운 성질이"
},
{
"id": "c31",
"start_ms": 107360,
"end_ms": 110560,
"unit_ids": [
"u08"
],
"narration_text": "작은 물방울의 둥근 모양을 만드는 거예요."
}
],
"captions": [
{
"id": "cap01",
"start_ms": 0,
"end_ms": 3060,
"text": "작은 물방울은 왜\n동그랗게 뭉칠까요?"
},
{
"id": "cap02",
"start_ms": 4380,
"end_ms": 7900,
"text": "비밀은 물속의\n작은 분자들에 있습니다."
},
{
"id": "cap03",
"start_ms": 7920,
"end_ms": 10160,
"text": "물 분자는 산소 하나와\n수소 둘로"
},
{
"id": "cap04",
"start_ms": 10160,
"end_ms": 11480,
"text": "이루어져 있어요."
},
{
"id": "cap05",
"start_ms": 11920,
"end_ms": 14500,
"text": "산소 쪽은 살짝 마이너스,"
},
{
"id": "cap06",
"start_ms": 14780,
"end_ms": 18040,
"text": "수소 쪽은 살짝 플러스\n성질을 띱니다."
},
{
"id": "cap07",
"start_ms": 18080,
"end_ms": 20340,
"text": "그래서 한 분자의\n수소 쪽과"
},
{
"id": "cap08",
"start_ms": 20340,
"end_ms": 23280,
"text": "옆 분자의 산소 쪽이\n서로 끌어당깁니다."
},
{
"id": "cap09",
"start_ms": 24380,
"end_ms": 27300,
"text": "이 분자 사이의 끌림을\n수소결합이라고 해요."
},
{
"id": "cap10",
"start_ms": 28480,
"end_ms": 30060,
"text": "한 물 분자 안의"
},
{
"id": "cap11",
"start_ms": 30060,
"end_ms": 32620,
"text": "산소와 수소를 묶는\n결합과는 다릅니다."
},
{
"id": "cap12",
"start_ms": 32720,
"end_ms": 35560,
"text": "수소결합은 분자들을\n영원히 묶는"
},
{
"id": "cap13",
"start_ms": 35560,
"end_ms": 37780,
"text": "끈은 아닙니다."
},
{
"id": "cap14",
"start_ms": 37780,
"end_ms": 40360,
"text": "물속에서는\n연결이 생겼다"
},
{
"id": "cap15",
"start_ms": 40360,
"end_ms": 42940,
"text": "끊어지기를 반복해요."
},
{
"id": "cap16",
"start_ms": 42940,
"end_ms": 46060,
"text": "그래도 많은 분자가\n서로 끌어당기니"
},
{
"id": "cap17",
"start_ms": 46060,
"end_ms": 49340,
"text": "물은 함께 뭉치려는\n성질을 보입니다."
},
{
"id": "cap18",
"start_ms": 49360,
"end_ms": 52080,
"text": "이제 물의 표면을 볼까요?"
},
{
"id": "cap19",
"start_ms": 52080,
"end_ms": 57120,
"text": "물 안쪽은 다른 물 분자들에\n둘러싸여 있지만,"
},
{
"id": "cap20",
"start_ms": 57120,
"end_ms": 61000,
"text": "공기와 만나는 표면은\n공기 쪽에"
},
{
"id": "cap21",
"start_ms": 61000,
"end_ms": 63420,
"text": "물 분자 이웃이 적습니다."
},
{
"id": "cap22",
"start_ms": 63440,
"end_ms": 67440,
"text": "이런 표면을\n더 넓게 만들려면"
},
{
"id": "cap23",
"start_ms": 67440,
"end_ms": 69840,
"text": "에너지를 보태야 합니다."
},
{
"id": "cap24",
"start_ms": 70820,
"end_ms": 73120,
"text": "그래서 물은\n표면의 넓이를"
},
{
"id": "cap25",
"start_ms": 73120,
"end_ms": 75420,
"text": "줄이는 쪽으로\n모양을 바꾸려 해요."
},
{
"id": "cap26",
"start_ms": 77040,
"end_ms": 79320,
"text": "표면이 늘어나는 데\n저항하는"
},
{
"id": "cap27",
"start_ms": 79320,
"end_ms": 81360,
"text": "이 성질이\n표면장력입니다."
},
{
"id": "cap28",
"start_ms": 81520,
"end_ms": 82960,
"text": "같은 양의 물이라면,"
},
{
"id": "cap29",
"start_ms": 82960,
"end_ms": 86760,
"text": "공 모양이 겉면을\n가장 작게 만들 수 있어요."
},
{
"id": "cap30",
"start_ms": 87380,
"end_ms": 89620,
"text": "중력이나 바닥의\n영향을 적게 받는"
},
{
"id": "cap31",
"start_ms": 89620,
"end_ms": 92740,
"text": "작은 물방울이\n둥글어지는 이유입니다."
},
{
"id": "cap32",
"start_ms": 93420,
"end_ms": 96160,
"text": "큰 물방울이나\n바닥에 닿은 물방울은"
},
{
"id": "cap33",
"start_ms": 96160,
"end_ms": 97740,
"text": "모양이 달라질 수 있어요."
},
{
"id": "cap34",
"start_ms": 97760,
"end_ms": 99820,
"text": "물방울을 감싼\n진짜 껍질이"
},
{
"id": "cap35",
"start_ms": 99820,
"end_ms": 101980,
"text": "있는 건 아닙니다."
},
{
"id": "cap36",
"start_ms": 101980,
"end_ms": 104560,
"text": "수소결합으로 서로\n끌어당기는 분자들과,"
},
{
"id": "cap37",
"start_ms": 104560,
"end_ms": 107360,
"text": "표면을 넓히기\n어려운 성질이"
},
{
"id": "cap38",
"start_ms": 107360,
"end_ms": 110540,
"text": "작은 물방울의 둥근 모양을\n만드는 거예요."
}
]
}
}
@@ -0,0 +1,126 @@
# 실제 음성 기준 컷·자막 검토
- 제작 ID: water-hydrogen-bond-surface-tension / 07-cuts r1 / scenes 검토 제출.
- 입력: [05 분할 r1](../../05-tts-split/r1/artifact.json), [06 실제 음성 r1](../../06-tts/r1/artifact.json). 유효한 story 승인은 유지한다.
- 결과: [artifact.json](artifact.json), [원시 자동 정렬 근거](alignment.json), [실제 통합 WAV](../../../media/06-tts/r1/narration.wav).
- 31개 컷 / 38개 별도 자막 / 110560ms. 각 컷 1440–4880ms이며 모두 5000ms 이내다. 0에서 음성 끝까지 빈 구간·중복 없이 이어진다.
- 제출 당시 상태: 형식·시간·참조 검사 후 awaiting_review. 아래 사용자 승인으로 complete 처리했다.
- 실제 검사 결과: 진행 기록과 01–09의 10개 JSON 스키마, 승인·선행 버전, 기존 9개 WAV의 PCM 동일성, 31개 컷의 전체 포함·5초 상한, 38개 자막의 원문 일치·무겹침·실제 자동 timestamp 대응을 검사해 종료코드 0을 확인했다. 정렬 원시 결과는 별도 근거 파일이며 단계 artifact 스키마에 필드를 추가하지 않았다.
## 시간 근거와 확인 범위
통합 WAV는 모노 PCM_16 / 24000Hz / 2653440 샘플이다. 06의 단위 PCM과 통합 PCM은 동일하고 단위 구간은 누적 샘플로 측정했다. 사용자는 실제 통합 파일에 “내레이션 WAV 괜찮습니다.”라고 확인했다. Codex 직접 청취라고 기록하지 않는다.
실제 u01–u08 WAV를 기존 환경의 Transformers Whisper로 처리해 단어 timestamp를 추출했다. 모델은 openai/whisper-large-v3-turbo, 리비전 41f01f3fe87f28c78e2fbf8b568835947dd65ed9이며 추론 종료코드는 0이다. [공식 모델 사용 문서](https://huggingface.co/openai/whisper-large-v3-turbo#usage)의 word timestamp 기능을 사용했다. 음성을 새로 만들거나 TTS 도구를 바꾼 작업이 아니다. 패키지 설치·업데이트·전역 설정 변경은 하지 않았다.
alignment.json의 timestamp는 단위 파일 안의 초 단위 자동 정렬 결과다. 각 시작·끝을 ms로 변환하고 06 unit_ranges의 offset_ms를 더했다. 모든 내부 컷 경계와 자막 시작·끝이 실제 추출 timestamp에 존재하는지 검사한다. 단위 마지막 컷은 실제 WAV 끝까지 여백을 포함한다. 글자 수 비례 배분·시간 보간·음성 자르기·속도 변경은 없다.
자동 전사의 다음 차이를 원문과 대조했다. 원시 전사 결과는 근거 파일에 보존하고 captions·narration_text는 승인된 원문을 사용한다. 전사 차이를 근거로 사용자 확인된 음성을 임의 재생성하지 않는다.
| 단위 | 전사와 원문의 대표 차이 | 이번 처리 |
| --- | --- | --- |
| u01 | 물 속의 / 물속의 | 원문의 띄어쓰기 유지 |
| u02 | 수소들로 / 수소 둘로, 띕니다 / 띱니다 | 원문 유지. 수소 둘로는 해당 전사 구간의 시간을 사용 |
| u03 | 수소 결합, 문장부호 생략 | 원문의 수소결합·문장부호 유지 |
| u04 | 건 / 끈은 | 원문의 끈은 유지. 묶는 이후와 아닙니다 이전의 실제 추출 구간에 대응 |
| u05 | 볼까요 뒤 쉼표 / 물음표 | 원문의 질문 유지 |
| u06 | 늘어나는데 / 늘어나는 데, 표면 장력 | 원문 띄어쓰기·용어 유지 |
| u07 | 모양의 / 모양이, 둥그러지는 / 둥글어지는 | 원문의 조사·용어 유지 |
| u08 | 수소 결합, 쉼표 차이 | 원문의 용어·문장부호 유지 |
이 대응은 사용자 청취 확인과 실제 음성에서 추출한 자동 시간에 근거한다. 프레임 단위 수동 청취 검증·ASR의 무오류를 주장하지 않는다. 최종 13·14의 실제 출력에서 자막 위치·타이밍·판독성을 재검수한다.
## 31개 컷
한 문장이 여러 화면 컷에 걸칠 수 있다. 컷 사이 음성은 그대로 연속 재생한다. 화면 연속성이 필요한 구간은 08에서 continuous로 연결하며, 의미 없이 매 컷을 하드 컷하지 않는다.
| 컷 | 통합 시작–끝(ms) | 길이(ms) | 발화 단위 | 해당 발화 원문 |
| --- | --- | --- | --- | --- |
| c01 | 0–4380 | 4380 | u01 | 작은 물방울은 왜 동그랗게 뭉칠까요? |
| c02 | 4380–7920 | 3540 | u01 | 비밀은 물속의 작은 분자들에 있습니다. |
| c03 | 7920–11920 | 4000 | u02 | 물 분자는 산소 하나와 수소 둘로 이루어져 있어요. |
| c04 | 11920–14780 | 2860 | u02 | 산소 쪽은 살짝 마이너스, |
| c05 | 14780–18080 | 3300 | u02 | 수소 쪽은 살짝 플러스 성질을 띱니다. |
| c06 | 18080–20340 | 2260 | u03 | 그래서 한 분자의 수소 쪽과 |
| c07 | 20340–24380 | 4040 | u03 | 옆 분자의 산소 쪽이 서로 끌어당깁니다. |
| c08 | 24380–28480 | 4100 | u03 | 이 분자 사이의 끌림을 수소결합이라고 해요. |
| c09 | 28480–32720 | 4240 | u03 | 한 물 분자 안의 산소와 수소를 묶는 결합과는 다릅니다. |
| c10 | 32720–35560 | 2840 | u04 | 수소결합은 분자들을 영원히 묶는 |
| c11 | 35560–40360 | 4800 | u04 | 끈은 아닙니다. 물속에서는 연결이 생겼다 |
| c12 | 40360–45120 | 4760 | u04 | 끊어지기를 반복해요. 그래도 많은 분자가 서로 |
| c13 | 45120–49360 | 4240 | u04 | 끌어당기니 물은 함께 뭉치려는 성질을 보입니다. |
| c14 | 49360–52080 | 2720 | u05 | 이제 물의 표면을 볼까요? |
| c15 | 52080–56120 | 4040 | u05 | 물 안쪽은 다른 물 분자들에 둘러싸여 |
| c16 | 56120–61000 | 4880 | u05 | 있지만, 공기와 만나는 표면은 공기 쪽에 |
| c17 | 61000–63440 | 2440 | u05 | 물 분자 이웃이 적습니다. |
| c18 | 63440–67440 | 4000 | u06 | 이런 표면을 더 넓게 만들려면 |
| c19 | 67440–70820 | 3380 | u06 | 에너지를 보태야 합니다. |
| c20 | 70820–73120 | 2300 | u06 | 그래서 물은 표면의 넓이를 |
| c21 | 73120–77040 | 3920 | u06 | 줄이는 쪽으로 모양을 바꾸려 해요. |
| c22 | 77040–81520 | 4480 | u06 | 표면이 늘어나는 데 저항하는 이 성질이 표면장력입니다. |
| c23 | 81520–82960 | 1440 | u07 | 같은 양의 물이라면, |
| c24 | 82960–87380 | 4420 | u07 | 공 모양이 겉면을 가장 작게 만들 수 있어요. |
| c25 | 87380–91520 | 4140 | u07 | 중력이나 바닥의 영향을 적게 받는 작은 물방울이 둥글어지는 |
| c26 | 91520–96160 | 4640 | u07 | 이유입니다. 큰 물방울이나 바닥에 닿은 물방울은 |
| c27 | 96160–97760 | 1600 | u07 | 모양이 달라질 수 있어요. |
| c28 | 97760–101980 | 4220 | u08 | 물방울을 감싼 진짜 껍질이 있는 건 아닙니다. |
| c29 | 101980–104560 | 2580 | u08 | 수소결합으로 서로 끌어당기는 분자들과, |
| c30 | 104560–107360 | 2800 | u08 | 표면을 넓히기 어려운 성질이 |
| c31 | 107360–110560 | 3200 | u08 | 작은 물방울의 둥근 모양을 만드는 거예요. |
## 38개 별도 자막
표의 /는 줄바꿈 위치다. captions 원문에는 실제 줄바꿈을 기록했다. 최대 두 줄의 의미 단위로 나누고 컷과 일대일 대응하지 않는다. 말이 없는 쉼에는 필요에 따라 자막을 비운다.
| 자막 | 통합 시작–끝(ms) | 표시 문구 |
| --- | --- | --- |
| cap01 | 0–3060 | 작은 물방울은 왜 / 동그랗게 뭉칠까요? |
| cap02 | 4380–7900 | 비밀은 물속의 / 작은 분자들에 있습니다. |
| cap03 | 7920–10160 | 물 분자는 산소 하나와 / 수소 둘로 |
| cap04 | 10160–11480 | 이루어져 있어요. |
| cap05 | 11920–14500 | 산소 쪽은 살짝 마이너스, |
| cap06 | 14780–18040 | 수소 쪽은 살짝 플러스 / 성질을 띱니다. |
| cap07 | 18080–20340 | 그래서 한 분자의 / 수소 쪽과 |
| cap08 | 20340–23280 | 옆 분자의 산소 쪽이 / 서로 끌어당깁니다. |
| cap09 | 24380–27300 | 이 분자 사이의 끌림을 / 수소결합이라고 해요. |
| cap10 | 28480–30060 | 한 물 분자 안의 |
| cap11 | 30060–32620 | 산소와 수소를 묶는 / 결합과는 다릅니다. |
| cap12 | 32720–35560 | 수소결합은 분자들을 / 영원히 묶는 |
| cap13 | 35560–37780 | 끈은 아닙니다. |
| cap14 | 37780–40360 | 물속에서는 / 연결이 생겼다 |
| cap15 | 40360–42940 | 끊어지기를 반복해요. |
| cap16 | 42940–46060 | 그래도 많은 분자가 / 서로 끌어당기니 |
| cap17 | 46060–49340 | 물은 함께 뭉치려는 / 성질을 보입니다. |
| cap18 | 49360–52080 | 이제 물의 표면을 볼까요? |
| cap19 | 52080–57120 | 물 안쪽은 다른 물 분자들에 / 둘러싸여 있지만, |
| cap20 | 57120–61000 | 공기와 만나는 표면은 / 공기 쪽에 |
| cap21 | 61000–63420 | 물 분자 이웃이 적습니다. |
| cap22 | 63440–67440 | 이런 표면을 / 더 넓게 만들려면 |
| cap23 | 67440–69840 | 에너지를 보태야 합니다. |
| cap24 | 70820–73120 | 그래서 물은 / 표면의 넓이를 |
| cap25 | 73120–75420 | 줄이는 쪽으로 / 모양을 바꾸려 해요. |
| cap26 | 77040–79320 | 표면이 늘어나는 데 / 저항하는 |
| cap27 | 79320–81360 | 이 성질이 / 표면장력입니다. |
| cap28 | 81520–82960 | 같은 양의 물이라면, |
| cap29 | 82960–86760 | 공 모양이 겉면을 / 가장 작게 만들 수 있어요. |
| cap30 | 87380–89620 | 중력이나 바닥의 / 영향을 적게 받는 |
| cap31 | 89620–92740 | 작은 물방울이 / 둥글어지는 이유입니다. |
| cap32 | 93420–96160 | 큰 물방울이나 / 바닥에 닿은 물방울은 |
| cap33 | 96160–97740 | 모양이 달라질 수 있어요. |
| cap34 | 97760–99820 | 물방울을 감싼 / 진짜 껍질이 |
| cap35 | 99820–101980 | 있는 건 아닙니다. |
| cap36 | 101980–104560 | 수소결합으로 서로 / 끌어당기는 분자들과, |
| cap37 | 104560–107360 | 표면을 넓히기 / 어려운 성질이 |
| cap38 | 107360–110540 | 작은 물방울의 둥근 모양을 / 만드는 거예요. |
캡션을 순서대로 이어 공백을 정규화하면 03/05 승인 원문과 정확히 일치한다. 도해 라벨은 문장 자막과 분리하고 음성이 해당 대상을 설명할 때만 나타낸다. 모바일 판독성·플랫폼 버튼 간섭은 아직 실제 출력이 없어 미검수다.
## 적용과 다음 검토
[음성·연결 기준](../../../../../docs/short-video-guide.md#음성을-기준으로-컷과-연결을-확정한다)과 [자막 기준](../../../../../docs/short-video-guide.md#자막과-주석을-읽을-수-있게-배치한다)을 적용했다. TTS 단위를 5초로 바꾸지 않았고 사실에 없는 위기·반전·실험은 추가하지 않았다. [08 장면 검토](../../08-scenes/r1/review.md), [09 반복 요소 검토](../../09-entities/r1/review.md)와 같은 묶음에서 검토한다. 승인 전 10 기준 이미지로 진행하지 않는다.
## 실제 scenes 승인
- 사용자 응답: “승인합니다.”
- 승인 버전: 07-cuts r1, 08-scenes r1, 09-entities r1.
- 현재 상태: complete. 실측 컷·자막 원문·기존 WAV는 변경하지 않았고 총괄이 해당 버전을 approved로 기록했다.
@@ -0,0 +1,423 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "08-scenes",
"revision": 1,
"inputs": [
{
"stage_id": "03-script",
"revision": 1
},
{
"stage_id": "07-cuts",
"revision": 1
},
{
"stage_id": "02-research",
"revision": 1
}
],
"payload": {
"scenes": [
{
"cut_id": "c01",
"description": "작은 물방울의 둥근 모양을 먼저 보여주고 도입의 질문을 약속한다.",
"start_state": "크림색 화면 중앙에 물청색의 작은 둥근 물방울 하나가 떠 있다. 가는 남색 외곽선과 작은 색면 하이라이트만 있으며 별도 껍질·바닥·상표는 없다.",
"end_state": "물방울은 같은 위치·크기·둥근 모양을 유지한다. 우상단의 작은 확대 개념도 자리로 이어지는 가는 지시선이 나타난다. 실제 막이나 힘을 나타내는 선은 아니다.",
"camera": "고정 세로 전경. 크림색 설명 화면 중앙에 작은 물방울, 우상단에 확대 개념도 자리. 원근 과장·흔들림 없음."
},
{
"cut_id": "c02",
"description": "동일한 물방울에 분자 확대 개념도를 연결해 모양의 이유를 분자에서 찾게 한다.",
"start_state": "물방울은 같은 위치·크기·둥근 모양을 유지한다. 우상단의 작은 확대 개념도 자리로 이어지는 가는 지시선이 나타난다. 실제 막이나 힘을 나타내는 선은 아니다.",
"end_state": "중앙 물방울은 그대로다. 우상단 개념도 안에 산소 산호색 큰 원 하나와 수소 미색 작은 원 둘을 가진 물 분자 도식이 보인다. 합성 주석 '분자 확대 개념도'로 실제 비율·위치와 구별한다.",
"camera": "고정 세로 전경. 크림색 설명 화면 중앙에 작은 물방울, 우상단에 확대 개념도 자리. 원근 과장·흔들림 없음."
},
{
"cut_id": "c03",
"description": "산소 하나와 수소 둘을 같은 분자 안에서 순서대로 강조해 물의 구성을 설명한다.",
"start_state": "중앙에 온전한 물 분자 도식이 있다. 산호색 큰 산소 원 하나와 미색 작은 수소 원 둘을 짧은 남색 실선 두 개가 잇는다. 아직 강조 테두리·전하 주석은 없다.",
"end_state": "같은 물 분자의 산소와 수소 둘에 순서대로 얇은 강조가 들어가 원자 수를 구별할 수 있다. 원자가 떨어지거나 새로 결합하는 화학 반응은 보여주지 않는다.",
"camera": "고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지."
},
{
"cut_id": "c04",
"description": "산소 쪽의 부분 음전하를 강조한다. 분자 전체를 음이온으로 표시하지 않는다.",
"start_state": "같은 물 분자의 산소와 수소 둘에 순서대로 얇은 강조가 들어가 원자 수를 구별할 수 있다. 원자가 떨어지거나 새로 결합하는 화학 반응은 보여주지 않는다.",
"end_state": "분자 위치와 내부 실선은 그대로다. 산소 원 주변만 옅은 강조가 있고 합성 주석 '살짝 마이너스' 또는 δ−가 산소 쪽에 붙는다.",
"camera": "고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지."
},
{
"cut_id": "c05",
"description": "수소 쪽의 부분 양전하를 추가해 두 쪽의 성질 차이를 설명한다.",
"start_state": "분자 위치와 내부 실선은 그대로다. 산소 원 주변만 옅은 강조가 있고 합성 주석 '살짝 마이너스' 또는 δ−가 산소 쪽에 붙는다.",
"end_state": "같은 분자에서 산소 쪽 δ−와 수소 두 쪽 δ+의 부분 전하 주석이 보인다. 분자 전체를 감싸는 +/− 기호·이온 테두리는 없다.",
"camera": "고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지."
},
{
"cut_id": "c06",
"description": "왼쪽 분자의 수소 쪽과 오른쪽 분자의 산소 쪽을 찾아 서로 다른 분자임을 보여준다.",
"start_state": "왼쪽·오른쪽에 온전한 물 분자 도식이 있다. 각 분자는 산호색 O 하나·미색 H 둘·남색 내부 실선을 유지한다. 왼쪽 H와 오른쪽 O가 서로 마주보며 아직 분자 사이 점선은 없다.",
"end_state": "분자들은 같은 자리에 있다. 왼쪽 분자의 마주보는 H 쪽과 오른쪽 분자의 O 쪽만 옅은 강조와 부분 전하 주석으로 짚는다. 두 분자는 합쳐지지 않는다.",
"camera": "고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지."
},
{
"cut_id": "c07",
"description": "이웃 분자의 수소와 산소 사이 끌림을 양쪽의 짧은 방향 표시와 점선으로 표현한다.",
"start_state": "분자들은 같은 자리에 있다. 왼쪽 분자의 마주보는 H 쪽과 오른쪽 분자의 O 쪽만 옅은 강조와 부분 전하 주석으로 짚는다. 두 분자는 합쳐지지 않는다.",
"end_state": "같은 두 분자의 마주보는 H···O 사이에 황토색 가는 점선과 양쪽에서 서로 향하는 짧은 끌림 표시가 보인다. 각 분자 내부 남색 실선은 변하지 않는다.",
"camera": "고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지."
},
{
"cut_id": "c08",
"description": "분자 사이 점선을 강조하고 실제 발화에 맞춰 수소결합이라는 이름을 붙인다.",
"start_state": "같은 두 분자의 마주보는 H···O 사이에 황토색 가는 점선과 양쪽에서 서로 향하는 짧은 끌림 표시가 보인다. 각 분자 내부 남색 실선은 변하지 않는다.",
"end_state": "같은 H···O 점선이 강조된다. 06의 u03 상대 8100ms 이후 합성 주석 '수소결합'을 붙인다. 영구적인 굵은 끈·새 산소–수소 실선으로 바꾸지 않는다.",
"camera": "고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지."
},
{
"cut_id": "c09",
"description": "분자 사이 점선과 한 분자 안의 실선을 비교해 두 결합을 구별한다.",
"start_state": "같은 H···O 점선이 강조된다. 06의 u03 상대 8100ms 이후 합성 주석 '수소결합'을 붙인다. 영구적인 굵은 끈·새 산소–수소 실선으로 바꾸지 않는다.",
"end_state": "두 분자와 H···O 점선은 같은 위치에 남는다. 한 분자 내부 O–H 실선에 별도의 얇은 강조를 더하고 합성 주석 '분자 안'과 '분자 사이'를 서로 다른 선 가까이에 둔다.",
"camera": "고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지."
},
{
"cut_id": "c10",
"description": "수소결합을 영원히 고정된 끈으로 오해하지 않도록 점선 연결이 바뀌는 물속 개념도를 보여준다.",
"start_state": "소수의 온전한 물 분자가 불규칙한 방향으로 물청색 옅은 색면 안에 놓여 있다. 일부 이웃의 H···O 사이에 황토색 점선이 있으며 고정 격자·모든 분자에 같은 연결 수·둘레 막은 없다.",
"end_state": "분자들의 식별·대체적인 위치는 유지된다. 한 이웃 쌍의 점선이 옅어지며 연결이 고정된 끈이 아님을 드러낸다. 내부 O–H 실선은 그대로다.",
"camera": "고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용."
},
{
"cut_id": "c11",
"description": "기존 분자 사이 연결은 약해지고 다른 이웃 사이 연결이 생기는 상태를 보여준다.",
"start_state": "분자들의 식별·대체적인 위치는 유지된다. 한 이웃 쌍의 점선이 옅어지며 연결이 고정된 끈이 아님을 드러낸다. 내부 O–H 실선은 그대로다.",
"end_state": "옅어진 점선 하나가 사라지고 다른 이웃 H···O 사이에 새 점선이 나타난다. 분자들은 서로 겹치거나 원자 수가 변하지 않는다.",
"camera": "고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용."
},
{
"cut_id": "c12",
"description": "새 연결도 끊어지고 또 다른 연결이 생겨 고정된 격자가 아님을 설명한다.",
"start_state": "옅어진 점선 하나가 사라지고 다른 이웃 H···O 사이에 새 점선이 나타난다. 분자들은 서로 겹치거나 원자 수가 변하지 않는다.",
"end_state": "새 점선 일부도 옅어지고 다른 연결이 나타난다. 이웃들 사이 작은 양방향 끌림 표시를 순차 강조하며 정지 격자·동시 일괄 결합은 만들지 않는다.",
"camera": "고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용."
},
{
"cut_id": "c13",
"description": "연결은 바뀌어도 여러 분자 사이의 끌림이 함께 작용해 물이 뭉치는 성질을 회수한다.",
"start_state": "새 점선 일부도 옅어지고 다른 연결이 나타난다. 이웃들 사이 작은 양방향 끌림 표시를 순차 강조하며 정지 격자·동시 일괄 결합은 만들지 않는다.",
"end_state": "분자들은 같은 물청색 색면 안에서 불규칙한 배치를 유지한다. 여러 H···O 끌림 표시가 보이며 합성 주석 '물끼리 뭉치는 성질'로 응집을 회수한다. 분자 간격을 모두 붕괴시키거나 물 부피를 줄이지 않는다.",
"camera": "고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용."
},
{
"cut_id": "c14",
"description": "물속 설명에서 물과 공기가 만나는 표면으로 시점을 옮긴다.",
"start_state": "위에는 크림색 공기, 아래에는 물청색 액체 물이 있고 경계는 가는 색면 외곽선 하나다. 온전한 물 분자 도식은 물 안에 불규칙하게 놓여 있으며 별도 표면층·고체막·아래 방향 가속 화살표는 없다.",
"end_state": "경계와 모든 분자의 위치는 그대로다. 물 안쪽의 한 분자를 얇은 강조로 선택하고 합성 주석 '물 안쪽'을 붙인다.",
"camera": "고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다."
},
{
"cut_id": "c15",
"description": "물 안쪽의 분자는 주변 여러 방향에 물 분자 이웃이 있음을 보여준다.",
"start_state": "경계와 모든 분자의 위치는 그대로다. 물 안쪽의 한 분자를 얇은 강조로 선택하고 합성 주석 '물 안쪽'을 붙인다.",
"end_state": "같은 내부 분자의 주변 여러 방향에 있는 물 분자 이웃을 차례로 강조한다. 특정 결합 수나 고정 배열을 표시하지 않는다.",
"camera": "고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다."
},
{
"cut_id": "c16",
"description": "공기와 만나는 표면의 분자를 강조해 내부와 다른 환경을 비교한다.",
"start_state": "같은 내부 분자의 주변 여러 방향에 있는 물 분자 이웃을 차례로 강조한다. 특정 결합 수나 고정 배열을 표시하지 않는다.",
"end_state": "내부 강조는 옅어지고 표면 가까이 물 쪽에 있는 한 분자를 강조한다. 위쪽 크림색 영역에 합성 주석 '공기 쪽', 경계 가까이에 '표면'을 붙인다.",
"camera": "고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다."
},
{
"cut_id": "c17",
"description": "공기 쪽에는 액체 물 분자 이웃이 적음을 빈 공간과 아래쪽 이웃의 대비로 설명한다.",
"start_state": "내부 강조는 옅어지고 표면 가까이 물 쪽에 있는 한 분자를 강조한다. 위쪽 크림색 영역에 합성 주석 '공기 쪽', 경계 가까이에 '표면'을 붙인다.",
"end_state": "표면 분자 아래·옆의 물 분자 이웃과 위쪽 공기 영역을 같은 화면에서 대비한다. 합성 주석은 '물 분자 이웃이 적음'이며 공기가 진공이거나 수증기가 전혀 없다는 뜻으로 표시하지 않는다.",
"camera": "고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다."
},
{
"cut_id": "c18",
"description": "물방울의 표면을 넓히는 변형을 보여주며 표면 확장이라는 뜻을 전달한다.",
"start_state": "작은 둥근 물방울 하나가 중앙에 있다. 물청색 색면·가는 남색 외곽선·작은 하이라이트를 유지한다. 별도 껍질·바닥·수치 도표는 없다.",
"end_state": "같은 물방울이 완만하게 길어진 모양이다. 물의 양은 유지하는 개념도이며 실제 두께·부피를 픽셀 면적으로 측정한 그림은 아니다. 양쪽 바깥에 표면을 넓히는 방향의 작은 표시가 있다.",
"camera": "고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다."
},
{
"cut_id": "c19",
"description": "변형을 유지하는 데 외부에서 에너지를 보태야 함을 개념 표시로 설명한다.",
"start_state": "같은 물방울이 완만하게 길어진 모양이다. 물의 양은 유지하는 개념도이며 실제 두께·부피를 픽셀 면적으로 측정한 그림은 아니다. 양쪽 바깥에 표면을 넓히는 방향의 작은 표시가 있다.",
"end_state": "같은 길어진 물방울과 바깥 방향 표시를 유지한다. 황토색 외부 에너지 표시와 합성 주석 '에너지를 보태야 함'을 더한다. 전하나 실제 에너지 물질을 그리지 않는다.",
"camera": "고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다."
},
{
"cut_id": "c20",
"description": "같은 물의 양에서 표면을 줄이는 쪽의 경향을 윤곽 변화로 짚는다.",
"start_state": "같은 길어진 물방울과 바깥 방향 표시를 유지한다. 황토색 외부 에너지 표시와 합성 주석 '에너지를 보태야 함'을 더한다. 전하나 실제 에너지 물질을 그리지 않는다.",
"end_state": "같은 위치의 물방울에서 바깥 방향 표시와 에너지 표시가 옅어진다. 길어진 윤곽이 조금 덜 길어지며 표면을 줄이는 경향을 짚는다.",
"camera": "고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다."
},
{
"cut_id": "c21",
"description": "변형된 물방울이 더 둥근 모양으로 돌아가는 상태를 이어 보여준다.",
"start_state": "같은 위치의 물방울에서 바깥 방향 표시와 에너지 표시가 옅어진다. 길어진 윤곽이 조금 덜 길어지며 표면을 줄이는 경향을 짚는다.",
"end_state": "물방울은 원래처럼 더 둥근 모양이 되었다. 색·양·위치는 유지하고 외부 에너지 표시를 지운다. 무게나 밀도 변화 수치는 없다.",
"camera": "고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다."
},
{
"cut_id": "c22",
"description": "물의 표면 확장에 대한 저항에 표면장력이라는 이름을 붙인다.",
"start_state": "물방울은 원래처럼 더 둥근 모양이 되었다. 색·양·위치는 유지하고 외부 에너지 표시를 지운다. 무게나 밀도 변화 수치는 없다.",
"end_state": "같은 둥근 물방울의 표면 윤곽만 얇게 강조한다. u06 상대 16760ms 이후 합성 주석 '표면장력'을 붙인다. 새 껍질이나 굵은 테두리를 생성하지 않는다.",
"camera": "고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다."
},
{
"cut_id": "c23",
"description": "비교 조건인 같은 물의 양을 먼저 제시한다.",
"start_state": "왼쪽에 길어진 물방울, 오른쪽에 둥근 물방울이 같은 물청색·가는 남색 윤곽선으로 보인다. 두 그림은 같은 물의 양을 가정한 입체 개념도이며 픽셀 면적·둘레 비교는 하지 않는다.",
"end_state": "두 물방울은 같은 위치와 모양을 유지한다. 두 그림 위에 공통 합성 주석 '같은 물의 양 · 개념도'를 붙여 비교 조건을 먼저 제시한다.",
"camera": "고정 세로 비교 도해. 위쪽 또는 중앙에 같은 물의 양을 나타내는 두 입체 물방울의 평면 표현을 나란히 배치. 왼쪽은 길어진 모양, 오른쪽은 둥근 모양. 바닥·중력 수치·눈금은 없다."
},
{
"cut_id": "c24",
"description": "같은 부피에서 공 모양의 겉면이 가장 작다는 답을 비교 형태와 강조로 전달한다.",
"start_state": "두 물방울은 같은 위치와 모양을 유지한다. 두 그림 위에 공통 합성 주석 '같은 물의 양 · 개념도'를 붙여 비교 조건을 먼저 제시한다.",
"end_state": "두 물방울의 위치·양 조건은 그대로다. 오른쪽 둥근 물방울의 윤곽을 옅게 강조하고 합성 주석 '겉면이 가장 작음'을 오른쪽에 붙인다. 면적 수치·비율·2차원 둘레 계산은 없다.",
"camera": "고정 세로 비교 도해. 위쪽 또는 중앙에 같은 물의 양을 나타내는 두 입체 물방울의 평면 표현을 나란히 배치. 왼쪽은 길어진 모양, 오른쪽은 둥근 모양. 바닥·중력 수치·눈금은 없다."
},
{
"cut_id": "c25",
"description": "중력이나 접촉의 영향이 작은 작은 물방울의 조건을 밝혀 구형 설명의 범위를 제한한다.",
"start_state": "왼쪽에 작은 둥근 물방울이 바닥에 닿지 않은 채 보인다. 오른쪽에는 예시 자리를 비워 두고 그 아래만 가는 갈색 바닥선을 둔다. 앞의 같은 양 비교 주석은 없다.",
"end_state": "왼쪽의 작은 물방울과 오른쪽 바닥선은 그대로다. 왼쪽에 합성 주석 '외부 영향이 작을 때'를 붙인다. 무중력·영향이 완전히 0이라는 표시나 수치는 없다.",
"camera": "고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다."
},
{
"cut_id": "c26",
"description": "작은 물방울을 유지하면서 큰 물방울·바닥 접촉의 예시를 새로 보여준다.",
"start_state": "왼쪽의 작은 물방울과 오른쪽 바닥선은 그대로다. 왼쪽에 합성 주석 '외부 영향이 작을 때'를 붙인다. 무중력·영향이 완전히 0이라는 표시나 수치는 없다.",
"end_state": "왼쪽 작은 물방울은 그대로다. u07 상대 11900ms의 '큰' 이후 오른쪽 바닥선 위에 더 크고 납작한 접촉 물방울 예시가 나타난다. 이는 같은 양 비교가 아니라 모양 조건의 예시다.",
"camera": "고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다."
},
{
"cut_id": "c27",
"description": "바닥에 닿은 물방울의 모양은 달라질 수 있음을 대비하고 모든 물방울이 구라는 오해를 막는다.",
"start_state": "왼쪽 작은 물방울은 그대로다. u07 상대 11900ms의 '큰' 이후 오른쪽 바닥선 위에 더 크고 납작한 접촉 물방울 예시가 나타난다. 이는 같은 양 비교가 아니라 모양 조건의 예시다.",
"end_state": "두 예시는 같은 위치에 유지된다. 오른쪽의 접촉 모양을 강조하고 합성 주석 '중력·바닥의 영향'으로 조건을 짚는다. 접촉각·크기 경계값·표면장력 수치는 넣지 않는다.",
"camera": "고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다."
},
{
"cut_id": "c28",
"description": "처음 물방울로 돌아와 별도 고체 껍질이 없음을 색면 경계와 분자 개념도로 설명한다.",
"start_state": "중앙에 처음과 같은 물청색 작은 둥근 물방울이 있다. 외곽선은 물과 공기 색면의 경계를 나타내는 가는 선 하나이며 둘레의 별도 띠·층·딱딱한 껍질은 없다. 우상단 개념도 자리는 비어 있다.",
"end_state": "중앙 물방울은 그대로다. 우상단에 분자 확대 개념도가 나타나 온전한 물 분자들을 불규칙하게 보여준다. 합성 주석 '확대 개념도'로 실제 비율·물질층과 구별한다.",
"camera": "고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다."
},
{
"cut_id": "c29",
"description": "분자 확대 개념도에서 수소결합에 의한 서로 끌림을 회수한다.",
"start_state": "중앙 물방울은 그대로다. 우상단에 분자 확대 개념도가 나타나 온전한 물 분자들을 불규칙하게 보여준다. 합성 주석 '확대 개념도'로 실제 비율·물질층과 구별한다.",
"end_state": "물방울과 우상단 개념도 위치는 같다. 개념도에서 H···O 점선과 짧은 서로 향하는 표시를 강조하고 합성 주석 '서로 끌림'을 붙인다. 내부 실선은 변하지 않는다.",
"camera": "고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다."
},
{
"cut_id": "c30",
"description": "표면을 넓히기 어려운 성질을 같은 물방울의 작은 변형과 연결해 회수한다.",
"start_state": "물방울과 우상단 개념도 위치는 같다. 개념도에서 H···O 점선과 짧은 서로 향하는 표시를 강조하고 합성 주석 '서로 끌림'을 붙인다. 내부 실선은 변하지 않는다.",
"end_state": "같은 물방울의 윤곽이 조금 길어진 모습과 외부에서 넓히려는 작은 방향 표시가 보인다. 개념도는 그대로이고 합성 주석 '표면 넓힘에 저항'을 더한다. 물의 양·그림체·색은 유지한다.",
"camera": "고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다."
},
{
"cut_id": "c31",
"description": "작은 물방울의 둥근 모양으로 돌아와 제목과 첫 질문에 답하며 끝낸다.",
"start_state": "같은 물방울의 윤곽이 조금 길어진 모습과 외부에서 넓히려는 작은 방향 표시가 보인다. 개념도는 그대로이고 합성 주석 '표면 넓힘에 저항'을 더한다. 물의 양·그림체·색은 유지한다.",
"end_state": "물방울은 다시 작은 둥근 모양이다. 외부 방향 표시와 긴 주석은 옅어지고 우상단 개념도는 작게 남거나 자연스럽게 사라진다. 중앙 물방울을 가장 먼저 보이게 해 처음 질문의 답으로 마무리한다.",
"camera": "고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다."
}
],
"connections": [
{
"from_cut_id": "c01",
"to_cut_id": "c02",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c02",
"to_cut_id": "c03",
"mode": "cut",
"reason": "물방울 전체에서 한 물 분자의 구성으로 설명 규모가 바뀌므로 분자 하나의 근접 도해를 새로 제시한다."
},
{
"from_cut_id": "c03",
"to_cut_id": "c04",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c04",
"to_cut_id": "c05",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c05",
"to_cut_id": "c06",
"mode": "cut",
"reason": "한 분자의 부분 전하에서 두 이웃 분자의 끌림으로 설명 대상 수와 배치가 바뀌므로 두 분자를 함께 보여준다."
},
{
"from_cut_id": "c06",
"to_cut_id": "c07",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c07",
"to_cut_id": "c08",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c08",
"to_cut_id": "c09",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c09",
"to_cut_id": "c10",
"mode": "cut",
"reason": "두 분자의 결합 구별에서 액체 안의 동적인 여러 연결로 설명 범위가 넓어지므로 불규칙한 분자 집단을 새로 제시한다."
},
{
"from_cut_id": "c10",
"to_cut_id": "c11",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c11",
"to_cut_id": "c12",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c12",
"to_cut_id": "c13",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c13",
"to_cut_id": "c14",
"mode": "cut",
"reason": "물속의 응집에서 물-공기 경계의 환경 차이로 설명 위치가 바뀌므로 자유 표면의 단면 개념도를 제시한다."
},
{
"from_cut_id": "c14",
"to_cut_id": "c15",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c15",
"to_cut_id": "c16",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c16",
"to_cut_id": "c17",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c17",
"to_cut_id": "c18",
"mode": "cut",
"reason": "경계의 분자 환경에서 표면 확장의 에너지 비용으로 설명 규모가 바뀌므로 물방울 변형 개념도로 전환한다."
},
{
"from_cut_id": "c18",
"to_cut_id": "c19",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c19",
"to_cut_id": "c20",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c20",
"to_cut_id": "c21",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c21",
"to_cut_id": "c22",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c22",
"to_cut_id": "c23",
"mode": "cut",
"reason": "한 물방울의 표면장력에서 같은 부피의 모양 비교로 비교 기준이 바뀌므로 두 모양을 나란히 제시한다."
},
{
"from_cut_id": "c23",
"to_cut_id": "c24",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c24",
"to_cut_id": "c25",
"mode": "cut",
"reason": "같은 부피 비교가 끝나고 외부 영향과 바닥 접촉의 조건으로 바뀌므로 조건 예시의 새 배치를 제시한다."
},
{
"from_cut_id": "c25",
"to_cut_id": "c26",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c26",
"to_cut_id": "c27",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c27",
"to_cut_id": "c28",
"mode": "cut",
"reason": "조건 예시를 마치고 첫 물방울로 돌아가 답을 회수하므로 도입과 같은 중심 배치를 다시 제시한다."
},
{
"from_cut_id": "c28",
"to_cut_id": "c29",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c29",
"to_cut_id": "c30",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
},
{
"from_cut_id": "c30",
"to_cut_id": "c31",
"mode": "continuous",
"reason": "같은 설명의 대상·위치·방향·카메라를 유지하며 앞 컷의 끝 상태를 다음 시작 상태로 그대로 이어 원인과 결과의 다음 변화를 보여준다."
}
]
}
}
@@ -0,0 +1,93 @@
# 장면 설계 검토안
- 제작 ID: water-hydrogen-bond-surface-tension / 08-scenes r1 / 검토 ID: scenes.
- 입력: story 승인된 [03 대본 r1](../../03-script/r1/review.md), [07 실제 컷·자막 r1](../../07-cuts/r1/review.md), 직접 확인한 [02 조사 r1](../../02-research/r1/review.md).
- 결과: [전체 시작·끝 상태와 카메라 JSON](artifact.json), [09 반복 요소](../../09-entities/r1/review.md).
- 시간 기준: [실제 내레이션](../../../media/06-tts/r1/narration.wav) / 110560ms / 사용자 청취 확인됨.
- 제출 내용: 31개 장면, 30개 인접 연결. 같은 대상·시점을 유지하는 continuous 22개, 설명 규모·관점이 바뀌는 cut 8개.
- 현재는 장면 설계이며 생성 PNG·영상은 아니다. 제출 당시 scenes 승인은 없었고 아래 실제 응답으로 승인됐다.
- 실제 검사 결과: 31개 컷·장면·등장 참조의 순서와 유일성, 30개 인접 연결, continuous 22곳의 end_state→start_state 및 camera 정확한 일치, 8개 cut의 전환 이유, 문서 53개 로컬 링크를 검사해 종료코드 0을 확인했다. 총괄이 07–09 r1을 awaiting_review로 기록했다.
## 전체 흐름과 표현
처음의 작은 둥근 물방울에서 시작해 물 분자의 구성·부분 전하 → 이웃 분자 사이 수소결합 → 바뀌는 연결과 응집 → 물-공기 경계 → 표면 확장 에너지 비용 → 같은 부피의 둥근 모양 → 실제 모양의 조건 → 처음 질문의 답으로 이어진다.
직접 본 [사용자 그림체](../../../../../references/1.png)의 가는 윤곽선·단순 형태·정돈된 색면·제한된 음영을 따른다. 크림색 설명 바탕에 물청색 물방울, 산호색 산소, 미색 수소, 남색 분자 내부 실선, 황토색 분자 사이 점선을 일관되게 사용한다. 인물·캠핑·상표·새 실험은 필요하지 않아 넣지 않는다.
한 컷에서 중심 대상과 변화 하나를 먼저 보이게 한다. 문자·전하 기호·라벨은 이미지에 생성하지 않고 합성 단계의 검증한 한국어 주석으로 배치한다. 자막과 주요 도해를 분리하고, 생성·합성 뒤 모바일 크기와 실제 플랫폼 영역에서 판독성을 확인한다. 모든 플랫폼의 고정 안전영역 수치는 가정하지 않는다.
## 컷별 상태 변화
아래 시간은 실측 WAV와 자동 정렬에 근거한 통합 구간이다. '앞 연결'은 해당 컷으로 들어오는 연결이며, continuous에서는 앞 end_state와 뒤 start_state 및 camera를 동일하게 기록했다. 모든 상세 상태·위치·카메라는 JSON에 있다.
| 컷 / 실제 구간 | 시작 → 끝의 핵심 변화 | 앞 연결 | 조사 주장 / 반복 배경 |
| --- | --- | --- | --- |
| c01 / 0.00–4.38초 | 둥근 물방울 → 확대 개념도 자리 안내 | 도입 | c4-cohesion, c7-sphere / bg-droplet |
| c02 / 4.38–7.92초 | 확대 자리 → 물 분자 도식 등장 | continuous | c4-cohesion, c7-sphere / bg-droplet |
| c03 / 7.92–11.92초 | 온전한 분자 → 산소 하나·수소 둘 강조 | cut | c1-polarity / bg-molecules |
| c04 / 11.92–14.78초 | 원자 구성 → 산소 쪽 부분 음전하 | continuous | c1-polarity / bg-molecules |
| c05 / 14.78–18.08초 | 산소 쪽 → 수소 쪽 부분 양전하 추가 | continuous | c1-polarity / bg-molecules |
| c06 / 18.08–20.34초 | 이웃 분자 둘 → 마주보는 H와 O 강조 | cut | c2-hydrogen-bond / bg-molecules |
| c07 / 20.34–24.38초 | H·O 강조 → 분자 사이 끌림 표시 | continuous | c2-hydrogen-bond / bg-molecules |
| c08 / 24.38–28.48초 | 끌림 표시 → 수소결합 이름 | continuous | c2-hydrogen-bond / bg-molecules |
| c09 / 28.48–32.72초 | 분자 사이 점선 → 분자 내부 실선과 대비 | continuous | c2-hydrogen-bond / bg-molecules |
| c10 / 32.72–35.56초 | 불규칙한 분자 집단 → 한 점선이 옅어짐 | cut | c3-dynamic-network, c4-cohesion / bg-molecules |
| c11 / 35.56–40.36초 | 기존 점선 약화 → 다른 이웃 점선 생성 | continuous | c3-dynamic-network, c4-cohesion / bg-molecules |
| c12 / 40.36–45.12초 | 새 연결 → 연결 교체와 여러 끌림 | continuous | c3-dynamic-network, c4-cohesion / bg-molecules |
| c13 / 45.12–49.36초 | 여러 끌림 → 물끼리 뭉치는 성질 회수 | continuous | c3-dynamic-network, c4-cohesion / bg-molecules |
| c14 / 49.36–52.08초 | 물-공기 단면 → 내부 분자 선택 | cut | c5-interface-neighbors / bg-interface |
| c15 / 52.08–56.12초 | 내부 분자 → 주변 여러 방향의 이웃 강조 | continuous | c5-interface-neighbors / bg-interface |
| c16 / 56.12–61.00초 | 내부 강조 → 표면 분자와 공기 쪽 강조 | continuous | c5-interface-neighbors / bg-interface |
| c17 / 61.00–63.44초 | 표면 강조 → 물 분자 이웃 적음 대비 | continuous | c5-interface-neighbors / bg-interface |
| c18 / 63.44–67.44초 | 작은 둥근 물방울 → 완만한 변형 | cut | c6-surface-energy / bg-droplet |
| c19 / 67.44–70.82초 | 변형 → 외부 에너지 필요 표시 | continuous | c6-surface-energy / bg-droplet |
| c20 / 70.82–73.12초 | 외부 표시 → 표면 줄이는 경향 | continuous | c6-surface-energy / bg-droplet |
| c21 / 73.12–77.04초 | 덜 길어진 모양 → 둥근 모양 | continuous | c6-surface-energy / bg-droplet |
| c22 / 77.04–81.52초 | 둥근 모양 → 표면장력 이름 | continuous | c6-surface-energy / bg-droplet |
| c23 / 81.52–82.96초 | 두 모양 → 같은 물의 양 조건 | cut | c7-sphere, c8-shape-conditions / bg-comparison |
| c24 / 82.96–87.38초 | 같은 양 → 둥근 쪽의 작은 겉면 강조 | continuous | c7-sphere, c8-shape-conditions / bg-comparison |
| c25 / 87.38–91.52초 | 조건 비교 배치 → 작은 외부 영향 조건 | cut | c7-sphere, c8-shape-conditions / bg-comparison |
| c26 / 91.52–96.16초 | 작은 물방울 → 오른쪽 큰 접촉 예시 추가 | continuous | c7-sphere, c8-shape-conditions / bg-comparison |
| c27 / 96.16–97.76초 | 접촉 예시 → 바닥·중력 조건 강조 | continuous | c7-sphere, c8-shape-conditions / bg-comparison |
| c28 / 97.76–101.98초 | 처음 물방울 → 확대 개념도, 별도 껍질 없음 | cut | c2-hydrogen-bond, c4-cohesion, c6-surface-energy, c7-sphere, c9-no-skin / bg-droplet |
| c29 / 101.98–104.56초 | 개념도 → 수소결합·서로 끌림 회수 | continuous | c2-hydrogen-bond, c4-cohesion, c6-surface-energy, c7-sphere, c9-no-skin / bg-droplet |
| c30 / 104.56–107.36초 | 서로 끌림 → 표면 넓힘에 저항 회수 | continuous | c2-hydrogen-bond, c4-cohesion, c6-surface-energy, c7-sphere, c9-no-skin / bg-droplet |
| c31 / 107.36–110.56초 | 작은 변형 → 둥근 물방울로 질문 회수 | continuous | c2-hydrogen-bond, c4-cohesion, c6-surface-energy, c7-sphere, c9-no-skin / bg-droplet |
## 전환이 필요한 8곳
| 인접 컷 | 새 시점이 필요한 이유 |
| --- | --- |
| c02 → c03 | 물방울 전체에서 한 물 분자의 구성으로 설명 규모가 바뀌므로 분자 하나의 근접 도해를 새로 제시한다. |
| c05 → c06 | 한 분자의 부분 전하에서 두 이웃 분자의 끌림으로 설명 대상 수와 배치가 바뀌므로 두 분자를 함께 보여준다. |
| c09 → c10 | 두 분자의 결합 구별에서 액체 안의 동적인 여러 연결로 설명 범위가 넓어지므로 불규칙한 분자 집단을 새로 제시한다. |
| c13 → c14 | 물속의 응집에서 물-공기 경계의 환경 차이로 설명 위치가 바뀌므로 자유 표면의 단면 개념도를 제시한다. |
| c17 → c18 | 경계의 분자 환경에서 표면 확장의 에너지 비용으로 설명 규모가 바뀌므로 물방울 변형 개념도로 전환한다. |
| c22 → c23 | 한 물방울의 표면장력에서 같은 부피의 모양 비교로 비교 기준이 바뀌므로 두 모양을 나란히 제시한다. |
| c24 → c25 | 같은 부피 비교가 끝나고 외부 영향과 바닥 접촉의 조건으로 바뀌므로 조건 예시의 새 배치를 제시한다. |
| c27 → c28 | 조건 예시를 마치고 첫 물방울로 돌아가 답을 회수하므로 도입과 같은 중심 배치를 다시 제시한다. |
나머지 인접 쌍은 같은 대상·위치·방향·카메라를 이어 쓴다. 짧은 컷 c23의 비교 조건은 c24에도 유지되므로 1.44초 후 주석을 지우지 않는다. 문장이 컷을 넘어갈 때 음성을 끊거나 장면을 처음부터 다시 시작하지 않는다.
## 도해와 주석의 근거·한계
- c03–c05 / c1-polarity: 한 분자 안의 산소 하나·수소 둘과 부분 전하를 보여준다. 분자 전체를 이온으로 표시하지 않는다. 각도·전자 수·전하량 수치는 넣지 않는다.
- c06–c09 / c2-hydrogen-bond: 수소결합 점선은 이웃 분자의 H···O 사이에만 둔다. 내부 O–H 실선과 구별하며 두 분자를 합치거나 점선을 영구 끈으로 그리지 않는다. 수소결합 라벨은 u03 상대 8100ms / 통합 26180ms 이후에 나타난다.
- c10–c13 / c3-dynamic-network·c4-cohesion: 연결이 생겼다 끊어지는 정성적 개념도다. 고정 격자·모든 분자의 정확한 결합 수·실제 결합 시간 수치를 만들지 않는다. 응집을 모든 분자가 한 점으로 붕괴하거나 부피가 줄어드는 과정으로 표현하지 않는다.
- c14–c17 / c5-interface-neighbors: 내부와 표면의 액체 물 분자 이웃 환경을 비교한다. 위쪽 공기 단순화는 진공·수증기 완전 부재를 뜻하지 않는다. 고체 표면막·아래 방향으로 계속 가속하는 도해는 넣지 않는다.
- c18–c22 / c6-surface-energy: 같은 양의 입체 물방울이 변형되는 개념도를 평면 그림체로 표현한다. 외부 에너지 표시는 개념 기호이며 새로운 물질·전하를 그린 것이 아니다. 픽셀 면적·둘레를 3차원 표면적·부피로 측정하지 않는다. 표면장력 라벨은 u06 상대 16760ms / 통합 80200ms 이후에 나타난다.
- c23–c24 / c7-sphere: '같은 물의 양 · 개념도' 조건을 먼저 밝힌다. 실제 표면적의 숫자·비율·막대·2차원 둘레 계산을 추가하지 않는다.
- c25–c27 / c8-shape-conditions: 앞의 동일 부피 비교를 끝낸 뒤 조건 예시로 바꾼다. 작은 물방울의 조건은 영향이 작다는 뜻이며 완전히 무중력이라는 단정이 아니다. 큰 접촉 예시는 u07 상대 11900ms / 통합 93420ms의 '큰' 이후에 나타난다. 크기 경계값·접촉각 수치는 없다.
- c28–c31 / c9-no-skin와 결말 주장: 물-공기 색면 경계를 나타내는 얇은 외곽선 하나만 유지한다. 별도 띠·층·딱딱한 껍질은 생성하지 않는다. 확대 개념도는 실제 비율·구조의 사진으로 취급하지 않는다.
각 claim ID의 verified 출처는 02 JSON과 review.md에 있다. 주석의 색·크기·위치는 설명을 위한 선택이며 실측 과학 데이터가 아니다. 새 소재 사실·수치·실험은 추가하지 않았다.
## 사용자에게 필요한 결정
07-cuts r1·08-scenes r1·09-entities r1을 같은 scenes 검토 묶음으로 제시한다. 검토할 내용은 위 상태 변화·실측 구간·연결 이유·같은 색과 형태·과학적 주석의 범위다. 승인 또는 수정할 컷·표현을 알려주면 총괄이 실제 응답을 해당 버전에 기록한다. 승인 전 10 기준 이미지와 11 컷 이미지를 생성하지 않는다. topic/story의 동일 버전 승인은 다시 요구하지 않는다.
## 실제 scenes 승인
- 사용자 응답: “승인합니다.”
- 승인 버전: 07-cuts r1, 08-scenes r1, 09-entities r1.
- 현재 상태: complete. 승인된 31개 상태·30개 연결·기존 버전을 보존하고 10 기준 이미지 요청으로 진행한다. 같은 버전의 재승인은 요구하지 않는다.
@@ -0,0 +1,288 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "09-entities",
"revision": 1,
"inputs": [
{
"stage_id": "03-script",
"revision": 1
},
{
"stage_id": "08-scenes",
"revision": 1
}
],
"payload": {
"characters": [],
"backgrounds": [
{
"id": "bg-droplet",
"description": "도입·표면 확장·결말에서 반복되는 작은 물방울의 크림색 설명 공간.",
"fixed_features": [
"references/1.png의 가는 남색 윤곽선, 단순한 둥근 형태, 정돈된 색면, 제한적인 음영을 유지한다. 세로 9:16이며 캠핑·상표·입체 실사 렌더링은 넣지 않는다.",
"크림색 설명 바탕, 물청색 액체 물, 산호색 큰 산소 원, 미색 작은 수소 원, 남색 분자 내부 실선, 황토색 분자 사이 점선을 전 장면에서 일관되게 사용한다.",
"문자·부분 전하·주석은 합성 단계에서 한국어로 검증해 배치하며 생성 PNG의 글자를 사실 주석으로 쓰지 않는다. 자막 자리는 주요 도해와 분리한다.",
"물방울은 같은 물청색 색면과 가는 경계선, 작은 하이라이트로 표현한다. 경계선은 별도 껍질·막·표면층이 아니다.",
"물방울 변형은 같은 물의 양을 가정한 입체 개념도의 평면 표현이다. 픽셀 면적을 실제 부피·표면적으로 측정하지 않는다.",
"필요한 컷에는 우상단의 분자 확대 개념도를 놓고 본 물방울과 구별한다. 개념도는 실제 비율·고체 층이 아니다."
]
},
{
"id": "bg-molecules",
"description": "한 물 분자·이웃 분자·물속 연결을 설명하는 불규칙한 분자 개념도의 크림색 공간.",
"fixed_features": [
"references/1.png의 가는 남색 윤곽선, 단순한 둥근 형태, 정돈된 색면, 제한적인 음영을 유지한다. 세로 9:16이며 캠핑·상표·입체 실사 렌더링은 넣지 않는다.",
"크림색 설명 바탕, 물청색 액체 물, 산호색 큰 산소 원, 미색 작은 수소 원, 남색 분자 내부 실선, 황토색 분자 사이 점선을 전 장면에서 일관되게 사용한다.",
"문자·부분 전하·주석은 합성 단계에서 한국어로 검증해 배치하며 생성 PNG의 글자를 사실 주석으로 쓰지 않는다. 자막 자리는 주요 도해와 분리한다.",
"온전한 물 분자 도식은 산소 원 하나와 수소 원 둘, 짧은 내부 O–H 실선 두 개다. V자 형태는 정성적 모형이며 분자 각도 수치를 넣지 않는다.",
"수소결합 점선은 서로 다른 분자의 H···O 사이에만 둔다. 분자 내부 실선을 점선으로 바꾸거나 서로 다른 분자의 O–O 사이를 수소결합으로 연결하지 않는다.",
"점선의 생성·소멸과 불규칙한 방향·소폭 움직임을 허용한다. 영구 끈·고정 격자·모든 분자의 고정 결합 수를 강제하지 않는다."
]
},
{
"id": "bg-interface",
"description": "위쪽 공기와 아래쪽 물을 동시에 보는 물-공기 경계의 단면 개념도.",
"fixed_features": [
"references/1.png의 가는 남색 윤곽선, 단순한 둥근 형태, 정돈된 색면, 제한적인 음영을 유지한다. 세로 9:16이며 캠핑·상표·입체 실사 렌더링은 넣지 않는다.",
"크림색 설명 바탕, 물청색 액체 물, 산호색 큰 산소 원, 미색 작은 수소 원, 남색 분자 내부 실선, 황토색 분자 사이 점선을 전 장면에서 일관되게 사용한다.",
"문자·부분 전하·주석은 합성 단계에서 한국어로 검증해 배치하며 생성 PNG의 글자를 사실 주석으로 쓰지 않는다. 자막 자리는 주요 도해와 분리한다.",
"위쪽은 크림색 공기, 아래쪽은 물청색 액체 물이며 둘 사이 경계는 가는 색면 외곽선 하나다. 별도 고체 표면층은 없다.",
"물 분자는 물 쪽에 불규칙하게 배치하고 안쪽·표면의 이웃 환경을 질적으로 비교한다. 고정 결합 수·격자·아래 방향 가속 화살표는 없다.",
"공기 영역의 단순화는 액체 물 분자 이웃의 적음을 설명한다. 진공·수증기 완전 부재·임의의 농도나 수치를 표시하지 않는다."
]
},
{
"id": "bg-comparison",
"description": "같은 양의 모양 비교와 외부 영향 조건의 예시를 차례로 제시하는 크림색 비교 공간.",
"fixed_features": [
"references/1.png의 가는 남색 윤곽선, 단순한 둥근 형태, 정돈된 색면, 제한적인 음영을 유지한다. 세로 9:16이며 캠핑·상표·입체 실사 렌더링은 넣지 않는다.",
"크림색 설명 바탕, 물청색 액체 물, 산호색 큰 산소 원, 미색 작은 수소 원, 남색 분자 내부 실선, 황토색 분자 사이 점선을 전 장면에서 일관되게 사용한다.",
"문자·부분 전하·주석은 합성 단계에서 한국어로 검증해 배치하며 생성 PNG의 글자를 사실 주석으로 쓰지 않는다. 자막 자리는 주요 도해와 분리한다.",
"같은 양 비교에서는 왼쪽 길어진 물방울과 오른쪽 둥근 물방울을 입체 개념도로 제시한다. '같은 물의 양' 조건을 명시하며 수치 막대·픽셀 면적·2차원 둘레 계산은 없다.",
"조건 예시로 전환한 뒤에는 왼쪽 작은 물방울, 오른쪽 바닥선과 더 큰 접촉 물방울을 배치한다. 이 예시는 앞의 동일 부피 비교와 구별한다.",
"가는 갈색 바닥선은 조건 예시의 오른쪽에만 둔다. 접촉각·중력값·크기 경계값·표면장력 수치는 넣지 않는다."
]
}
],
"appearances": [
{
"cut_id": "c01",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c02",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c03",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c04",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c05",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c06",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c07",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c08",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c09",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c10",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c11",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c12",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c13",
"character_ids": [],
"background_ids": [
"bg-molecules"
]
},
{
"cut_id": "c14",
"character_ids": [],
"background_ids": [
"bg-interface"
]
},
{
"cut_id": "c15",
"character_ids": [],
"background_ids": [
"bg-interface"
]
},
{
"cut_id": "c16",
"character_ids": [],
"background_ids": [
"bg-interface"
]
},
{
"cut_id": "c17",
"character_ids": [],
"background_ids": [
"bg-interface"
]
},
{
"cut_id": "c18",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c19",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c20",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c21",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c22",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c23",
"character_ids": [],
"background_ids": [
"bg-comparison"
]
},
{
"cut_id": "c24",
"character_ids": [],
"background_ids": [
"bg-comparison"
]
},
{
"cut_id": "c25",
"character_ids": [],
"background_ids": [
"bg-comparison"
]
},
{
"cut_id": "c26",
"character_ids": [],
"background_ids": [
"bg-comparison"
]
},
{
"cut_id": "c27",
"character_ids": [],
"background_ids": [
"bg-comparison"
]
},
{
"cut_id": "c28",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c29",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c30",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
},
{
"cut_id": "c31",
"character_ids": [],
"background_ids": [
"bg-droplet"
]
}
]
}
}
@@ -0,0 +1,41 @@
# 반복 요소·고정 특징 검토
- 제작 ID: water-hydrogen-bond-surface-tension / 09-entities r1 / scenes 검토 묶음.
- 입력: [03 대본 r1](../../03-script/r1/artifact.json), [08 장면 r1](../../08-scenes/r1/artifact.json).
- 결과: [artifact.json](artifact.json). characters=[] / backgrounds 4개 / appearances 31개.
- 대본에 설명자·사람이 필요하지 않아 인물을 새로 만들지 않았다. 반복되는 물방울·분자 도식은 해당 배경의 fixed_features와 08 상태로 관리한다.
- 제출 당시 상태: 검사 후 awaiting_review. 아래 실제 scenes 승인으로 07·08과 함께 complete 처리하고 10으로 전달한다.
- 실제 검사 결과: 4개 배경 ID의 유일성, 31개 컷의 정확히 한 번 등장·08 순서 일치, 빈 character_ids, 각 컷의 유효한 background_ids 참조를 검사해 종료코드 0을 확인했다. 이미지를 생성·검증했다고 기록하지 않는다.
## 배경과 등장 컷
| 배경 ID | 등장 컷 | 사용하는 설명 공간 |
| --- | --- | --- |
| bg-droplet | c01, c02, c18, c19, c20, c21, c22, c28, c29, c30, c31 | 도입·표면 확장·결말에서 반복되는 작은 물방울의 크림색 설명 공간. |
| bg-molecules | c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13 | 한 물 분자·이웃 분자·물속 연결을 설명하는 불규칙한 분자 개념도의 크림색 공간. |
| bg-interface | c14, c15, c16, c17 | 위쪽 공기와 아래쪽 물을 동시에 보는 물-공기 경계의 단면 개념도. |
| bg-comparison | c23, c24, c25, c26, c27 | 같은 양의 모양 비교와 외부 영향 조건의 예시를 차례로 제시하는 크림색 비교 공간. |
각 appearances는 08 순서의 모든 컷을 정확히 한 번 포함한다. character_ids는 모두 빈 배열이고 background_ids는 위 실제 사용한 배경 ID 하나다. 화면 상태 변화 때문에 동일한 배경을 새 ID로 분리하지 않는다.
## 반복해서 유지할 특징
- 그림체: 직접 확인한 [references/1.png](../../../../../references/1.png)의 가는 윤곽선·단순 형태·색면·제한적 음영. 캠핑의 장소·인물·상표를 복제하지 않는다.
- 물방울: 물청색 색면·가는 남색 경계선·작은 하이라이트. 이 경계선은 고체 껍질이 아니다. 모양은 설명에 따라 변할 수 있으며 둥근 모양을 모든 상태에 고정하지 않는다.
- 물 분자: 산호색 큰 산소 원 하나, 미색 작은 수소 원 둘, 짧은 남색 내부 O–H 실선 두 개. 내부 결합 형태·원자 수는 유지하고 방향·소폭 위치 이동은 허용한다.
- 수소결합: 이웃 분자의 H···O 사이에 황토색 점선. 생성·소멸은 허용하므로 고정 특징에 영구적인 점선망을 넣지 않는다.
- 전하·라벨: 부분 전하를 각 원자 쪽에 배치하며 분자 전체의 이온 기호로 쓰지 않는다. 이미지 PNG에는 문자를 요구하지 않고 합성 단계에서 한국어·발화 시간·대상 위치를 확인한다.
- 단면: 위쪽 공기·아래쪽 액체 물·가는 자유 표면 경계. 내부/표면의 이웃 환경은 정성적으로 비교하며 실제 수치·결합 수·격자를 강제하지 않는다.
- 조건 비교: 같은 양 비교와 큰 접촉 물방울의 조건 예시를 서로 다른 배치·주석으로 구별한다. 인접 continuous 구간에서는 이미 정한 위치·방향·카메라를 유지한다.
전체 fixed_features의 정확한 문구는 JSON에 있다. 이미지 생성 시 08의 해당 start_state·end_state와 함께 전달하며, 고정 특징으로 행동 변화를 막지 않는다. 과학 원리의 근거·비유 한계는 [08 검토](../../08-scenes/r1/review.md)에 연결한다.
## 적용과 미확인
[화면·그림체 지침](../../../../../docs/short-video-guide.md#깔끔한-그림체로-작동-방식을-보여준다)을 적용했다. 인물 대화·배경 장소의 역사·장식적 움직임은 원리 설명에 필요하지 않아 추가하지 않았다. 현재는 설계의 식별자·문구·상태 참조 검사이며 실제 PNG의 형태·색·연속성을 검사한 결과는 아니다. 실제 기준 이미지는 scenes 승인 뒤 10에서 검증한다.
## 실제 scenes 승인
- 사용자 응답: “승인합니다.”
- 승인 버전: 07-cuts r1, 08-scenes r1, 09-entities r1.
- 현재 상태: complete. 4개 배경과 인물 없음의 선택을 그대로 유지한다. 기준 PNG 검증을 반복 요소 설계 승인으로 대신하지 않는다.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,87 @@
# 기준 이미지 요청과 실행 준비
- 제작 ID: water-hydrogen-bond-surface-tension / 10-references r1.
- 입력: [02 조사 r1](../../02-research/r1/review.md), [08 승인 장면 r1](../../08-scenes/r1/review.md), [09 승인 반복 요소 r1](../../09-entities/r1/review.md).
- 실제 scenes 승인: “승인합니다.” / 07-cuts r1·08-scenes r1·09-entities r1. project.json의 승인 버전과 일치한다.
- 요청: [artifact.json](artifact.json)의 gpt-image-2.5-sunburst / references/1.png / 5개 기준 항목.
- 실제 내장 도구로 기준 이미지 5종을 생성하고 내용 오류를 수정했다. 사용자가 허용한 여백 보정을 적용해 945×1680·verified=true·complete다. 아래에는 당시 대기 조건과 해소 근거를 보존했다.
## 여백 보정 허용과 완료 — 2026-10-09
사용자 응답 “허용합니다”는 앞서 제시한 원본 픽셀 유지·여백만 추가하는 로컬 규격 보정의 허용이다. 기존 qwen3-tts 환경의 Pillow로 원본을 보존하고 좌우 각 2px·상하 각 4px 여백을 추가한 새 PNG 5개를 저장했다. 실제 크기 945×1680, width×16=height×9, 원본 영역 픽셀 바이트 동일, PNG CRC·전체 디코딩을 확인했다. 처음 CRC 확인을 디코딩 뒤에 호출해 Pillow 검증 순서 오류가 발생했고, 새로 연 파일에서 verify를 먼저 호출해 모든 파일의 검증 종료코드 0을 확인했다. 환경 설치·수정은 없었다.
보정된 [스타일](../../../media/10-references/r1/ref-style.png), [물방울](../../../media/10-references/r1/ref-bg-droplet.png), [분자](../../../media/10-references/r1/ref-bg-molecules.png), [계면](../../../media/10-references/r1/ref-bg-interface.png), [비교](../../../media/10-references/r1/ref-bg-comparison.png)를 각각 열어 내용·그림체·경계·여백을 확인했다. artifact 결과는 이 새 파일의 실측 값과 verified=true로 연결했다. 원래 시도 PNG는 보존한다. 실제 모델 미확인 내장 도구 사용 허용과 여백 보정 허용을 모두 유지하며 같은 허용을 다시 요청하지 않는다. 10 완료 조건이 충족되어 11을 시작한다.
## 준비한 기준 항목
| 요청 ID | 종류 / 09 요소 | 연결 장면 | 확인할 핵심 |
| --- | --- | --- | --- |
| ref-style | style / null | c01–c31 | 가는 윤곽선·색면·제한적 음영, 물방울·분자 도식의 동일한 그림체 |
| ref-bg-droplet | background / bg-droplet | c01·c02·c18–c22·c28–c31 | 작은 물방울, 확대 개념도, 별도 껍질 없는 경계 |
| ref-bg-molecules | background / bg-molecules | c03–c13 | O 하나·H 둘, 내부 실선과 이웃 H···O 점선의 구별 |
| ref-bg-interface | background / bg-interface | c14–c17 | 위 공기·아래 물, 내부와 표면의 이웃 환경, 고체 표면층 없음 |
| ref-bg-comparison | background / bg-comparison | c23–c27 | 같은 양의 모양 비교와 큰 접촉 물방울의 조건 예시 구별 |
09의 characters는 빈 배열이므로 인물 기준 요청은 만들지 않았다. 스타일 하나와 필요한 4개 배경을 각각 정확히 한 번 포함한다. 모든 프롬프트에 장면 ID·배경 ID·고정 특징과 검증된 claim/source 내용을 연결했다.
## 그림체·근거 적용
원본 references/1.png를 실제로 열어 가는 남색 윤곽선, 단순한 형태, 정돈된 색면, 제한적인 음영을 확인했다. 새 과학 소재에 적용하며 캠핑·사람·상표는 가져오지 않는다. 크림색 설명 바탕·물청색 물·산호색 산소·미색 수소·남색 내부 실선·황토색 분자 사이 점선을 승인된 설계대로 유지한다.
02의 verified c1–c9와 해당 출처를 확인했다. 요청 항목별로 필요한 사실을 프롬프트에 직접 적고 출처·claim ID를 덧붙였다. 원자 수·분자 안/사이 결합·불규칙한 액체 연결·물-공기 환경·표면 확장 에너지·구형 조건·껍질 오해 방지가 핵심이다. 분자 각도·결합 수·시간·접촉각·표면장력 수치는 새로 만들지 않는다.
문자·숫자·부분 전하·원자 기호·한국어 라벨은 기준 PNG에 생성하지 않는다. 08의 라벨·자막 계획은 후속 합성 단계에서 실제 발화 구간에 맞춰 검증한 텍스트로 배치한다. 여백을 남기되 특정 플랫폼의 안전영역 픽셀 수를 가정하지 않는다. 기준 이미지에 여러 예시가 있더라도 모든 컷에 전부 등장하게 강제하지 않는다.
## 지정 모델과 실행 경로 확인
- [공식 모델 문서](https://developers.openai.com/api/docs/models/gpt-image-2.5-sunburst)에서 gpt-image-2.5-sunburst의 이미지 생성·편집 API 지원을 확인했다. 모델이 존재하지 않거나 전반적으로 지원되지 않는다고 판정하지 않는다.
- [공식 이미지 API](https://developers.openai.com/api/reference/resources/images/methods/generate)에서 이 모델의 가로·세로 해상도 지정 지원을 확인했다. 실제 요청의 세로 9:16과 PNG 내용·크기는 받은 파일에서 별도로 확인해야 한다.
- 현재 제공된 내장 image_gen.imagegen의 입력은 prompt, transparent_background, referenced_image_paths, num_last_images_to_include다. 모델 선택 인자나 사용 모델 확인 수단은 도구 정의에 없다. 프롬프트에 모델 이름을 써도 실제 모델 선택의 증거가 되지 않는다.
- 현재 별도 실행 경로의 OPENAI_API_KEY 설정 여부와 기존 OpenAI 패키지 유무만 확인했으며 값·인증정보는 출력하거나 저장하지 않았다. API 인증·실행 지원은 확인되지 않았다. 사용자 전역 환경·설정을 변경하지 않았다.
- 실행 경로를 조사할 당시에는 이미지 호출이 0회였다. 이후 아래 사용자 허용에 따라 내장 도구를 호출했다. 실제 모델명은 여전히 미확인이며 지정 모델 실행 성공으로 기록하지 않는다.
## 남은 조건과 후속 단계
요청 준비 당시에는 지정 모델을 선택·확인해 실행할 경로가 없어 awaiting_input으로 보고할 조건이었다. 아래 실제 사용자 허용으로 내장 도구 실행을 시작한다. API 키 값은 채팅·제작 결과에 받거나 기록하지 않는다.
이 확인은 기존 scenes 재승인이나 새 영상 입력 필드가 아니다. [short-video-references 지침](../../../../../.agents/skills/short-video-references/SKILL.md)의 “다른 모델로 무단 대체하지 않는다”, “지원·결과가 확인되지 않으면 요청서와 미확인 내용을 남긴다” 요구 때문에 기존 도구 제약을 보고한다.
실행 경로가 확보되면 ref-style을 먼저 생성·검증하고 같은 그림체로 배경 4개를 만든다. 각 reference_id에 실제 PNG의 저장소 상대 경로·실측 크기·화면 검사 결과를 연결한다. 실제 PNG 없이 가상의 경로·verified=true를 기록하지 않는다. 필요한 모든 기준 PNG를 검증한 뒤 11의 31개 컷 start/end 요청을 작성한다. 22개 continuous 연결에서 같은 끝/시작 이미지를 공유할 수 있으나 각 프레임 ID는 유지한다. 11–14는 아직 시작하지 않는다.
## 실제 도구 사용 허용
- 사용자 응답: “현재 내장 이미지 도구 사용을 허용합니다(모델명 확인 없이)”.
- 적용: 이 제작의 10 기준 이미지·11 컷 이미지에 내장 image_gen.imagegen을 사용한다. 별도 API 인증·설치·전역 변경을 요구하지 않는다.
- 실제 모델명은 미확인이다. 사용자 명시적 허용이 원래의 지정 모델 확인 조건에 대한 예외이며, 내장 도구를 gpt-image-2.5-sunburst라고 확인했다고 기록하지 않는다. JSON request.model·settings.image_model은 기존 요청 모델을 보존하며 실제 엔진 식별 근거는 이 검토 기록에 구분한다.
- 현재 상태: awaiting_input. 실제 PNG 내용 확인은 마쳤으나 정확한 9:16 규격 보정이 남았다. 이 동일한 모델명 미확인 허용을 다시 요청하지 않는다.
## 실제 생성과 수정 기록 — 2026-10-09
내장 image_gen.imagegen 호출 10회로 스타일 3안, 물방울 배경 1안, 나머지 배경 각 2안을 받았다. 사용자가 허용한 내장 도구를 사용했고 실제 모델명은 도구가 공개하지 않았다. 원본과 시도 이미지를 보존하며 선택 후보를 아래에 연결했다. 실제 실행 프롬프트는 artifact의 원 요청에 원본 그림체 적용·문자 제외 지시를 더했고, 재시도에서는 관찰한 오류만 지정해 수정했다.
| 기준 ID | 실제 선택 후보 | 실제 크기 | 화면 확인 |
| --- | --- | --- | --- |
| ref-style | [스타일 3안](../../../media/10-references/r1/attempts/ref-style-a3.png) | 941×1672 | 둥근 물방울, 가는 남색 선·제한적 음영, 확대 쌍 각각 O1/H2, H···O 점선 |
| ref-bg-droplet | [물방울 배경](../../../media/10-references/r1/attempts/ref-bg-droplet-a1.png) | 941×1672 | 둥근 물방울·확대 위치 안내와 온전한 O1/H2 도식, 별도 껍질 없음 |
| ref-bg-molecules | [분자 배경 2안](../../../media/10-references/r1/attempts/ref-bg-molecules-a2.png) | 941×1672 | 위 1분자·가운데 2분자·아래 불규칙 3분자, 각 O1/H2·내부 실선 2개, 점선 3개 모두 다른 분자 H···O |
| ref-bg-interface | [계면 배경 2안](../../../media/10-references/r1/attempts/ref-bg-interface-a2.png) | 941×1672 | 위 공기·아래 물, 온전한 O1/H2 분자 7개 불규칙 배치, 내부/표면 이웃 차이, 고체 막·가속 화살표 없음 |
| ref-bg-comparison | [모양 비교 배경 2안](../../../media/10-references/r1/attempts/ref-bg-comparison-a2.png) | 941×1672 | 위 길어진/둥근 모양, 아래 작은 자유/큰 접촉 물방울, 갈색 바닥은 아래 오른쪽만 |
실제 PNG를 모두 view_image로 열어 조사 근거·고정 특징·원자 수·연결 끝점·그림체·문자 부재를 확인했다. 계면 기준은 이웃 배치를 명확히 보이게 점선을 생략했으며, 상세 수소결합 표현은 검증한 분자 기준을 따른다. 개념도에 그린 분자 수는 실제 결합 수·농도·입체 부피의 수치 근거가 아니다. 모양 비교는 실제 3차원 물방울의 정성적 표현이고 픽셀 넓이·둘레를 비교하지 않는다. '같은 물의 양' 조건과 하단 예시의 다른 조건은 이후 해당 컷의 합성 주석으로 명시한다.
탈락 사유: 스타일 1안의 뾰족한 물방울과 과한 음영, 스타일 2안의 굵은 선을 수정했다. 분자 배경 1안은 H···H 연결과 화면 밖으로 향한 점선을 수정했다. 계면 배경 1안에는 수소 원 3개인 잘못된 분자와 잘못 연결된 점선이 있어, 정확한 O1/H2 구조와 단순한 이웃 배치로 다시 만들었다. 비교 배경 1안에 추가된 불필요한 분자 그림은 제거했다. 이 시도 파일을 선택 결과로 참조하지 않는다.
## 실제 규격 확인과 남은 보정
PNG signature·IHDR 실측은 다섯 선택 후보 모두 941×1672다. width×16=15056, height×9=15048이므로 정확한 9:16은 아니다. 프롬프트에 요청한 크기를 실제 크기로 쓰지 않았다. 그림을 유지하고 좌우 각 2px·상하 각 4px의 여백을 추가하면 945×1680의 정확한 9:16이 된다. 아직 로컬 보정을 실행하지 않았다.
현재 내장 이미지 도구의 지침은 이미지 편집에 해당 도구를 사용하도록 요구한다. 따라서 별도 로컬 여백 보정 허용을 확인하는 질문을 제출했으며 답변은 아직 없다. 모델명 미확인 도구 사용 허용과 로컬 보정 허용을 구별한다. 기존 qwen3-tts 환경에 Pillow가 이미 존재함은 읽기 전용으로 확인했지만 환경을 설치·수정하거나 그 라이브러리로 이미지를 편집하지 않았다.
보정이 허용되면 원본 픽셀을 그대로 유지한 새 파일로 저장하고 실제 9:16·PNG·픽셀 동일성·화면을 확인한다. 모든 기준이 검증되기 전 11의 요청·생성을 시작하지 않는다. [short-video-images 지침](../../../../../.agents/skills/short-video-images/SKILL.md)은 “10의 모든 필요한 기준 PNG와 참조가 검증되어야 한다”고 명시한다. 현재 11–14는 pending이며 최종 영상은 아직 없다.
## 검증 실행 기록
- 기존 base Python의 jsonschema.Draft202012Validator로 project.json과 01–10 artifact.json 10개를 검사했다. 기존 환경을 설치·변경하지 않았고 종료코드 0이다.
- Python 표준 라이브러리로 요청/결과 ID 5종 일치·선행 버전 파일·기존 세 승인 유지·10 대기 상태·11–14 미시작·PNG signature/IHDR 실측과 비율 미충족 기록을 확인했다. 종료코드 0이다.
- 기존 qwen3-tts Pillow를 읽기 전용으로 사용해 PNG 5개 모두 RGB·941×1672·전체 디코딩과 CRC 검사를 통과했다. 종료코드 0이며 이미지 편집은 수행하지 않았다.
- 이 검토·tracking findings의 실제 로컬 Markdown 링크를 검사해 연결 파일 존재를 확인했다. git diff --check 종료코드 0이다. 형식·디코딩 성공을 정확한 9:16 또는 단계 완료로 해석하지 않는다.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,85 @@
# 컷 시작·끝 이미지 제작
- 제작: water-hydrogen-bond-surface-tension / 11-images r1.
- 입력: 02·03·07·08·09·10 각 r1, 기존 topic/story/scenes 실제 승인 유지.
- 요청: [artifact.json](artifact.json). 31컷마다 start/end 각 1개, 총 62 frame ID. 기준 이미지 5종은 실제 945×1680 PNG·verified=true다.
- 실제 도구: 사용자가 허용한 내장 image_gen.imagegen, 실제 모델명 미확인. JSON의 model은 원 요청을 보존하며 지정 모델의 실제 실행을 확인했다고 기록하지 않는다.
- 사용자가 “허용합니다”로 승인한 원본 픽셀 유지·여백 추가 규격 보정을 필요한 컷 PNG에도 적용한다. 이미지 내용 수정은 내장 도구로 수행하며 기존 Qwen 환경의 Pillow는 여백만 추가한다. 원본 시도·보정 파일을 모두 보존한다.
- 22개 continuous 연결은 앞 end와 다음 start에 별도 ID를 두되 동일 PNG를 공유할 수 있다. 연결·고정 특징·원자 수·점선 끝점·카메라·실제 9:16을 검증하며, 모든 실제 결과가 검증되기 전 완료로 처리하지 않는다.
- 합성 주석·부분 전하·제목·자막은 PNG에서 제외하고 13의 텍스트 합성으로 전달한다. 글자만 달라지는 상태는 같은 바탕 PNG를 공유할 수 있으며 강조 도형 변화는 별도 이미지로 만든다.
- 소수의 정성 분자 도식은 실제 결합 수·밀도·입체 부피의 수치 표현이 아니다. 긴/둥근 모양 비교의 같은 물 양 조건과 작은/큰 접촉 예시의 다른 조건을 후속 합성에 명시한다. 사실에 없는 위기·반전·실패한 대안은 추가하지 않는다.
- 초기에는 draft / result=null이었다. 아래 최종 확인을 기준으로 현재 11은 complete다. 영상·합성의 실제 결과 확인은 별도 단계다.
## 실제 결과와 검증
- 총 62 frame ID 모두 실제 PNG에 연결했다. 30개의 고유 파일(새 컷 PNG 28개, 검증된 10 기준 PNG 2개)을 사용한다. ID를 합치거나 컷을 생략하지 않았다.
- 모두 945×1680 RGB PNG, 실제 9:16이다. 원본 시도는 attempts에 보존했다. Pillow의 PNG CRC/디코딩 확인, 여백 안쪽 원본 픽셀 바이트 동일 비교, view_image의 실제 화면 확인을 수행했다. 해당 미디어만 verified=true로 기록했다.
- 모든 물 분자는 O1/H2·내부 실선 2개를 유지하고 분자 사이 점선은 H···O다. c10–13의 소수 분자는 액체의 불규칙하고 바뀌는 연결을 나타내는 정성 도식이며 고정 결합 수·실제 밀도 측정이 아니다.
- c26-end 첫 시도는 요청에 없는 분자들이 추가되어 제외했다. c26-end-v2는 원래 작은 자유 물방울·큰 접촉 물방울의 순수 윤곽만 남겼다. c12-end 첫 시도는 끌림 화살표 방향이 불명확하여 제외했다. c12-end-v2의 두 짧은 화살표는 서로 향하며 점선과 분리된다. 제외 파일은 완료 결과에서 참조하지 않는다.
- c22/c24/c27은 기존 윤곽 일부의 색만 강조해 두꺼운 껍질을 추가하지 않는다. c18–21/c30–31은 입체 물방울 변화를 단순 평면으로 나타내며 픽셀 넓이가 부피라는 주장이 아니다.
- c05/c08/c13/c17/c23/c25의 시작/끝 바탕 PNG는 합성 주석만 달라져 공유한다. c18-start/c21-end/c28-start/c31-end는 처음의 둥근 물방울 PNG를 재사용해 질문과 답을 연결한다.
- 부분 전하 δ−/δ+는 해당 O/H 위치에 13에서 합성하며 물 분자 전체가 중성임을 함께 표시한다. 수소결합 명칭은 26180ms 이후, 표면장력 명칭은 80200ms 이후, 큰 접촉 예시는 93420ms 이후로 전달한다. c19의 빈 황토색 박스는 외부 에너지 주석 자리이며 물질·전하가 아니다.
- 실제 사용 도구는 사용자 예외 승인에 따른 내장 image_gen.imagegen이다. 실제 모델명은 확인되지 않았다. 요청의 gpt-image-2.5-sunburst는 지정 모델 요청을 보존한 값이다.
## 컷별 실제 파일
| 컷 | start | end |
|---|---|---|
| c01 | [c01-start.png](../../../media/11-images/r1/c01-start.png) | [c01-end.png](../../../media/11-images/r1/c01-end.png) |
| c02 | [c01-end.png](../../../media/11-images/r1/c01-end.png) | [ref-bg-droplet.png](../../../media/10-references/r1/ref-bg-droplet.png) |
| c03 | [c03-start.png](../../../media/11-images/r1/c03-start.png) | [c03-end.png](../../../media/11-images/r1/c03-end.png) |
| c04 | [c03-end.png](../../../media/11-images/r1/c03-end.png) | [c04-end.png](../../../media/11-images/r1/c04-end.png) |
| c05 | [c04-end.png](../../../media/11-images/r1/c04-end.png) | [c04-end.png](../../../media/11-images/r1/c04-end.png) |
| c06 | [c06-start.png](../../../media/11-images/r1/c06-start.png) | [c06-end.png](../../../media/11-images/r1/c06-end.png) |
| c07 | [c06-end.png](../../../media/11-images/r1/c06-end.png) | [c07-end.png](../../../media/11-images/r1/c07-end.png) |
| c08 | [c07-end.png](../../../media/11-images/r1/c07-end.png) | [c07-end.png](../../../media/11-images/r1/c07-end.png) |
| c09 | [c07-end.png](../../../media/11-images/r1/c07-end.png) | [c09-end.png](../../../media/11-images/r1/c09-end.png) |
| c10 | [c10-start.png](../../../media/11-images/r1/c10-start.png) | [c10-end.png](../../../media/11-images/r1/c10-end.png) |
| c11 | [c10-end.png](../../../media/11-images/r1/c10-end.png) | [c11-end.png](../../../media/11-images/r1/c11-end.png) |
| c12 | [c11-end.png](../../../media/11-images/r1/c11-end.png) | [c12-end-v2.png](../../../media/11-images/r1/c12-end-v2.png) |
| c13 | [c12-end-v2.png](../../../media/11-images/r1/c12-end-v2.png) | [c12-end-v2.png](../../../media/11-images/r1/c12-end-v2.png) |
| c14 | [ref-bg-interface.png](../../../media/10-references/r1/ref-bg-interface.png) | [c14-end.png](../../../media/11-images/r1/c14-end.png) |
| c15 | [c14-end.png](../../../media/11-images/r1/c14-end.png) | [c15-end.png](../../../media/11-images/r1/c15-end.png) |
| c16 | [c15-end.png](../../../media/11-images/r1/c15-end.png) | [c16-end.png](../../../media/11-images/r1/c16-end.png) |
| c17 | [c16-end.png](../../../media/11-images/r1/c16-end.png) | [c16-end.png](../../../media/11-images/r1/c16-end.png) |
| c18 | [c01-start.png](../../../media/11-images/r1/c01-start.png) | [c18-end.png](../../../media/11-images/r1/c18-end.png) |
| c19 | [c18-end.png](../../../media/11-images/r1/c18-end.png) | [c19-end.png](../../../media/11-images/r1/c19-end.png) |
| c20 | [c19-end.png](../../../media/11-images/r1/c19-end.png) | [c20-end.png](../../../media/11-images/r1/c20-end.png) |
| c21 | [c20-end.png](../../../media/11-images/r1/c20-end.png) | [c01-start.png](../../../media/11-images/r1/c01-start.png) |
| c22 | [c01-start.png](../../../media/11-images/r1/c01-start.png) | [c22-end.png](../../../media/11-images/r1/c22-end.png) |
| c23 | [c23-start.png](../../../media/11-images/r1/c23-start.png) | [c23-start.png](../../../media/11-images/r1/c23-start.png) |
| c24 | [c23-start.png](../../../media/11-images/r1/c23-start.png) | [c24-end.png](../../../media/11-images/r1/c24-end.png) |
| c25 | [c25-start.png](../../../media/11-images/r1/c25-start.png) | [c25-start.png](../../../media/11-images/r1/c25-start.png) |
| c26 | [c25-start.png](../../../media/11-images/r1/c25-start.png) | [c26-end-v2.png](../../../media/11-images/r1/c26-end-v2.png) |
| c27 | [c26-end-v2.png](../../../media/11-images/r1/c26-end-v2.png) | [c27-end.png](../../../media/11-images/r1/c27-end.png) |
| c28 | [c01-start.png](../../../media/11-images/r1/c01-start.png) | [c28-end.png](../../../media/11-images/r1/c28-end.png) |
| c29 | [c28-end.png](../../../media/11-images/r1/c28-end.png) | [c29-end.png](../../../media/11-images/r1/c29-end.png) |
| c30 | [c29-end.png](../../../media/11-images/r1/c29-end.png) | [c30-end.png](../../../media/11-images/r1/c30-end.png) |
| c31 | [c30-end.png](../../../media/11-images/r1/c30-end.png) | [c01-start.png](../../../media/11-images/r1/c01-start.png) |
## 연속 연결의 파일 공유
- c01-end → c02-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c01-end.png`
- c03-end → c04-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c03-end.png`
- c04-end → c05-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c04-end.png`
- c06-end → c07-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c06-end.png`
- c07-end → c08-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c07-end.png`
- c08-end → c09-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c07-end.png`
- c10-end → c11-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c10-end.png`
- c11-end → c12-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c11-end.png`
- c12-end → c13-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c12-end-v2.png`
- c14-end → c15-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c14-end.png`
- c15-end → c16-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c15-end.png`
- c16-end → c17-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c16-end.png`
- c18-end → c19-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c18-end.png`
- c19-end → c20-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c19-end.png`
- c20-end → c21-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c20-end.png`
- c21-end → c22-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c01-start.png`
- c23-end → c24-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c23-start.png`
- c25-end → c26-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c25-start.png`
- c26-end → c27-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c26-end-v2.png`
- c28-end → c29-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c28-end.png`
- c29-end → c30-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c29-end.png`
- c30-end → c31-start: `projects/water-hydrogen-bond-surface-tension/media/11-images/r1/c30-end.png`
22개 continuous 연결의 앞 end와 뒤 start는 모두 동일 실제 경로다. 나머지 8개 cut 전환은 승인된 확대·네트워크·단면·모양·조건 비교의 시점 변경 이유를 유지한다. 12에서는 분자 자체를 임의 생성·변형하지 않고 점선·강조·물방울 윤곽의 해당 변화를 검증해야 한다. 형식 검사나 PNG 확인은 중간 영상 프레임의 검증을 대신하지 않는다.
@@ -0,0 +1,588 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"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": "c01",
"start_frame_id": "c01-start",
"end_frame_id": "c01-end",
"duration_ms": 4380,
"motion_prompt": "사용자 승인된 08 장면: 작은 물방울의 둥근 모양을 먼저 보여주고 도입의 질문을 약속한다.\n시작: 크림색 화면 중앙에 물청색의 작은 둥근 물방울 하나가 떠 있다. 가는 남색 외곽선과 작은 색면 하이라이트만 있으며 별도 껍질·바닥·상표는 없다.\n끝: 물방울은 같은 위치·크기·둥근 모양을 유지한다. 우상단의 작은 확대 개념도 자리로 이어지는 가는 지시선이 나타난다. 실제 막이나 힘을 나타내는 선은 아니다.\n카메라: 고정 세로 전경. 크림색 설명 화면 중앙에 작은 물방울, 우상단에 확대 개념도 자리. 원근 과장·흔들림 없음.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c02",
"start_frame_id": "c02-start",
"end_frame_id": "c02-end",
"duration_ms": 3540,
"motion_prompt": "사용자 승인된 08 장면: 동일한 물방울에 분자 확대 개념도를 연결해 모양의 이유를 분자에서 찾게 한다.\n시작: 물방울은 같은 위치·크기·둥근 모양을 유지한다. 우상단의 작은 확대 개념도 자리로 이어지는 가는 지시선이 나타난다. 실제 막이나 힘을 나타내는 선은 아니다.\n끝: 중앙 물방울은 그대로다. 우상단 개념도 안에 산소 산호색 큰 원 하나와 수소 미색 작은 원 둘을 가진 물 분자 도식이 보인다. 합성 주석 '분자 확대 개념도'로 실제 비율·위치와 구별한다.\n카메라: 고정 세로 전경. 크림색 설명 화면 중앙에 작은 물방울, 우상단에 확대 개념도 자리. 원근 과장·흔들림 없음.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c03",
"start_frame_id": "c03-start",
"end_frame_id": "c03-end",
"duration_ms": 4000,
"motion_prompt": "사용자 승인된 08 장면: 산소 하나와 수소 둘을 같은 분자 안에서 순서대로 강조해 물의 구성을 설명한다.\n시작: 중앙에 온전한 물 분자 도식이 있다. 산호색 큰 산소 원 하나와 미색 작은 수소 원 둘을 짧은 남색 실선 두 개가 잇는다. 아직 강조 테두리·전하 주석은 없다.\n끝: 같은 물 분자의 산소와 수소 둘에 순서대로 얇은 강조가 들어가 원자 수를 구별할 수 있다. 원자가 떨어지거나 새로 결합하는 화학 반응은 보여주지 않는다.\n카메라: 고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c04",
"start_frame_id": "c04-start",
"end_frame_id": "c04-end",
"duration_ms": 2860,
"motion_prompt": "사용자 승인된 08 장면: 산소 쪽의 부분 음전하를 강조한다. 분자 전체를 음이온으로 표시하지 않는다.\n시작: 같은 물 분자의 산소와 수소 둘에 순서대로 얇은 강조가 들어가 원자 수를 구별할 수 있다. 원자가 떨어지거나 새로 결합하는 화학 반응은 보여주지 않는다.\n끝: 분자 위치와 내부 실선은 그대로다. 산소 원 주변만 옅은 강조가 있고 합성 주석 '살짝 마이너스' 또는 δ−가 산소 쪽에 붙는다.\n카메라: 고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c05",
"start_frame_id": "c05-start",
"end_frame_id": "c05-end",
"duration_ms": 3300,
"motion_prompt": "사용자 승인된 08 장면: 수소 쪽의 부분 양전하를 추가해 두 쪽의 성질 차이를 설명한다.\n시작: 분자 위치와 내부 실선은 그대로다. 산소 원 주변만 옅은 강조가 있고 합성 주석 '살짝 마이너스' 또는 δ−가 산소 쪽에 붙는다.\n끝: 같은 분자에서 산소 쪽 δ−와 수소 두 쪽 δ+의 부분 전하 주석이 보인다. 분자 전체를 감싸는 +/− 기호·이온 테두리는 없다.\n카메라: 고정 세로 근접 도해. 크림색 바탕 중앙에 온전한 물 분자 하나. 분자 위치·원자 크기·V자 형태를 세 컷에서 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c06",
"start_frame_id": "c06-start",
"end_frame_id": "c06-end",
"duration_ms": 2260,
"motion_prompt": "사용자 승인된 08 장면: 왼쪽 분자의 수소 쪽과 오른쪽 분자의 산소 쪽을 찾아 서로 다른 분자임을 보여준다.\n시작: 왼쪽·오른쪽에 온전한 물 분자 도식이 있다. 각 분자는 산호색 O 하나·미색 H 둘·남색 내부 실선을 유지한다. 왼쪽 H와 오른쪽 O가 서로 마주보며 아직 분자 사이 점선은 없다.\n끝: 분자들은 같은 자리에 있다. 왼쪽 분자의 마주보는 H 쪽과 오른쪽 분자의 O 쪽만 옅은 강조와 부분 전하 주석으로 짚는다. 두 분자는 합쳐지지 않는다.\n카메라: 고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c07",
"start_frame_id": "c07-start",
"end_frame_id": "c07-end",
"duration_ms": 4040,
"motion_prompt": "사용자 승인된 08 장면: 이웃 분자의 수소와 산소 사이 끌림을 양쪽의 짧은 방향 표시와 점선으로 표현한다.\n시작: 분자들은 같은 자리에 있다. 왼쪽 분자의 마주보는 H 쪽과 오른쪽 분자의 O 쪽만 옅은 강조와 부분 전하 주석으로 짚는다. 두 분자는 합쳐지지 않는다.\n끝: 같은 두 분자의 마주보는 H···O 사이에 황토색 가는 점선과 양쪽에서 서로 향하는 짧은 끌림 표시가 보인다. 각 분자 내부 남색 실선은 변하지 않는다.\n카메라: 고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c08",
"start_frame_id": "c08-start",
"end_frame_id": "c08-end",
"duration_ms": 4100,
"motion_prompt": "사용자 승인된 08 장면: 분자 사이 점선을 강조하고 실제 발화에 맞춰 수소결합이라는 이름을 붙인다.\n시작: 같은 두 분자의 마주보는 H···O 사이에 황토색 가는 점선과 양쪽에서 서로 향하는 짧은 끌림 표시가 보인다. 각 분자 내부 남색 실선은 변하지 않는다.\n끝: 같은 H···O 점선이 강조된다. 06의 u03 상대 8100ms 이후 합성 주석 '수소결합'을 붙인다. 영구적인 굵은 끈·새 산소–수소 실선으로 바꾸지 않는다.\n카메라: 고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c09",
"start_frame_id": "c09-start",
"end_frame_id": "c09-end",
"duration_ms": 4240,
"motion_prompt": "사용자 승인된 08 장면: 분자 사이 점선과 한 분자 안의 실선을 비교해 두 결합을 구별한다.\n시작: 같은 H···O 점선이 강조된다. 06의 u03 상대 8100ms 이후 합성 주석 '수소결합'을 붙인다. 영구적인 굵은 끈·새 산소–수소 실선으로 바꾸지 않는다.\n끝: 두 분자와 H···O 점선은 같은 위치에 남는다. 한 분자 내부 O–H 실선에 별도의 얇은 강조를 더하고 합성 주석 '분자 안'과 '분자 사이'를 서로 다른 선 가까이에 둔다.\n카메라: 고정 세로 중근접 도해. 왼쪽과 오른쪽에 온전한 물 분자 한 개씩, 왼쪽의 수소가 오른쪽의 산소를 향한다. 모든 컷에서 두 분자의 위치·방향을 유지.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c10",
"start_frame_id": "c10-start",
"end_frame_id": "c10-end",
"duration_ms": 2840,
"motion_prompt": "사용자 승인된 08 장면: 수소결합을 영원히 고정된 끈으로 오해하지 않도록 점선 연결이 바뀌는 물속 개념도를 보여준다.\n시작: 소수의 온전한 물 분자가 불규칙한 방향으로 물청색 옅은 색면 안에 놓여 있다. 일부 이웃의 H···O 사이에 황토색 점선이 있으며 고정 격자·모든 분자에 같은 연결 수·둘레 막은 없다.\n끝: 분자들의 식별·대체적인 위치는 유지된다. 한 이웃 쌍의 점선이 옅어지며 연결이 고정된 끈이 아님을 드러낸다. 내부 O–H 실선은 그대로다.\n카메라: 고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c11",
"start_frame_id": "c11-start",
"end_frame_id": "c11-end",
"duration_ms": 4800,
"motion_prompt": "사용자 승인된 08 장면: 기존 분자 사이 연결은 약해지고 다른 이웃 사이 연결이 생기는 상태를 보여준다.\n시작: 분자들의 식별·대체적인 위치는 유지된다. 한 이웃 쌍의 점선이 옅어지며 연결이 고정된 끈이 아님을 드러낸다. 내부 O–H 실선은 그대로다.\n끝: 옅어진 점선 하나가 사라지고 다른 이웃 H···O 사이에 새 점선이 나타난다. 분자들은 서로 겹치거나 원자 수가 변하지 않는다.\n카메라: 고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c12",
"start_frame_id": "c12-start",
"end_frame_id": "c12-end",
"duration_ms": 4760,
"motion_prompt": "사용자 승인된 08 장면: 새 연결도 끊어지고 또 다른 연결이 생겨 고정된 격자가 아님을 설명한다.\n시작: 옅어진 점선 하나가 사라지고 다른 이웃 H···O 사이에 새 점선이 나타난다. 분자들은 서로 겹치거나 원자 수가 변하지 않는다.\n끝: 새 점선 일부도 옅어지고 다른 연결이 나타난다. 이웃들 사이 작은 양방향 끌림 표시를 순차 강조하며 정지 격자·동시 일괄 결합은 만들지 않는다.\n카메라: 고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c13",
"start_frame_id": "c13-start",
"end_frame_id": "c13-end",
"duration_ms": 4240,
"motion_prompt": "사용자 승인된 08 장면: 연결은 바뀌어도 여러 분자 사이의 끌림이 함께 작용해 물이 뭉치는 성질을 회수한다.\n시작: 새 점선 일부도 옅어지고 다른 연결이 나타난다. 이웃들 사이 작은 양방향 끌림 표시를 순차 강조하며 정지 격자·동시 일괄 결합은 만들지 않는다.\n끝: 분자들은 같은 물청색 색면 안에서 불규칙한 배치를 유지한다. 여러 H···O 끌림 표시가 보이며 합성 주석 '물끼리 뭉치는 성질'로 응집을 회수한다. 분자 간격을 모두 붕괴시키거나 물 부피를 줄이지 않는다.\n카메라: 고정 세로 중경 개념도. 크림색 바탕의 물청색 옅은 색면 위에 소수의 물 분자를 불규칙하게 배치. 같은 시야·분자 식별·방향을 유지하며 소폭 움직임만 허용.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c14",
"start_frame_id": "c14-start",
"end_frame_id": "c14-end",
"duration_ms": 2720,
"motion_prompt": "사용자 승인된 08 장면: 물속 설명에서 물과 공기가 만나는 표면으로 시점을 옮긴다.\n시작: 위에는 크림색 공기, 아래에는 물청색 액체 물이 있고 경계는 가는 색면 외곽선 하나다. 온전한 물 분자 도식은 물 안에 불규칙하게 놓여 있으며 별도 표면층·고체막·아래 방향 가속 화살표는 없다.\n끝: 경계와 모든 분자의 위치는 그대로다. 물 안쪽의 한 분자를 얇은 강조로 선택하고 합성 주석 '물 안쪽'을 붙인다.\n카메라: 고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c15",
"start_frame_id": "c15-start",
"end_frame_id": "c15-end",
"duration_ms": 4040,
"motion_prompt": "사용자 승인된 08 장면: 물 안쪽의 분자는 주변 여러 방향에 물 분자 이웃이 있음을 보여준다.\n시작: 경계와 모든 분자의 위치는 그대로다. 물 안쪽의 한 분자를 얇은 강조로 선택하고 합성 주석 '물 안쪽'을 붙인다.\n끝: 같은 내부 분자의 주변 여러 방향에 있는 물 분자 이웃을 차례로 강조한다. 특정 결합 수나 고정 배열을 표시하지 않는다.\n카메라: 고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c16",
"start_frame_id": "c16-start",
"end_frame_id": "c16-end",
"duration_ms": 4880,
"motion_prompt": "사용자 승인된 08 장면: 공기와 만나는 표면의 분자를 강조해 내부와 다른 환경을 비교한다.\n시작: 같은 내부 분자의 주변 여러 방향에 있는 물 분자 이웃을 차례로 강조한다. 특정 결합 수나 고정 배열을 표시하지 않는다.\n끝: 내부 강조는 옅어지고 표면 가까이 물 쪽에 있는 한 분자를 강조한다. 위쪽 크림색 영역에 합성 주석 '공기 쪽', 경계 가까이에 '표면'을 붙인다.\n카메라: 고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c17",
"start_frame_id": "c17-start",
"end_frame_id": "c17-end",
"duration_ms": 2440,
"motion_prompt": "사용자 승인된 08 장면: 공기 쪽에는 액체 물 분자 이웃이 적음을 빈 공간과 아래쪽 이웃의 대비로 설명한다.\n시작: 내부 강조는 옅어지고 표면 가까이 물 쪽에 있는 한 분자를 강조한다. 위쪽 크림색 영역에 합성 주석 '공기 쪽', 경계 가까이에 '표면'을 붙인다.\n끝: 표면 분자 아래·옆의 물 분자 이웃과 위쪽 공기 영역을 같은 화면에서 대비한다. 합성 주석은 '물 분자 이웃이 적음'이며 공기가 진공이거나 수증기가 전혀 없다는 뜻으로 표시하지 않는다.\n카메라: 고정 세로 단면 개념도. 화면 위쪽은 크림색 공기, 아래쪽은 물청색 액체 물. 수평에 가까운 자유 표면과 내부·표면의 분자를 같은 시야에 둔다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c18",
"start_frame_id": "c18-start",
"end_frame_id": "c18-end",
"duration_ms": 4000,
"motion_prompt": "사용자 승인된 08 장면: 물방울의 표면을 넓히는 변형을 보여주며 표면 확장이라는 뜻을 전달한다.\n시작: 작은 둥근 물방울 하나가 중앙에 있다. 물청색 색면·가는 남색 외곽선·작은 하이라이트를 유지한다. 별도 껍질·바닥·수치 도표는 없다.\n끝: 같은 물방울이 완만하게 길어진 모양이다. 물의 양은 유지하는 개념도이며 실제 두께·부피를 픽셀 면적으로 측정한 그림은 아니다. 양쪽 바깥에 표면을 넓히는 방향의 작은 표시가 있다.\n카메라: 고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c19",
"start_frame_id": "c19-start",
"end_frame_id": "c19-end",
"duration_ms": 3380,
"motion_prompt": "사용자 승인된 08 장면: 변형을 유지하는 데 외부에서 에너지를 보태야 함을 개념 표시로 설명한다.\n시작: 같은 물방울이 완만하게 길어진 모양이다. 물의 양은 유지하는 개념도이며 실제 두께·부피를 픽셀 면적으로 측정한 그림은 아니다. 양쪽 바깥에 표면을 넓히는 방향의 작은 표시가 있다.\n끝: 같은 길어진 물방울과 바깥 방향 표시를 유지한다. 황토색 외부 에너지 표시와 합성 주석 '에너지를 보태야 함'을 더한다. 전하나 실제 에너지 물질을 그리지 않는다.\n카메라: 고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c20",
"start_frame_id": "c20-start",
"end_frame_id": "c20-end",
"duration_ms": 2300,
"motion_prompt": "사용자 승인된 08 장면: 같은 물의 양에서 표면을 줄이는 쪽의 경향을 윤곽 변화로 짚는다.\n시작: 같은 길어진 물방울과 바깥 방향 표시를 유지한다. 황토색 외부 에너지 표시와 합성 주석 '에너지를 보태야 함'을 더한다. 전하나 실제 에너지 물질을 그리지 않는다.\n끝: 같은 위치의 물방울에서 바깥 방향 표시와 에너지 표시가 옅어진다. 길어진 윤곽이 조금 덜 길어지며 표면을 줄이는 경향을 짚는다.\n카메라: 고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c21",
"start_frame_id": "c21-start",
"end_frame_id": "c21-end",
"duration_ms": 3920,
"motion_prompt": "사용자 승인된 08 장면: 변형된 물방울이 더 둥근 모양으로 돌아가는 상태를 이어 보여준다.\n시작: 같은 위치의 물방울에서 바깥 방향 표시와 에너지 표시가 옅어진다. 길어진 윤곽이 조금 덜 길어지며 표면을 줄이는 경향을 짚는다.\n끝: 물방울은 원래처럼 더 둥근 모양이 되었다. 색·양·위치는 유지하고 외부 에너지 표시를 지운다. 무게나 밀도 변화 수치는 없다.\n카메라: 고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c22",
"start_frame_id": "c22-start",
"end_frame_id": "c22-end",
"duration_ms": 4480,
"motion_prompt": "사용자 승인된 08 장면: 물의 표면 확장에 대한 저항에 표면장력이라는 이름을 붙인다.\n시작: 물방울은 원래처럼 더 둥근 모양이 되었다. 색·양·위치는 유지하고 외부 에너지 표시를 지운다. 무게나 밀도 변화 수치는 없다.\n끝: 같은 둥근 물방울의 표면 윤곽만 얇게 강조한다. u06 상대 16760ms 이후 합성 주석 '표면장력'을 붙인다. 새 껍질이나 굵은 테두리를 생성하지 않는다.\n카메라: 고정 세로 근접 개념도. 크림색 바탕 중앙에 외부 영향이 작은 물방울 하나. 같은 물의 양을 유지하는 입체 물방울의 간단한 평면 표현이며 원·타원 면적 측정 도표가 아니다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c23",
"start_frame_id": "c23-start",
"end_frame_id": "c23-end",
"duration_ms": 1440,
"motion_prompt": "사용자 승인된 08 장면: 비교 조건인 같은 물의 양을 먼저 제시한다.\n시작: 왼쪽에 길어진 물방울, 오른쪽에 둥근 물방울이 같은 물청색·가는 남색 윤곽선으로 보인다. 두 그림은 같은 물의 양을 가정한 입체 개념도이며 픽셀 면적·둘레 비교는 하지 않는다.\n끝: 두 물방울은 같은 위치와 모양을 유지한다. 두 그림 위에 공통 합성 주석 '같은 물의 양 · 개념도'를 붙여 비교 조건을 먼저 제시한다.\n카메라: 고정 세로 비교 도해. 위쪽 또는 중앙에 같은 물의 양을 나타내는 두 입체 물방울의 평면 표현을 나란히 배치. 왼쪽은 길어진 모양, 오른쪽은 둥근 모양. 바닥·중력 수치·눈금은 없다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c24",
"start_frame_id": "c24-start",
"end_frame_id": "c24-end",
"duration_ms": 4420,
"motion_prompt": "사용자 승인된 08 장면: 같은 부피에서 공 모양의 겉면이 가장 작다는 답을 비교 형태와 강조로 전달한다.\n시작: 두 물방울은 같은 위치와 모양을 유지한다. 두 그림 위에 공통 합성 주석 '같은 물의 양 · 개념도'를 붙여 비교 조건을 먼저 제시한다.\n끝: 두 물방울의 위치·양 조건은 그대로다. 오른쪽 둥근 물방울의 윤곽을 옅게 강조하고 합성 주석 '겉면이 가장 작음'을 오른쪽에 붙인다. 면적 수치·비율·2차원 둘레 계산은 없다.\n카메라: 고정 세로 비교 도해. 위쪽 또는 중앙에 같은 물의 양을 나타내는 두 입체 물방울의 평면 표현을 나란히 배치. 왼쪽은 길어진 모양, 오른쪽은 둥근 모양. 바닥·중력 수치·눈금은 없다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c25",
"start_frame_id": "c25-start",
"end_frame_id": "c25-end",
"duration_ms": 4140,
"motion_prompt": "사용자 승인된 08 장면: 중력이나 접촉의 영향이 작은 작은 물방울의 조건을 밝혀 구형 설명의 범위를 제한한다.\n시작: 왼쪽에 작은 둥근 물방울이 바닥에 닿지 않은 채 보인다. 오른쪽에는 예시 자리를 비워 두고 그 아래만 가는 갈색 바닥선을 둔다. 앞의 같은 양 비교 주석은 없다.\n끝: 왼쪽의 작은 물방울과 오른쪽 바닥선은 그대로다. 왼쪽에 합성 주석 '외부 영향이 작을 때'를 붙인다. 무중력·영향이 완전히 0이라는 표시나 수치는 없다.\n카메라: 고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c26",
"start_frame_id": "c26-start",
"end_frame_id": "c26-end",
"duration_ms": 4640,
"motion_prompt": "사용자 승인된 08 장면: 작은 물방울을 유지하면서 큰 물방울·바닥 접촉의 예시를 새로 보여준다.\n시작: 왼쪽의 작은 물방울과 오른쪽 바닥선은 그대로다. 왼쪽에 합성 주석 '외부 영향이 작을 때'를 붙인다. 무중력·영향이 완전히 0이라는 표시나 수치는 없다.\n끝: 왼쪽 작은 물방울은 그대로다. u07 상대 11900ms의 '큰' 이후 오른쪽 바닥선 위에 더 크고 납작한 접촉 물방울 예시가 나타난다. 이는 같은 양 비교가 아니라 모양 조건의 예시다.\n카메라: 고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. 큰 접촉 예시는 통합 음성 93420ms 이전에 나타나지 않는다."
},
{
"cut_id": "c27",
"start_frame_id": "c27-start",
"end_frame_id": "c27-end",
"duration_ms": 1600,
"motion_prompt": "사용자 승인된 08 장면: 바닥에 닿은 물방울의 모양은 달라질 수 있음을 대비하고 모든 물방울이 구라는 오해를 막는다.\n시작: 왼쪽 작은 물방울은 그대로다. u07 상대 11900ms의 '큰' 이후 오른쪽 바닥선 위에 더 크고 납작한 접촉 물방울 예시가 나타난다. 이는 같은 양 비교가 아니라 모양 조건의 예시다.\n끝: 두 예시는 같은 위치에 유지된다. 오른쪽의 접촉 모양을 강조하고 합성 주석 '중력·바닥의 영향'으로 조건을 짚는다. 접촉각·크기 경계값·표면장력 수치는 넣지 않는다.\n카메라: 고정 세로 조건 비교. 왼쪽에는 바닥에 닿지 않은 작은 물방울, 오른쪽에는 접촉한 물방울의 예시 자리와 가는 바닥선. 같은 부피 비교와 구별하는 새로운 배치다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c28",
"start_frame_id": "c28-start",
"end_frame_id": "c28-end",
"duration_ms": 4220,
"motion_prompt": "사용자 승인된 08 장면: 처음 물방울로 돌아와 별도 고체 껍질이 없음을 색면 경계와 분자 개념도로 설명한다.\n시작: 중앙에 처음과 같은 물청색 작은 둥근 물방울이 있다. 외곽선은 물과 공기 색면의 경계를 나타내는 가는 선 하나이며 둘레의 별도 띠·층·딱딱한 껍질은 없다. 우상단 개념도 자리는 비어 있다.\n끝: 중앙 물방울은 그대로다. 우상단에 분자 확대 개념도가 나타나 온전한 물 분자들을 불규칙하게 보여준다. 합성 주석 '확대 개념도'로 실제 비율·물질층과 구별한다.\n카메라: 고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c29",
"start_frame_id": "c29-start",
"end_frame_id": "c29-end",
"duration_ms": 2580,
"motion_prompt": "사용자 승인된 08 장면: 분자 확대 개념도에서 수소결합에 의한 서로 끌림을 회수한다.\n시작: 중앙 물방울은 그대로다. 우상단에 분자 확대 개념도가 나타나 온전한 물 분자들을 불규칙하게 보여준다. 합성 주석 '확대 개념도'로 실제 비율·물질층과 구별한다.\n끝: 물방울과 우상단 개념도 위치는 같다. 개념도에서 H···O 점선과 짧은 서로 향하는 표시를 강조하고 합성 주석 '서로 끌림'을 붙인다. 내부 실선은 변하지 않는다.\n카메라: 고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c30",
"start_frame_id": "c30-start",
"end_frame_id": "c30-end",
"duration_ms": 2800,
"motion_prompt": "사용자 승인된 08 장면: 표면을 넓히기 어려운 성질을 같은 물방울의 작은 변형과 연결해 회수한다.\n시작: 물방울과 우상단 개념도 위치는 같다. 개념도에서 H···O 점선과 짧은 서로 향하는 표시를 강조하고 합성 주석 '서로 끌림'을 붙인다. 내부 실선은 변하지 않는다.\n끝: 같은 물방울의 윤곽이 조금 길어진 모습과 외부에서 넓히려는 작은 방향 표시가 보인다. 개념도는 그대로이고 합성 주석 '표면 넓힘에 저항'을 더한다. 물의 양·그림체·색은 유지한다.\n카메라: 고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
},
{
"cut_id": "c31",
"start_frame_id": "c31-start",
"end_frame_id": "c31-end",
"duration_ms": 3200,
"motion_prompt": "사용자 승인된 08 장면: 작은 물방울의 둥근 모양으로 돌아와 제목과 첫 질문에 답하며 끝낸다.\n시작: 같은 물방울의 윤곽이 조금 길어진 모습과 외부에서 넓히려는 작은 방향 표시가 보인다. 개념도는 그대로이고 합성 주석 '표면 넓힘에 저항'을 더한다. 물의 양·그림체·색은 유지한다.\n끝: 물방울은 다시 작은 둥근 모양이다. 외부 방향 표시와 긴 주석은 옅어지고 우상단 개념도는 작게 남거나 자연스럽게 사라진다. 중앙 물방울을 가장 먼저 보이게 해 처음 질문의 답으로 마무리한다.\n카메라: 고정 세로 전경. 중앙에 처음 질문의 작은 둥근 물방울, 우상단에 분자 확대 개념도. 중앙과 개념도 위치를 끝까지 유지해 질문의 답을 회수한다.\n검증된 실제 start/end PNG를 유지한다. 설명에 필요한 점선·강조·물방울 윤곽 변화만 시간에 맞춰 제어하며 전체 화면 줌·흔들림으로 대체하지 않는다. 원자 수·내부 결합·H···O 관계를 보존한다. 문자 주석은 13에서 합성한다. "
}
]
},
"result": {
"clips": [
{
"cut_id": "c01",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c01.mp4",
"duration_ms": 4380,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c02",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c02.mp4",
"duration_ms": 3540,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c03",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c03.mp4",
"duration_ms": 4000,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c04",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c04.mp4",
"duration_ms": 2860,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c05",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c05.mp4",
"duration_ms": 3300,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c06",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c06.mp4",
"duration_ms": 2260,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c07",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c07.mp4",
"duration_ms": 4040,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c08",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c08.mp4",
"duration_ms": 4100,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c09",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c09.mp4",
"duration_ms": 4240,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c10",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c10.mp4",
"duration_ms": 2840,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c11",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c11.mp4",
"duration_ms": 4800,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c12",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c12.mp4",
"duration_ms": 4760,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c13",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c13.mp4",
"duration_ms": 4240,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c14",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c14.mp4",
"duration_ms": 2720,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c15",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c15.mp4",
"duration_ms": 4040,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c16",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c16.mp4",
"duration_ms": 4880,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c17",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c17.mp4",
"duration_ms": 2440,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c18",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c18.mp4",
"duration_ms": 4000,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c19",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c19.mp4",
"duration_ms": 3380,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c20",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c20.mp4",
"duration_ms": 2300,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c21",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c21.mp4",
"duration_ms": 3920,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c22",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c22.mp4",
"duration_ms": 4480,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c23",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c23.mp4",
"duration_ms": 1440,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c24",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c24.mp4",
"duration_ms": 4420,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c25",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c25.mp4",
"duration_ms": 4140,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c26",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c26.mp4",
"duration_ms": 4640,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c27",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c27.mp4",
"duration_ms": 1600,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c28",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c28.mp4",
"duration_ms": 4220,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c29",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c29.mp4",
"duration_ms": 2580,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c30",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c30.mp4",
"duration_ms": 2800,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
},
{
"cut_id": "c31",
"media": {
"path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c31.mp4",
"duration_ms": 3200,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
}
}
]
}
}
}
@@ -0,0 +1,22 @@
# 실제 컷 영상 제작과 확인
- 입력: 07/08/11 r1, 31컷·62개의 실제 start/end PNG, 기존 story/scenes 사용자 승인 유지.
- 사용자 추가 선택: “Remotion + FFmpeg로 저장소 내 구현 진행(추천)”. 12 스킬의 요청·확인 외에 실행 구성을 제작 폴더의 renderer 안에 구현했다. 전역 환경 변경 없이 Remotion 4.0.534·React 19.3.0·FFmpeg n7.1·프로젝트 내 Chrome Headless Shell을 사용한다.
- 요청과 실제 31개 MP4 결과는 [artifact.json](artifact.json)에 기록했다. 아래 실제 파일 검사 후 12를 complete로 처리했다.
- 50fps, 1080×1920, 5528프레임=110560ms. 각 컷은 승인된 실측 WAV 구간과 같은 정수 프레임 길이다. PNG의 강조색·점선은 해당 픽셀만 제어하고 분자 자체를 생성형 영상으로 재구성하지 않는다. 물방울 몸체의 윤곽 변화는 해당 영역의 변형이며 화면 줌이 아니다.
- c26은 통합 93420ms 이후 큰 접촉 예시가 나타나도록 설정한다. 주석·부분 전하·제목·자막은 13의 검증된 한국어 합성으로 전달한다.
- npm run check: 실제 입력 및 승인 없음·프레임 누락·미검증 미디어·시간 빈 구간·연속 경로 불일치의 실패 확인을 통과했다. 이 검사는 영상의 실제 화면·청취 확인이 아니다.
## 실제 실행·검증
- `npm.cmd run render -- motion` 종료 코드 0. 실제 마스터는 media/12-motion/r1/motion-master.mp4이며 H.264·1080×1920·50fps·5528프레임·110560ms다. [실측 기록](../../../media/12-motion/r1/probe.json)의 모든 컷 길이·프레임 수를 07 요청과 대조했다. 최장 컷 4880ms, 총합 110560ms, 빈 구간·겹침 없음.
- 31개 컷 전체를 FFmpeg로 디코딩했으며 오류가 없었다. 이 배포의 null 기본 인코더가 제외되어 처음 검사 명령이 실패했고, 포함된 rawvideo 인코더를 명시한 `-an -c:v rawvideo -f null -`로 검사했다. 실제 출력 파일 오류로 해석하지 않았다.
- 실제 인코딩된 각 MP4에서 첫 프레임·중간 프레임·마지막 프레임을 추출했다. media/12-motion/r1/encoded-inspection의 93개 PNG 및 11개 sheet를 직접 열어 모든 컷의 시작/끝 상태와 중간 상태를 확인했다. 원본 요청 PNG만으로 결과 확인을 대신하지 않았다.
- c03–c17의 완전한 H2O 구성·분자 안 실선·분자 사이 H··O 점선·동적 연결 강조, 내부/표면 이웃 강조가 유지된다. c18/c20/c21/c30/c31은 물방울 몸체의 단일 윤곽 변형이며 카메라 줌이 아니다. c26의 접촉 예시가 발화 조건 이후 나타나고 c31이 첫 둥근 물방울로 돌아온다. 샘플에서 구조 왜곡·이중 윤곽·잘못된 결합 끝점은 발견하지 않았다.
- continuous 22쌍을 실제 마지막/다음 첫 프레임으로 대조했다. [경계 픽셀 측정](../../../media/12-motion/r1/encoded-inspection/continuity-measurements.json)의 RGB 채널별 평균 절대차 최대 0.174/255는 압축 뒤 차이를 기록한 값이며, 원본 픽셀 동일성을 주장하는 수치가 아니다. 관찰한 위치·배치·구조는 이어진다. 8개 cut 전환은 승인된 설명 규모·비교 조건의 전환을 보존한다.
- 초기 미리보기에서 강조선 지움·잘못된 몸체 검출·겹치는 inset 영역 합성 문제를 발견해 국소 영역과 연결 영역 검출을 수정했다. 검사 회귀 사례를 추가했으며 이전 inspection-attempt-a1–a4와 motion-master-interrupted-a1.mp4는 시도 기록으로 보존했다. 이 파일들은 완료 결과에 참조하지 않는다.
- 관찰 범위는 실제 MP4의 93개 표본 프레임과 전체 디코딩이다. 정상 속도로 모든 프레임을 연속 시청했다고 기록하지 않는다. 제목·한국어 주석·자막의 실제 출력과 내레이션은 13–14에서 확인한다.
## 지침 적용
대상·원인·결과의 상태 변화를 우선하고, 연결 구간의 배치와 그림체를 유지했다. 과학 개념도이므로 인물 연기·장식적 카메라 흔들림·배경음 추가는 적용하지 않았다. 새로운 각도·개수·면적 수치를 만들지 않고 같은 물의 양 및 외부 영향 조건을 13 주석으로 전달한다. 기존 story/scenes 승인 버전은 변하지 않았다.
@@ -0,0 +1,463 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"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": "c01",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c01.mp4",
"start_ms": 0,
"end_ms": 4380
},
{
"cut_id": "c02",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c02.mp4",
"start_ms": 4380,
"end_ms": 7920
},
{
"cut_id": "c03",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c03.mp4",
"start_ms": 7920,
"end_ms": 11920
},
{
"cut_id": "c04",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c04.mp4",
"start_ms": 11920,
"end_ms": 14780
},
{
"cut_id": "c05",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c05.mp4",
"start_ms": 14780,
"end_ms": 18080
},
{
"cut_id": "c06",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c06.mp4",
"start_ms": 18080,
"end_ms": 20340
},
{
"cut_id": "c07",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c07.mp4",
"start_ms": 20340,
"end_ms": 24380
},
{
"cut_id": "c08",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c08.mp4",
"start_ms": 24380,
"end_ms": 28480
},
{
"cut_id": "c09",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c09.mp4",
"start_ms": 28480,
"end_ms": 32720
},
{
"cut_id": "c10",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c10.mp4",
"start_ms": 32720,
"end_ms": 35560
},
{
"cut_id": "c11",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c11.mp4",
"start_ms": 35560,
"end_ms": 40360
},
{
"cut_id": "c12",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c12.mp4",
"start_ms": 40360,
"end_ms": 45120
},
{
"cut_id": "c13",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c13.mp4",
"start_ms": 45120,
"end_ms": 49360
},
{
"cut_id": "c14",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c14.mp4",
"start_ms": 49360,
"end_ms": 52080
},
{
"cut_id": "c15",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c15.mp4",
"start_ms": 52080,
"end_ms": 56120
},
{
"cut_id": "c16",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c16.mp4",
"start_ms": 56120,
"end_ms": 61000
},
{
"cut_id": "c17",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c17.mp4",
"start_ms": 61000,
"end_ms": 63440
},
{
"cut_id": "c18",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c18.mp4",
"start_ms": 63440,
"end_ms": 67440
},
{
"cut_id": "c19",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c19.mp4",
"start_ms": 67440,
"end_ms": 70820
},
{
"cut_id": "c20",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c20.mp4",
"start_ms": 70820,
"end_ms": 73120
},
{
"cut_id": "c21",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c21.mp4",
"start_ms": 73120,
"end_ms": 77040
},
{
"cut_id": "c22",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c22.mp4",
"start_ms": 77040,
"end_ms": 81520
},
{
"cut_id": "c23",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c23.mp4",
"start_ms": 81520,
"end_ms": 82960
},
{
"cut_id": "c24",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c24.mp4",
"start_ms": 82960,
"end_ms": 87380
},
{
"cut_id": "c25",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c25.mp4",
"start_ms": 87380,
"end_ms": 91520
},
{
"cut_id": "c26",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c26.mp4",
"start_ms": 91520,
"end_ms": 96160
},
{
"cut_id": "c27",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c27.mp4",
"start_ms": 96160,
"end_ms": 97760
},
{
"cut_id": "c28",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c28.mp4",
"start_ms": 97760,
"end_ms": 101980
},
{
"cut_id": "c29",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c29.mp4",
"start_ms": 101980,
"end_ms": 104560
},
{
"cut_id": "c30",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c30.mp4",
"start_ms": 104560,
"end_ms": 107360
},
{
"cut_id": "c31",
"video_path": "projects/water-hydrogen-bond-surface-tension/media/12-motion/r1/c31.mp4",
"start_ms": 107360,
"end_ms": 110560
}
],
"narration_path": "projects/water-hydrogen-bond-surface-tension/media/06-tts/r1/narration.wav",
"captions": [
{
"id": "cap01",
"start_ms": 0,
"end_ms": 3060,
"text": "작은 물방울은 왜\n동그랗게 뭉칠까요?"
},
{
"id": "cap02",
"start_ms": 4380,
"end_ms": 7900,
"text": "비밀은 물속의\n작은 분자들에 있습니다."
},
{
"id": "cap03",
"start_ms": 7920,
"end_ms": 10160,
"text": "물 분자는 산소 하나와\n수소 둘로"
},
{
"id": "cap04",
"start_ms": 10160,
"end_ms": 11480,
"text": "이루어져 있어요."
},
{
"id": "cap05",
"start_ms": 11920,
"end_ms": 14500,
"text": "산소 쪽은 살짝 마이너스,"
},
{
"id": "cap06",
"start_ms": 14780,
"end_ms": 18040,
"text": "수소 쪽은 살짝 플러스\n성질을 띱니다."
},
{
"id": "cap07",
"start_ms": 18080,
"end_ms": 20340,
"text": "그래서 한 분자의\n수소 쪽과"
},
{
"id": "cap08",
"start_ms": 20340,
"end_ms": 23280,
"text": "옆 분자의 산소 쪽이\n서로 끌어당깁니다."
},
{
"id": "cap09",
"start_ms": 24380,
"end_ms": 27300,
"text": "이 분자 사이의 끌림을\n수소결합이라고 해요."
},
{
"id": "cap10",
"start_ms": 28480,
"end_ms": 30060,
"text": "한 물 분자 안의"
},
{
"id": "cap11",
"start_ms": 30060,
"end_ms": 32620,
"text": "산소와 수소를 묶는\n결합과는 다릅니다."
},
{
"id": "cap12",
"start_ms": 32720,
"end_ms": 35560,
"text": "수소결합은 분자들을\n영원히 묶는"
},
{
"id": "cap13",
"start_ms": 35560,
"end_ms": 37780,
"text": "끈은 아닙니다."
},
{
"id": "cap14",
"start_ms": 37780,
"end_ms": 40360,
"text": "물속에서는\n연결이 생겼다"
},
{
"id": "cap15",
"start_ms": 40360,
"end_ms": 42940,
"text": "끊어지기를 반복해요."
},
{
"id": "cap16",
"start_ms": 42940,
"end_ms": 46060,
"text": "그래도 많은 분자가\n서로 끌어당기니"
},
{
"id": "cap17",
"start_ms": 46060,
"end_ms": 49340,
"text": "물은 함께 뭉치려는\n성질을 보입니다."
},
{
"id": "cap18",
"start_ms": 49360,
"end_ms": 52080,
"text": "이제 물의 표면을 볼까요?"
},
{
"id": "cap19",
"start_ms": 52080,
"end_ms": 57120,
"text": "물 안쪽은 다른 물 분자들에\n둘러싸여 있지만,"
},
{
"id": "cap20",
"start_ms": 57120,
"end_ms": 61000,
"text": "공기와 만나는 표면은\n공기 쪽에"
},
{
"id": "cap21",
"start_ms": 61000,
"end_ms": 63420,
"text": "물 분자 이웃이 적습니다."
},
{
"id": "cap22",
"start_ms": 63440,
"end_ms": 67440,
"text": "이런 표면을\n더 넓게 만들려면"
},
{
"id": "cap23",
"start_ms": 67440,
"end_ms": 69840,
"text": "에너지를 보태야 합니다."
},
{
"id": "cap24",
"start_ms": 70820,
"end_ms": 73120,
"text": "그래서 물은\n표면의 넓이를"
},
{
"id": "cap25",
"start_ms": 73120,
"end_ms": 75420,
"text": "줄이는 쪽으로\n모양을 바꾸려 해요."
},
{
"id": "cap26",
"start_ms": 77040,
"end_ms": 79320,
"text": "표면이 늘어나는 데\n저항하는"
},
{
"id": "cap27",
"start_ms": 79320,
"end_ms": 81360,
"text": "이 성질이\n표면장력입니다."
},
{
"id": "cap28",
"start_ms": 81520,
"end_ms": 82960,
"text": "같은 양의 물이라면,"
},
{
"id": "cap29",
"start_ms": 82960,
"end_ms": 86760,
"text": "공 모양이 겉면을\n가장 작게 만들 수 있어요."
},
{
"id": "cap30",
"start_ms": 87380,
"end_ms": 89620,
"text": "중력이나 바닥의\n영향을 적게 받는"
},
{
"id": "cap31",
"start_ms": 89620,
"end_ms": 92740,
"text": "작은 물방울이\n둥글어지는 이유입니다."
},
{
"id": "cap32",
"start_ms": 93420,
"end_ms": 96160,
"text": "큰 물방울이나\n바닥에 닿은 물방울은"
},
{
"id": "cap33",
"start_ms": 96160,
"end_ms": 97740,
"text": "모양이 달라질 수 있어요."
},
{
"id": "cap34",
"start_ms": 97760,
"end_ms": 99820,
"text": "물방울을 감싼\n진짜 껍질이"
},
{
"id": "cap35",
"start_ms": 99820,
"end_ms": 101980,
"text": "있는 건 아닙니다."
},
{
"id": "cap36",
"start_ms": 101980,
"end_ms": 104560,
"text": "수소결합으로 서로\n끌어당기는 분자들과,"
},
{
"id": "cap37",
"start_ms": 104560,
"end_ms": 107360,
"text": "표면을 넓히기\n어려운 성질이"
},
{
"id": "cap38",
"start_ms": 107360,
"end_ms": 110540,
"text": "작은 물방울의 둥근 모양을\n만드는 거예요."
}
],
"title": "물방울은 왜 동그랗게 뭉칠까?"
},
"result": {
"video": {
"path": "projects/water-hydrogen-bond-surface-tension/media/13-compose/r1/surface-tension-ko.mp4",
"duration_ms": 110560,
"width": 1080,
"height": 1920,
"kind": "video",
"verified": true
},
"captions_path": "projects/water-hydrogen-bond-surface-tension/media/13-compose/r1/surface-tension-ko.srt"
}
}
}
@@ -0,0 +1,25 @@
# 실제 영상 합성 — final 검토용 출력 준비
- 입력: 03/04/06/07/12 r1. 같은 버전의 story/scenes 사용자 승인과 내레이션 WAV 청취 확인을 유지한다.
- [artifact.json](artifact.json)의 timeline은 실제 검증된 31개 MP4 경로이며 0–110560ms를 빈 구간·겹침 없이 덮는다. narration_path는 승인된 통합 WAV 한 개, captions는 07의 38개 원문·줄바꿈·실측 정렬 구간을 그대로 연결했다. title은 04의 선정 제목이다.
- 사용자가 선택한 저장소 안 Remotion + FFmpeg 구현으로 실제 합성을 실행한다. 13 스킬의 기존 기능을 실행 엔진으로 주장하지 않는다. 실행 구성은 제작 폴더의 renderer에 있다.
- 그림의 원자·결합을 가리지 않는 위치에 부분 전하·수소결합·표면장력·비교 조건 주석을 표시한다. 말 내용을 전달하는 자막과 물체 관계를 설명하는 주석의 역할을 구분한다. 제목·자막·주석은 실제 영상에서 모바일 크기로 확인한다.
- 실제 MP4와 SRT를 result에 기록했다. 파일·시간·화면 표본 검사는 마쳤고, 정상 속도 전체 시청·청취 및 final 사용자 검토는 남아 있어 awaiting_review다. 원 WAV 청취 확인과 최종 AAC 청취는 구분한다.
## 실제 결과와 검사
- [검토용 MP4](../../../media/13-compose/r1/surface-tension-ko.mp4), [원문 SRT](../../../media/13-compose/r1/surface-tension-ko.srt), [실측 정보](../../../media/13-compose/r1/probe.json).
- 수정 후 `npm.cmd run render -- compose` 종료 코드 0. 실제 영상 H.264·1080×1920·50fps·5528프레임, 영상/음성 각각 시작 0ms·길이 110560ms다. 정확한 9:16, 전체 3분 이내다. 31개 실제 컷의 길이는 승인된 timeline과 같고 최장 4880ms다.
- 기존 검증된 컷 MP4를 실제로 읽어 합성했다. 배경음이나 효과음을 추가하지 않았다. 통합 WAV를 그대로 한 번 AAC로 인코딩했으며 시간·속도·음량을 바꾸지 않았다.
- 실제 SRT를 열어 38개 번호·원문·줄바꿈·시간이 07 및 요청과 정확히 같음을 확인했다. 마지막 자막은 110540ms에 끝나며 기존 마지막 20ms 공백을 유지했다.
- 최종 MP4의 전체 영상·음성을 FFmpeg로 디코딩해 오류가 없음을 확인했다. [음성 기술 검사](../../../media/13-compose/r1/audio-technical-check.json)는 원 WAV와 추출한 AAC의 동일 위치 PCM 상관계수 0.9999665011971869를 기록했다. AAC 프레임의 패딩으로 디코딩 샘플은 2654208개이고 원본은 2653440개이며, MP4 음성 트랙의 실제 재생 길이는 110560ms다. 패딩을 음성 추가나 원본 WAV 변경으로 기록하지 않는다. 이 검사는 청취 판정이 아니다.
- 실제 인코딩된 MP4에서 31컷의 중간 31개, 시작/끝 62개, 모든 자막 중간 38개, 용어/경계 시점 12개의 PNG를 추출했다. inspection의 9개 captions-sheet와 6개 boundary-sheet를 열고, 도입 cap01/cap02는 540×960 개별 화면으로도 확인했다. 비교 시트의 화면은 324×576 또는 198×352이며 원 추출 PNG는 540×960이다.
- 첫 합성에서 4.38–7.92초 도입 제목과 확대 주석이 겹쳤다. 제목의 크기/위치와 해당 주석의 위치만 수정하고 다시 합성했다. 기존 시도는 attempt-a1에 보존했고 완료 결과로 참조하지 않는다. 수정본 cap01/cap02에서 제목·주석·분자 도해가 분리되어 보인다. 대본·제목 원문·WAV·이미지·컷 경계·12 실제 결과는 바꾸지 않았다.
- 현재 표본에서 잘린 글자·주요 도해 가림·잘못된 원자 수·결합 연결·물방울 이중 윤곽을 발견하지 않았다. δ−/δ+는 분자 전체 중성 설명과 함께 표시한다. 수소결합 주석은 26180ms, 표면장력은 80200ms, 접촉 예시는 93420ms부터 표시되는 실제 화면을 확인했다. 강조된 윤곽을 진짜 껍질로 설명하지 않는다.
- 모든 30개 인접 경계를 실제 최종 영상에서 대조했다. 22개 continuous와 8개 cut의 배치·방향·설명 규모 전환이 08 r1과 일치한다. 새 자막·도해 주석은 해당 발화 구간에 바뀌므로 경계 이미지의 글자가 항상 같은 것은 아니다.
## 남은 확인과 전달
정상 속도로 영상 전체를 연속 시청하고 음성을 직접 청취한 검수는 수행하지 못했다. 오디오 입력을 지원하지 않는 현재 세션의 한계를 파일·파형 검사로 대체하지 않는다. 발음·음량·누락/중복·자막 동기화·움직임 자연스러움은 실제 이 MP4의 사용자 final 검토에 남긴다. 플랫폼 앱 UI가 표시된 화면의 가림도 직접 확인하지 않았다. [14 검수 보고](../../14-review/r1/review.md)는 관찰한 근거와 not_checked 영역을 분리하고 recommendation=incomplete로 전달한다.
도입 질문과 결말의 답 회수, 같은 물의 양 및 외부 영향의 조건, 자막/도해 주석의 역할 구분을 적용했다. 인물 연기·장식적 효과음·카메라 흔들림은 과학 개념도에 필요하지 않아 적용하지 않았다. 일반 플랫폼 안전영역 수치를 검증된 공통 규격으로 새로 정하지 않았다.
@@ -0,0 +1,62 @@
{
"schema_version": "1.0",
"project_id": "water-hydrogen-bond-surface-tension",
"stage_id": "14-review",
"revision": 1,
"inputs": [
{"stage_id": "02-research", "revision": 1},
{"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": "08-scenes", "revision": 1},
{"stage_id": "09-entities", "revision": 1},
{"stage_id": "10-references", "revision": 1},
{"stage_id": "11-images", "revision": 1},
{"stage_id": "12-motion", "revision": 1},
{"stage_id": "13-compose", "revision": 1}
],
"payload": {
"checks": [
{
"area": "story",
"verdict": "pass",
"evidence": "실제 surface-tension-ko.mp4의 cap01–cap38 표본과 원문 SRT를 03 b1-question–b8-answer, 04 선정 제목, 02의 verified 주장 c1–c9와 대조했다. 0–7920ms의 작은 물방울 질문, 7920–49360ms의 부분 전하·분자 사이 끌림·동적 연결, 49360–81520ms의 이웃 환경·표면 확장의 에너지 비용, 81520–97760ms의 같은 물의 양·외부 영향 조건, 97760–110560ms의 껍질 오해 해소와 답 회수를 유지한다. 문장·제목·조건에 새 주장이나 수치를 추가하지 않았다. 내용 대응의 판정이며 전체 시청·청취를 완료했다는 뜻은 아니다."
},
{
"area": "visual",
"verdict": "not_checked",
"evidence": "13 실제 MP4에서 38개 자막의 중간, 12개 용어/경계 시점, 31컷 시작/끝의 62개 프레임을 추출하고 inspection의 captions-sheet-01–09 및 boundary-sheet-01–06을 직접 열었다. 실제 컷 중간 31개 PNG도 보존했다. 표본에서 H2O의 원자 수·분자 안 실선·분자 사이 H··O 점선, 연결 생성/소멸, 표면 이웃 강조와 물방울의 단일 윤곽 변형을 확인했다. 초기 제목/확대 주석 겹침을 13에서 수정해 재출력 후 cap01/cap02를 다시 확인했다. 표본에서 남은 구조 오류·가림은 발견하지 않았지만, 정상 속도로 끝까지 연속 재생해 움직임의 자연스러움을 확인하지 못했으므로 영역 전체 통과 판정은 보류한다."
},
{
"area": "audio",
"verdict": "not_checked",
"evidence": "사용자의 기존 '내레이션 WAV 괜찮습니다.'는 06 원 WAV의 실제 청취 확인이다. 13 최종 MP4는 이 승인 WAV를 속도·길이·음량 변경 없이 한 번 AAC로 인코딩했다. 실제 음성 스트림은 24000Hz mono, 시작 0ms·길이 110560ms다. 전체 AV 디코딩은 오류가 없었고 audio-technical-check.json의 같은 위치 PCM 상관계수는 0.9999665011971869다. 이 값은 기술적 신호 대조이며 청취 판정이 아니다. 현재 세션은 오디오 입력을 지원하지 않아 최종 MP4의 발음·음량·누락/중복을 직접 듣지 못했다."
},
{
"area": "captions",
"verdict": "not_checked",
"evidence": "실제 surface-tension-ko.srt의 38개 번호·시간·한국어 원문·줄바꿈이 07 captions 및 13 request와 정확히 같다. 실제 최종 MP4의 모든 cap01–cap38 중간 프레임을 540×960으로 추출하고 324×576 비교 시트 및 cap01/cap02 개별 화면을 열어 글자 크기·대비·줄바꿈·도해 가림을 확인했다. 부분 전하, 수소결합 26180ms, 표면장력 80200ms, 접촉 예시 93420ms의 실제 화면도 확인했다. 표본에서 제목/주석 겹침을 수정했고 남은 잘림·주요 도해 가림은 발견하지 않았다. 실제 음성과 정상 속도에서 함께 재생해 자막 읽기와 동기화를 청취 검증하지 못했고 플랫폼 앱 UI 겹침도 확인하지 못했으므로 전체 판정은 보류한다."
},
{
"area": "timing",
"verdict": "pass",
"evidence": "13 probe.json의 실제 최종 MP4: H.264, 1080×1920=9:16, 50fps, 5528프레임, 영상·음성 시작 0ms 및 각각 110560ms. 12 probe.json의 실제 31개 MP4 길이와 프레임 수가 07의 연속 컷 구간 및 13 timeline에 일치한다. 최장 4880ms, 모두 양수·5000ms 이내이며 총합 110560ms로 전체 180000ms 이내다. 06 WAV는 2653440샘플/24000Hz=110560ms다. 자막은 0–110540ms의 유효한 구간이며 마지막 20ms는 음성 끝의 기존 자막 공백을 보존했다. 음성을 늘리거나 속도를 바꿔 시간 차이를 감추지 않았다."
},
{
"area": "consistency",
"verdict": "pass",
"evidence": "13 실제 최종 MP4에서 모든 31컷의 첫/마지막 프레임을 추출해 boundary-sheet-01–06의 30개 인접 쌍을 직접 대조했다. 08 r1의 continuous 22쌍에서 물체·분자·배경의 위치와 방향·카메라가 이어지며 발화 시점에 새 자막/주석만 바뀐다. cut 전환 8쌍 c02→c03, c05→c06, c09→c10, c13→c14, c17→c18, c22→c23, c24→c25, c27→c28은 승인된 설명 규모·비교 조건·결말 회수의 이유에 맞는다. 고정 인물은 없고 네 배경 유형의 윤곽선·색면·분자 형태가 09–11과 일치한다. 12 원 컷의 실제 93개 표본 및 압축 경계 측정도 별도로 보존했다. 판정은 실제 연결 경계·고정 특징 대조 범위에 한한다."
}
],
"findings": [
{
"severity": "blocking",
"description": "실제 최종 MP4 전체 0–110560ms의 정상 속도 연속 시청·청취가 아직 확인되지 않았다. 기술적 파일/시간/신호 대조와 정지 표본 관찰을 실제 청취나 전체 재생 통과로 대체하지 않는다. 사용자 final 검토에서 움직임·발음/음량·누락/중복·자막 동기화를 확인해야 한다. 증상이 발견되면 해당 시간/컷을 알려 받아 12 또는 13, 원 음성 문제라면 06의 새 버전으로 수정한다. 현재 결함을 확인해 재생성을 요구하는 판정은 아니다.",
"stage_id": "13-compose",
"cut_id": null
}
],
"recommendation": "incomplete"
}
}
@@ -0,0 +1,32 @@
# 최종 영상 검토 — 전체 재생·청취 확인 대기
- 제작: water-hydrogen-bond-surface-tension, 한국어, **물방울은 왜 동그랗게 뭉칠까?**
- final 대상: 13-compose r1 실제 출력과 14-review r1 [검수 JSON](artifact.json).
- [실제 MP4](../../../media/13-compose/r1/surface-tension-ko.mp4), [자막 SRT](../../../media/13-compose/r1/surface-tension-ko.srt).
- 실측: 1분 50.56초, 1080×1920, 50fps, 31컷, 38개 자막. 각 컷 최장 4.88초.
- 현재 추천은 **incomplete**다. 실제 파일은 준비됐으며, 아래 기술 검사·표본 관찰을 정상 속도 전체 시청·청취 완료로 간주하지 않았다. 사용자 final 결정은 아직 pending이다.
| 영역 | 판정 | 실제 근거와 확인 범위 |
|---|---|---|
| story | pass | 실제 38개 자막 화면·SRT를 03 b1–b8, 04 선정 제목과 02의 검증된 주장에 대조했다. 작은 물방울 질문→분자 사이 끌림→표면 확장의 에너지 비용→외부 영향 조건→껍질 오해 해소와 답 회수가 연결된다. 내용 대응의 판정이며 청취 완료를 뜻하지 않는다. |
| visual | not_checked | 실제 MP4의 모든 자막 중간 38개·주석 시점 12개·컷 시작/끝 62개를 열어 구조·강조·단일 윤곽과 도해 가림을 관찰했다. 제목과 확대 주석 겹침을 수정해 재출력했고 표본에서 남은 구조 오류는 발견하지 않았다. 전체 움직임을 정상 속도로 끝까지 연속 시청하지 못했다. |
| audio | not_checked | 이전 원 WAV는 사용자가 청취 확인했다. 최종 MP4 음성은 원 WAV를 변경 없이 AAC로 한 번 인코딩했다. 실제 트랙 0–110560ms, 24000Hz mono, 전체 디코딩 오류 없음, 원 WAV와 동일 위치 PCM 상관계수 0.9999665011971869. 이는 직접 청취 판정이 아니다. |
| captions | not_checked | 실제 SRT의 번호·원문·시간·줄바꿈 38개가 07과 정확히 같다. 실제 모든 자막 화면을 모바일 크기 표본으로 확인해 잘림·주요 도해 가림은 발견하지 않았다. 원 WAV의 자동 정렬 시간은 보존했다. 최종 MP4를 듣는 동안의 읽기·동기화와 플랫폼 UI 가림은 확인하지 못했다. |
| timing | pass | 실제 MP4의 영상/음성 각각 110560ms, 시작 0ms, 5528프레임·50fps·1080×1920=9:16. 실제 31컷의 길이와 07/13 구간이 일치하며 최장 4880ms, 빈 구간·겹침 없음. 원 WAV 2653440샘플/24000Hz와 길이가 같다. SRT는 유효한 구간이며 마지막 20ms 공백을 유지했다. |
| consistency | pass | 실제 최종 MP4의 30개 인접 경계 쌍을 열어 22 continuous의 대상 위치·방향·배경이 이어지고 8 cut이 승인된 설명 규모·비교 조건·회수 이유를 지킴을 확인했다. 09–11의 네 배경·분자 형태·그림체를 보존한다. 실제 경계·고정 특징 대조 범위의 판정이다. |
검수에 직접 사용한 선행 결과는 02/03/04/06/07/08/09/10/11/12/13 r1이다. 기존 topic/story/scenes의 같은 승인 버전과 사용자의 원 WAV 청취 확인을 보존했다. 이미지 작업은 사용자가 허용한 내장 도구 예외를 적용했으며 실제 모델명은 미확인이다. 지정 모델 실행 성공으로 주장하지 않는다.
실제 검사 근거는 [13 실측 정보](../../../media/13-compose/r1/probe.json), [음성 신호 검사](../../../media/13-compose/r1/audio-technical-check.json), [13 합성 검토](../../13-compose/r1/review.md) 및 media/13-compose/r1/inspection에 있다. 앞선 겹침이 있던 출력은 attempt-a1에 보존해 현재 결과와 구분했다.
최종 저장 후 저장소 루트에서 제작 폴더 renderer/.cache/verify-production.py를 UTF-8 Python으로 실행해 종료 코드 0을 확인했다. project 및 14단계 JSON 스키마, 입력/승인 버전 참조, 실제 미디어 signature·크기·WAV 길이, 31개 컷 길이, 38개 SRT의 원문 동일성, 문서 링크를 통과했다. `git diff --check`도 종료 코드 0이다. 이 형식·의미 검사는 아래 미완료 재생·청취 판정을 바꾸지 않는다.
## 남은 확인과 다음 처리
blocking 발견은 확인된 영상 결함이 아니라 **실제 최종 MP4 0–110560ms의 전체 재생·청취 근거 부재**다. 시청 중 움직임 자연스러움, 발음·음량·누락/중복, 자막 동기화를 확인해야 한다. 문제가 있으면 시간 또는 컷을 받아 움직임은 12, 합성/자막은 13, 원 내레이션은 06의 새 버전으로 수정하고 관련 후속 결과만 다시 확인한다. 아직 수정할 증상을 확인한 것은 아니다.
사용자 final 검토에서 해당 결과를 확인하고 승인 또는 수정 사항을 받는다. 미확인 영역의 통과나 승인 응답을 만들어 기록하지 않는다. 승인 후 실제 사용자 관찰 내용을 검수 근거에 반영하는 새 보고 버전을 만들고 진행 기록을 마무리한다.
## 제작 지침 적용
도입의 질문을 결말에서 회수하고, 분자 구성·끌림·표면 환경·에너지·모양의 인과관계를 순서대로 보여줬다. 표면이 별도 막이라는 오해를 해소하고 같은 물의 양·중력/접촉 조건을 보존했다. 자막은 발화를, 주석은 물체 관계와 조건을 전달한다. 과학 개념도이므로 허구의 실패·반전·인물 연기·장식적 카메라 흔들림은 적용하지 않았다.